現状

dockerを使って以下のコマンドでTeXをコンパイルした。

TARGET_DIR=$(pwd)/myfiles
docker run -v $TARGET_DIR/:/root/ kakerukitahara/tex ptex2pdf -l targetfile.tex

するとPDF自体は出力されるものの、目次が表示されない

解決方法

docker run を2回やる。それだけ。

2回やらないと行けないのは仕様で、一度ファイル全体を処理して項目の一覧などを生成してから、2回目のコンパイルで目次としてそれを利用しているらしい。

1回目のコンパイルでtargetfile.auxが生成されて、2回目でそれが利用される

TARGET_DIR=$(pwd)/myfiles
docker run -v $TARGET_DIR/:/root/ kakerukitahara/tex ptex2pdf -l targetfile.tex
docker run -v $TARGET_DIR/:/root/ kakerukitahara/tex ptex2pdf -l targetfile.tex

volumeをホストにマウントしているので良いが、マウントせずdocker cpを使う場合などは以下のほうが良いかも

docker run -v $TARGET_DIR/:/root/ kakerukitahara/tex bash -c 'ptex2pdf -l targetfile.tex && ptex2pdf -l targetfile.tex'