久々に・・・


言わずと知れた(というほど一般的には有名でもないか)、オープンソース組版ソフトウェア。Dr.Knuth博士が開発した「TeX」に「LaTeXマクロ」を加えたものが、LaTeX。日本語版は「pTeX」「pLaTeX」で提供されており、現在の最新版「2e」ポピュラーに用いられている。

最近、会社の設備関係のマニュアル作成で、久々にLaTeXを使ったのである。忘れていたことも多いが、むしろ新しく学ぶこともあって、大学時代の記憶がよみがえってきた。さらに調子に乗ってこんな本まで手に入れた。吉永徹美さんの著書である。

独習 LaTeX2ε

独習 LaTeX2ε

前から新しい著書を出していたのは知っていたが、LaTeXの基礎から初めて、実用的なコマンドやパッケージの使用方法まで詳細かつ網羅的に書かれた本は他に類を見ない。まだ途中だけども、基本的なことであっても割と知らなかったり、正確な意味を初めて把握できたりと、以前の知識で所々欠けていた部分が埋められていく感じ。後半のマクロ作成の基礎部分を読破すれば、下に紹介する書籍も読めるようになっていくのではないか。まあ基礎編でも非常に難しかったが・・・。昔この『独習LaTeX2e』があれば、もしかしたらこれらは買わなかったかもしれない。

LATEX2ε マクロ&クラス プログラミング基礎解説

LATEX2ε マクロ&クラス プログラミング基礎解説

LATEX2εマクロ&クラス プログラミング実践解説

LATEX2εマクロ&クラス プログラミング実践解説

とはいえ、すでに希少な書籍になっているので、あの時買っておいてよかったのかとも思う。いつ使うのかというと甚だ疑問ではあるけれど、とりあえずまた趣味でLaTeXを少しずつ勉強していこうかと思ってる。最近面白いことがないから。Excelのマクロ/VBAも勉強中なのだが実用的なものだけだとやっぱり楽しくないのだ。使えるプログラミング言語として、C・HTML・LaTeX、あとまだできていないけどJavascriptかなあ。Firefox拡張機能を記述できるようになるし。

初歩的ながらよく使用する\def、\let

文章でよく使用する命令の組み合わせは、\defで定義しておくと便利である。

\def\(命令名){(定義内容)}

のようにして使う。たとえば、こんな感じで・・・

\def\trump{$\clubsuit$$\diamondsuit$$\heartsuit$$\spadesuit$}

また、\letは命令をコピーするのに使う。あるいは、命令を再定義するために一時退避させたりするために使用する場合もある。あんまりよくない例かもしれないけど、まあこんな感じで使ってみる。

\makeatletter %@を文字として使用できるように
\def\trump{$\clubsuit$$\diamondsuit$$\heartsuit$$\spadesuit$}
\let\trump@two\trump %\trumpを\trump@twoへコピー
\def\trump{\trump@two\trump@two}
\makeatother %@の扱いをデフォルトに

とすると、

\def\trump{$\clubsuit$$\diamondsuit$$\heartsuit$$\spadesuit$$\clubsuit$$\diamondsuit$$\heartsuit$$\spadesuit$}

と定義したのと同じことになる。

\defも引数を取ったり、書式指定をしたりと色々な使い方があるが、それは書籍に譲る。こんな風に比較的簡単に導入できるので、マクロの初歩を知るだけでも文書作成の負担を大幅に軽減できる。そして他人の書いたマクロも少しずつ読めるようになる。

LaTeXの魅力は、極めて精密な組版制御ができ、章や節の自動番号割付や相互参照などの機能が備わっていること。プログラミングしながら文書が書けるというのも面白い。定型文書であればLaTeXが大きな力を発揮するだろう。やたら図を張り込んだりするものだとExcelの方がよいのだが・・・。LaTeXの方が正確だけどもその制御に時間がかかる。直感的にできないのが欠点でもあり、利点でもある。作成する文書の種類によって賢く使い分けていけばよいと思う。僕はただ単に楽しいからLaTeXをやっているようなものなので、仕事上でなければあんまり気にしない。こんなに面白いものはないなぁとつくづく感じる。