我想使用该cleveref
包,但我不喜欢它将大多数名称插入为缩写;例如,它会打印“...图 2.1 ...”而不是“...图 2.1 ...”。
有没有办法改变这种情况没有手动更改所有crefname
s?似乎没有合适的选择。
此外,与包一起使用时hyperref
,实际上只有数字是链接的。它前面的文本(在我的示例中为“数字”)不是。这也可以更改吗(同样,无需重新定义所有命令)?
答案1
简短回答
\usepackage[noabbrev,nameinlink]{cleveref}
长答案
有没有办法改变这种情况,而不用手动更改所有 crefname?似乎没有合适的选择。
根据手册:
某些语言的默认交叉引用名称对某些名称使用常见缩写(例如,在默认的英语格式中,\cref{eq1} 将排版为 eq.~(1))。某些作者可能更喜欢始终使用全名,而不是缩写(equation~(1) 而不是 eq.~(1))。要禁用默认交叉引用名称中的所有缩写,将 noabbrev 选项传递给 cleveref 包
对于你的第二个问题:
此外,当与 hyperref 包一起使用时,实际上只有数字被链接。它前面的文本(在我的示例中为“figure”)没有被链接。这也可以更改吗(同样,无需重新定义所有命令)?
根据手册:
使用 hyperref 包时,cleveref 会自动将所有交叉引用转换为指向相应引用的超链接。默认情况下,只有标签本身构成超链接目标的一部分(即您可以单击以导航到交叉引用的文本)。交叉引用名称不是超链接的一部分。相比之下,hyperref 的 \autoref 命令会将名称作为超链接的一部分。如果您希望在使用 cleveref 时将名称包含在超链接中,您可以将 nameinlink 选项传递给 cleveref 包。
答案2
cleveref 有一个新的预发布版本 (v0.18),支持不缩写选项会自动执行此操作。新版本尚未在 CTAN 上发布,但可以在软件包作者的网站上下载:http://www.dr-qubit.org/latex.php#cleveref
答案3
嗯,确实似乎没有非缩写选项,这很烦人,因为 \Cref 可以做到这一点,但只能与大写字母一起使用。简要查看源代码,我们至少有一个方便的列表,我通过“小写选择”运行了该列表:
\AtBeginDocument{%
\crefname{equation}{equation}{equations}%
\crefname{chapter}{chapter}{chapters}%
\crefname{section}{section}{sections}%
\crefname{appendix}{appendix}{appendices}%
\crefname{enumi}{item}{items}%
\crefname{footnote}{footnote}{footnotes}%
\crefname{figure}{figure}{figures}%
\crefname{table}{table}{tables}%
\crefname{theorem}{theorem}{theorems}%
\crefname{lemma}{lemma}{lemmas}%
\crefname{corollary}{corollary}{corollaries}%
\crefname{proposition}{proposition}{propositions}%
\crefname{definition}{definition}{definitions}%
\crefname{result}{result}{results}%
\crefname{example}{example}{examples}%
\crefname{remark}{remark}{remarks}%
\crefname{note}{note}{notes}%
}
但我同意它很笨拙。
答案4
我们似乎不需要\Crefformat
Konrad 的上述定义部分。我建议如下。
\usepackage{catoptions}
\usepackage{hyperref}
\usepackage{cleveref}[2011/03/22]
% \makeatletter
\def\setupcrefformat{%
\docommalist{algorithm,appendix,chapter,corollary,definition,
enumi,equation,example,figure,footnote,lemma,line,note,part,
proposition,remark,result,section,table,theorem
}{%
\crefformat{##1}{####2##1~####1####3}%
% We don't seem to need the following:
% \Crefformat{##1}{####2\@nameuse{Cref@##1@name}~####1####3}%
}%
}
% \makeatother
\setupcrefformat
\docommalist
修剪列表元素周围的前导和尾随空格。