我使用 TeXnicCenter,并使用非常方便的“编译结果”窗口(见下面的屏幕截图)。我有许多相同的警告*消息(当然不是完全相同,因为它们指向我的 LaTeX 源中的不同位置)。
有没有办法让 latex 编译器忽略或抑制文本相同的警告信息,以便它们不会填满我的缓冲区,并且让我能够轻松注意到任何其他警告信息?
TeXniCenter 似乎没有提供这样的功能,所以我在这里求助于 latex 编译器。
(*) 该消息的来源是我在标题中使用数学模式,而软件包hyperref
警告我它会忽略这些。目前,我不想关闭 hyperref 包,也不想从标题中删除数学符号。
答案1
一个解决方案是使用silence
包。根据其文档,它可以执行以下操作
此软件包旨在过滤掉不需要的警告和错误消息。整个软件包(包括 LaTeX)都可以被审查,但也可以针对非常具体的消息进行审查。TeX 的消息保持不变。
在这个例子中,您可以看到它是如何工作的,并抑制警告“PDF 字符串中不允许使用令牌”。
\documentclass{article}
\usepackage{silence}
\WarningFilter{hyperref}{Token not allowed}
\usepackage{hyperref}
\begin{document}
\section{$x_2$}
\end{document}
texorpdfstring
但如果你在标题中使用数学公式会更好
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{\texorpdfstring{$x_2$}{x2}}
\end{document}
答案2
您还可以通过从 LaTeX 输出中删除重复的警告来欺骗 TeXnicCenter。后者可以使用简单的 Perl 脚本完成,例如:
@lines = <STDIN>;
foreach (@lines) {
if (/^(.*Warning:.*)$/) {
next if ($warning{$1} == 1);
$warning{$1} = 1;
}
print $_;
}
为了应用该脚本,请创建以下批处理文件:
latex %1 %2 %3 %4 %5 %6 %7 %8 %9 | perl remove-warnings.pl
并告诉 TeXnicCenter 将其用作 LaTeX 可执行文件(在配置文件设置中)。
如果没有过滤脚本,消息窗口如下所示:
应用该脚本会导致以下结果: