我已经开始使用\autoref
在 LaTeX 内部各部分之间进行一些引用。
考虑以下 MWE 及其屏幕截图:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{Foo}
\label{sec:foo}
Some random text
\section{Bar}
\label{sec:bar}
Some more random text
\section{Baz}
\label{sec:baz}
More random text again \\
I will now reference \autoref{sec:foo},
\autoref{sec:bar}, and \autoref{sec:baz}
\end{document}
输出如下所示:
section
在阅读时,如果引用了多个用逗号分隔的部分,看到重复的单词会让人很恼火。
是否可以生成最后一句I will now reference 1, 2 and 3
,并将指向各节的超链接像以前一样嵌入到数字“内部”?因此,我特别不希望section
在输出中的每个数字前都加上该前缀。
答案1
\autoref
如果你用一个和两个语句重写这个句子\ref
,即
I will now reference \autoref{sec:foo}, \ref{sec:bar}, and \ref{sec:baz}
你会得到
我现在将引用第 1、2 和 3 节
这不太正确,因为“section”这个词是以单数形式出现的。
相反,我建议你加载聪明人包(加载后hyperref
)使用选项nameinlink
并使用\cref
包的主要用户级宏。重要的是,\cref
可以采用多个参数。如果您写
I will now reference \cref{sec:foo,sec:bar,sec:baz}
你会得到
我现在将引用第 1 至第 3 节
其中字符串“sections 1”和“3”突出显示为超链接目标。(如果您不希望单词“sections”包含在超链接目标中,请不要设置该nameinlink
选项。)请注意,\cref
已自动执行项目范围的压缩。如果您不想压缩,请写入
I will now reference \cref{sec:foo,,sec:bar,sec:baz}
你会得到
我现在将引用第 1、2 和 3 节
其中字符串“sections 1”、“2”和“3”作为超链接目标。
完整的 MWE (最小工作示例):
(如果您想要创建形式为“1、2 和 3”的交叉引用,而不使用“sections”前缀,您可以这样写\labelcref{sec:foo,,sec:bar,sec:baz}
。)
设置该选项的效果nameinlink
是使交叉引用看起来像 生成的引用\autoref
。
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink]{cleveref}
\begin{document}
\section{Foo} \label{sec:foo}
Some random text
\section{Bar} \label{sec:bar}
Some more random text
\section{Baz} \label{sec:baz}
More random text again
\bigskip
I will now reference \autoref{sec:foo}, \autoref{sec:bar}, and \autoref{sec:baz}
I will now reference \autoref{sec:foo}, \ref{sec:bar}, and \ref{sec:baz}
I will now reference \cref{sec:foo,,sec:bar,sec:baz}
I will now reference \cref{sec:foo,sec:bar,sec:baz}
\end{document}
答案2
您只需使用即可实现此目的\ref
反而。
因此\ref{sec:foo}, \ref{sec:bar}, and \ref{sec:baz}
,产生:
1、2 和 3 [全部链接]
或者,您可以执行\nameref{sec:foo}, \nameref{sec:bar}, and \nameref{sec:baz}
,以生成:
Foo、Bar 和 Baz [全部链接]
你也可以将以上两者结合起来,引用章节编号和名称。
最后,你可以改变什么hyperref
用 for 来指代section
:
\renewcommand*{\sectionautorefname}{Custom Name}
上述代码将产生\autoref{sec:foo}
以下链接文本:
自定义名称 1