使用 \cref 创建的参考文献中始终显示直立数字,并使用斜体校正来表示参考文献之间的连词

使用 \cref 创建的参考文献中始终显示直立数字,并使用斜体校正来表示参考文献之间的连词

如何才能在使用 创建的引用中始终获得直立的数字\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} 

在此处输入图片描述

相关内容