texlive[64147] Master/texmf-dist: hereapplies (19aug22)

commits+karl at tug.org commits+karl at tug.org
Fri Aug 19 21:26:38 CEST 2022


Revision: 64147
          http://tug.org/svn/texlive?view=revision&revision=64147
Author:   karl
Date:     2022-08-19 21:26:38 +0200 (Fri, 19 Aug 2022)
Log Message:
-----------
hereapplies (19aug22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/hereapplies/ChangeLog.md
    trunk/Master/texmf-dist/doc/latex/hereapplies/README.md
    trunk/Master/texmf-dist/doc/latex/hereapplies/hereapplies-example.pdf
    trunk/Master/texmf-dist/doc/latex/hereapplies/hereapplies-example.tex
    trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies-example.lyx
    trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies.module
    trunk/Master/texmf-dist/doc/latex/hereapplies/package.json
    trunk/Master/texmf-dist/tex/latex/hereapplies/hereapplies.sty

Modified: trunk/Master/texmf-dist/doc/latex/hereapplies/ChangeLog.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/hereapplies/ChangeLog.md	2022-08-19 19:26:00 UTC (rev 64146)
+++ trunk/Master/texmf-dist/doc/latex/hereapplies/ChangeLog.md	2022-08-19 19:26:38 UTC (rev 64147)
@@ -2,6 +2,16 @@
 ==========
 
 
+## 0.5.0 (2022-08-19)
+
+Changes:
+
+* A macro expansion bug has been fixed
+* The `\hereapplies` macro now supports a comma-separated list of identifiers
+* Documentation
+* Examples
+
+
 ## 0.4.0 (2022-08-16)
 
 Changes:

Modified: trunk/Master/texmf-dist/doc/latex/hereapplies/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/hereapplies/README.md	2022-08-19 19:26:00 UTC (rev 64146)
+++ trunk/Master/texmf-dist/doc/latex/hereapplies/README.md	2022-08-19 19:26:38 UTC (rev 64147)
@@ -22,15 +22,17 @@
 
 Instead, the package offers only two macros: `\hereapplies` and `\whereapplies`
 (plus their “starred” versions `\hereapplies*` and `\whereapplies*`). In both
-cases a “concept name” is passed as argument – and this can be any string
-invented in the moment, as long as it contains only letters.
+cases a “concept identifier” is passed as argument – and this can be any string
+invented in the moment, as long as it contains only letters (`\hereapplies`
+additionally supports more than one identifier in the form of a comma-separated
+list).
 
-Every time `\hereapplies` is invoked again on an identical string, the document
-is made aware that the same concept from previous invocations is occurring at
-that point. And so, every time the `\whereapplies` macro is invoked on that
-same string, all the occurrences of that concept within the entire document
-will be printed in the form of a linkable page number list (e.g. “pp. 1, 5,
-8–9, 14–20…”).
+Every time `\hereapplies` is invoked again on identical identifiers, the
+document is made aware that the same concepts from previous invocations are
+occurring in that point. And so, every time the `\whereapplies` macro is
+invoked on a known identifier, all the occurrences of the latter within the
+entire document will be printed in the form of a linkable page list (e.g. “pp.
+1, 5, 8–9, 14–20…”).
 
 As `\hereapplies` is designed to be invoked in the middle of a chapter or a
 section, and that location must be made linkable, the `\phantomsection` macro
@@ -38,7 +40,7 @@
 `\phantomsection`, the “starred” macro `\hereapplies*` is available.
 
 Finally, like `\whereapplies` resembles a pluralizable version of `\pageref`,
-its “starred” version `\whereapplies*` resembles a pluralizable version of
+its “starred” version `\whereapplies*` will resemble a pluralizable version of
 `\pageref*`.
 
 If you use LyX, the package ships a LyX module as well (please check the
@@ -63,11 +65,11 @@
 
 \maketitle
 
-This is concept one. To find this concept applied, please see
-\whereapplies{conceptOne}.
+This is concept one. To find this concept applied, please
+see \whereapplies{conceptOne}.
 
-This is concept two. To find this concept applied, please see
-\whereapplies{conceptTwo}.\newpage
+This is concept two. To find this concept applied, please
+see \whereapplies{conceptTwo}.\newpage
 
 \hereapplies{conceptOne}This is page \thepage. As you can see, ``concept
 one'' applies here.\newpage
@@ -75,18 +77,12 @@
 \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
 two'' applies here.\newpage
 
-\hereapplies{conceptOne}This is page \thepage. As you can see, ``concept
-one'' applies here.\newpage
+\hereapplies{conceptOne,conceptTwo}This is page \thepage. As you
+can see, both ``concept one'' and ``concept two'' apply here.\newpage
 
 \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
 two'' applies here.\newpage
 
-\hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
-two'' applies here.\newpage
-
-\hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
-two'' applies here.\newpage
-
 \hereapplies[myref]{conceptOne}This is page \thepage. As you can
 see, ``concept one'' applies here. This point in the document is
 labeled \texttt{myref}.
@@ -100,32 +96,36 @@
 A minimal tutorial
 ------------------
 
-### Macro `\hereapplies[Label]{ConceptName}`
+### Macro `\hereapplies[label]{identifiers}`
 
-The `\hereapplies` macro notifies the document that a particular concept
-applies to a particular point and adds a label to it.
+The `\hereapplies` macro notifies the document that one or more concepts apply
+to a particular point and adds a label to it.
 
 If the optional argument is passed the label created will be named accordingly,
 otherwise an opaque name will be assigned to it. This argument may contain only
-what is legal in both `\label` and `\pageref`.
+what is legal for `\pageref`.
 
-The `ConceptName` argument may contain only Latin letters and the “at” sign
-(`@`). This string remains confined within the internal scope of the package
-and does not create conflicts with possible macros or labels of the same name.
+The `identifiers` argument must be a comma-separated list of identifiers. Each
+of these may contain only Latin letters and the "at" sign (`@`). These strings
+remain confined within the internal scope of the package and do not create
+conflicts with possible macros or labels of the same names.
 
-The “starred” version of this macro (`\hereapplies*`) does not invoke the
+The “starred” version of this macro (`\hereapplies*`) will not invoke the
 `\phantomsection` directive.
 
 
-### Macro `\whereapplies{ConceptName}`
+### Macro `\whereapplies{identifier}`
 
-The `\whereapplies` macro prints all the occurrences of a concept, in the form
-“p. …” or “pp. …” (with page range support).
+The `\whereapplies` macro prints all the occurrences of an identifier, in the
+form “p. …” or “pp. …” (with page range support).
 
-The `ConceptName` argument may contain only Latin letters and the “at” sign
+The `identifier` argument may contain only Latin letters and the "at" sign
 (`@`). This string remains confined within the internal scope of the package
 and does not create conflicts with possible macros or labels of the same name.
 
+If the same `identifier` is not passed to `\hereapplies` at least once
+throughout the document, `\whereapplies` will print “**??**”.
+
 The “starred” version of this macro (`\whereapplies*`) will use `\pageref*`
 instead of `\pageref` for generating the page list.
 

Modified: trunk/Master/texmf-dist/doc/latex/hereapplies/hereapplies-example.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/hereapplies/hereapplies-example.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/hereapplies/hereapplies-example.tex	2022-08-19 19:26:00 UTC (rev 64146)
+++ trunk/Master/texmf-dist/doc/latex/hereapplies/hereapplies-example.tex	2022-08-19 19:26:38 UTC (rev 64147)
@@ -10,11 +10,11 @@
 
 \maketitle
 
-This is concept one. To find this concept applied, please see
-\whereapplies{conceptOne}.
+This is concept one. To find this concept applied, please
+see \whereapplies{conceptOne}.
 
-This is concept two. To find this concept applied, please see
-\whereapplies{conceptTwo}.\newpage
+This is concept two. To find this concept applied, please
+see \whereapplies{conceptTwo}.\newpage
 
 \hereapplies{conceptOne}This is page \thepage. As you can see, ``concept
 one'' applies here.\newpage
@@ -22,18 +22,12 @@
 \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
 two'' applies here.\newpage
 
-\hereapplies{conceptOne}This is page \thepage. As you can see, ``concept
-one'' applies here.\newpage
+\hereapplies{conceptOne,conceptTwo}This is page \thepage. As you
+can see, both ``concept one'' and ``concept two'' apply here.\newpage
 
 \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
 two'' applies here.\newpage
 
-\hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
-two'' applies here.\newpage
-
-\hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
-two'' applies here.\newpage
-
 \hereapplies[myref]{conceptOne}This is page \thepage. As you can
 see, ``concept one'' applies here. This point in the document is
 labeled \texttt{myref}.

Modified: trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies-example.lyx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies-example.lyx	2022-08-19 19:26:00 UTC (rev 64146)
+++ trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies-example.lyx	2022-08-19 19:26:38 UTC (rev 64147)
@@ -219,7 +219,7 @@
 status open
 
 \begin_layout Plain Layout
-conceptOne
+conceptOne,conceptTwo
 \end_layout
 
 \end_inset
@@ -238,7 +238,7 @@
 \end_inset
 
 .
- As you can see, 
+ As you can see, both 
 \begin_inset Quotes eld
 \end_inset
 
@@ -246,38 +246,7 @@
 \begin_inset Quotes erd
 \end_inset
 
- applies here.
-\begin_inset Newpage newpage
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset Flex Here applies
-status open
-
-\begin_layout Plain Layout
-conceptTwo
-\end_layout
-
-\end_inset
-
-This is page 
-\begin_inset ERT
-status collapsed
-
-\begin_layout Plain Layout
-
-
-\backslash
-thepage
-\end_layout
-
-\end_inset
-
-.
- As you can see, 
+ and 
 \begin_inset Quotes eld
 \end_inset
 
@@ -285,46 +254,10 @@
 \begin_inset Quotes erd
 \end_inset
 
- applies here.
-\begin_inset Newpage newpage
-\end_inset
-
-
+ apply here.
 \end_layout
 
 \begin_layout Standard
-\begin_inset Flex Here applies
-status open
-
-\begin_layout Plain Layout
-conceptTwo
-\end_layout
-
-\end_inset
-
-This is page 
-\begin_inset ERT
-status collapsed
-
-\begin_layout Plain Layout
-
-
-\backslash
-thepage
-\end_layout
-
-\end_inset
-
-.
- As you can see, 
-\begin_inset Quotes eld
-\end_inset
-
-concept two
-\begin_inset Quotes erd
-\end_inset
-
- applies here.
 \begin_inset Newpage newpage
 \end_inset
 

Modified: trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies.module
===================================================================
--- trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies.module	2022-08-19 19:26:00 UTC (rev 64146)
+++ trunk/Master/texmf-dist/doc/latex/hereapplies/lyx-module/hereapplies.module	2022-08-19 19:26:38 UTC (rev 64147)
@@ -39,7 +39,7 @@
 		EndFont
 		LabelString	"Label"
 		MenuString	"Instance label"
-		Tooltip		"A string that will become the label of the instance (which can be referenced with \ref, \pageref, etc.)"
+		Tooltip		"A string that will become the label for this point of the document (which can be referenced with \ref, \pageref, etc.)"
 		Mandatory	0
 	EndArgument
 End
@@ -72,7 +72,7 @@
 		EndFont
 		LabelString	"Label"
 		MenuString	"Instance label"
-		Tooltip		"A string that will become the label of the instance (which can be referenced with \ref, \pageref, etc.)"
+		Tooltip		"A string that will become the label for this point of the document (which can be referenced with \ref, \pageref, etc.)"
 		Mandatory	0
 	EndArgument
 End

Modified: trunk/Master/texmf-dist/doc/latex/hereapplies/package.json
===================================================================
--- trunk/Master/texmf-dist/doc/latex/hereapplies/package.json	2022-08-19 19:26:00 UTC (rev 64146)
+++ trunk/Master/texmf-dist/doc/latex/hereapplies/package.json	2022-08-19 19:26:38 UTC (rev 64147)
@@ -1,6 +1,6 @@
 {
 	"name": "hereapplies.sty",
-	"version": "0.4.0",
+	"version": "0.5.0",
 	"description": "A LaTeX package for cross-linking concepts to their applications",
 	"homepage": "https://madmurphy.github.io/hereapplies.sty",
 	"author": "madmurphy",

Modified: trunk/Master/texmf-dist/tex/latex/hereapplies/hereapplies.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/hereapplies/hereapplies.sty	2022-08-19 19:26:00 UTC (rev 64146)
+++ trunk/Master/texmf-dist/tex/latex/hereapplies/hereapplies.sty	2022-08-19 19:26:38 UTC (rev 64147)
@@ -7,7 +7,7 @@
 %
 % https://github.com/madmurphy/hereapplies.sty
 %
-% Version 0.4.0
+% Version 0.5.0
 %
 % Copyright (C) 2022 madmurphy <madmurphy333 at gmail.com>
 %
@@ -40,11 +40,11 @@
 %
 %     \maketitle
 %
-%     This is concept one. To find this concept applied, please see
-%     \whereapplies{conceptOne}.
+%     This is concept one. To find this concept applied, please
+%     see \whereapplies{conceptOne}.
 %
-%     This is concept two. To find this concept applied, please see
-%     \whereapplies{conceptTwo}.\newpage
+%     This is concept two. To find this concept applied, please
+%     see \whereapplies{conceptTwo}.\newpage
 %
 %     \hereapplies{conceptOne}This is page \thepage. As you can see, ``concept
 %     one'' applies here.\newpage
@@ -52,18 +52,12 @@
 %     \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
 %     two'' applies here.\newpage
 %
-%     \hereapplies{conceptOne}This is page \thepage. As you can see, ``concept
-%     one'' applies here.\newpage
+%     \hereapplies{conceptOne,conceptTwo}This is page \thepage. As you
+%     can see, both ``concept one'' and ``concept two'' apply here.\newpage
 %
 %     \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
 %     two'' applies here.\newpage
 %
-%     \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
-%     two'' applies here.\newpage
-%
-%     \hereapplies{conceptTwo}This is page \thepage. As you can see, ``concept
-%     two'' applies here.\newpage
-%
 %     \hereapplies[myref]{conceptOne}This is page \thepage. As you can
 %     see, ``concept one'' applies here. This point in the document is
 %     labeled \texttt{myref}.
@@ -81,38 +75,34 @@
 %         ===================
 %
 %
-% Assign a unique number to each concept
-\newcounter{@ha at concept@counter}
-% Assign a unique number to each unnamed occurrence of a concept
+% Assign a unique number to each identifier
+\newcounter{@ha at identifier@counter}
+% Assign a unique number to each unnamed occurrence of an identifier
 \newcounter{@ha at unlabeled@counter}
 %
 %
-% Macro `\@ha at makeoccurrencelist{HyperrefMacro}{LabelList}`
+% Macro `\@ha at makeoccurrencelist{hypermacro}{labels}`
 % *****************************************************************************
 %
 % Generate the list of page numbers with page range support
 %
-% This macro is for internal purposes only. When invoked, it scans the list of
-% labels provided (`LabelList`) and checks which labels refer to duplicate page
-% numbers and which page numbers can be grouped together.
+% This macro is for internal purposes only. When invoked, it scans the
+% comma-separated list of labels provided (`labels`) and checks which labels
+% refer to duplicate page numbers and which page numbers can be grouped
+% together.
 %
-% The `HyperrefMacro` argument is the macro from the `hyperref` package that
-% will process the label name. This should be either `T at pageref` -- equivalent
-% to `\pageref` -- or `@pagerefstar` -- equivalent to `\pageref*`.
+% The `hypermacro` argument is the macro from the `hyperref` package that will
+% process the label name. This should be either `T at pageref` -- equivalent to
+% `\pageref` -- or `@pagerefstar` -- equivalent to `\pageref*`.
 %
-% The `ConceptName` argument may contain only Latin letters and the "at" sign
-% (`@`). This string remains confined within the internal scope of the package
-% and does not create conflicts with possible macros or labels of the same
-% name.
+% The `labels` must be a comma-separated list of labels.
 %
-% The `LabelList` must be a comma-separated list of labels.
-%
 \newcommand{\@ha at makeoccurrencelist}[2]{%
 	% Reset the current page number
 	\def\@ha at tmp@@currp{-1}%
 	% Reset the current range offset
 	\def\@ha at tmp@@prangeoffs{-1}%
-	% Iterate through the `LabelList` argument
+	% Iterate through the `labels` argument
 	\@for\@ha at tmp@@thislabel:=#2\do{%
 		% Store the page number associated with this label
 		\edef\@ha at tmp@@nextp{\getpagerefnumber{\@ha at tmp@@thislabel}}%
@@ -119,9 +109,9 @@
 		% Check that we are not on the same page as in the last iteration
 		\unless\ifnum\@ha at tmp@@currp=\@ha at tmp@@nextp%
 			% This is not the same page as in the last iteration
-			% Is this the first page in which this concept appears?
+			% Is this the first page in which this identifier appears?
 			\unless\ifnum\@ha at tmp@@currp=-1%
-				% This is not the first page in which this concept appears
+				% This is not the first page in which this identifier appears
 				% Does this page follow immediately the previous label's page?
 				\ifnum\numexpr\@ha at tmp@@currp+1=\@ha at tmp@@nextp%
 					% This page follows immediately the previous label's page
@@ -175,24 +165,25 @@
 }
 %
 %
-% Macro `\@ha at newconcept{ConceptName}`
+% Macro `\@ha at newidentifier{identifier}`
 % *****************************************************************************
 %
-% Initialize a new concept
+% Initialize a new identifier
 %
 % This macro is for internal purposes only. When invoked, it sets up the helper
-% macros, counters and auxiliary files needed for keeping track of a concept.
-% If the concept was already initialized the macro will be no op.
+% macros, counters and auxiliary files needed for keeping track of an
+% identifier. If the identifier was already initialized the macro will be no
+% op.
 %
-% The `ConceptName` argument may contain only Latin letters and the "at" sign
+% The `identifier` argument may contain only Latin letters and the "at" sign
 % (`@`). This string remains confined within the internal scope of the package
 % and does not create conflicts with possible macros or labels of the same
 % name.
 %
-\newcommand{\@ha at newconcept}[1]{%
-	% Was this concept already initialized?
-	\expandafter\ifx\csname @ha at prop@@count@#1\endcsname\relax%
-		% The concept was never initialized
+\newcommand{\@ha at newidentifier}[1]{%
+	% Was this identifier already initialized?
+	\unless\ifcsname @ha at prop@@count@#1\endcsname%
+		% The identifier was never initialized
 		% Set the output to "??" - it will be updated by the .haN file
 		\expandafter\gdef\csname @ha at prop@@uoutput@#1\endcsname{\textbf{??}}%
 		% Set the starred output to "??" - it will be updated by the .haN file
@@ -199,11 +190,11 @@
 		\expandafter\gdef\csname @ha at prop@@soutput@#1\endcsname{\textbf{??}}%
 		% Use "p." for the preamble when there is only one occurrence
 		\expandafter\gdef\csname @ha at prop@@preamble@#1\endcsname{p.~}%
-		% Increase the counter of concepts
-		\stepcounter{@ha at concept@counter}%
-		% Store the current value of the counter of concepts
+		% Increase the counter of identifiers
+		\stepcounter{@ha at identifier@counter}%
+		% Store the current value of the counter of identifiers
 		\expandafter\xdef\csname
-			@ha at prop@@count@#1\endcsname{\the at ha@concept at counter}%
+			@ha at prop@@count@#1\endcsname{\the at ha@identifier at counter}%
 		% Initialize the .haN file
 		% Previous versions had this line, which created unwanted whitespaces:
 		%\@starttoc{ha\csname @ha at prop@@count@#1\endcsname}%
@@ -212,7 +203,7 @@
 		% Store all the occurrences when the document reaches the end
 		\AtEndDocument{%
 			% Make sure that there are occurrences
-			\expandafter\ifcsname @ha at prop@@labels@#1\endcsname%
+			\ifcsname @ha at prop@@labels@#1\endcsname%
 				% There are occurrences
 				% Set the .haN file as output
 				\addtocontents{ha\csname @ha at prop@@count@#1\endcsname}{%
@@ -241,31 +232,32 @@
 }
 %
 %
-% Macro: `\@ha at getpropat{PropertyName}{ConceptName}`
+% Macro: `\@ha at getpropat{field}{identifier}`
 % *****************************************************************************
 %
-% Get the value of a concept's property
+% Get the value of an identifier's property
 %
 % This macro is for internal purposes (but nothing forbids invoking it
-% directly). If a concept was never initialized the macro will initialize it.
+% directly). If the identifier was never initialized the macro will initialize
+% it.
 %
-% Possible values for the `PropertyName` argument are: `count`, `labels`,
-% `preamble`, `soutput`, `uoutput`.
+% Possible values for the `field` argument are: `count`, `labels`, `preamble`,
+% `soutput`, `uoutput`.
 %
-% The `ConceptName` argument may contain only Latin letters and the "at" sign
+% The `identifier` argument may contain only Latin letters and the "at" sign
 % (`@`). This string remains confined within the internal scope of the package
 % and does not create conflicts with possible macros or labels of the same
 % name.
 %
 \newcommand{\@ha at getpropat}[2]{%
-	% Make sure that the concept is initialized
-	\@ha at newconcept{#2}%
-	% Print the concept's property
+	% Make sure that the identifier is initialized
+	\@ha at newidentifier{#2}%
+	% Print the identifier's property
 	\csname @ha at prop@@#1@#2\endcsname%
 }
 %
 %
-% Macro: `\starred at labeled@hereapplies{Label}{ConceptName}`
+% Macro: `\starred at labeled@hereapplies{label}{identifiers}`
 % *****************************************************************************
 %
 % Equivalent to `\hereapplies*`, but the two arguments are both mandatory
@@ -274,23 +266,30 @@
 % directly). See the documentation of `\hereapplies` for more information.
 %
 \newcommand{\starred at labeled@hereapplies}[2]{%
-	% Make sure that the concept has been initialized
-	\@ha at newconcept{#2}%
 	% Assign a label to this occurrence
 	\label{#1}%
-	\expandafter\ifcsname @ha at prop@@labels@#2\endcsname%
-		% This is *not* the first occurrence
-		\expandafter\g at addto@macro\csname @ha at prop@@labels@#2\endcsname{,#1}%
-		% Use "pp." for the preamble when there are multiple occurrences
-		\expandafter\gdef\csname @ha at prop@@preamble@#2\endcsname{pp.~}%
-	\else%
-		% This is the first occurrence
-		\expandafter\gdef\csname @ha at prop@@labels@#2\endcsname{#1}%
-	\fi%
+	% Iterate through the comma-separated list `identifiers`
+	\@for\@ha at tmp@@id:=#2\do{%
+		% Make sure that the identifier is initialized
+		{\edef\tmp{\noexpand\@ha at newidentifier{\@ha at tmp@@id}}\tmp}%
+		% Is this the first time this identifier is mentioned?
+		\ifcsname @ha at prop@@labels@\@ha at tmp@@id\endcsname%
+			% This is *not* the first time
+			\expandafter\g at addto@macro\csname
+				@ha at prop@@labels@\@ha at tmp@@id\endcsname{,#1}%
+			% Use "pp." for the preamble when there are multiple occurrences
+			\expandafter\gdef\csname
+				@ha at prop@@preamble@\@ha at tmp@@id\endcsname{pp.~}%
+		\else%
+			% This is the first time
+			\expandafter\gdef\csname
+				@ha at prop@@labels@\@ha at tmp@@id\endcsname{#1}%
+		\fi%
+	}%
 }
 %
 %
-% Macro: `\starred at hereapplies[Label]{ConceptName}`
+% Macro: `\starred at hereapplies[label]{identifiers}`
 % *****************************************************************************
 %
 % Equivalent to `\hereapplies*`
@@ -306,7 +305,7 @@
 		\stepcounter{@ha at unlabeled@counter}%
 		% Call `\starred at hereapplies` with an opaque label
 		{\edef\tmp{\noexpand\starred at labeled@hereapplies{%
-			ha:#2-unnamed\the at ha@unlabeled at counter}{#2}%
+			hereapplies:unnamed\the at ha@unlabeled at counter}{#2}%
 		}\tmp}%
 	\else%
 		% The macro has been called with two arguments
@@ -320,20 +319,20 @@
 %         ===================
 %
 %
-% Macro: `\hereapplies[Label]{ConceptName}`
+% Macro: `\hereapplies[label]{identifiers}`
 % *****************************************************************************
 %
-% Notify the document that a particular concept applies and create a label for
-% it
+% Notify the document that one or more identifiers apply to a particular point
+% and add a label to it
 %
 % If the optional argument is passed the label created will be named
 % accordingly, otherwise an opaque name will be assigned to it. This argument
-% may contain only what is legal in both `\label` and `\pageref`.
+% may contain only what is legal for `\pageref`.
 %
-% The `ConceptName` argument may contain only Latin letters and the "at" sign
-% (`@`). This string remains confined within the internal scope of the package
-% and does not create conflicts with possible macros or labels of the same
-% name.
+% The `identifiers` argument must be a comma-separated list of identifiers.
+% Each of these may contain only Latin letters and the "at" sign (`@`). These
+% strings remain confined within the internal scope of the package and do not
+% create conflicts with possible macros or labels of the same names.
 %
 % The starred version of this macro (`\hereapplies*`) does not invoke the
 % `\phantomsection` directive.
@@ -344,17 +343,20 @@
 }
 %
 %
-% Macro: `\whereapplies{ConceptName}`
+% Macro: `\whereapplies{identifier}`
 % *****************************************************************************
 %
-% Print all the occurrences of a concept in the form "p. ..." or "pp. ..."
+% Print all the occurrences of an identifier in the form "p. ..." or "pp. ..."
 % with page range support
 %
-% The `ConceptName` argument may contain only Latin letters and the "at" sign
-% (`@`). This string remains confined within the internal scope of the package
-% and does not create conflicts with possible macros or labels of the same
-% name.
+% The `identifier` argument may contain only Latin letters and the "at"
+% sign (`@`). This string remains confined within the internal scope of the
+% package and does not create conflicts with possible macros or labels of the
+% same name.
 %
+% If the same `identifier` is not passed to `\hereapplies` at least once
+% throughout the document, `\whereapplies` will print "??".
+%
 % The starred version of this macro (`\whereapplies*`) will use `\pageref*`
 % instead of `\pageref` for generating the page list.
 %



More information about the tex-live-commits mailing list.