我正在尝试引用(最好是超链接)另一个部分,或者在这个特定情况下引用一个子部分。我通过创建一个新命令解决了这个问题:
\usepackage{hyperref}
\newcommand{\fullref}[1]{\hyperref[#1]{\ref*{#1}\ \nameref*{#1}}}
所以我可以输入:
As seen in \fullref{subsec:options}.
输出:
As seen in 2.2 Our options.
(参考资料为超链接)
有没有简单的方法可以做到这一点而无需创建新命令?
编辑:正如所提到的弗兰,请注意,名称 \fullref 已被另一个包使用,应该避免使用。
答案1
有没有简单的方法可以做到这一点而无需创建新命令?
简短回答:不。
长答案:
当然,您可以将这个宏包含在您自己的包中,或者包含在外部包中macros.tex
,然后\input{macros}
在序言中使用,以便重用它并保持清晰的序言。
但实际上此功能不包含在任何软件包中(据我所知)。实际上,在某些软件包中存在命令,如\cref
或\vref
,\fullref
或,\autoref
用于同时获取引用编号和引用类型(部分,数字等)和/或页面引用(第 2 页,在下一页等),但不等同于\ref
+ \nameref
。
即使你可以从CTAN 中的标签参考主题要做到这一点,修复可能会比这个简单的宏更复杂。
另一方面,请注意,上面提到的命令中有\fullref
一个在包中已经定义的命令varioref
,这不是您想要的。因此,您应该为宏选择一个不同的名称(即使您不使用该包,使用相同的名称也会导致将来出现问题)。
最后一个选择可能是向开发人员或另一个软件包的开发人员询问此功能hyperref
是否具有交叉引用,谁知道呢......fancyref
手册(第 2 页)中的一个有趣的引述,解释了制作此软件包的原因:
一些懒人很快就想到了编写一个
\fullref
命令来保存一些击键:\newcommand*{\fullref}[1]{\ref{#1} on page~\pageref{#1}}
提到“懒人”无意冒犯。我也是个非常懒惰的打字员。重点是表明开发人员想要帮助懒惰的打字员(最后,LaTeX 和大多数软件包都是为此而创建的) ;)
(还请注意,引用包含\fullref
与 不同的定义varioref.sty
。虽然是一个不该做的事情的例子,但也是寻找更原始名称的另一个原因。)