はじめに
Cloud LaTeX や Overleaf の登場により、オンラインで簡単に LaTeX 文書を組版できるようになりました。しかし、これらのツールはオフライン環境では使用できず[^1]、git を使ったバージョン管理との相性も良くありません。結局のところ、最後に頼るのは昔ながらのローカル環境でのLaTeX組版です。
ローカル環境でaTeX組版を行う場合、ハードルとなるのが環境構築です。しかし、現在ではDockerを利用することで、簡単かつ効率的に環境を整えることが可能です。とはいえ、Dockerを使ってLaTeX組版を行う際には「どのコンテナを選ぶべきか」「どのようなコマンド構成にすればよいか」などの点に悩みます。
本記事ではコンテナにpaperist/texlive-jaを、コマンドはすべてdocker-composeにまとめてしまう方法を紹介します。日本語LaTex組版の環境としては、これ以上シンプルにできない気がします(もっとシンプルな方法があれば教えてください( ;∀;))。
結論
1. Docker Desktop をインストールする
Dockerを利用するためDocker Desktopをインストールします。
2. docker-compose.yml を書く
以下のようにdocker-compose.yml
を記述します。
sample/
├── docker-compose.yml
└── main.tex
version: '3.8' # 使用するComposeファイルのバージョンを指定
services:
latex:
image: paperist/alpine-texlive-ja # 日本語対応のTeX Liveを含む軽量なDockerイメージを指定
volumes:
- .:/workdir # 現在のディレクトリをコンテナ内の/workdirにマウント
working_dir: /workdir # コンテナ内での作業ディレクトリを指定
command: # コンテナ実行時に実行するコマンドを指定
- /bin/bash # Bashシェルを使用
- -c # 次の文字列をコマンドとして実行
- |
# pLaTeXでmain.texをコンパイルしてDVIファイルを生成
platex main.tex
# 生成されたDVIファイルをPDFに変換
dvipdfmx main.dvi
日本語LaTex組版環境としてはpaperist/texlive-jaが一番軽量かつ利用数が多そうな為これにしてます。
3. 実行
$ docker-compose up
試す
国内学会のいくつかの予稿テンプレートをdocker-composeで組版してみました。
command:
の箇所を適宜変更することで、それぞれのテンプレートに合わせています。
おわりに
devcontainerやLatex WorkShopを利用することで、より便利に執筆することも可能です。
ただ、個人的にはVSCodeに依存しない形で利用したい&可能な限り設定ファイルは少なくしたいので、docker-composeだけで完結できるようにして利用しています(./vscode
とか書いても後輩が気づかない説)。
例えば、研究室内のLaTexテンプレートに追加でdocker-composeまで書いてあげることで、後輩は環境構築に悩まずdocker-compose up
を実行するだけで先輩と同じ組版をすることができて便利だと思います。
備考
- paperist/texlive-jaではepsファイルは利用できないようなので、別の画像形式にするか別のコンテナを使う。
- 生殺与奪の権をOverleafに握らせるな