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

时间:2009-02-07 00:59:15

标签: latex

我有一个部分:

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

我想要一个指向链接文本是该部分名称的部分的链接。我可以使用hyperref

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

但这需要重复章节标题(“简介”)。有没有办法抓住它? ref产生了节号,这是不对的。 autoref会产生“section”,然后是段号,这也不对。

3 个答案:

答案 0 :(得分:10)

有几个包为您提供此功能。 nameref作为hyperref的一部分进行分发,以执行此操作:
  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 :(得分:1)

据我所知,没有标准的方法可以做到这一点。简而言之,切片命令不会将部分的名称存储在可以轻松检索的任何位置。是的,它们被插入到目录(和相关的辅助文件)中并设置了标记,但访问这些标记最多是不可靠的,如果没有额外的上下文通常是不可能的,这在您需要返回时几乎总是不可用到该部分。

您发布的代码示例看起来就像我要写的那样。可能有一个程序包可以自动执行此操作,但是如果存在,它可能是非常多毛的代码,因为这实际上不是一个特别常见的用例。实际上,要对你进行所有语法纳粹你正在创建的最终文本是不正确的; “引言”这个词在句子里面应该是小写的,而且(通常)不能通过对实际章节标题的反向引用来实现。

我只是把它搞砸了,然后手动写出这样的参考文献。它们不足以证明自动化的合理性。当然,如果你做的事情比你的例子所暗示的更多(许多自动生成的部分或其他东西),事情可能会有所不同,但如果是这样的话,它实际上完全是一个不同的问题。

答案 2 :(得分:0)

您可以尝试使用

  • \newsavebox
  • \savebox
  • \usebox

不会为您节省任何打字,但会为每个标题提供一个权威来源


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