\MakeTextLowercase 无法与 \cref 配合使用

\MakeTextLowercase 无法与 \cref 配合使用

我使用cleverefclassicthesisclassicthesis定义章节标题使用小写字母,并使用\MakeTextLowercase来实现这一点。但是,当使用 选项时capitalizecleveref参考文献的首字母仍设置为大写字母;似乎 以\MakeTextLowercase某种方式忽略了它。

这是一个没有的 MWE \classicthesis

\documentclass{article}

\usepackage[capitalize,noabbrev]{cleveref}
\usepackage{titlesec}
\usepackage{textcase}
\usepackage{microtype}

\DeclareRobustCommand{\spacedlowsmallcaps}[1]{\textls[80]{\scshape\MakeTextLowercase{#1}}}%
\titleformat{\section}{\relax}{\textsc{\MakeTextLowercase{\thesection}}}{1em}{\spacedlowsmallcaps}


\begin{document} 

\section{\label{sec:foo}foo}
\section{Code for \protect\cref{sec:foo}}

\end{document}

这是输出(忽略部分编号未大写的事实;)):

输出

答案1

您可以重新定义名称,以便它们使用在生效\cref时可以被中和的宏。\spacedlowsmallcaps

\documentclass{article}

\usepackage{titlesec}
\usepackage{textcase}
\usepackage{microtype}
\usepackage[capitalize,noabbrev]{cleveref}

\makeatletter
\DeclareRobustCommand{\spacedlowsmallcaps}[1]{%
  \textls[80]{\let\crefuc\@firstofone\scshape\MakeTextLowercase{#1}}%
}
\DeclareRobustCommand{\crefuc}[1]{\MakeTextUppercase{#1}}
\makeatother
\titleformat{\section}{\relax}{\textsc{\MakeTextLowercase{\thesection}}}{1em}{\spacedlowsmallcaps}

\crefname{section}{\crefuc{s}ection}{\crefuc{s}ections}


\begin{document}

\section{\label{sec:foo}foo}
\section{Code for \cref{sec:foo}}

Here's a reference to \cref{sec:foo}

\end{document}

在此处输入图片描述

相关内容