thmtools 和 cleveref 的问题

thmtools 和 cleveref 的问题

我还看到了有关 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没有影响:通过语句中的选项设置的值将覆盖选项的工作。\creftheoremlemmarefname\declaretheoremcapitalise

相关内容