texlive[60139] Master/texmf-dist: macrolist (1aug21)

commits+karl at tug.org commits+karl at tug.org
Sun Aug 1 22:37:03 CEST 2021


Revision: 60139
          http://tug.org/svn/texlive?view=revision&revision=60139
Author:   karl
Date:     2021-08-01 22:37:02 +0200 (Sun, 01 Aug 2021)
Log Message:
-----------
macrolist (1aug21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/macrolist/README.md
    trunk/Master/texmf-dist/doc/latex/macrolist/macrolist.pdf
    trunk/Master/texmf-dist/source/latex/macrolist/macrolist.dtx
    trunk/Master/texmf-dist/tex/latex/macrolist/macrolist.sty

Modified: trunk/Master/texmf-dist/doc/latex/macrolist/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/macrolist/README.md	2021-08-01 20:36:49 UTC (rev 60138)
+++ trunk/Master/texmf-dist/doc/latex/macrolist/README.md	2021-08-01 20:37:02 UTC (rev 60139)
@@ -1,4 +1,4 @@
-# The LaTeX package macrolist - version 2.0.0 (2021/07/29)
+# The LaTeX package macrolist - version 2.1.0 (2021/07/31)
 
 > Copyright (C) 2021 Dennis Chen <proofprogram at gmail.com>
 >

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

Modified: trunk/Master/texmf-dist/source/latex/macrolist/macrolist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/macrolist/macrolist.dtx	2021-08-01 20:36:49 UTC (rev 60138)
+++ trunk/Master/texmf-dist/source/latex/macrolist/macrolist.dtx	2021-08-01 20:37:02 UTC (rev 60139)
@@ -16,7 +16,7 @@
 %<*package>
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{macrolist}[2021/07/29 v2.0.0 Create lists of macros and perform operations on them]
+\ProvidesPackage{macrolist}[2021/07/31 v2.1.0 Create lists of macros and perform operations on them]
 
 \RequirePackage{pgffor}
 %</package>
@@ -123,7 +123,6 @@
 % \fi
 %
 % \DescribeMacro{\macrolistcontains}
-%
 % Writing |\macrolistcontains{listname}{element}{true branch}{false branch}| checks whether list \textsf{listname} contains \textsf{element}, executing \textsf{true branch} if it does and \textsf{false branch} if it does not.
 %
 % \iffalse
@@ -147,7 +146,6 @@
 % \fi
 %
 % \DescribeMacro{\macrolistadd}
-%
 % To add something to the list \textsf{listname}, pass in |\macrolistadd{listname}[position]{element}|, where \textsf{position} is an optional argument. If nothing is passed in for \textsf{position}, then by default \textsf{element} will be added to the end of the list.
 %
 % \iffalse
@@ -175,9 +173,35 @@
     \fi
 }
 % \fi
+% \changes{v2.1.0}{2021/07/31}{Add macrolisteadd}
+% \DescribeMacro{\macrolisteadd}
+% To fully expand |element| before adding it to list |listname|, pass in |\macrolisteadd{listname}[position]{element}|. This behaves similarly to |\edef|.
 %
