以前の記事では,最新の TeX Live 2019 に,高品質なオープンソース和文フォントである原ノ味フォントと,新進気鋭の LaTeX 文書ビルドシステム llmk を搭載した Docker コンテナのイメージを作成しました。
それに対し今回は,過去バージョンの TeX Live を保存した Docker コンテナを作成してみました。
使い道
過去バージョンの TeX Live を Docker コンテナとして保存し,いつでも過去バージョンを呼び出せるようにしておくと,次のような場面で役立つはずです。
- 過去に組版した文書を今コンパイルしたら組版結果があちこち変わり,ページ数が変わってしまった!(←これ結構起こりますよね……😓)元と同じ環境で再度コンパイルしたい……!
- 最新の TeX Live だとコンパイルが通らない。昔のバージョンではこのソースで通っていたはず。どの時点の TeX Live まではコンパイルが通っていたのかをさかのぼって検証したい。
- Web 上で「TeX Live 2015 で組版したところ結果が期待通りになりません」といった質問に答えるにあたり,手元で検証して動作を確認したい。
仕様
日本語 TeX 開発コミュニティ (texjp.org) のサーバから取得した,次の各 TeX Live の frozen 版 (scheme-full) をコンテナイメージとして固めました。それぞれ Ubuntu 18.04 ベースです。Ubuntu 18.04 公式レポジトリの Ghostscript 9.26 も同梱・設定されています。
- TeX Live 2012 (frozen)
- TeX Live 2013 (frozen)
- TeX Live 2014 (frozen)
- TeX Live 2015 (frozen)
- TeX Live 2016 (frozen)
- TeX Live 2017 (frozen)
- TeX Live 2018 (frozen)
- TeX Live 2019 (frozen)
IPAex フォント埋め込み設定
各バージョンとも,(u)pLaTeX
+ dvipdfmx
/dvips
を使った場合にデフォルトで IPAex フォントを埋め込む設定を済ませてあります。
llmk 同梱
TeX Live とは別に,/usr/local/bin
に llmk を入れ,Docker コンテナを引数なしで起動したときに llmk が呼び出されるようにしてあります。(ただし TeX Live 2012 の texlua では llmk を動かせなかったので入れていません。)
Docker Hub レポジトリ
次の各タグでバージョンが区別されています。
2012frozen
2013frozen
2014frozen
2015frozen
2016frozen
2017frozen
2018frozen
2019frozen
使い方
イメージの pull
まず,使いたいバージョンのタグを指定して pull します。
$ docker pull doratex/tlarchive:2015frozen
起動法
コンテナ内では /workdir
が作業ディレクトリとなるので,それをカレントディレクトリと bind マウントして使うのを想定しています。
alias tl2015="docker run --rm \
--mount type=bind,src=\"\$(pwd)\",dst=/workdir \
--mount type=volume,src=ltfontcache2015,dst=/usr/local/texlive/2015/texmf-var/luatex-cache/generic/fonts/otl \
doratex/tlarchive:2015frozen"
などとエイリアスを設定しておくと楽でしょう。(--mount type=volume,...
の部分は,LuaTeX のフォントキャッシュを ltfontcache2015
というボリューム(名前は任意です)に保存し永続化させるための設定です(詳細は前回の記事を参照)。このエイリアスが設定されている下で
$ tl2015 ptex2pdf -l hoge.tex
$ tl2015 lualatex fuga.tex
などと普通にコンパイルすることも可能です。pLaTeX
+ dvips
+ ps2pdf
のワークフローを使う場合は,
$ tl2015 /bin/bash -c 'platex hoge.tex && dvips hoge.dvi && ps2pdf hoge.ps'
とすれば OK です。
(u)pLaTeX
+ dvipdfmx
/dvips
においては,デフォルトで IPAex フォントを埋め込む設定になっています。
また,引数なしで
$ tl2015
と起動すると,同梱の llmk が動き,カレントディレクトリの llmk.toml
に基づきビルドしようとします。
$ tl2015 llmk hoge.tex
のようにして特定のファイルをターゲットにすることもできます。従来の latexmk もインストールされているので
$ tl2015 latexmk hoge.tex
も使えます。
Dockerfile
このイメージを作るために使用した Dockerfile は GitHub レポジトリに置いてあります。年号が違う以外はほぼ同様に見えますが,各バージョンの仕様の違いに応じて以下のように微調整してあります。
-
install-tl
の-repository
がhttps
に対応したのは TeX Live 2017 以降なので,TeX Live 2016 以前ではhttp
を使う。 - TeX Live 2012 では
kanji-config-updmap-sys
ではなくupdmap-setup-kanji-sys
を使う。 - TeX Live 2012 では
luaotfload-tool
がないのでTEXMFDIST/scripts/luaotfload/mkluatexfontdb.lua
を直接呼び出す。 - TeX Live 2012 では llmk が動かないのでインストールしない。
イメージサイズ
scheme-full で TeX Live を丸ごとコンテナ化しているイメージサイズは大きいです。それにしても,こうやって並べてみると,TeX Live の全体サイズが年々肥大化しているのが分かりますね……。
REPOSITORY | TAG | SIZE |
---|---|---|
doratex/tlarchive | 2012frozen | 1.90 GB |
doratex/tlarchive | 2013frozen | 2.03 GB |
doratex/tlarchive | 2014frozen | 2.27 GB |
doratex/tlarchive | 2015frozen | 2.38 GB |
doratex/tlarchive | 2016frozen | 2.68 GB |
doratex/tlarchive | 2017frozen | 2.94 GB |
doratex/tlarchive | 2018frozen | 3.22 GB |
doratex/tlarchive | 2019frozen | 3.74GB |