理解由定理引起的警告“具有相同标识符的目的地已被使用”

理解由定理引起的警告“具有相同标识符的目的地已被使用”

在下面的 mwe 中我收到两个警告:LaTeX Warning: Citation 'foo' on page 2 undefined on input line 29.pdfTeX warning (ext4): destination with the same identifier (name{definition.1}) has been already used, duplicate ignored

虽然第一个很明显,但我不明白第二个警告从何而来。例如,如果\newpage删除了 或错误引用被删除或更正或被cleveref删除,第二个警告就会消失。如果我使用\newtheorem而不是thmtools和,它也会消失\declaretheorem

有人能解释一下为什么会出现这个警告吗?我一开始有一个很大的文档,里面包含了所有这些内容,因此我很想知道。

我研究过类似的问题但似乎有些不同。我也尊重加载包的顺序。

数学家协会

\documentclass{scrbook}

\usepackage{amsmath}
\usepackage{amsthm} 

\usepackage{thmtools}
\declaretheorem[style=plain,parent=section]{theorem}
\declaretheorem[style=definition,qed=$\triangle$,sibling=theorem]{definition}

% \newtheorem{theorem}{Theorem}[section]
% \newtheorem{definition}[theorem]{Definition}

\usepackage{hyperref}

\usepackage{cleveref}

\begin{document}

\chapter{chap}

\section{Sec1}

\begin{definition}
Text
\end{definition}

\newpage

\section{Sec2}

The reference \cite{foo} is undefined.
\begin{definition}
Text
\end{definition}
\end{document}

答案1

(重新发布之前的评论,以便查询可以被视为已收到答复。)

问题的直接原因是这两个指令当前放在了和包加载\declaretheorem之前而不是之后。hyperrefcleveref

请更改这两个指令的位置,而不管\newpage文档正文中可能存在什么指令。

回答您的后续问题:该cleveref软件包的用户指南确实提到,虽然所有与定理相关的软件包(例如amsthmthmtools)都应该在之前加载,但和种类cleveref的语句应该只出现\newtheorem\declaretheorem cleveref已加载。(有关更多详细信息,请参阅软件包用户指南第 25 页第 14.1 节第二个要点中的最后一句。)

相关内容