0番染色体

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

TeXの魅力 ― TeXユーザの集い2014に参加して

先週の土曜日(11月8日)に TeXユーザの集い2014 なるイベントに参加してきました.参加者は百数十人程度で,ものすごく大規模な集会というわけでもなかったですが,非常に刺激的なイベントで得るところは大きく,参加して楽しかったです.

TeX( \rm\TeX)というのはずいぶんと古い組版ソフトウェアで,以前よりその古さや扱いの難しさを理由に,TeXを批判的にとらえた言説もネット等で多く見かけられます.

そんな時代でも,私自身は高校時代より現在までずっとTeXを愛好しているわけですが,よく考えてみれば私はこれまでその理由をきちんと明文化したことがなかったということに気づきました.先日はせっかく多くの「今なおTeXに魅力を感じている方々」にお会いできたわけですから,この機会に私の意見をまとめておくことにします.

そのあとに,TeXユーザの集い2014 に参加した感想と現在の私自身の取り組みについて簡単にご紹介しようと思います.

TeXのいいところ

TeXの強みとしておそらく最もよく語られるのは「数式」です.それもそのはず,TeXの開発者はクヌース先生という数学者で,自分の本を組版するためのソフトウェアとしてTeXを開発したという背景があるので,TeXが数式を得意とするのはある意味当然です.

例えば,リーマンゼータ関数ならこんな感じです.

\displaystyle\zeta(s)=\exp\left(\frac{\gamma+\log\pi}{2}s-\log2\right)
\frac{1}{s-1}\prod_{\rho}\left(1-\frac{s}{\rho}\right)
\prod^{\infty}\left(1+\frac{s}{2n}\right)e^{-{\frac{s}{2n}}}

このように入力してタイプセットすると,次のようになります.

 \displaystyle\zeta(s)=\exp\left(\frac{\gamma +\log \pi}{2}s-\log 2\right) \frac{1}{s-1}\prod_{\rho}\left(1-\frac{s}{\rho}\right)\prod^{\infty}\left(1+\frac{s}{2n}\right)e^{-{\frac{s}{2n}}}

美しいですね.惚れ惚れしてしまいます.ほかのソフトウェアではなかなかこうはいきません.この例はかなり複雑な(というよりは長いだけですが)式なのでコードも長く煩雑なものに見えるかもしれませんが,同じことを別のマークアップ言語(MathMLなど)で表現するとこんなものでは済まない場合がほとんどです.

このように,TeXはとにかく数式が得意です.しかし,TeXの魅力としてこれだけを紹介するのでは,数式をあまり使わない人にとっては魅力に思えないかと思います.私自身メインの興味が生物系なだけに,数式だけが利点ならばTeXに見向きもしなかったことでしょう.

もちろん,実際のTeXには数式以外にもたくさんの魅力があり,個人的にはそれらの方がTeXを使う強い動機となっています.そのすべてをここで網羅することはできませんが,私が考えるTeX *1 の特にいいところをいくつかご紹介したいと思います.

その1:編集順序が自由になる

文章は,必ずしも最終的な構成順序の通りに作成されるものではありません.実際,このブログ記事も頭から順番に書いているわけではなく,後半部分を編集してはまた前半部分に戻ったりと,気の赴くままに執筆しています.

このような編集は,もちろん普通のワープロソフトなどでも行うことができますが,厄介な問題が生じます.つまり,あとから章節や図表を追加すると,いちいちその番号を付け直さなければなりません.その上,こうした番号を本文中で使用している場合はさらに付け直しが面倒なことになります.

TeXならば,表番号・図番号・式の番号・セクション番号などの類をすべて自動で付けてくれます(しかも,その書式をかなり自由に設定することができます).また,こうした番号を本文中に出力したい場合は相互参照を利用すると便利ですが,この相互参照もTeXが得意とする処理の一つです.ほかのワープロソフト(例えば某M社のWなんとか)でも相互参照機能は実装されていますが,TeXほど手軽(後述)かつ汎用的に利用することは難しいでしょう.

その2:手軽に高度なことを実現できる

TeXでは通常では膨大な労力もしくはお金をかけないと実現できないようなことを,簡単かつ無料で *2 実現することができます.具体的には,目次(図目次,表目次を含む)や索引を簡単に作成できます.

目次の作成はTeXじゃなくてもできると思うかもしれませんが,TeXの目次作成は本当に簡単で,本文さえTeXの形式に則って書かれていれば,コマンド1つで簡単に出力することができます.

索引の作成はTeXでも「よみがなを入力する」という一手間こそ加わってしまうものの,それ以外はほとんど何もすることなく簡単に作成可能です(索引に関しては後日また記事を書くかもしれません).索引までこの程度の手軽さで作成できるツールはほかにはなかなかないのではないでしょうか.

