由于\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
。