如何避免意外地看起来像错误的日志消息?

如何避免意外地看起来像错误的日志消息?

TeX 错误通常用日志文件中的序列来标记<LF>!<SPACE>…。然而,有时即使没有发生错误,也会意外地在日志文件中得到这个字符序列。例如,考虑这个 LaTeX 文档test.tex

\documentclass{scrartcl}
\begin{document}
test

\immediate\write18{%
    echo This is a sentence that accidentally ends in an exclamation mark!
        This is problematic.
}
\end{document}

使用 运行pdflatex -shell-escape test.tex,日志文件中出现以下内容:

This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2016.9.6)  7 SEP 2016 01:07
entering extended mode
 \write18 enabled.
 %&-line parsing enabled.
**test.tex
(./test.tex
LaTeX2e <2016/03/31> patch level 3
… (removed for brevity)
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 2.
LaTeX Font Info:    ... okay on input line 2.
runsystem(echo This is a sentence that accidentally ends in an exclamation mark
! This is problematic. )...executed.

 [1

{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
(./test.aux) ) 
Here is how much of TeX's memory you used:
… (removed for brevity)

注意这行! This is problematic. )...executed.。我的 LaTeX 编辑器 (TeXStudio)不久前收到了一个与此问题相关的错误报告,但显然决定不尝试在其日志文件解析中区分这些情况,因此我在运行 LaTeX 时遇到了假阳性错误。但这不仅仅与 TeXStudio 有关:我确信许多日志解析工具会将这种情况显示为假阳性。

现在,我针对特定情况的想法\write18是在参数中插入换行符,但我不知道如何/是否可行。另一种可能性是将我的配置 ( texmf.cnf) 更改为避免 TeX 在日志文件中插入强制换行符/usr/share/texlive/texmf-dist/web2c/texmf.cnf,但我安装 TeX Live 2016 时附带的文件警告error_linehalf_error_linemax_print_line:“更改这些可能是不明智的。”。此外,由于我正在与其他人合作,我想避免告诉他们所有人这不是一个实际错误以及如何更改他们的配置。

那么,考虑到我的情况,我该如何避免这些虚假错误?

相关内容