0番染色体

科学は全世界を照らす光である

TeXで簡単プログラミング♪

今回は TSG Advent Calendar 2015 の7日目の記事として投稿しています.昨日は SECCON お疲れ様でした.明日は cookies146氏 の予定でした.
なお,本稿は必ずしも プログラミングサークル TSG 関係者向けに書いたというわけではなく,プログラムを書くすべての人を対象にしています.要するに,あらゆるプログラマ向けの TeX on LaTeX の入門記事(のつもり)です.

LaTeX で文書作成をする多くのユーザにはあまり馴染みがないかもしれませんが,TeX はプログラミング言語です.大事なことなので繰り返します.TeX はチューリング完全性を有する関数型プログラミング言語です.

にもかかわらず,実際のところ TeX 言語 *1 を使ってプログラムを書いたことがあるという人はそれほど多くありません.

確かに,TeX はそもそも「プログラムを書くこと」を目的に開発された言語ではなく,また表現能力にも限界があるのでリアルタイムに顔認識をしてメガネをかけるお洒落な人工知能鳴子をインターフェースとする画期的な音ゲーを開発するのに向いているとはとても言いがたいです.

しかし,理系であれば多くの人が文書作成に LaTeX を用いているはずなので,論文やレポート執筆時にするような「ちょっとした計算」であれば,LaTeX の編集画面から移動せずに計算ができるので非常に便利です.あるいは,普通の「文書を書くためのマクロ」であっても,多少の条件分岐やループ構造が使用できる方が,そうでない場合よりもずっと柔軟なものを作成することができます.さらに,「任意言語の課題」を TeX (on LaTeX) で解くと,ほとんどの言語で実装した人に対して「○○での実装は甘え」などと主張することができます(主張出来るだけです.因みに実行時間の話になると,まず勝ち目はありません.).

課題の TeX 実装はさておき,とにもかくにも TeX on LaTeX でちょっとプログラムが書けると何かと便利です.そして,その方法は意外と簡単です.本稿では,そんな TeX on LaTeX の基礎の基礎を解説し,さらに TeX on LaTeX を少しばかり拡張する拙作のパッケージを紹介した上で,いくつかの(ある程度)実用的なマクロを例に実践的な TeX on LaTeX プログラミングを提示することを試みます.

*1:単に “TeX” というと(どういうわけか)LaTeX と勘違いする人がいるので,LaTeX ではない素の TeX,特にプログラミング言語としての TeX を指す場合には “TeX 言語” と表記されることがあります.

続きを読む