また,こうした目次や索引などを含むあらゆる部分に関するレイアウトをTeXでは非常に柔軟にカスタマイズすることができます.W◯rdなどでも時間と労力をかければそれなりに美しい文書が作成できるのかもしれませんが,どんなに頑張ったところで◯ordで出版物レベルの文書を作成することは不可能だと思われます.しかし,TeXならばそれが可能であり,実際にTeXで組版されて出版されている本が数多く存在します.

その3:レイアウト上のミスを減らせる

TeXは論理的に文書を作成できるように設計された組版ソフトウェアです.つまり,本文を執筆する際は原則として「文章の内容」を考えることだけに専念すればよく,レイアウトのことは極力考える必要のないようになっています.例えば,新しい節を書き始めたいときは \section{hoge} などとだけ書けばよく,「見出しだから文字サイズを変更してフォントをゴシックにする」などという操作は必要がありません.したがって,文章執筆の際にその内容に集中できるだけでなく,うっかり一部の見出しだけフォントが明朝体のままになってしまうなどといったミスが防げることになります.

もちろん,見出し以外の部分も特別なコマンドを用いて強制的な変更を行わない限りは,何も考えなくとも統一書式になるように処理されていきます.したがって,必要のない部分でおせっかいなインデントをされて体裁が揃わなくなるなどといったことはTeXを用いている限りはほとんど起こり得ません.

その4:素早く文書を作成できる

ここからは多少マニアックなTeXの魅力であり,TeXに触れたことがない人には少し実感がわきにくいかもしれません.しかし,実際にはこうした魅力こそがTeXの魅力の真髄といえるものだと私は考えているので,簡単にご紹介することにします.

TeXはWYSIWYG *3 ではなく,コマンドで文書レイアウトを制御するマークアップ言語なので,やはり慣れるまでには多少の時間がかかります.しかし,ひとたび慣れてしまえば通常のワープロソフトを用いるよりも格段に早く文書作成ができるようになります.私は大学の授業のノートをTeXで取ることができますが,通常のワープロソフトではおそらくとても追いつけません.

TeXの場合,ユーザの習熟度と使用するエディタによって編集効率にかなりの差が生じますが,それでも通常のワープロソフトを用いるよりも格段に早く文書の編集ができると思われるのは,TeXでの文書作成が基本的に「マウス操作を一切要求しない」からです.一般のワープロソフトにも様々なショートカットキーが存在しますが,それでもまったく一度もマウスを操作せずにある程度量のある文書を作成することは難しいと考えられます.マウスの操作は作業速度という観点からすると不利な操作であるので,マウスを操作することなく文書編集ができるというのはTeXの強みの1つと言えると思います(もちろん,どのようなエディタを使用するかにもよると思いますが).

また,マクロ作成が容易であるという点もTeXの作業効率が良い主要な要因の1つです.例えば,先ほど説明した相互参照は実際には次のように記述することで利用できます.

\section{はじめに}\label{はじめに}
はじめまして,ワトソンです.

〜(中略)〜

\section{おわりに}\ref{はじめに}節でご挨拶申し上げたワトソンです.

これをタイプセットすると,例えば次のように出力されます.

1. はじめに
 はじめまして,ワトソンです.

〜(中略)〜

5. おわりに
 第1節でご挨拶申し上げたワトソンです.

ここで,参照したい箇所に毎回\labelコマンドを打ったり\refコマンドを使用する際にいちいち第\ref{hoge}節と書くのが手間だと感じたとしましょう.このとき次のようなマクロを定義すると,より簡単な記述で同じ出力を得ることができるようになります.

