使用 cleveref 包正确地将小节首字母大写

使用 cleveref 包正确地将小节首字母大写

我在让对小节的引用按照我希望的方式与cleveref包一起精确工作时遇到了一些麻烦。

我想cleveref以这样的方式引用包中的小节,即每当我引用特定小节(即使用\cref{})时它就会大写,但仅仅谈论某个小节(即\namecref{})时则不会大写。

由于cleveref通常只链接到相应的部分,我引入了\crefname{}\crefformat{}命令。不幸的是,大写字母和\cref{}不起作用,我不明白我做错了什么。

这是一个简单的例子:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage{hyperref,cleveref}

\crefname{subsection}{subsection}{subsections}
\crefformat{subsection}{#2Subsection~#1#3}


\begin{document}

\section{Introduction}
\subsection{First Subsection}\label{firstSubsection}

In this \namecref{firstSubsection} I would expect \cref{firstSubsection} to be capitalised.

\end{document}

我确实知道我可以通过使用来强制执行此操作,但这不是包文档所\Cref{}预期的用途,因此我一定是做错了其他事情。\Cref

答案1

对于手头的用例,我会毫不犹豫地使用它\Cref。我认为添加说明是完全可以的

\crefname{subsection}{subsection}{subsections}
\Crefname{subsection}{Subsection}{Subsections}

\Cref在序言中,并在文档正文中使用,每当我想要生成标签“Subsection”(或“Subsections”,以防参数列表中有多个子节类型的项目\Cref)而不是“subsection”(或“subsections”)。

\cref现在的情况是,和的行为差异\Cref并不一定仅限于使用小写或大写字母作为名称标签中的第一个字母。例如,如果英语是有效的语言选项,并且需要交叉引用文档的前两个方程式,则\cref{eq:1}\cref{eq:1,eq:2}分别生成“eq. (1)”和“eqs. (1) and (2)”,而\Cref{eq:1}\Cref{eq:1,eq:2}将生成“Equation (1)”和“Equations (1) and (2)”。换句话说,\Cref不仅可以将“e”更改为“E”,还可以指示不要缩写名称标签。

但重要的是,当英语选项生效时,只有两种项目类型被缩写为\cref而不是。因为似乎没有人会争辩说-type 项目应该缩写为(缩写为“subsec.”和“subsecs.”?),并且由于应用于-type项目不会干扰和对和-type 项目的操作方式,所以没有理由\Crefequationfiguresubsection\cref\Crefsubsection\cref\Crefequationfigure不是\Cref按照这个答案开头所述的方式使用,可以吗?

在此处输入图片描述

\documentclass{article}

\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink]{cleveref} % 'nameinlink' is optional
\crefname{subsection}{subsection}{subsections}
\Crefname{subsection}{Subsection}{Subsections}


\begin{document}
\refstepcounter{section}    \label{firstSection}
\refstepcounter{subsection} \label{firstSubsection}


\namecref{firstSection}, \nameCref{firstSection}

\namecref{firstSubsection}, \nameCref{firstSubsection}

\cref{firstSection}, \Cref{firstSection}

\cref{firstSubsection}, \Cref{firstSubsection}
\end{document}

相关内容