自动为 \nameref 引用添加章节编号

自动为 \nameref 引用添加章节编号

由于\nameref仅提供可点击的链接,这些链接显然不会被打印,因此对最终打印的任何内容都没有什么帮助,所以我需要重新定义它(或使用我不知道的另一个合适的命令)来实现这一点。

目前的作用\nameref是:

An important part of TDD is \nameref{sec:refactoring}.
→ TDD 的一个重要部分是重构

我希望它能做什么:

An important part of TDD is \nameref{sec:refactoring}.
→ TDD 的一个重要部分是重构(第 1.2.3 节)

斜体表示这些示例中的超链接,粗体表示我想要更改的内容。
对于章节,“section”标签最好呈现为“chapter”,对于其他内容则呈现为“section”。我知道这在某种程度上是可行的,我以前做过,但我不记得怎么做了(也查不到)。

有人知道如何启用此功能吗?它不一定需要重新定义\nameref,自定义命令也可以,并且不需要let或类似命令,因此对于概念验证来说已经足够了。

我目前拥有的是

\newcommand*{\namesectionref}[1]{\nameref{#1} (\ref{#1})}

但是,这并没有在 前面添加标签\ref

答案1

在许多情况下,您可以通过以下方式获取引用的实体名称\autoref

\documentclass{article}
\usepackage{hyperref}

\newcommand*{\nameautorefA}[1]{%
  \nameref{#1} (\autoref{#1})%
}
\newcommand*{\nameautorefB}[1]{%
  \hyperref[{#1}]{\nameref*{#1} (\autoref*{#1})}%
}

\begin{document}
\section{Refactoring}
\label{sec:refactoring}
\verb|\nameautorefA|: \nameautorefA{sec:refactoring}\\
\verb|\nameautorefB|: \nameautorefB{sec:refactoring}
\end{document}

结果

\nameautorefA和之间的区别\nameautorefB在于链接区域。

星型形式\nameref*\autoref*阻止链接内的链接\hyperref

相关内容