如何在LaTeX中输出引用的文本内容?

6

我有一个章节:

\section{Introduction} \label{sec:introduction}

我希望能够得到一个链接,链接文本是该部分的名称。我可以使用hyperref实现:

The \hyperrf[sec:introduction]{Introduction} introduces the paper.

但这需要重复章节标题(“介绍”)。 有没有办法获取它?ref返回章节编号,这是不正确的。 autoref返回“部分”和章节编号,这也不正确。

3个回答

13

有几个包可以为您提供此功能。nameref作为超链接的一部分进行分发,用于执行此操作:
http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=nameref

还有一个更通用的交叉引用包,称为zref: http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=zref

它由与hyperref相同的作者Heiko Oberdiek编写;这是我会选择的包。以下是一个示例:

\documentclass[oneside,12pt]{article}
\usepackage[user,titleref]{zref}
\begin{document}
\section{Introduction of sorts.}\zlabel{sec:intro}
Hello
\subsection{Structure}
We begin in `\ztitleref{sec:intro}'.
\end{document}
请注意,它甚至删除了章节标题末尾的句点。

1
据我所知,目前没有标准的方法来实现这个。简单地说,分节命令没有将章节名称存储在易于检索的地方。是的,它们被插入到目录(以及相关的辅助文件)中,并设置了标记,但是访问这些标记通常不可靠,而且通常需要额外的上下文信息,这在需要参考到该章节时几乎总是不可用的。
你发布的代码示例看起来就像我写的一样。可能会有一个自动化处理这个问题的软件包存在,但是如果存在这样的软件包,它的代码可能非常复杂,因为这真的不是特别常见的用例。实际上,如果要对你创建的最终文本进行语法纠正,"introduction" 这个单词应该小写,而这无法通过使用实际章节标题的反向引用来实现(一般情况下)。
我建议手动编写此类引用。不会有足够多的引用来证明自动化处理的必要性。当然,如果您正在做的事情比您的示例更复杂(如有很多自动生成的章节),那么情况可能会有所不同,但如果是这种情况,那么它真的是一个完全不同的问题。

你提出了一些好的观点,但是有可用的软件包可以完成这个任务。 - Will Robertson
看,这就是我在工作桌上留下我的LaTeX Companion副本并且懒得去谷歌查找软件包的后果。 - kquinn

0
你可以尝试使用以下方法:
  • \newsavebox
  • \savebox
  • \usebox
这样做不会节省你的打字时间,但是可以为每个标题提供一个单一的权威来源。

你可以在 ctan.org 上搜索,我怀疑这已经被完成了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接