我还看到了有关 cleveref 和 thmtools 的其他问题(thmtools 和 cleveref 的问题,hyperref / cleveref / thmtools 存在问题, 我如何摆脱特定的 pdftex 警告信息?),但它们与我的并不完全一样。
我做了什么:
我在书籍环境中使用了这两个包,我使用 thmtool 定义了定理和引理(numberline=theorem)环境,并在第一章中定义了一个引理,在第二章中定义了第二个引理。我使用\ref
或\cref
引用第二个引理。
我得到了什么:我有以下警告
pdfTeX warning (ext4): destination with the same identifier (name{lemma.1}) has been already used, duplicate ignored
实际上,正确的标签显示在 pdf 中,但超链接与第一个词条链接。
关于如何修复它有什么想法吗?
以下是 MWE:
%!TEX encoding =UTF-8 Unicode
\documentclass{book}
%%%============== Packages
% \usepackage{fontspec}
\usepackage[utf8]{inputenc}
% Permet de gerer les accents en francais
\usepackage[T1]{fontenc}
% \usepackage{amsthm}
% \newtheorem{theorem}{Theorem}[chapter]
% \newtheorem{lemma}[theorem]{Lemma}
\usepackage{thmtools}
\declaretheorem[numberwithin=chapter,name=Theorem,
refname={theorem,theorems},
Refname={Theorem,Theorems}]{theorem}
\declaretheorem[numberlike=theorem,name=Lemma,
refname={lemma,lemmas},
Refname={Lemma,Lemmas}]{lemma}
% Creation de liens hypertextes (cliquables)
\usepackage{hyperref}
% Creation de liens hypertextes (cliquables)
\usepackage[capitalise,noabbrev]{cleveref}
\title{Packages clash}
\begin{document}
\chapter{First}
\section{Section 1 1}
\begin{lemma}\label{lem:1}
Lemma 1
\end{lemma}
\chapter{Second}
\section{Section 2 1}
\begin{lemma}\label{lem:2}
Lemma 2
\end{lemma}
\section{Section 2 2}
\ref{lem:2}
\end{document}
答案1
您需要执行\declaretheorem
语句后正在加载cleveref
。您的设置的其他一切都很好。
...
\usepackage{thmtools}
\usepackage{hyperref}
\usepackage[capitalise,noabbrev]{cleveref}
\declaretheorem[numberwithin=chapter,name=Theorem,
refname={theorem,theorems},
Refname={Theorem,Theorems}]{theorem}
\declaretheorem[numberlike=theorem,name=Lemma,
refname={lemma,lemmas},
Refname={Lemma,Lemmas}]{lemma}
...
但请注意,包capitalise
的选项对和环境的-type 交叉引用cleveref
没有影响:通过语句中的选项设置的值将覆盖选项的工作。\cref
theorem
lemma
refname
\declaretheorem
capitalise