LuaTeX / SyncTeXの異常な動作について

Re: LuaTeX / SyncTeXの異常な動作について

- はやて (h20y6m) の投稿
返信数: 1

LuaTeX のバグっぽい感じですね。 (Windows の TeX Live 2024 と SumatraPDF v3.4.6 で再現)

\saveboxresource\includegraphics のなかで使っている)を使ったときに壊れた .synctex ファイルが作成されているみたいです。 (WSL 上でコマンドラインから evince で pdf を開くと ! SyncTeX Error : Ignored record <{2 という怪しげなメッセージが出ますね。)

plain LuaTeX でもう少し小さい再現例を作るとこうなりました。 (.synctex ファイルは 90 行)

%#! luatex
\setbox0=\hbox{S}
\saveboxresource0
\useboxresource\lastsavedboxresourceindex
\vfill \break
A
\input sub
\bye
% sub.tex
\vfill \break
B
\endinput

作成された .synctex ファイルを見ると1ページ目の途中に2ページ目の開始があったり、 1ページ目の終了や2ページ目の開始が2つあったりと、明らかにおかしな状態になっています

...
10: {1 ← 1ページ目の開始
...
27: {2 ← 2ページ目の開始 !?
...
32: }1 ← 1ページ目の終了 !?
...
34: }1 ← 1ページ目の終了
...
37: {2 ← 2ページ目の開始
...
60: }2 ← 2ページ目の終了
...
62: {3 ← 3ページ目の開始
...
60: }3 ← 3ページ目の終了
...

ただ、単に .synctex ファイルがこのようにおかしな状態になっていてもソースコードへ飛べなくなるのはかなり限られた状況だけのようです。 なのでもしかしたら全くの見当はずれの可能性もあります。


上記の .synctex の記述は luatexdir/pdf/pdfshipout.c の ship_out で書き出されているようですが、 この関数は(ship_out という名前にもかかわらず) \shipout だけでなく \saveboxresource を出力するときにも流用されているようです。

\shipout で1ページ目を出力している途中で \saveboxresource を見つけて入れ子で ship_out が呼び出されて滅茶苦茶になってしまっているのだと思います。

はやて (h20y6m) への返信

Re: LuaTeX / SyncTeXの異常な動作について

- 酔漢 . の投稿
はやて様

確認いただきありがとうございます。やはりLuaTeXのバグである線が濃厚なのですね。

調べてみたところLuaTeXのチームはバグレポートを受け付けているようなので、メールリストに登録して報告してみます。

ありがとうございました。