\nameref——如何显示部分名称及其编号

\nameref——如何显示部分名称及其编号

是否可以\nameref不仅显示章节的标题,还显示其编号?

\section{First Section}
\label{sec:some_sec}

\subsection*{Unnumbered subsection}
\label{sec:subsec}

[...]

As we defined in section \nameref{sec:some_sec}, yada yada yada, see section \nameref{sec:subsec}

正常情况下\nameref我会得到:

“正如我们在第一节中定义的,等等等等,请参阅未编号的小节”

我想要的是数字的组合(如\autoref}和部分名称,并且(如果可能)未编号的子部分应该继承父部分的编号:

“正如我们在第一节第一部分中所定义的,等等等等,请参阅第一节未编号的小节”

答案1

如何定义一个新命令\fullref

\documentclass{article}
\usepackage[colorlinks=true]{hyperref}

% Original definition
% \newcommand\fullref[1]{\autoref{#1} \nameref{#1}} % Two links

% Updated definition, see explanation below
\newcommand*{\fullref}[1]{\hyperref[{#1}]{\autoref*{#1} \nameref*{#1}}} % One single link

\begin{document}

\section{First Section}
\label{sec:some_sec}

\subsection*{Unnumbered subsection}
\label{sec:subsec}

[...]

As we defined in \fullref{sec:some_sec}, yada yada yada, see \fullref{sec:subsec}

\end{document}

在此处输入图片描述


更新

上面的定义\fullref产生了两个链接,一个是\autoref,另一个是\nameref。Heiko Oberdiek 建议使用以下定义将两者合并为一个链接:

\newcommand*{\fullref}[1]{\hyperref[{#1}]{\autoref*{#1} \nameref*{#1}}}

答案2

从@herr-k的回答开始,我更进一步,定义了四 (4) 个新命令:\secref\subsecref\subsubsecref\parref

\newcommand*{\secref}[1]{\hyperref[{#1}]{Specification \ref*{#1}, \nameref*{#1}}}
\newcommand*{\subsecref}[1]{\hyperref[{#1}]{Section \ref*{#1}, \nameref*{#1}}}
\newcommand*{\subsubsecref}[1]{\hyperref[{#1}]{Section , \nameref*{#1}}}
\newcommand*{\parref}[1]{\hyperref[{#1}]{Section \ref*{#1}, \nameref*{#1}}}

这样做可以让我自定义文档每个级别的超链接文本的显示方式。

答案3

要删除section链接文本:将 更改\autoref\ref

IE:\newcommand*{\fullref}[1]{\hyperref[{#1}]{\ref*{#1} \nameref*{#1}}} % One single link

相关内容