LaTeX

実に数年ぶりに、そしてプロのエンジニアになってからはじめて LaTeX をまじめに使って、いろいろ思うところがあったので書き残すことにした。はじめは Google+ に書こうかと思ったが、長くなりそうなので、たまにはブログを使うことにする。

デフォルトがだめ

とりあえずデフォルトのクラスファイルを使って、数式は $...$ と書きます、$$...$$ と書けば別行立てになります((〔05/04 追記〕 id:abenori のコメントにもあるように、正しくは LaTeX では \[...\] を使う。$$...$$TeX のプリミティブであるため LaTeX の追加機能との整合性をとることができない、というのが理由である。ちなみに \[...\]$$...$$ の簡単なラッパーとして定義されている。また、amsmath を読み込むと \[...\] は equation* の短縮記法として再定義される。ここにもバッドノウハウは存在する。))、節を始めるには \section と書きます、…、といった具合に、テキストに言われるがままに文書を作ると、まあ確かにきれいな数式は出てくるけれども、こんなに苦労してこんなものか、という程度の組版結果にしかならない。

残念ながら、デフォルトに頼っているようでは、(La)TeX の真の実力を引き出せない。

デフォルトのクラスファイルたる jarticle は、もともと欧文用に作られたクラスファイルをもとに作られており、日本語向けに十分にチューニングされていない。代わりに jsarticle を使ったほうがよい。

日本語のフォントメトリックにしたって、いわゆる mingoth は捨て仮名*1が連続したとき(e.g. チェック)の扱いがまずい、句読点括弧のメトリックが少しおかしい、などの問題があるので、代わりに jis.tfm を使うのが定番である(ちなみに jsarticle ではそれがデフォルトになっている)。

数式も、標準の eqnarray 環境はいろいろとイケてないため、代わりに amsmath で定義されている環境たちを使うことが半ば常識になっている。

デフォルトのフォントである Computer Modern はそれほど悪いフォントではないが(これをフォントデザイナーでもない数学者が作ったのは驚くべきことである)、今どきは (La)TeX であっても Times/Helvetica で組むほうが主流であるし、より美しい結果が得られる。最近だと newtx パッケージを使うのがよいらしい。

と、まあ、見てのとおり、(La)TeXバッドノウハウの巣窟である。(La)TeX があちこちで嫌われるのも無理はない。

ページの分割が微妙

TeX組版結果が紙に印刷されることを前提として作られたシステムなので、適当なところで自動的にページを分割してくれるメカニズムが組み込まれている。それはそれで非常によいのだが、実際には微妙な位置でページが分割されてしまうケースも少なくなく、時には \newpage に頼らざるを得ないこともある。

まあ、これに関しては、いわゆるワードプロセッサ(e.g. MS Word)でもページの分割位置を手動で調整するような場面はよくあるので、ある程度は仕方がない側面もある。とはいえ、LaTeX は見た目と論理構造の分離を謳っている*2ことを考えると少々残念な点である。

手間暇さえかければ

とはいえ、手間暇さえ惜しまなければ、素人でも非常に美しい組版結果を得られる。僕が学生時代に (La)TeX にのめりこんでいた理由はここにある。

TeX のマクロがチューリング完全であることはソフトウェアとして必ずしもよいことではないが、柔軟性を与えていることは確かであり、適切に利用することで「本文には論理構造だけを記述する」といったことすら可能になる。そもそも LaTeX はその観点から作られた TeX の拡張である。実際のところは LaTeX だけではやや不十分で、自分でマクロを作ったり上書きしたりして調節することになるが、それでも「ハック」を本文の外側に追いやることはできるので、その点はとても気分がよい。

結論

少なくとも、万人に薦められるソフトウェアではない。

論文記述は LaTeX 以外に考えられないとして、理系の研究室に所属した学生たちは一様に LaTeX の使用を強制されるという現実があるが、これに対してはかなり前から反論している。LaTeX を使うべき根拠として、数式の存在、相互参照の機能などが根拠とされることが多いが、MS Word だって 2007 以降のバージョンでは数式の扱いが相当強化されているし、相互参照の機能はもっと昔から存在する。正直なところ、WYSIWYG でないものが苦手な学生には、MS Word あたりで卒業論文を書かせたほうが効率がよいのではないだろうか。少なくとも工学部では。

しかし、手間暇さえかければ美しい文書が作れるし、テキスト形式であるがゆえにバージョン管理との相性がよいという側面も存在する。これらの点に魅力を感じるならば、LaTeX はけして忌避されるべきソフトウェアではない。

*1:いわゆる小書き文字のこと。

*2:よく勘違いされるが、生の TeX では見た目と論理構造は分離されていない。