Skip to content

Instantly share code, notes, and snippets.

@yarakos95
Created February 7, 2022 13:19
Show Gist options
  • Save yarakos95/6ee67c770a9651cb0be490a36ac995d5 to your computer and use it in GitHub Desktop.
Save yarakos95/6ee67c770a9651cb0be490a36ac995d5 to your computer and use it in GitHub Desktop.
TeX の環境構築エトセトラ

TeX の環境構築エトセトラ

LaTeX の環境構築するにあたって,さまざまな方法やツールの導入を行う必要がある. 意外とまとめられていないので,これを明らかにしておきたい.

LaTeX 環境に必要なもの

LaTeX による編集には基本的に次のようなものが必要になる.

  • TeX ディストリビューション
    • TeX Live ← 望ましい
      • scheme-full でインストールすると膨大(約 10GB)のため,適当に取捨選択する必要がある
      • Windows には 32bit 版と 64bit 版がある
    • MacTeX
    • MiKTeX
      • 日本語を利用するための (u)pLaTeX が含まれていないらしい
  • Perl 環境
    • さまざまなツールが Perl スクリプトで書かれているため,しばしば必要になる
      • 例:latexmk,latexindent,pdfcrop など
    • Windows では実行ファイルで導入されるため,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)
  • 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 の利用を心がけたい.

TeX で EPS ファイルを使うな,は本当か - golden-lucky の日記

環境構築の方法ごとのメリットとデメリット

環境構築には大きく以下の 3 つの方法が挙げられるだろう.

  • ローカルに構築
    • Windows では WSL でも良い
    • macOS での Linux 環境 (Lima: Linux on macOS?) の構築記事は見かけない
  • Docker の利用
  • オンライン環境
    • Could LaTeX
    • Overleaf

これらのメリットとデメリットを表にしておきたい.

構築方法 メリット デメリット
ローカルに構築
  • 環境構築記事が豊富
  • カスタマイズが容易
  • 通信環境を必要としない
  • ローカル環境が散らかる
  • 基本的な PC の知識が必要
WSL 上に構築
(Windows のみ)
  • Windows よりも少しだけコンパイルが早い
  • カスタマイズが容易
  • 通信環境を必要としない
  • ローカル環境が散らかる
  • 基本的な PC と Linux の知識が必要
Docker の利用
  • ローカル環境が散らからない
  • 複数の PC に環境を共有することが出来る
  • バージョン管理すれば過去の環境をアーカイブ出来る
  • 通信環境が必要
  • Docker と Linux に関する知識が必要
  • 誰かが作った軽量な Docker image を利用すると必要なパッケージが無い場合がある
オンライン環境
  • 環境構築ともろもろの設定が不要
  • 更新が不要
  • 共同編集が可能の場合もある
  • 通信環境が必要
  • メンテナンスで利用できなくなる可能性がある
  • エディタを選ぶことが出来ない
  • 必要な他言語環境が無い場合がある

所感

ローカルに構築する場合には,インストールに少なくとも数時間かかってしまうので,最速構築記事における最速とは何なのか分からない. また,scheme-minimal で導入すると,どうしても必要なパッケージを後から導入する必要がある上,パッケージの依存パッケージも手動で導入する必要がある.結果的に時間がかかるし面倒くさい場合がある.不必要な最小構成は避けた方が良い.

Docker を利用する場合にはそれなりの知識が必要になるが,ローカルを散らかさないことや環境を共有できること,GitHub Actions を利用してリポジトリに成果物を出力したりと利用方法が多岐にわたる.

オンライン環境のエディタはブラウザで利用するものを基本としているが,Cloud LaTeX では VSCode で編集できる.また,Overleaf では Docker で利用できる.

TeX Live の最低限の構成

次のような必要要件の最低限の構成を考えたい.

  • 日本語をコンパイルする
    • (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 のパッケージを見れば含まれているファイルを確認することが出来るので,間接的にコレクション内のパッケージを見ることが出来ると思っている.)

TeX Live のスキームに含まれるパッケージを一覧したい話 | ラング・ラグー

すべての 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 での構成を考えた方が良いかもしれない.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment