请考虑以下示例:
\documentclass{article}
\usepackage{ntheorem}
\usepackage{cleveref}
\newcommand{\theName}{conjecture}
\newcommand{\theNamePlural}{conjectures}
\newtheorem{conjecture}{\expandafter\MakeUppercase\theName}
\crefname{conjecture}{\expandafter\MakeUppercase\theName}{\expandafter\MakeUppercase\theNamePlural}
\Crefname{conjecture}{\expandafter\MakeUppercase\theName}{\expandafter\MakeUppercase\theNamePlural}
\begin{document}
\begin{conjecture} \label{c1} Something happened.
\end{conjecture}
\begin{conjecture} \label{c2} Something else also happened.
\end{conjecture}
Look at this fine \lcnamecref{c1}.
\end{document}
与我预期的相反,输出是
看看这个精彩的猜想。
我确信这与宏的扩展有关,但我完全不知道到底发生了什么。
现在,在我的实际设置中,cref 名称和标签必须来自宏,如\theName
和,\theNamePlural
并且全部为小写。为了实现我上一个问题的答案,我需要\crefname
使用\Crefname
这些宏的大写版本。
问题。是否有某种方法可以修改\lcnamecref
或定义一个全新的宏来输出以下内容?
看看这个精彩的猜想。
非常感谢!
答案1
我不确定你为什么要让你的生活变得复杂,但是如果你想要以\cref
大写字母正常出现“猜想”,那么\theName
就用大写字母定义(这基本上与你上一个问题的解决方案相同)。
\documentclass{article}
\usepackage{ntheorem}
\usepackage[capitalize]{cleveref}
\newcommand{\theName}{Conjecture}
\newcommand{\theNamePlural}{Conjectures}
\newtheorem{conjecture}{\theName}
\Crefname{conjecture}{\theName}{\theNamePlural}
\begin{document}
\begin{conjecture} \label{c1} Something happened.
\end{conjecture}
\begin{conjecture} \label{c2} Something else also happened.
\end{conjecture}
Look at this fine \lcnamecref{c1}.
But also at \cref{c1,c2}.
\end{document}
然而,是一种将固定标签输入为小写并正常\lcnameref
工作的方法,但它需要expl3
。
\documentclass{article}
\usepackage{expl3}
\usepackage{ntheorem}
\usepackage[capitalize]{cleveref}
\ExplSyntaxOn
\cs_set_eq:NN \MakeMixedcase \tl_mixed_case:n
\ExplSyntaxOff
\newcommand{\theName}{conjecture}
\newcommand{\theNamePlural}{conjectures}
\newtheorem{conjecture}{\MakeMixedcase{\theName}}
\Crefname{conjecture}{\MakeMixedcase{\theName}}{\MakeMixedcase{\theNamePlural}}
\begin{document}
\begin{conjecture} \label{c1} Something happened.
\end{conjecture}
\begin{conjecture} \label{c2} Something else also happened.
\end{conjecture}
Look at this fine \lcnamecref{c1}.
But also at \cref{c1,c2}.
\end{document}