Cleveref 的 lcnamecref

Cleveref 的 lcnamecref

请考虑以下示例:

\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}

相关内容