我在让对小节的引用按照我希望的方式与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 项目的操作方式,所以没有理由\Cref
equation
figure
subsection
\cref
\Cref
subsection
\cref
\Cref
equation
figure
不是\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}