\newcommand[1]{\sect}{\section{#1}\label{#1}}
\newcommand[1]{\sectref}{\ref{#1}}
\sect{はじめに}
はじめまして,ワトソンです.

〜(中略)〜

\sect{おわりに}
\sectref{はじめに}でご挨拶申し上げたワトソンです.

もちろん,TeXでなくてもマクロ機能を実装したワープロソフトはたくさん存在しますが,そのほとんどが別のファイルにプログラムのコードを書くことを要求するもので,TeXのように簡単に作成することは難しいでしょう.

ちなみに,現在私は上で紹介したものよりもいくらか複雑なマクロを相互参照に使用していますが,話がそれてしまうのでそれはまた別の機会に紹介しようと思います.

その5:そしてなにより,楽しい

ここまでは「TeXがいかに便利か」という論点からTeXの長所を色々と挙げてきました.しかし,究極的に「どうしてTeXを使うのか,一言で答えろ」と言われたら,私は「楽しいからだ」と答えます.

TeXはしばしば,「コマンドを覚えるのが大変で苦痛だから」という理由で敬遠されているような気がします.確かに,TeXをきちんと使いこなそうと思えば,ある程度のコマンドを暗記しなければなりません.

しかし,それは果たして苦痛に思うようなことなのでしょうか.

「努力して何かができるようになる」ということは,むしろ楽しいことなのではないでしょうか.TeXを使えば使うほど,技術(TeXnic)が向上してできることが増えていく,少なくとも私は,これをとても楽しいことだと感じています.

まとめ

これほどまでに便利で,かつ面白い文書作成ツールを,私はTeXのほかに知りません.

TeXユーザの集い2014で得たこと感じたこと

TeXユーザの集い2014 は,11月8日(土)に青山学院大学で開催されました.
公式ホームページ: TeXユーザの集い2014

このイベント自体は午前中から行われていたのですが,私は午後から途中参加したためすべての講演を聞くことはできませんでした.しかし,午後だけで結構いろいろな話を聞くことができて楽しかったです.

具体的にどんな話がされていたのか,印象に残っている部分を列挙してみます.

  • TUG(TeX Users Group)の2014年次国際会議( in アメリカ)参加報告
    「TeXユーザの集い」の全世界版.参加者の半数以上がプレゼンを行う熱意あふれるイベントでとても楽しいらしい.プレゼンのほかに懇親会が開かれたりもするそうだが,そこではレストランのメニューの組版に文句がつくのだとか.
  • 書籍向け汎用マークアップのあり方
    結論だけ言うと,「TeXはよくできているので皆さんTeXを使いましょう」
  • CSS組版の宣伝
    TeXがなくなる話.招待講演.私の個人的な見解だが,なるほどCSS組版はかなりTeXに "近づいてきてる" ようであるが "超えて" はいないよう.講演者曰く「CSS組版はまだまだこれからよくなる」そうだが,正直なところ,そもそもHTMLはTeXと違って手打ちする気が起こらない.
  • 化学とLaTeXの融合
    個人的には(分野の都合もあり)かなり興味を持った発表.個々で紹介されていたノウハウはいずれ試してみようと思う.詳しくはアセトアミノフェン氏のブログ記事を参照されたい.
  • \expandafterの話
    難しいので割愛.私自身よくわかっていない.勉強しなければならない.
  • バッド・ノウハウ
    最後の発表にして最大のTeXエンターテイメント(←なにそれ).TeXを使っている人じゃないとまったくわからないと思うが,TeXユーザとしてはこれほど面白い講演もまたとない.やはりTeXは楽しい.

TeXの集いについて独特だなと思ったのは,講演者の中に明確な "主張"(伝えたいこと)がないものが多数あったということです(もちろん,CSS組版の有用性を主張する講演など,明確な主張のある講演もありましたが).にも関わらず,その内容がTeXの話題であるためか,聞いていて楽しいというのが私にとっては新鮮でした.

できれば,来年もまた参加したいと思います.

私の取り組み

現在,私は大学のとある科学系サークルの枠組みの中でTeXゼミなる自主ゼミを主宰しています.このゼミでは,究極的な目標としては「包括的なTeXnicの向上」を目指していますが,具体的には次のような活動をしています(あるいはする予定です).

  • XyMTeX(構造式を描くためのパッケージ)の英語版マニュアルの要旨翻訳
  • 独自パッケージ(マクロ)のの共同制作
  • その他.TeXに関する情報の共有

また,来年度以降,まだ実現できるかどうかはまったく不明ですが,大学内でTeXに関するサークル(暫定名称:東大TeX愛好会)を発足させることを目指しています.まだ現在はどのような活動ができそうか検討している段階ですが,私個人の案としては

  • TeX普及活動の一環として,種々のTeX関連英語文献の翻訳
  • 独自パッケージ(マクロ)の作成
  • TeX関連ソフトウェア(統合開発環境を含む)の開発

などができれば楽しいかなと考えています.まだまだ構想段階から抜けきれていませんが,何か協力していただけそうな方がいらっしゃいましたら,ぜひTwitter等を通じて私にご連絡いただければ幸いです.

*1:TeX,TeXと言いつつ実際にはほとんどがLaTeX( \rm\LaTeX)の話ですが,TeXを知らない人でもわかりやすいように,この記事では特にこだわらず,原則TeXの表記で統一して書くことにします.

*2:TeXはフリーソフトウェアですが,使用するエディタによってはそちらに費用がかかる場合があります(フリーのエディタにも素晴らしいものがたくさんありますが).とはいえ,仮に有料のエディタを使用したとしてもTeXと同様の機能をもつ組版ソフトウェアを購入するよりは格段に費用を抑えられるケースがほとんどだろうと思われます.

*3:WYSIWYGとは "What You See Is What You Get" の略で,印刷結果(処理内容)と編集画面に表示されるものが一致するソフトウェアのことを指します.一般にワープロソフトと言われるものは,たいていがWYSIWYGです.