从 autoref 输出中删除前缀

从 autoref 输出中删除前缀

我已经开始使用\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

相关内容