如何实现一个带有计数器的强大描述列表,以便与 hyperref 一起正常运作?

如何实现一个带有计数器的强大描述列表,以便与 hyperref 一起正常运作?

希望标题不会太令人困惑,并能描述我的意思。事情是这样的:我需要一个列表,其中的项目有一个增量计数器,但也附加了一些自定义单词。也就是说,我想要一个这样的列表:

Case 1 (a<b): XXX

Case 2 (b<c): YYY

Case 3 (c<d): ZZZ

其中“1”、“2”和“3”是计数器,我想使用适当的超链接引用它们。例如,在其他地方,我可能会有类似以下内容:

In Case 1, we only need to do XXX.

其中 '1' 不是硬编码的,而是从 '\ref{SomeLabel}' 派生而来的。此外,我希望 hyperref 能够与标签/ref 配合使用。

目前,我找到了一个解决方案,可以正确显示,但超链接无法正常工作。我的解决方案是:

\documentclass{article}
\usepackage{hyperref}

\newcounter{desccounter}
\newcommand{\descitem}[1]{\refstepcounter{desccounter}\item[Case \thedesccounter{} #1]}

\begin{document}

The first list:

\setcounter{desccounter}{0}
\begin{description}

\descitem{$(a<b)$}:\label{Label1} XXX

\descitem{$(b<c)$}:\label{Label2} YYY

\descitem{$(c<d)$}:\label{Label3} ZZZ

\end{description}

Refs to the first list: Case \ref{Label1}, Case \ref{Label2}, Case \ref{Label3}.

\bigskip

The second list:

\setcounter{desccounter}{0}
\begin{description}

\descitem{$(x=y)$}:\label{Label4} AAA

\descitem{$(y=z)$}:\label{Label5} BBB

\descitem{$(z=w)$}:\label{Label6} CCC

\end{description}

Refs to the second list: Case \ref{Label4}, Case \ref{Label5}, Case \ref{Label6}.

\end{document}

渲染结果如下:

在此处输入图片描述

您可以看到显示是正确的,但是 hyperref 不正确:如果您单击第二个列表的超链接,您将被定向到第一个列表。

由于我不是 Latex 中计数器/标签/参考方面的专家,有哪位专家可以帮忙解决这个问题?谢谢!

答案1

您需要\theHdesccounter在整个文档中给出一个唯一的值。例如(Itemhyperref 在各个地方使用,您可以增加它但不应将其重置为零):

\documentclass{article}
\usepackage{hyperref}

\newcounter{desccounter}
\renewcommand\theHdesccounter{\theItem.\arabic{desccounter}}
\newcommand{\descitem}[1]{\stepcounter{Item}\refstepcounter{desccounter}\item[Case \thedesccounter{} #1]}

\begin{document}

The first list:

\setcounter{desccounter}{0}
\begin{description}

\descitem{$(a<b)$}:\label{Label1} XXX

\descitem{$(b<c)$}:\label{Label2} YYY

\descitem{$(c<d)$}:\label{Label3} ZZZ

\end{description}

Refs to the first list: Case \ref{Label1}, Case \ref{Label2}, Case \ref{Label3}.

\bigskip

The second list:

\setcounter{desccounter}{0}
\begin{description}

\descitem{$(x=y)$}:\label{Label4} AAA

\descitem{$(y=z)$}:\label{Label5} BBB

\descitem{$(z=w)$}:\label{Label6} CCC

\end{description}

Refs to the second list: Case \ref{Label4}, Case \ref{Label5}, Case \ref{Label6}.

\end{document}

相关内容