如何解析不在一行上的 rerunfilecheck 警告

如何解析不在一行上的 rerunfilecheck 警告

我可以想象,这似乎是一个奇怪的问题。我在日志文件中收到以下警告:

Package rerunfilecheck Warning: File `manualArithInOctave.aux' has changed. Rer
un.

可以看到,Rerun由于文件名太长,所以被拆分了。由于我编写了一个自动检查重新运行的软件,我没有考虑换行符,因此我的软件目前失败了。对于所有 latex 编译器来说,这种换行符都是一样的。你会如何处理?是否可以将行变长?

目前我帮助自己检查

Package rerunfilecheck Info: Checksums for 

总是出现在这样的语境中

Package rerunfilecheck Info: Checksums for `manualArithInOctave.aux':
(rerunfilecheck)             Before: AE29388CCDAB80FD9099D31C76042CA5;26803
(rerunfilecheck)             After:  3FBBC4F917BC53D0C178CFCE6CA06FBB;26803.

并表示重新运行。

但这当然是一种 hack。肯定有人对 tex 编程有更好的理解,并能想出更好的解决方案。

一个解决方案是让编译器根本不产生换行符。

答案1

\documentclass{article}

\begin{document}
\typeout{Package rerunfilecheck Warning: File `manualArithInOctave.aux' has changed. Rerun.}
\end{document}

生产

Package rerunfilecheck Warning: File `manualArithInOctave.aux' has changed. Rer
un.
(./ee4450.aux) )
No pages of output.
Transcript written on ee4450.log.

但是如果你在命令行中设置,max_print_linetexmf.cnf可以有超过 80 个字符:

$ pdflatex --cnf-line="max_print_line=100" ee4450
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./ee4450.tex
LaTeX2e <2023-11-01>
L3 programming layer <2023-11-09>
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def) (./ee4450.aux)
Package rerunfilecheck Warning: File `manualArithInOctave.aux' has changed. Rerun.
(./ee4450.aux) )
No pages of output.
Transcript written on ee4450.log.

这适用于所有引擎,pdftex、xetex luatex,该--cnf-line选项适用于 texlive,在 miktex 中使用-max-print-line, as in -max-print-line=100


您没有提供示例,但实际上来自包的几乎所有消息都在文件名后提供了换行符,我猜您使用了aux具有特殊情况的选项来避免强制换行。代码确实

            \ifx\\#4\\%
              \space Rerun%
            \else
              \MessageBreak
              #4%
            \fi

因此,如果你避免[aux]使用任何自定义消息检查辅助文件,而是指定它,那么在Rerun

\documentclass{article}

\usepackage{rerunfilecheck}
\RerunFileCheck{\jobname.aux}{}{Rerun, see new line}
\begin{document}
\makeatletter
% force it to never stabilise so you always get a rerun message
\write\@auxout{\global\c@page=\the\numexpr\c@page+1\relax}
this is page \label{aaa}\pageref{aaa}
\end{document}

产生终端输出

Package rerunfilecheck Warning: File `vvvverrrryyyylonnngnaame.aux' has changed
.
(rerunfilecheck)                Rerun, see new line.

相关内容