summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/labels4easylist/labels4easylist.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/labels4easylist/labels4easylist.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/labels4easylist/labels4easylist.sty')
-rw-r--r--macros/latex/contrib/labels4easylist/labels4easylist.sty90
1 files changed, 90 insertions, 0 deletions
diff --git a/macros/latex/contrib/labels4easylist/labels4easylist.sty b/macros/latex/contrib/labels4easylist/labels4easylist.sty
new file mode 100644
index 0000000000..01c3a7daf7
--- /dev/null
+++ b/macros/latex/contrib/labels4easylist/labels4easylist.sty
@@ -0,0 +1,90 @@
+% Copyright (c) 2015-2019 Robert Ryszard Paciorek <rrp@opcode.eu.org>
+%
+% MIT License
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the "Software"), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in all
+% copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+% SOFTWARE.
+
+% Version 1.0 (2019-05-13): first public release
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{labels4easylist}
+
+\RequirePackage{xparse}
+\RequirePackageWithOptions{easylist}
+
+%
+% configurable refernece labels for easylist items
+%
+
+% add label to item entry, usage:
+% \itemLabel{LabelName}[skipA][skibB]
+% skipA - number of level to skip at front
+% skipB - number of level to skip at end
+\DeclareDocumentCommand{\itemLabel}{ m O{0} o } {%
+ % prepare ref-label text in \elLabel@currRefLabel
+ \xdef\elLabel@currRefLabel{}{%
+ \elLabel@currLevel=1%
+ \elLabel@minLevel=#2%
+ \elLabel@maxLevel=\el@PreviousItem%
+ \IfValueTF{#3}{\advance\elLabel@maxLevel by -#3}{\elLabel@GetLastLevel}%
+ \elLabel@RecurencyGetEnumLevel%
+ }%
+ % create ref-label with id from #1 and text from \elLabel@currRefLabel
+ \let\@currentlabel\elLabel@currentlabel%
+ \def\@currentlabel{\elLabel@currRefLabel}%
+ \label{#1}%
+ \let\elLabel@currentlabel\@currentlabel%
+}
+
+% counters
+\newcount\elLabel@currLevel
+\newcount\elLabel@minLevel
+\newcount\elLabel@maxLevel
+
+% recursive skip final unused levels and not enumerate levels
+\newcommand{\elLabel@GetLastLevel} {
+ \ifnum\elLabel@maxLevel>\elLabel@minLevel%
+ \ifnum\elLabel@maxLevel=\csname Hide\the\elLabel@maxLevel\endcsname
+ \advance\elLabel@maxLevel by -1
+ \elLabel@GetLastLevel
+ \else%
+ \ifnum\value{List\the\elLabel@maxLevel}=0
+ \advance\elLabel@maxLevel by -1
+ \elLabel@GetLastLevel
+ \fi%
+ \fi%
+ \fi%
+}
+
+% recursive build label text for reference
+\newcommand{\elLabel@RecurencyGetEnumLevel} {%
+ % if (minLev < currLev AND currLev <= maxLev AND value !=0)
+ \ifnum\elLabel@currLevel>\elLabel@minLevel \ifnum\elLabel@currLevel>\elLabel@maxLevel\else \ifnum\value{List\the\elLabel@currLevel}=0\else%
+ \xdef\elLabel@currRefLabel{\elLabel@currRefLabel%
+ \csname el@NumberDenotation:\csname Numbers\the\elLabel@currLevel\endcsname\endcsname{List\the\elLabel@currLevel}%
+ \ifnum\elLabel@currLevel<\elLabel@maxLevel \csname Mark\the\elLabel@currLevel\endcsname \fi%
+ }%
+ \fi\fi\fi%
+ % recursion:
+ \ifnum\elLabel@currLevel<\elLabel@maxLevel
+ \advance\elLabel@currLevel by 1
+ \elLabel@RecurencyGetEnumLevel
+ \fi%
+}