auxが不正になる

TeXLive2013+emacs+YaTeX環境ですが、他の環境(auctexなど)でも起きるようです。

症状

数式エラー「$の不釣り合い」などでタイプセットがエラーになった後、正しく修正しても、
「! File ended while scanning use of \@writefile.」
あるいは、
「! File ended while scanning use of \@newl@bel.」
というエラーが出て、その後のタイプセットが通らなくなる。.auxをみると、参照ラベルのリストアップが頓挫している。

解決策

  1. *YaTeX-typesetting*バッファでEnterを連打する
  2. .auxを削除する
  3. init.elでtex-commandに「-interaction=nonstopmode」を設定する

僕の場合は、1を使ってますが、以前は3の
  (setq tex-command "platex -kanji=utf8 -src-specials -interaction=nonstopmode")
としてましたが、エラーが起きても、*YaTeX-typesetting*バッファに「! Emergency stop.」としか表示されず、解りにくくなるので、今は使っていません。

蛇足

MWE(Minimum Working Example)を作ろうとしてソースの改変を行うとエラーの箇所が変化します。
最初は、「! File ended while scanning use of \@writefile.」であったのに、改変すると「! File ended while scanning use of \@newl@bel.」など、改変方法が異なれば他のメッセージに変化します。しかし、いずれも、auxの参照ラベルのリストアップが頓挫していることには変わりありません。

全くの推測ですが、エラー発生時にタイプセッタ内のバッファがフラッシュされていないのではないかと思います。ここで言うバッファというのは、emacsのバッファではなく、latex.exeやplatex.exeの内部バッファのことです。

TeX Q&Aや、海外サイトでも、この症状に関して、MWEの提出が求められていますが、内部バッファの吐き出しに関する不具合だとすれば、量とタイミングが関連するので、おそらく相当の作業と幸運に恵まれなければ、MWEに到達できないのではないかと想像します。

僕の場合は、分割タイプセットが10本になった時に症状が出て、MWE作成を試みるも、3本にまで絞った段階で挫折しました。今もMWEは作れていません。ただ、latex.exeのソースコードに知見のある人ならば何か思いつくのではないかと・・・他力本願な記事でした。