LaTeX の環境構築するにあたって,さまざまな方法やツールの導入を行う必要がある. 意外とまとめられていないので,これを明らかにしておきたい.
LaTeX による編集には基本的に次のようなものが必要になる.
- TeX ディストリビューション
- TeX Live ← 望ましい
- scheme-full でインストールすると膨大(約 10GB)のため,適当に取捨選択する必要がある
- Windows には 32bit 版と 64bit 版がある
- MacTeX
- TeX Live と mac 専用のアプリケーションと Ghostscript
- インストールすると Ghostscript が根深くなるために嫌う人もいるらしい
- MacTeX をおすすめできる場合とそうでない場合(私見) | ラング・ラグー
- MiKTeX
- 日本語を利用するための (u)pLaTeX が含まれていないらしい
- TeX Live ← 望ましい
- Perl 環境
- さまざまなツールが Perl スクリプトで書かれているため,しばしば必要になる
- 例:latexmk,latexindent,pdfcrop など
- Windows では実行ファイルで導入されるため,Perl 環境は必要ない
- さまざまなツールが Perl スクリプトで書かれているため,しばしば必要になる
これに付随して,以下のようなものがあると良いだろう. もちろん,これらですべてを網羅しているわけではないので注意してほしい.
- Python 環境
- minted パッケージで必要(pygments モジュール)
- LaTeX 文書内部で Python を実行することも出来る
- Java 環境
- arara などで必要
- 日本ではあまり使われていないらしいので,ほとんどの場合不要
- Inkscape
- ベクター描画をする際に必要
- .pdf_tex で出力することで,フォントを TeX 文書側に任せることが出来る
- svg パッケージで SVG 画像を挿入する際に必要
- extractbb
- ラスター画像の大きさを取得
- graphicx パッケージでラスター画像を挿入する際の自動化に必要
- 画像処理
- img2pdf
- ラスター画像を PDF に変換
- ImageMagick
- ラスター画像を PDF に変換
- 画像のグレースケール化
- Poppler ライブラリ
- PDF から PNG,JPEG,SVG に変換 (pdftocairo)
- PDF の情報を取得する (pdfinfo)
- PDF からテキストを抽出 (pdftotext)
- img2pdf
- textlint による文章校正
- LaTeX にはデフォルトで MS Word のような文章校正はない
- textlint-plugin-latex2e が必要
- LaTeX 構文の校正には ChkTeX や Lacheck がある
- Git
- バージョン管理システム
- テキストファイルの差分を採ることが出来る
- git-latexdiff と連携することで差分の PDF を取得することも出来る
TeX 環境ではデフォルトで texlua と呼ばれる Lua 環境が提供されている.そのため,何かしらのスクリプトを書くのであれば Lua で書くと良いと思われる.
LaTeX に挿入する画像は PDF が良いとされている.これは,最近の TeX がネイティブに PDF を処理することが出来るかららしい. 過去には EPS が良いとされていたが,EPS では Ghostscript を呼び出す必要があり処理がその分だけ重くなる.以下の記事を参照して,適切な EPS の利用を心がけたい.
環境構築には大きく以下の 3 つの方法が挙げられるだろう.
- ローカルに構築
- Windows では WSL でも良い
- macOS での Linux 環境 (Lima: Linux on macOS?) の構築記事は見かけない
- Docker の利用
- オンライン環境
- Could LaTeX
- Overleaf
これらのメリットとデメリットを表にしておきたい.
構築方法 | メリット | デメリット |
---|---|---|
ローカルに構築 |
|
|
WSL 上に構築 (Windows のみ) |
|
|
Docker の利用 |
|
|
オンライン環境 |
|
|
ローカルに構築する場合には,インストールに少なくとも数時間かかってしまうので,最速構築記事における最速とは何なのか分からない. また,scheme-minimal で導入すると,どうしても必要なパッケージを後から導入する必要がある上,パッケージの依存パッケージも手動で導入する必要がある.結果的に時間がかかるし面倒くさい場合がある.不必要な最小構成は避けた方が良い.
Docker を利用する場合にはそれなりの知識が必要になるが,ローカルを散らかさないことや環境を共有できること,GitHub Actions を利用してリポジトリに成果物を出力したりと利用方法が多岐にわたる.
オンライン環境のエディタはブラウザで利用するものを基本としているが,Cloud LaTeX では VSCode で編集できる.また,Overleaf では Docker で利用できる.
次のような必要要件の最低限の構成を考えたい.
- 日本語をコンパイルする
- (u)pTeX や LuaTeX を利用する
- XeTeX を利用しない
- 数学や科学に関する文書を作成する
- フォントを作成しない
- ゲームや楽譜の組版を行わない
人文系で法律,言語学,社会科学,人文科学などのパッケージを利用したい場合は collection-humanities を含めれば良い.この場合には collection-mathscience を含める必要はないかもしれない. 他の言語を利用したい場合は,collection-lang… を含めれば良いだろう.
カスタムスキームとして,以下のようなコレクションを導入すると過不足のない構成が得られると思われる.
コレクション | 説明 |
---|---|
collection-basic | 必須プログラムとファイル |
collection-bibtexextra | BibTeX の追加スタイル |
collection-fontsextra | 追加フォント |
collection-fontsrecommended | 推奨フォント |
collection-formatsextra | 追加フォーマット |
collection-langcjk | 日中韓 (base) |
collection-langenglish | 英語・米語 |
collection-langjapanese | 日本語 |
collection-latex | LaTeX 基本パッケージ |
collection-latexextra | LaTeX 追加パッケージ |
collection-latexrecommended | LaTeX 推奨パッケージ |
collection-luatex | LuaTeX パッケージ |
collection-mathscience | 数学,自然科学,計算機科学パッケージ |
collection-pictures | 画像と図表 |
collection-publishers | 出版社スタイルや学位論文 |
collection-wintools | Windows 専用プログラム |
一応,言語は日本語の他に英語にも対応できるようにしている.(-langjapanese を含めると -langcjk も含まれるため,間接的に中国語と韓国語もちょっとだけ利用できる)他の言語に関しては babel などを利用すればどうにかなるだろう.
コレクションに含まれるパッケージやプログラムが明示的に一覧になっていないので,どのコレクションを導入すべきかは難しい.(Linux のパッケージを見れば含まれているファイルを確認することが出来るので,間接的にコレクション内のパッケージを見ることが出来ると思っている.)
すべての collection 一覧(折りたたみ)
Collection | Short description |
---|---|
collection-basic | Essential programs and files |
collection-bibtexextra | BibTeX additional styles |
collection-binextra | TeX auxiliary programs |
collection-context | ConTeXt and packages |
collection-fontsextra | Additional fonts |
collection-fontsrecommended | Recommended fonts |
collection-fontutils | Graphics and font utilities |
collection-formatsextra | Additional formats |
collection-games | Games typesetting |
collection-humanities | Humanities packages |
collection-langarabic | Arabic |
collection-langchinese | Chinese |
collection-langcjk | Chinese/Japanese/Korean (base) |
collection-langcyrillic | Cyrillic |
collection-langczechslovak | Czech/Slovak |
collection-langenglish | US and UK English |
collection-langeuropean | Other European languages |
collection-langfrench | French |
collection-langgerman | German |
collection-langgreek | Greek |
collection-langitalian | Italian |
collection-langjapanese | Japanese |
collection-langkorean | Korean |
collection-langother | Other languages |
collection-langpolish | Polish |
collection-langportuguese | Portuguese |
collection-langspanish | Spanish |
collection-latex | LaTeX fundamental packages |
collection-latexextra | LaTeX additional packages |
collection-latexrecommended | LaTeX recommended packages |
collection-luatex | LuaTeX packages |
collection-mathscience | Mathematics, natural sciences, computer science packages |
collection-metapost | MetaPost and Metafont packages |
collection-music | Music packages |
collection-pictures | Graphics, pictures, diagrams |
collection-plaingeneric | Plain (La)TeX packages |
collection-pstricks | PSTricks |
collection-publishers | Publisher styles, theses, etc. |
collection-texworks | TeXworks editor; TL includes only the Windows binary |
collection-wintools | Windows-only support programs |
collection-xetex | XeTeX and packages |
導入されている collection を確認するには次のようにターミナルを叩くと見ることが出来る.
$ tlmgr info collections
基本的には以下のオプションは有効にしておくべきだが,Docker などでは導入していない方がより小さな構成となるため,無効にしておいても良いかもしれない.
- font/macro のドキュメントツリーをインストール
- font/macro のソースツリーをインストール
PDF のドキュメントは意味不明なほど含まれている.ローカルに構築しない,または読みもしない場合には不要と思われる.
エディタは戦争の引き金になりかねないとされているので詳細な言論は避けたいが,TeXworks や TeXshop を利用するよりは,TeXstudio や LaTeX Workshop on VSCode を利用する方が高機能で軽快な編集を行えるというのが大多数の意見だろう.
もちろん,高機能ゆえにうっとうしく感じる場合もあるだろう.このような場合はシンプルなエディタに移行すべきだろう.
ちなみに,テキストエディタとは文字が色付けされたメモ帳みたいなものである. LaTeX 向けのテキストエディタでは,これに 1 クリックでコンパイルが実行できるようなシステムが組み込まれている.また,SyncTeX に対応して PDF ビューワとテキストエディタを行き来することも出来るものもある.
よく,テキストエディタを変更したらコンパイルが上手くいったという言説を見ることがあるが,テキストエディタによって結果が変わることはない.おそらくコンパイル方法がテキストエディタごとに異なっていることを認識していないのではないかと思われる.
ただし,パス内に日本語などの 2 バイト文字が含まれる場合には,テキストエディタが LaTeX 側に上手く渡せずにエラーになることがある.これはもちろんテキストエディタ側の問題である.
また,latexmk ではパス内に 2 バイト文字があると上手く処理できないようだ.これはテキストエディタの問題ではない.
パスに日本語は含めない方が健全なコンパイルを実行できるようになるだろう.
Python 環境やさまざまな画像処理に関するツールを LaTeX のためだけに利用する場合は,Docker での構成を考えた方が良いかもしれない.