有没有办法避免重复的编译器警告信息?

有没有办法避免重复的编译器警告信息?

我使用 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 可执行文件(在配置文件设置中)。

如果没有过滤脚本,消息窗口如下所示:

在此处输入图片描述

应用该脚本会导致以下结果:

在此处输入图片描述

相关内容