6

我有一个部分:

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

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

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

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

4

3 回答 3

13

有几个软件包可以为您提供这个。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}

请注意,它甚至会删除部分标题中的尾随句点。

于 2009-02-07T01:27:02.473 回答
1

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

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

我只是把它吸起来,然后手动写出这样的参考资料。它们的数量不足以证明自动化是合理的。当然,如果你做的事情比你的例子所暗示的更多(许多自动生成的部分或其他东西),事情可能会有所不同,但如果是这样的话,那真的是一个完全不同的问题。

于 2009-02-07T01:23:55.977 回答
0

你可以尝试使用

  • \newsavebox
  • \savebox
  • \usebox

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


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

于 2009-02-07T01:16:05.040 回答