TeXにはまらないための基本
#texadvent2015 これは「TeX & LaTeX Advent Calendar 2015 – Adventar」の8日目の記事だ。
7日目:515hikaruさん:TeX & LaTeX Advent Calendar 2015 7 日目 – 515 ひかるのブログ 日常編
9日目:p_typoさん:Typesetting and Related Topics – 今さら人に聞けないLaTeX入門書の選び方
「はまる(填まる、嵌まる)」という言葉には以下の意味がある。
- 穴の部分にぴったりとはいる。うまくはいっておさまる。「栓が―・る」「ボタンが―・る」「型に―・る」
- うまくあてはまる。「条件に―・る」「役に―・る」
- くぼんだ場所などに落ち込む。「堀に―・る」
- 計略にのせられる。だまされる。「敵の術に―・る」
- かかわりあって抜け出せなくなる。また特に、女性の色香におぼれる。「悪の道に―・る」
[補説]5は、近年、「すっかり旅行にはまっている」のように、のめり込んでいるようすを、肯定的にとらえた意味でも用いる。
はまる【填まる/嵌まる】の意味 – 国語辞書 – goo辞書 http://dictionary.goo.ne.jp/jn/179287/meaning/m0u/%E3%81%AF%E3%81%BE%E3%82%8B/
TeXを使っていると上記の5の意味で「はまる」ことがある。つまり以下の2現象に出くわすことがある。
- やりたいことがうまくできず、問題から抜け出せなくなる。
- 夢中になって、のめりこむ。
この記事ではTeXにはまらないための基本として、僕が考える以下の項目について説明する。
- TeXを使わない
- 頑張ればできそうなことはやらない
- 編集に適したエディタ・ツールを使う
- ディストリビューションには世界標準であるTeX Liveを使う
- 組版にはuplatex+dvipdfmxを使う
- TeXでスライドを作らない
TeXを使わない
TeXではまらないための最も根本的な解決方法は、TeXを使わないことだろう。
既に僕はTeXの問題点について以下の記事・スライドで指摘してきた。
- My Future Sight for Past: 初心者にとってのLaTeXの問題点とLyXの紹介 http://myfuturesightforpast.blogspot.jp/2013/12/latexlyx.html
- TeXはオワコンなのか?(TeXユーザーの集い2014) http://www.slideshare.net/iesli/20141108-senooken-tex
TeXには大きく以下のような問題があるだろう。
- 難しすぎる。
- 将来性のなさ。
- TeX以外で役にたたない。
もちろん現状TeXを使わざるえない場面も存在するだろう。例えば以下のような場面が想定できる。
- 過去のTeXで文書の保守・引き継ぎ。
- 数式、参考文献や相互参照などTeXを使わないと実現が困難。
- バッチ処理など自動文書生成の必要。
- 出版レベルの高品質な組版。
主に組版関係の人や、教員、研究者など限られた人で需要があるのだろう。次世代の組版であるCSS組版が完成すればTeXを置換できるかもしれないが、それはまだもう少し先の話だ。今のところTeXを置換できるようなものはない。しかし、本当にTeXを使う必要があるのだろうか。
何かを調べて文章を記述するときは、ネット(HTML)の文章を参照するだろう。しかし、TeXだとテキスト以外は画像を使うか、HTMLをTeXに変換するしかWebページを取り込めない。MS WordやLibreOffice WriterであればWebのスタイルもそのまま文書に取り込める。仕事などで一般的に使われているMS Wordのdocx形式で文書を用意することは現実的な判断だ。
そもそもTeX自体使っている人はそんなに多くない。複数人で文書を共有する場合、TeXを使える場面というのはほとんどないだろう。まず、TeXのインストールから始めないといけない。そしてTeXを使うためだけに難しい構文・環境・コマンドの使い方覚えなければいけない。そんな面倒なことするくらいなら、HTMLやMarkdownやAsciiDoc、Sphinxなどの軽量マークアップを使うほうが保守もしやすいし、流用がきくだろう。
頑張ればできそうなことはやらない
先日、次のツイートを見かけた。
ワトソンさんはTwitterを使っています: “TeX/LaTeX でコレ組めますかね? (画像や picture 環境の類を使うのはナシで) https://t.co/u6E1dQwEnz” https://twitter.com/Watson_DNA/status/670787026606620672
大きなマトリックスの外側からさらに行や列の説明を入れるというものだ。TeXを使っているとこのような複雑なことを実現したいことがあるだろう。しかし、TeXにはまらないためにはこうした「頑張ればできそうなことはやめる」べきだ。少々手間がかかり泥臭い方法を取ることになっても、TeX単体で頑張ってやろうとするのはやめたほうがいい。
例えば、今回のケースでは以下のような手順で画像として処理することで手短にほしい見た目が手に入る。
- 骨格の数式だけTeXで作り、それを画像として出力。
- 画像編集ソフトで行と列の注釈を付与。
- 画像として取り込む。
このツイートに対して、複数のarray
環境を使ったり、tikzpicture
を使うことでTeXだけで実現する回答が寄せられていた。もちろんこういった方法がぱっと思いついてすぐに解決できるなら問題ない。しかし、できるあてもないのに頑張ってやろうとするのはやめるべきだ。無駄に時間を浪費することになる。頑張ってできたとしても、後で見なおしたときや他の人が見たときに理解できず、修正・保守が困難になる。
うまくできてしまうとその達成感から、本来ならTeXでそこまでやる必要のないことまで無理やりTeXでやり遂げたくなり、さらにはまり込んでしまう。TeXを極めたいのならば問題はない。思う存分はまりこんでやりこむのもいいだろう。しかし、多くの人にとってはTeXをあくまで組版のための単なる道具に過ぎない。本来の目的である組版物を得ることから外れる。検索してすぐにできそうならともかく、検索してもすぐにはわからず頑張らないとできなさそうなことは素直に諦めよう。暇なときなどに趣味として調べよう。
同じような考えで、マイナーなパッケージやTikZの多用、PythonTeXやRとの連携を行うSweaveとknitrなどの利用はできるだけ避けよう。これらを用いれば高度な組版が可能である。しかし、学習コストは無視できず、情報は少なく扱える人も少ない。複数人での文書の再利用が困難になる。また、自分一人の個人文書であっても、数年後に自分がそれらを扱えるか、記憶しているという保証はない。したがって、本当に必要な部分に限ってこれらの機能を使おう。
編集に適したエディタ・ツールを使う
TeXで文書を書くならば、その大部分である執筆作業を快適に行えるエディタを使うことが非常に重要だ。
TeXを使うという時点で相互参照、図版、表組み、数式、参考文献、索引など組版に重要で、かつTeX特有のコマンド・環境を扱うことになる(これらを活用しないならばTeXを使う必然性もないだろう)。これらを単なるテキストエディタで済ませるのは効率が悪すぎる。短い文書であれば問題ないだろうが、しっかりとした長く残すような文書であれば自然と文量も多くなるので無視できなくなってくる。TeXを書く度に打ち間違いや構文エラーなどではまることは避けよう。
また、組版結果であるPDFのビュアーや、文献処理ツールBibTeXで使う.bibファイルの文献管理ソフト、画像編集ソフト、表計算ソフトといった周辺ツールも自分にあったものを用意しておくべきだ。
エディタ
TeXのエディタとしては大きく以下の2種類があるだろう。
- 汎用のテキストエディタ
- TeX専用のエディタ
TeXのエディタとしては、汎用のテキストエディタよりはTeXに特化した専用のエディタの利用をおすすめしたい。
汎用のテキストエディタ
汎用のテキストエディタにはVim、Emacs、Atom、秀丸などがある。これらを使うのならば、マクロやプラグインを導入して自分でカスタマイ ズしていく必要がある。これによって得られるのは、シンタックスハイライト(構文強調)や入力補完が主だろう。しかし、これには以下の欠点がある。
欠点:
- latexやbibtex、mendex、extractbbコマンドの実行などはMakefileやlatexmkの設定が追加で必要であり完結しない。
- エディタ自体とLaTeXへの習熟が必要で学習コストが高い。
特に学習コストが大きい。LaTeXは難しいので、難しいことはソフトに任せてもっとユーザーは楽できるべきだ。
TeX専用エディタ
TeX専用エディタとしては、将来性や情報の多さなどから以下の項目を満たしているのが望ましい。
- クロスプラットフォーム(Windows、Linux、Mac)
- 自由ソフト
- 活発な開発
これらで絞り込むと残ってくるものは自然と限られる。以下のソフトがよく使われているようだ。
- TeXmaker
- TeXworks
- TeXStudio
- LyX
参考:人気のあるTeXのエディタまとめ – SengNingの日記 http://d.hatena.ne.jp/SengNing/20130606/1370503515
この中ではLyX( LyX | LyX – 文書プロセッサ http://www.lyx.org/WebJa.Home)を勧める。LyXは他のエディタと決定的に異なる部分がある。それは以下だ。
TeXコードやTeXコマンドを一切みなくても執筆できる点
LyX以外のエディタであれば、結局のところユーザーのTeXへの知識を前提としている。図を入れたかったらあのコマンド、表を入れたかったらあのコマンドといったように。LyXではTeXコマンドそのものをはっきりと覚えていなくてもメニューから選ぶことでやりたいことを実現できる。TeXの知識があればなおよいが、そこまで詳しくなくてもストレスなく使えるようになっている。
また、数式エディタが優れている。入力補完やMathML出力など扱いやすくて優れている。
操作性から最初は戸惑うかもしれないが、使う価値がある。LyXの操作イメージ・利点については「TeX & LaTeX Advent Calendar 2013」の以下の記事に記している。
My Future Sight for Past: 初心者にとってのLaTeXの問題点とLyXの紹介 http://myfuturesightforpast.blogspot.jp/2013/12/latexlyx.html
また、LyXと似たようなソフトにScientic WorkPlaceというWindows専用の不自由ソフトがあるようだ。参考までにリンクを掲載しておく。
Scientific WorkPlace | TeX, LaTeX文書作成ソフト Scientific WorkPlace/Word | ライトストーン http://www.lightstone.co.jp/latex/product_swp.html
PDFビューアー
PDFビューアーに重要な機能は以下3点だ。
- 軽量さ。
- 自動更新の対応。
- synctexへの対応。
自動更新とはpdfファイルが更新されたらそれを自動検知して表示内容を更新してくれる機能のことだ。これがなければ、いちいち自分でビューアーを開き直す必要があり効率が悪すぎる。synctexは出力したPDFから.texソースへジャンプするための仕組みだ。これができると、TeXソースでどこに記述されているか発見が難しいものも、PDFからたどることができTeXソースの修正が楽になる。
自動更新やsynctexに対応しているPDFビューアーは少ないので必然的に数が絞られる。OSごとに以下のソフトがお勧めだ。
- Windows:SumatraPDF
- Linux:Evince、Xpdf
Windowsであれば軽量さからSumatraPDF一択となるだろう。LinuxやMacでの使用経験はあまりないので、他にもっとよいものがあるかもしれない。
文献管理ソフト
特に大学院生や研究者などで論文を(これから)書く人は文献管理ソフトを活用することが非常に重要である。Excelなどの表計算ソフトで管理する方法もあるが、専用のソフトを使うことを勧める。文献の書誌情報の配布形式はrisやbibであることが多く、初めからこれらの形式に対応しているソフトを使ったほうが楽だ。
文献管理は普通の人には馴染みがないが、論文を書かない人であっても電子書籍やマニュアルなどの文書管理ソフトとして便利だと思う。文献管理ソフトといっているが、その気になれば音楽や動画も管理できる。例えば、ある漫画・アニメについて電子書籍やDVD、BGMといったように複数のメディアに分かれているときでも同じインターフェースで管理できる。
文献管理ソフトに必要な機能は以下のような内容だろう。
- 論文や書籍の書誌情報(タイトル、著者名、出版日付、URL、ページ数、雑誌名など)の記録。
- 書誌情報(bib、risなど)のインポート・エクスポート。
- 文献リストの生成。
- 検索・グループ管理。
- ローカルに保存したPDFなどへのリンクやURLなど文献本体へのアクセス。
- 文献に対する感想やメモ、レビューなどの記録。
参考までに以下に文献管理ソフトJabRef 3.0の画面を掲載する。概ねどの文献管理ソフトも似たような画面構成になっている。
- 右下の部分に登録した文献の書誌情報がずらっと並ぶ。
- 右下の部分では書誌情報に加えた内容からPDFやURLのリンクが付き、対応するマークから対応する文献にアクセス可能。
- 左サイドバーに書誌情報につけたキーワードによるタグや格納ディレクトリツリー、検索ボックスが配置。
必要な文献を収集してその書誌情報を管理し、論文執筆時に引用し、参考文献リストへの記載することになる。TeXにはBibTeXという引用と参考文献リストの作成を行ってくれるツールが存在している。MS WordやLibreOffice Writerにはこのような文献処理ソフトは存在しないため、BibTeXの存在はTeXを使う理由の大きな一つだろう。このBibTeXはテキスト形式の.bibファイルを利用する。
BibTeXや文献管理という分野自体があまりメジャーではなく情報はそんなに多くない。文献管理ソフトは以下のWikiPediaのページにまとめられている。
Comparison of reference management software – Wikipedia, the free encyclopedia https://en.wikipedia.org/wiki/Comparison_of_reference_management_software
大きく以下の3種類に分類される。
- オープンソース(例:JabRef、Zotero、BibDesk)
- 商用(例:EndNote、Papers)
- Webベース(例:RefWorks、Mendeley、ReadCube)
Endnoteという不自由な商用ソフトのが研究の分野ではデファクトスタンダードだと、学生時代に指導教員からきいた記憶がある。文献管理ソフトの利用者の感想やレビューを見つけるのはなかなか難しい。その中でも以下の2ソフトは、クロスプラットフォームで無料で使え、利用者や情報が比較的多くておすすめだ。
- JabRef( JabRef reference manager http://jabref.sourceforge.net/)
- Mendeley( Free reference manager and PDF organizer | Mendeley https://www.mendeley.com/)
TeXとの連携を考えるならJabRefのほうがいいだろう。なぜならば、Mendeleyには以下の欠点があるからだ。
- データ形式が.bibでないため引用するときに.bibにエクスポートする必要がある。
しかし、複数人で文献情報を共有する上ではMendeleyの方が優れている。Mendeleyサイトでアカウントを作ることで、書誌情報を不特定多数のユーザーでシェアできるサービスを提供しており、またMendeleyのアプリはQtで作られておりスマホでも使える。
.bibとMendeleyの変換コンバーターは見あたらない。文献はどんどんため込んでいくことになるので、後で乗り換えるのはやっかいだ。どちらが合うか見極めて使うのがいいだろう。個人的には、Mendeleyのほうが利用者が多く、一般的に使いやすそうなのでこちらがよいと思う。僕はJabRefから使い始めた都合、Mendeleyへの乗り換えは頭の片隅に入れているが、なかなか行動に移せない。
ディストリビューションには世界標準であるTeX Liveを使う
TeXは多数のマクロやフォントパッケージなどを適切に配置・設定することで使えるようになる。手動で行うのは煩雑で現実的でない。このために、これらの調整を行ったものを配布物(ディストリビューション)と呼んでいる。
比較的有名なTeXのディストリビューションとしては以下の3種類が存在する。
- TeX Live
- MiKTeX
- W32TeX
日本ではW32TeXをベースにしたインストーラーが存在しており、比較的よく使われているようだ。
TeXインストーラ 3 http://www.math.sci.hokudai.ac.jp/~abenori/soft/abtexinst.html
TeXインストーラ3の使い方として、以下の記事のようなわかりやすいインストール手順も存在している。
簡単LaTeXインストールWindows編(2015年7月版) http://did2memo.net/2014/03/06/easy-latex-install-windows-8-2014-03/
しかし、以下の理由からTeX Liveを使うべきだ。
- 世界標準。
- 既定でインストールされるパッケージの多さ。
- パッケージ管理・新規パッケージのインストールの簡略化。
世界的にみてTeX Liveが最も利用者の多いTeXディストリビューションだろう。利用者が多ければ、何か問題があったときに助けとなる情報にたどりやすい。質問サイトであるStack ExchangeでもTeX Liveの利用者が多い印象だ。
TeX – LaTeX Stack Exchange http://tex.stackexchange.com/
既定でインストールされるパッケージが多ければ、新しいパッケージやフォントを使うときに自分でインストールする必要がなくなる。初回のインストール時間やファイルサイズなど、デメリットもあるがあとで手動でインストールする手間を考えると問題ないだろう。また、TeX Liveは毎年その年ごとにリリースされている。TeXのパッケージは日々更新されており、バージョンによって追加機能など挙動が変わることもある。年ごとに更新のタイミングがあることで問題の切り分けも簡単になる。更新はディレクトリを切り替えるだけであるため、古いバージョンを使い続けることも可能であり保守性も高い。
また、TeX Liveにはtlmgr
というパッケージマネージャーが付随している。これを使うことで、CTANに登録されている新規パッケージのインストールが自動で行える。
ただ、TeX LiveはあくまでTeX関係のコマンド・パッケージフォント類しかインストールできない。エディタやPDFビューアーなどは自前で用意する必要がある。
自分のPCにTeXをインストールするのが面倒であったり、できないことや、手軽にTeXを使いたいこともあるだろう。その場合は以下のオンラインでTeXを使えるサービスの利用を検討してみてもよい。
- Cloud LaTeX | Build your own LaTeX environment, in seconds https://cloudlatex.io/ja
- Overleaf: Real-time Collaborative Writing and Publishing Tools with Integrated PDF Preview https://www.overleaf.com/
2010年ごろからWriteLaTeXというサイトがあり、ここがオンラインでのTeX利用サービスを提供していた。2013-4年頃にOverleafという名前に変わった。Overleafは海外で生まれたサービスであり日本語への対応がいまいちな部分があり、使いづらかった。2014年にはCloud LaTeXという日本で生まれた同種のサービスがある。日本で生まれただけに日本語対応もできており、歴史は浅いが有用だ。
組版にはuplatex+dvipdfmxを使う
.texファイルから組版結果であるpdfを得るにあたって、TeXにはいくつかの処理系がある。
例えば以下の記事で説明されている。
LaTeX – TeX処理系御伽話 – Qiita http://qiita.com/yyu/items/6404656f822ce14db935
日本語組版ができるものは概ね以下の4通りとなる。
- platex+dvipdfmx
- uplatex+dvipdfmx
- xelatex
- lualatex
個人的には2番目のuplatex+dvipdfmxを勧める。理由は以下の2点だ。
- platexで使えないUnicodeが使える。これにより半角カタカナやはしご高(髙)、ウムラウト(ö)などをTeXコマンドを使わずにTeXソースコードに記述するだけで表示できる。
- 日本ではplatexが長く使われてきており、それを基本的にユニコード拡張しただけのuplatexは安定している。
xelatexやlualatexは.texソースから直接pdfを出力でき、機能的に優れている部分もある。しかし、platexに比べたらこれらはマイナーで普及しているとはいいがたい。人柱になりたくなければuplatexを使うのがよいだろう。
lualatexは次代のTeXとして将来が約束されている。MarkdownからPandocで日本語の入ったBeamerのスライドを作るときに使われていたり一部で使われているようだ。
日本語Markdownからスライド資料を作る http://rcmdnk.github.io/blog/2015/04/23/computer-markdown/
しかし、利用者が減少し将来性のないTeXにLuaTeXなんかできて誰が得をするのだろうか。実行速度が遅いとか、日本語の縦書はまだうまくできないとか悪い噂はきく。TeXの中でLuaが使えるので、LuaでTeXマクロが組めるようになるのがよいらしい。TeXの中でPythonTeXのように外部の拡張機能ではなく、ネイティブにまともなプログラミング言語を使えるのには便利な面はあるのだろう。しかし、ただでさえややこしいTeXがこれ以上ややこしくなって誰が嬉しいのだろう。
LuaTeXにより利用者数が増えるのか?誰がLuaTeXの登場を望んでいる?TeXが難しくてとっつきにくいことに変わりはない。問題の解決にはなっていない。
TeXでスライドを作らない
TeXにはスライドを作成するためのパッケージがいくつかあり、Beamerがよく使われている。
例えば、最近だと以下のスライドがBeamerで作られている。
keiichiro shikano λ♪さんはTwitterを使っています: “プレゼン資料をアップしました! “ドキュメントシステムはこれを使え2015年版 by @golden_lucky https://t.co/9JVHL4e4QE @SlideShareさんから #sphinxjp” https://twitter.com/golden_lucky/status/669105646369792000
ありがたいことに以下でソースも公開しているのでbeamerを使っていることがはっきりとわかる。
keiichiro shikano λ♪さんはTwitterを使っています: “「ドキュメントシステムはこれを使え2015年版」プレゼン資料のソース https://t.co/tGMGFLp3iW #sphinxjp” https://twitter.com/golden_lucky/status/669106399981404161
TeXでスライドを作ると以下のような利点があるだろう。
- 数式をきれいに表示
- 既存の文書を流用
- マウスを使わずにキーボードだけでスライドを作れる
上記の利点からスライド作成の効率が上がるように思われる。しかし、TeXでスライドを作るのはやめたほうがいい。以下の欠点がある。
- スライドは見た目が重要なので、マークアップしても無駄になる。
- 画像やテキストの配置など込み入ったことをしようとするとTikZを使う必要があり、難易度が高い。
TeXでのスライド作成については以下で欠点が言及されている。
gfnさんはTwitterを使っています: “今回Beamerを初めていじった感想は「スライドのマークアップはほぼ確実に考えるだけ無駄」でした.” https://twitter.com/bd_gfngfn/status/530389444939898880
gfnさんはTwitterを使っています: “15回くらい言ってるけど,よっぽど意味マークアップするのでもない限り,スライドづくりにbeamerを使う恩恵はほとんどないに等しい” https://twitter.com/bd_gfngfn/status/611256797014286336
ZR-TeXnobabblerさんはTwitterを使っています: “まあ、スライドは“見た目が命”(そして多くの場合構造が希薄)だから、マークアップ言語と相性が悪いのは当然なのだが。” https://twitter.com/zr_tex8r/status/530362224120836096
ZR-TeXnobabblerさんはTwitterを使っています: “結局やりたいことは「スライドの好きな位置にモノを置きたい」であって、スライドの場合は、ページ上絶対座標で配置する(https://t.co/HsArH92Sy6)という手段が最も自然で使いやすいのじゃないかな。 #TeX” https://twitter.com/zr_tex8r/status/306358970010959872
セノペンさんはTwitterを使っています: “TeXでのスライド作成は超上級者向け。優れたスライドを作るにはBeamerの設定やTikZなどを暗記が必須。画像やテキストボックスの配置調整で悶絶するぞ。一般人はだまってLibreOffice Impress。中身に専念できる。ナビバーとかは羨ましいけどね…。” https://twitter.com/senopen/status/530714713378668544
唯一TeXでスライドを作成するとしたら、箇条書きをひたすら列挙するようなシンプルなスライドだろう。ただ、このようなスライドだと視覚に訴えるものが少なく、スライド品質の低下を招くだろう。やはり基本的にTeXでスライドを作るのはやめ、素直にLibreOffice ImpressやMS Powerpointなどのプレゼンテーションツールを使うのが無難だろう。数式を多用するような場合は、付属の数式エディタを使うか、画像として用意するのがよいだろう。
まとめ
TeXにはまらないための基本について自分の考えを記した。TeXにはまらないための根本的な解決策としては、最初に述べた「TeXを使わない」ことだ。本当に自分にTeXが必要なのか考えて、どのように付き合っていくか考えて使うのがよいだろう。
TeXは難しすぎて、僕は他の人に勧めることができない。早くCSS組版が普及して誰でも簡単に組版ができるようになって、「TeXグッバイ」したい。