我正在使用 KOMAscript 类和cleveref
包来创建交叉引用。现在我想引用一个定理,其中作为可选标题,我\citet
从natbib
包中传递了引用。
在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
?有什么方法可以解决吗?
答案1
我遇到了没问题如果我执行\theoremstyle
和\newtheorem
指令后加载hyperref
和cleveref
。顺便说一句,该包的用户指南第 8.3.1 节明确建议这样做cleveref
。
观察“定理 5.3.1”不是在此屏幕截图中,尽管hyperref
是使用选项 和 加载的colorlinks
,并且allcolors=blue
包cleveref
是使用选项 加载的,但它仍以蓝色呈现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}