引用多次定义标签的所有用法

引用多次定义标签的所有用法

我希望能够多次应用同一个标签,并有一个引用命令,列出该标签的所有用途。最小示例:

\documentclass{article}

\newcounter{example}

\begin{document}

Warning: Examples
\myref{pessimistic} % 1, 4
are passimistic. Apart from that, only examples
\myref{beginner} % 1, 2
are suitable for beginners.

\refstepcounter{example} \mylabel{beginner} \mylabel{pessimistic}

\refstepcounter{example} \mylabel{beginner} \mylabel{optimistic}

\refstepcounter{example} \mylabel{intermediate} 

\refstepcounter{example} \mylabel{expert} \mylabel{pessimistic}

\end{document}

我正在寻找一种实现方法pdflatex-makeindex尽可能避免。

是否已有一个可以执行类似操作的软件包 - 或者我该如何实现它?

答案1

以下似乎就是您所追求的:

在此处输入图片描述

\documentclass{article}

\makeatletter
% Taken from latex.ltx
\def\@newl@bel#1#2#3{{%
  \@ifundefined{#1@#2}%
    {\expandafter\xdef\csname rr@#2\endcsname{\@firstoftwo #3}}
    {\gdef \@multiplelabels {%
       \@latex@warning@no@line{There were multiply-defined labels}}%
     \@latex@warning@no@line{Label `#2' multiply defined}
     \expandafter\xdef\csname rr@#2\endcsname{\csname rr@#2\endcsname, \@firstoftwo #3}}%
  \global\@namedef{#1@#2}{#3}}}
\makeatother
\newcounter{example}

\newcommand{\myref}[1]{\csname rr@#1\endcsname}
\let\mylabel\label
\begin{document}

Warning:

Examples
\myref{pessimistic} % 1, 4
are pessimistic.

Apart from that, only examples
\myref{beginner} % 1, 2
are suitable for beginners.

\refstepcounter{example} \mylabel{beginner} \mylabel{pessimistic}

\refstepcounter{example} \mylabel{beginner} \mylabel{optimistic}

\refstepcounter{example} \mylabel{intermediate} 

\refstepcounter{example} \mylabel{expert} \mylabel{pessimistic}

\end{document}

的定义\@newl@bel取自latex.ltx\rr@<label>并更新为为每个创建一个宏\label{<label>}。如果\rr@<label>已经存在,则它会附加新标签,否则它只会创建它。引用需要\myref,而\mylabel类似于\label

这不适用于hyperref


标签也可以以逗号分隔列表的形式提供,使用etoolbox以及 的以下定义\mylabel。请参阅如何迭代以逗号分隔的列表?更多选项:

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\newcommand{\mylabel}[1]{% \mylabel{<list of labels>}
  \renewcommand*{\do}[1]{\label{##1}}% How to process each item
  \docsvlist{#1}}% Process list of items

相关内容