如何才能在使用 创建的引用中始终获得直立的数字\cref
?我相信我应该使用 来做到这一点\crefdefaultlabelformat{#2\textup{#1}#3}
。但在下面的例子中,我似乎没有在由 创建的句子中的“2”之前获得斜体校正\emph{A reference to \cref{thm1,thm2}.}
(与它下面的由 创建的句子相比\emph{A reference to Theorems \textup{1} and \textup{2}.}
)。
我的示例使用了一些我需要使用的其他包。
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{ntheorem}
\usepackage[capitalise,nameinlink]{cleveref}
\crefdefaultlabelformat{#2\textup{#1}#3}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}\label{thm1}
A theorem.
\end{theorem}
\begin{theorem}\label{thm2}
A theorem.
\end{theorem}
\emph{A reference to \cref{thm1,thm2}.}
\emph{A reference to Theorems \textup{1} and \textup{2}.}
\end{document}
编辑:我发现如果我将\crefdefaultlabelformat
上面的行替换为
\makeatletter
\crefdefaultlabelformat{\leavevmode\sw@slant#2{\upshape#1}#3}
\makeatother
按照upref
包装中的方法操作(参见文档),我似乎自动在两个地方都得到了斜体校正。但我不知道这有多安全。
答案1
如果\cref
列表中只有两个参考(如此处的示例),\crefpairconjunction
则应使用宏,此处使用明确的斜体更正,即\/
:(参见当前手册第 13 页cleveref.pdf
)
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{ntheorem}
\usepackage[capitalise,nameinlink]{cleveref}
\crefdefaultlabelformat{#2\textup{#1}#3}
\newcommand{\crefpairconjunction}{ and\/ }
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}\label{thm1}
A theorem.
\end{theorem}
\begin{theorem}\label{thm2}
A theorem.
\end{theorem}
\emph{A reference to \cref{thm1,thm2}.}
\emph{A reference to Theorems \textup{1} and \textup{2}.}
\end{document}