更新:回想起来,我意识到这个问题实际上是“LaTeX 有没有办法将文件上下文和警告/错误消息保持在同一行?”

更新:回想起来,我意识到这个问题实际上是“LaTeX 有没有办法将文件上下文和警告/错误消息保持在同一行?”

更新:回想起来,我意识到这个问题实际上是“LaTeX 有没有办法将文件上下文和警告/错误消息保持在同一行?”

这是为了使用正则表达式自动解析日志文件(例如,寻找像“无效”这样的关键词,并让文件上下文出现在结果中,而不仅仅是包含消息的一行)。

egreg 明确地回答了“不”,它是在 XeTeX 中硬编码的。:(

更新日期 2016-05-19

anyfontsize在发给P. Szabó维护者的一封电子邮件中:

我不再积极维护此软件包。请随意将其转换为 UTF-8,并上传新版本的 CTAN。我已批准您这样做。


原始问题文本

我正在使用 XeLaTeX 排版文档。我有一个大胆的愿望,就是从我的文档构建中删除所有警告和错误 :D(几乎不可能,但我努力去争取!)

我和同事最终找到的一个警告是anyfontsize,这是 TeX Live 中的一个官方软件包。所有软件包都是 UTF-8 或 ASCII,除了这个(ISO-8859),因为创建者的名字中有变音符号(可能是匈牙利语 ;) )我已经给他发了电子邮件。无论如何,我真正关心的是以下信息

grep -Pin 'Invalid' myfile.log

第 3 行的无效 UTF-8 字节或序列被替换为 U+FFFD。

如果没有上下文,此消息将毫无用处(是的,第 3 行是上下文,但如您所见,几乎没有用处)。我建议通过添加文件名为这些消息添加上下文。这样,我就可以立即知道此错误是在读取期间引起的anyfontsize。也许在每个错误/警告之前添加类似“显示上次加载的文件”的内容。

这已经可以实现吗?我知道\listfiles,这很棒!

我可以尝试使用以下方法隐藏不构成问题的消息:silence包裹但是,这样做并不是一个好主意,因为如果没有上下文(第 3 行什么?),消息就不够独特。

答案1

使用 XeLaTeX 编译以下文档时

\documentclass{article}
\usepackage{fontspec}
\usepackage{anyfontsize}

\begin{document}

aaa

\end{document}

您的日志文件将包含

(/usr/local/texlive/2015/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty
Invalid UTF-8 byte or sequence at line 3 replaced by U+FFFD.
Invalid UTF-8 byte or sequence at line 3 replaced by U+FFFD.
Package: anyfontsize 2007/11/22 anyfontsize.sty by pts
)

这很容易解释:(Xe)TeX 已经打开anyfontsize.sty并在第 3 行发现了坏字节序列。

解决方案:无。要么你.sty自己更改,要么作者更改。消息不能保持沉默。

另一方面,加载anyfontsize时没有任何用处fontspec。坦率地说,一般来说,它没什么用处。

相关内容