+% \iffalse
+\newcommand{\macrolisteadd}[1]{
+    \macrolist at exists{#1}
+    \def\macrolist at currlist{#1}
+    \macrolist at listeadd
+}
+\newcommand{\macrolist at listeadd}[2][]{
+    \stepcounter{macrolist at list@\macrolist at currlist}
+
+    \if\relax\detokenize{#1}\relax
+        \expandafter\xdef\csname macrolist at list@\macrolist at currlist\macrolistsize{\macrolist at currlist}\endcsname{#2}
+    \else
+        \expandafter\ifnum\csname themacrolist at list@\macrolist at currlist\endcsname=#1
+            \expandafter\gdef\csname macrolist at list@\macrolist at currlist\macrolistsize{\macrolist at currlist}\endcsname{#2}
+        \else
+            \macrolist at inbounds{\macrolist at currlist}{#1}
+            \foreach \macrolist at index in {\macrolistsize{\macrolist at currlist}, ...,\the\numexpr #1+1\relax} {
+                \global\expandafter\let\csname macrolist at list@\macrolist at currlist\macrolist at index\expandafter\endcsname\csname macrolist at list@\macrolist at currlist\the\numexpr\macrolist at index-1\relax\endcsname
+            }
+            \expandafter\xdef\csname macrolist at list@\macrolist at currlist#1\endcsname{#2}
+        \fi
+    \fi
+}
+% \fi
 % \DescribeMacro{\macrolistremove}
-%
 % To remove an element in a list, write |\macrolistremove{listname}{index}|.
 %
 % \iffalse
@@ -197,7 +221,6 @@
 % \fi
 %
 % \DescribeMacro{\macrolistremovelast}
-%
 % To remove the last element in a list, write |\macrolistremovelast{listname}|. This behaves like C++'s |pop_back|.
 %
 % \iffalse
@@ -209,7 +232,6 @@
 % \fi
 %
 % \DescribeMacro{\macrolistclear}
-%
 % To clear a list, write |\macrolistclear{listname}|.
 %
 % \iffalse
@@ -225,7 +247,6 @@
 % \fi
 %
 % \DescribeMacro{\macrolistsize}
-%
 % To get the size of a list, write |\macrolistsize{listname}|.
 %
 % \iffalse
@@ -237,7 +258,6 @@
 %
 % \DescribeMacro{\macrolistforeach}
 % \changes{v1.1.1}{2021/07/23}{Fix foreach doc by removing incorrect begin}
-%
 % To write a for each loop, write
 % \begin{verbatim}
 %\macrolistforeach{listname}{\element}[begin][end]{action}
@@ -299,7 +319,6 @@
 % \fi
 %
 % \DescribeMacro{\macrolistjoin}
-%
 % Executing |\macrolistjoin{listname}{joiner}| returns all of the elements separated by \textsf{joiner}. This behaves like Javascript's \textsf{arr.join()}.
 %
 % \iffalse

Modified: trunk/Master/texmf-dist/tex/latex/macrolist/macrolist.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/macrolist/macrolist.sty	2021-08-01 20:36:49 UTC (rev 60138)
+++ trunk/Master/texmf-dist/tex/latex/macrolist/macrolist.sty	2021-08-01 20:37:02 UTC (rev 60139)
@@ -15,7 +15,7 @@
 %% version 2005/12/01 or later.
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{macrolist}[2021/07/29 v2.0.0 Create lists of macros and perform operations on them]
+\ProvidesPackage{macrolist}[2021/07/31 v2.1.0 Create lists of macros and perform operations on them]
 
 \RequirePackage{pgffor}
 
@@ -86,6 +86,28 @@
         \fi
     \fi
 }
+\newcommand{\macrolisteadd}[1]{
+    \macrolist at exists{#1}
+    \def\macrolist at currlist{#1}
+    \macrolist at listeadd
+}
+\newcommand{\macrolist at listeadd}[2][]{
+    \stepcounter{macrolist at list@\macrolist at currlist}
+
+    \if\relax\detokenize{#1}\relax
+        \expandafter\xdef\csname macrolist at list@\macrolist at currlist\macrolistsize{\macrolist at currlist}\endcsname{#2}
+    \else
+        \expandafter\ifnum\csname themacrolist at list@\macrolist at currlist\endcsname=#1
+            \expandafter\gdef\csname macrolist at list@\macrolist at currlist\macrolistsize{\macrolist at currlist}\endcsname{#2}
+        \else
+            \macrolist at inbounds{\macrolist at currlist}{#1}
+            \foreach \macrolist at index in {\macrolistsize{\macrolist at currlist}, ...,\the\numexpr #1+1\relax} {
+                \global\expandafter\let\csname macrolist at list@\macrolist at currlist\macrolist at index\expandafter\endcsname\csname macrolist at list@\macrolist at currlist\the\numexpr\macrolist at index-1\relax\endcsname
+            }
+            \expandafter\xdef\csname macrolist at list@\macrolist at currlist#1\endcsname{#2}
+        \fi
+    \fi
+}
 \newcommand{\macrolistremove}[2]{
     \macrolist at inbounds{#1}{#2}
 



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