我如何摆脱特定的 pdftex 警告信息?

我如何摆脱特定的 pdftex 警告信息?

这是一个展示我的问题的最小示例:

\documentclass{article}

\usepackage{amsthm}
\usepackage{hyperref}
\usepackage{cleveref}

\newtheorem{thm}{Theorem}
\newtheorem{lem}[thm]{Lemma}

\begin{document}

\begin{lem}
Lemma
\end{lem}

\end{document}

我收到的警告如下:

[1pdfTeX warning (ext4): destination with the same identifier (name{thm.1}) has been
already used, duplicate ignored

\AtBegShi@Output ...ipout \box \AtBeginShipoutBox 
                                                  \fi \fi 
l.16 \end{document}
                   {<install dir>/MiKTeX/2.9/pdftex/config/pdftex.map}]

我知道这只是一个警告,并且我的文档在交叉引用和超链接方面仍然可以正常工作,但我仍然想知道为什么我会收到此警告,以及是否可以采取任何措施来修复它而不删除所包含软件包的功能。

附加问题:当产生此警告(或任何通用的“具有相同标识符(name{XXX.YYY})的目的地已被使用,忽略重复”)时,幕后发生了什么,因为这不仅限于定理环境。

来自日志文件:

Package: amsthm 2004/08/06 v2.20
Package: hyperref 2011/04/17 v6.82g Hypertext links for LaTeX
Package: cleveref.sty 2011/03/22 v0.17.9 Intelligent cross-referencing
Package cleveref Info: `hyperref' support loaded on input line 2157.
Package cleveref Info: `amsthm' support loaded on input line 2300.

答案1

使用这个顺序的包:

\usepackage{hyperref}
    
\usepackage{amsthm}
    
\usepackage{cleveref}

答案2

这是一个已知问题,hyperref在 TeX FAQ 中讨论/回答

回答你的“附加问题”:这是因为你使用同一个计数器来引用两个不同的东西,因为

\newtheorem{thm}{Theorem}
\newtheorem{lem}[thm]{Lemma}

这告诉 LaTeX 您想要一个名为 的新环境lem,标签为Lemma,但应该使用与环境thm(标签为)相同的计数器。本质上,如果您在之前Theorem使用了,那么相应的计数器就会增加,从而消除问题。thmlem


附注:具体到您的最小示例:删除包cleveref会清除此 pdfTeX 警告。但是,这可能只是因为您想说明问题。

如果你想摆脱所有这些警告,并且“文档仍然可以正常工作”,你可以使用以下命令阻止 pdfTeX 输出它们:silence包裹。例如,添加

\usepackage{silence}% Filter out unwanted warnings and error messages
\WarningFilter{pdftex}{destination with the same}% Remove all warnings issued by pdfTeX
                                                 % (as pdfTeX Warning: 'destination with the same'...)

到您的文档序言将“静音”pdfTeX的警告,以“目标相同”开头。

相关内容