Cleveref 与 hyperref 冲突

Cleveref 与 hyperref 冲突

我正在使用 KOMAscript 类和cleveref包来创建交叉引用。现在我想引用一个定理,其中作为可选标题,我\citetnatbib包中传递了引用。

final模式下我没有问题,但在draft模式下会发生这种情况。我留下了以下 MWE。

编写包时按照hyperref以下方式进行勘误draft

\documentclass[draft]{scrbook}

\usepackage[T1]{fontenc} 
\usepackage[italian]{babel} 

\usepackage{amsmath} 
\usepackage{amsthm} 
\theoremstyle{plain} 
\newtheorem{theorem}{Theorem}[section]


% ------------------------------------------
% PACKAGES FOR REFERENCES and BIBLIOGRAPHY
% ------------------------------------------
\usepackage[pdfencoding=auto, psdextra]{hyperref} 
\usepackage[authoryear, square]{natbib} 
\usepackage[italian]{cleveref} 


\begin{filecontents}[force]{\jobname.bib}
@book{key,
  author = {Newton, Isacc},
  year = {1678},
  title = {Something wonderful},
  publisher = {Goofy},
}
\end{filecontents}


\begin{document}

\begin{theorem}[\citet{key}]
\label{thm:mytheo}
    A wonderful theorem bla bla bla 
\end{theorem}

Here I referer to~\Cref{thm:mytheo}

\bibliographystyle{plainnat}
\bibliography{\jobname}

\end{document}

但是,如果您删除该hyperref包,它也可以在模式下顺利编译draft

hyperref模式下的包存在什么问题draft?有什么方法可以解决吗?

这是输出hyperref 在此处输入图片描述 这是没有hyperref 在此处输入图片描述 这些是错误 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

答案1

我遇到了没问题如果我执行\theoremstyle\newtheorem指令加载hyperrefcleveref。顺便说一句,该包的用户指南第 8.3.1 节明确建议这样做cleveref

在此处输入图片描述

观察“定理 5.3.1”不是在此屏幕截图中,尽管hyperref是使用选项 和 加载的colorlinks,并且allcolors=bluecleveref是使用选项 加载的,但它仍以蓝色呈现nameinlink。当然,这种颜色缺失是因为draft设置了文档类选项;此选项指示hyperref不要创建实际的超链接。

\documentclass[draft,italian]{scrbook}

\usepackage[T1]{fontenc} % <-- nice touch!
\usepackage{babel} 

\usepackage[authoryear,square]{natbib} 
\bibliographystyle{plainnat}

\begin{filecontents}[overwrite]{mybib.bib}
@misc{key, author = {Newton, Isaac}, year = {1678}, title = {Something wonderful},
}
\end{filecontents}
 
\usepackage{amsthm} 
\usepackage[colorlinks,allcolors=blue]{hyperref}  
\usepackage[nameinlink,capitalize]{cleveref} 

% Execute the next 2 instructions AFTER loading hyperref and cleveref:
\theoremstyle{plain} 
\newtheorem{theorem}{Theorem}[section]


\begin{document}
\setcounter{chapter}{5} % just for this example
\setcounter{section}{3}

\begin{theorem}[\citet{key}] \label{thm:mytheo}
    A wonderful theorem \dots
\end{theorem}

Here I cross-reference \cref{thm:mytheo}.

\bibliography{mybib}
\end{document}

相关内容