Added convenience macros to add types

This commit is contained in:
Bastien Dumont 2024-04-13 11:55:19 +02:00
parent c0460c15a8
commit c3dd41d8e6
2 changed files with 11 additions and 6 deletions

View File

@ -215,6 +215,8 @@ use an empty group (e.g. `\def\crfnmPageEnumDelim{}`).
Adding support for new types consists in defining the related macros in your preamble. Adding support for new types consists in defining the related macros in your preamble.
Here is a commented example that would add support for references to lines in ConTeXt Here is a commented example that would add support for references to lines in ConTeXt
if this feature were not already included in _crossrefenum_. if this feature were not already included in _crossrefenum_.
We suppose that the labels are inserted in the document using the standard ConTeXt macros,
i.e. `\someline` for line references and `\pagereference` for page references.
```{.tex} ```{.tex}
% Register the types. Take care about capitalization! % Register the types. Take care about capitalization!
@ -226,10 +228,8 @@ if this feature were not already included in _crossrefenum_.
\def\crfnm@pageline{Pageline} \def\crfnm@pageline{Pageline}
%% Add them to the lists of known types. %% Add them to the lists of known types.
\crfnm@newListFrom[\crfnm@simpleRefTypes][\crfnm@line] -> \crfnm@simpleRefTypes \crfnm@declareType[simple][\crfnm@line]
\crfnm@newListFrom[\crfnm@doubleRefTypes][\crfnm@pageline] -> \crfnm@doubleRefTypes \crfnm@declareType[double][\crfnm@pageline]
\crfnm@newListFrom[\crfnm@supportedTypes][\crfnm@line] -> \crfnm@supportedTypes
\crfnm@newListFrom[\crfnm@supportedTypes][\crfnm@pageline] -> \crfnm@supportedTypes
``` ```
```{.tex} ```{.tex}

View File

@ -472,8 +472,7 @@
\def\crfnm@newListFrom[#1][#2] -> #3{% \def\crfnm@newListFrom[#1][#2] -> #3{%
% #1 is either a list or a reference. % #1 is either a list or a reference.
% #2 is a reference. % #2 is the reference appended to #1.
% #2 is appended to #1.
% #3 is the control sequence which the resulting list will be bound to. % #3 is the control sequence which the resulting list will be bound to.
\crfnm@ifIsList[#1]{% \crfnm@ifIsList[#1]{%
\edef#3{#1{#2}}% \edef#3{#1{#2}}%
@ -481,6 +480,12 @@
\edef#3{{#1}{#2}}% \edef#3{{#1}{#2}}%
}% }%
} }
\def\crfnm@addToList[#1][#2]{\crfnm@newListFrom[#1][#2] -> #1}
\def\crfnm@declareType[#1][#2]{%
% #1 is "simple" or "double", #2 is the type
\expandafter\crfnm@addToList\expandafter[\csname crfnm@#1RefTypes\endcsname][#2]%
\crfnm@addToList[\crfnm@supportedTypes][#2]%
}
\def\crfnm@replaceFirstInList[#1]#2{% \def\crfnm@replaceFirstInList[#1]#2{%
% #1 is a token, #2 is a list of tokens % #1 is a token, #2 is a list of tokens