TeX Liveしたい
$ docker container run --rm -v "$(pwd)":/workdir -w /workdir texlive/texlive:latest-full latexmk main.tex
texlive/texliveに、
(おそらく)公式のTeX Liveイメージがあります。
latestタグは毎週更新されます。
イメージのタグは、TeX Liveのschemeに合わせて用意されています(後述)。
dockerコマンドを毎回入力するのは大変なので、
下記のcompose.yamlを作成するのがオススメです。
Docker Composeしたい
# compose.yaml
services:
tex:
image: texlive/texlive:latest-full
volumes:
- .:/workdir
working_dir: /workdir
command: ["latexmk", "main.tex"]
サービス名をtexとしました。
imageは原則、最新版(latest)を指定します。
volumesでホストディレクトリを/workdirにバインドマウントすることで、
手元のファイルをコンテナ内で処理できるようにしています。
commandにコンテナを起動したときに実行する内容をリスト形式で記述しています。
$ docker compose up
docker compose upするとcommandに設定した内容の
$ latexmk main.texが実行されます。
実行後、コンテナは自動的に停止します。
過去のTeX Liveを使いたい
services:
tex:
image: texlive/texlive:TL2024-historic
volumes:
- .:/workdir
working_dir: /workdir
command: ["latexmk", "main.tex"]
TL{年}-historicで、過去のTeX Liveを指定できます。
このhistoricタグは、年ごとにひとつだけ存在します。
このタグは毎月リビルドされ、関連するパッケージなどは最新版に保たれるようになっています。
注釈
通常のタグは「その時点の状態」を指しますが、 TeX Liveの場合、通常とは異なる意味を持つので少し注意が必要です。
ファイルを変更したい
$ docker compose run --rm tex latexmk another.tex
docker compose run コンテナ名 コマンドでcommandの内容を上書きできます。
コンパイル対象のファイル名を変更したり、
latexmkにオプションを追加したり、のような修正ができます。
$ docker compose run tex latexmk -pvc main.tex
$ docker compose down
-pvcオプションでライブビューを有効にした場合、
docker compose downして明示的にコンテナを終了する必要があります。
イメージを選びたい
$ docker pull texlive/texlive:latest
$ docker pull texlive/texlive:latest-full
$ docker pull texlive/texlive:latest-medium
$ docker pull texlive/texlive:latest-small
$ docker pull texlive/texlive:latest-basic
$ docker pull texlive/texlive:latest-minimal
$ docker container run --rm -it イメージ名 bash
[コンテナ内]$ tlmgr info --list --only-installed | wc -l
[コンテナ内]$ exit
TeX Liveはschemeと、含まれているパッケージ数を確認しました。 また、日本語LaTeXに必要なパッケージの有無も確認しました。
タグ名 |
サイズ |
パッケージ数 |
|
|
|
|---|---|---|---|---|---|
|
5.2 GB |
4832 |
Yes |
Yes |
Yes |
|
1.8 GB |
1474 |
Yes |
Yes |
No |
|
1.2 GB |
355 |
Yes |
Yes |
No |
|
1.0 GB |
139 |
Yes |
Yes |
No |
|
985 MB |
63 |
Yes |
No |
No |
個人の環境に構築する場合はfullを選択すればOKです。
レジストリのサイズは2.3GBと表示されていますが、
ダウンロードして展開すると5.2GBになりました。
プロジェクト用の環境を構築する場合はbasicを選択し、
必要なパッケージを追加するのがよいと思います。
必要なパッケージを追加したい
1FROM texlive/texlive:latest-basic
2RUN tlmgr update --all \
3 tlmgr install \
4 luatexja \
5 fontspec \
6 siunitx \
7 caption \
8 minted \
9 biblatex \
10 markdown \
11WORKDIR /workdir
12VOLUME ["/workdir"]
13CMD ["latexmk", "main.tex"]
basicなどイメージを選択した場合、必要なパッケージは自分で追加する必要があります。
Dockerfileを作成し、カスタムイメージを作成します。
$ docker image build --tag イメージ名:タグ名 .
イメージ名:タグ名を指定して、カスタムイメージを作成します。
$ docker container run --rm -v "$(pwd)":/workdir -w /workdir タグ名 latexmk main.tex
カスタムイメージを指定してdockerコマンドを実行し、LaTeX文書がタイプセットできるか確認します。