如何 \label + \ref 任意行文本?

如何 \label + \ref 任意行文本?

我们目前正在编写一份文档,其中包含通过“半编号”标识符标识的事物列表,这种方式很容易被人类理解,但很难使用新的计数器实现 1:1 的自动化。

(准确地说,我们的任务是按照大学软件架构课程教授指示的命名方案对我们的“功能性和非功能性需求”进行编号。以下是一些示例HL-1FR-1.2,,NFR-2.4b

尽管如此,我们还是想在整个文档中引用这些,因为它们的标识符和顺序可能会发生变化。

这就是为什么我们要寻找一种通用的方法来定义一小段文本上的标签,以便我们可以引用(使用\ref\nameref\autoref),然后它应该打印我们指定的名称,而不是例如它所写入的部分的名称。

这怎么可能呢?


这个问题和链接到文本的任意部分?。然而,尽管那里发布的解决方案在参考可以自由决定如何命名链接,在我们的例子中,我们希望使用在标签用于所有对它的引用。

答案1

以下是使用环境设置问题的基本实现,同时您可以为这些正确超链接的项目description设置特定的“命名”。\label

在此处输入图片描述

\documentclass{article}

\usepackage{hyperref}

\makeatletter
\newcommand{\namelabel}[1]{%
  \phantomsection
  \renewcommand{\@currentlabel}{#1}% Update the label text/name
  \label{#1}% Set the label
}
\makeatother

\begin{document}

Here is a list:
\begin{description}
  \item[HL-1] \namelabel{HL-1}
  This is a strange problem.
  
  \item[FR-1.2] \namelabel{FR-1.2}
  This is a weird problem.
  
  \item[NFR-2.4b] \namelabel{NFR-2.4b}
  This is a complicated problem.
\end{description}

See the weird problem called \ref{FR-1.2}.

\end{document}

相关内容