更新:回想起来,我意识到这个问题实际上是“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
。坦率地说,一般来说,它没什么用处。