如果和都已定义cleveref
,则在引用 newtheorem 时,该包似乎无法正确大写。还是只有我一个人这样?这是我的 MWE:\crefname
\Crefname
\documentclass[a4paper,10pt]{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\usepackage[capitalise]{cleveref}
\crefname{theorem}{theoLowercase}{theoLowercaseS}
\Crefname{theorem}{TheoUpperCase}{TheoUppercasesS}
\begin{document}
\begin{theorem}\label{theo:test}
Test theorem
\end{theorem}
This is a reference to \cref{theo:test}.
\begin{figure} Test Figure
\caption{Test figure caption}
\label{fig:test}
\end{figure}
This is a reference to \cref{fig:test}.
\end{document}
\crefname
在我的计算机上,如果和都\Crefname
定义了,则对该定理的引用使用小写版本,即:
这是对 theoLowercase 1 的引用。
如果我注释掉\crefname
第 5 行的定义,我会得到预期的结果:
这是对 TheoUpperCase 1 的引用。
不过,在这两种情况下,对图形的引用都正确地大写。
我疯了吗?
答案1
似乎是“设计使然”。引用cleveref
手册第 6.1 节:
[使用该
capitalise
选项,] [a] 所有默认的交叉引用格式都将 [...] 将首字母大写,自动生成的\cref
变体也将如此 [...](但是,如果您明确定义\cref
变体不大写,cleveref
仍将尊重您的定义。换句话说,您有责任在自己的格式定义中正确定义大写。)
如果您希望自定义定义响应该capitalise
选项,请使用内部\if@cref@capitalise
条件:
\documentclass[a4paper,10pt]{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\usepackage[capitalise]{cleveref}
\makeatletter
\if@cref@capitalise
\crefname{theorem}{TheoUpperCase}{TheoUppercasesS}
\else
\crefname{theorem}{theoLowercase}{theoLowercaseS}
\fi
\makeatother
\Crefname{theorem}{TheoUpperCase}{TheoUppercasesS}
\begin{document}
\begin{theorem}\label{theo:test}
Test theorem
\end{theorem}
This is a reference to \cref{theo:test}.
\begin{figure} Test Figure
\caption{Test figure caption}
\label{fig:test}
\end{figure}
This is a reference to \cref{fig:test}.
\end{document}
答案2
capitalise
如果您希望\cref
在常见情况下将引用大写,则可以使用该选项。
如果您定义自己的命令(在您的情况下\crefname{theorem}{theoLowercase}{theoLowercaseS}
),当您使用\cref
引用时theorem
,包cleveref
会“尊重”您的定义(不大写)。
您会注意到,如果删除您的两个定义,它就会起作用:
\documentclass[a4paper,10pt]{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\usepackage[capitalise]{cleveref}
\begin{document}
\begin{theorem}\label{theo:test}
Test theorem
\end{theorem}
This is a reference to \cref{theo:test} and \Cref{theo:test}.
\begin{figure} Test Figure
\caption{Test figure caption}
\label{fig:test}
\end{figure}
This is a reference to \cref{fig:test} and \Cref{fig:test}.
\end{document}