从日志文件中提取错误的最简单方法

从日志文件中提取错误的最简单方法

跑步时pdflatex -interaction=nonstopmode我正在寻找:

  1. 仅基于日志文件检测是否存在错误的方法(假设我们无法访问进程退出代码)。

  2. 从日志文件中提取用户友好的错误消息。

错误消息似乎总是以开头,!因此这实际上可以归结为:

  1. 如果发生以下情况,是否可以安全地假设存在错误任何日志中的行以!?开头

  2. 我如何确定以 开头的行之后还有多少行!是错误消息的一部分?


以下是一个例子。假设错误是由触发的$x^{$。我得到的日志中的内容(带有上下文):

...
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <5> on input line 3.

! Missing } inserted.
<inserted text> 
                }
l.3 $x^{$

I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.

[1

{/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./ts.aux) ) 
...

鉴于以pdflatex非交互方式运行,在这种特定情况下,提取的最用户友好的错误消息很简单:

! Missing } inserted.
<inserted text> 
                }
l.3 $x^{$

以下几行(“我插入了一些东西……”)显然也是错误消息的一部分,旨在让用户阅读。但在这个特定情况下,它们带来的困惑大于帮助,因为没有办法type `2' now……

总而言之,我正在寻找一种方法来提取足够多的错误消息,使它们对用户来说最有用且最不令人困惑。我发现这很困难,因为我没有看到错误格式中的一般模式,也不知道要预测哪些特殊的边缘情况。注意:行号与我的用例无关。

答案1

引用 winedt 的 errors.ini 内容:

// Before you conclude that this error detection is a pretty complicated business
// take a good look at the log file produced by TeX or its accessories. It lacks
// structure and it does not follow any clear conventions that would make it easy
// to locate Errors and Warnings in your source files. Even locating the source
// file in a multi file document based on the info in TeX's log file is far from
// trivial. In other words: TeX's log files are a genuine mess! 

我认为查看错误最简单的方法是使用内置良好日志解析功能的编辑器。如今大多数 TeX 编辑器都做得很好。所以我不会尝试重新发明轮子。

相关内容