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
が呼び出されて滅茶苦茶になってしまっているのだと思います。