texlive[72518] Master/texmf-dist: commalists-tools (10oct24)

commits+karl at tug.org commits+karl at tug.org
Thu Oct 10 21:42:53 CEST 2024


Revision: 72518
          https://tug.org/svn/texlive?view=revision&revision=72518
Author:   karl
Date:     2024-10-10 21:42:53 +0200 (Thu, 10 Oct 2024)
Log Message:
-----------
commalists-tools (10oct24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.pdf
    trunk/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex
    trunk/Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty

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

Modified: trunk/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex	2024-10-10 19:42:42 UTC (rev 72517)
+++ trunk/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex	2024-10-10 19:42:53 UTC (rev 72518)
@@ -27,8 +27,8 @@
 \hypersetup{pdfborder=0 0 0}
 \usepackage[margin=2cm]{geometry}
 \setlength{\parindent}{0pt}
-\def\TPversion{0.1.0}
-\def\TPdate{25/09/2024}
+\def\TPversion{0.1.1}
+\def\TPdate{10/10/2024}
 \usepackage{tcolorbox}
 \usepackage{pgffor}
 \tcbuselibrary{breakable,skins,hooks,listingsutf8}
@@ -49,7 +49,7 @@
 	keywordstyle={\color{violet}},%
 	classoffset=2,%
 	alsoletter={-},%
-	morekeywords={\sortasclist,\sortdeslist,\addvalinlist,\removevalinlist,\boolvalinlist,\xintifvalinlist,\countvalinlist,\minoflist,\maxoflist,\meanoflist,\sumoflist,\prodoflist,\reverselist,\getvaluefromlist},%
+	morekeywords={\sortasclist,\sortdeslist,\addvalinlist,\removevalinlist,\boolvalinlist,\xintifvalinlist,\countvalinlist,\minoflist,\maxoflist,\meanoflist,\sumoflist,\prodoflist,\reverselist,\getvaluefromlist,\lenoflist,\getvaluefromlist},%
 	keywordstyle={\color{green!50!black}},%
 	classoffset=3,%
 	morekeywords={},%
@@ -79,7 +79,7 @@
 		keywordstyle={\color{violet}},%
 		classoffset=2,%
 		alsoletter={-},%
-		morekeywords={\sortasclist,\sortdeslist,\addvalinlist,\removevalinlist,\boolvalinlist,\xintifvalinlist,\countvalinlist,\minoflist,\maxoflist,\meanoflist,\sumoflist,\prodoflist,\reverselist,\getvaluefromlist},%
+		morekeywords={\sortasclist,\sortdeslist,\addvalinlist,\removevalinlist,\boolvalinlist,\xintifvalinlist,\countvalinlist,\minoflist,\maxoflist,\meanoflist,\sumoflist,\prodoflist,\reverselist,\getvaluefromlist,\lenoflist,\getvaluefromlist},%
 		keywordstyle={\color{green!50!black}},%
 		classoffset=3,%
 		morekeywords={},%
@@ -125,7 +125,7 @@
 					{\Huge \texttt{commalists-tools}}\\
 					\\
 					{\LARGE Macros for manipulating numeral} \\
-					{\LARGE comma separated lists :} \\
+					{\LARGE comma separated lists:} \\
 					{\LARGE sorting, adding, removing, etc} \\
 					\\
 					{\small \texttt{Version \TPversion{} -- \TPdate}}
@@ -149,6 +149,7 @@
 
 \begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only}
 \def\mytestlist{14,10,15,11,9,10}
+\lenoflist*{\mytestlist}
 \minoflist*{\mytestlist}
 \maxoflist*{14,10,15,11,9,10}
 \sortasclist*{\mytestlist}
@@ -155,16 +156,20 @@
 \meanoflist*{\mytestlist}
 \removevalinlist*{10}{\mytestlist}
 \xintifvalinlist{15}{\mytestlist}{true}{false}
+\getvaluefromlist*{\mytestlist}{3}
 \end{tcblisting}
 
 \begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
 \def\mytestlist{14,10,15,11,9,10}
-We consider the list : \mytestlist\par\smallskip
+We consider the list: \mytestlist\par\smallskip
+There's \lenoflist*{\mytestlist} values in the list\par\smallskip
 The minimum value is \minoflist*{\mytestlist} and the maximum is \maxoflist*{14,10,15,11,9,10}\par\smallskip
 Ascending sorted list is \sortasclist*{\mytestlist}\par\smallskip
 Meaning value of the list is \meanoflist*{\mytestlist}\par\smallskip
-If we remove the value 10, the the list is \removevalinlist*{10}{\mytestlist}\par\smallskip
-We test if 15 is in the list : \xintifvalinlist{15}{\mytestlist}{true}{false}
+If we remove the value 10, then the list is \removevalinlist*{10}{\mytestlist}\par\smallskip
+We test if 15 is in the list: \xintifvalinlist{15}{\mytestlist}{true}{false}\par\smallskip
+The third value of the list is \getvaluefromlist*{\mytestlist}{3}
+
 \end{tcolorbox}
 
 \vfill~
@@ -199,7 +204,7 @@
 
 \section{Loading, useful packages}
 
-In order to load \texttt{randintlist}, simply use :
+In order to load \texttt{randintlist}, simply use:
 
 \begin{DemoCode}{listing only}
 \usepackage{commalists-tools}
@@ -215,15 +220,16 @@
 
 \subsection{Global usage}
 
-Package \texttt{commalists-tools} supports (basic) manipulations on numeral comma separated lists :
+Package \texttt{commalists-tools} supports (basic) manipulations on numeral comma separated lists:
 
 \begin{itemize}
-	\item sorting ;
-	\item adding values ;
-	\item removing values ;
-	\item counting values ;
-	\item mean, sum, product ;
-	\item etc
+	\item sorting;
+	\item adding values;
+	\item removing values;
+	\item counting values;
+	\item mean, sum, product;
+	\item get value, get length;
+	\item etc.
 \end{itemize}
 
 Starred versions only print the result, whereas non starred versions store the result into a macro.
@@ -235,6 +241,10 @@
 \subsection{The macros for calculing}
 
 \begin{DemoCode}{listing only}
+%getting length of list, only printing
+\lenoflist*{list}
+%storing length of list into macro (\resmylen by default)
+\lenoflist*{list}
 %getting min of list, only printing
 \minoflist*{list}
 %storing min of list into \macro (\resmin by default)
@@ -247,9 +257,15 @@
 
 \begin{DemoCode}{}
 %only printing
-\minoflist*{14,10,15,11,9,10} and \maxoflist*{14,10,15,11,9,10} \\
-%storing min/max of list
+\lenoflist*{14,10,15,11,9,10}\\
+%only printing
+\minoflist*{14,10,15,11,9,10} and \maxoflist*{14,10,15,11,9,10}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%storing len/min/max of list
 \def\mytestlist{10,14.5,20,12,8.5}
+\lenoflist{\mytestlist}[\mylen]Length of list is \mylen\ \&
 \minoflist{\mytestlist}[\mymin]Min of list is \mymin\ \&
 \maxoflist{\mytestlist}[\mymax]Max of list is \mymax
 \end{DemoCode}
@@ -296,9 +312,9 @@
 
 \begin{DemoCode}{}
 %sorting (asc), only printing
-\sortasclist*{14,10,15,11,9,10}\\
+\sortasclist*{14,10,15,11.5,9,10}\\
 %sorting (asc) and storing (overwrite)
-\def\tmpsortlist{14,10,15,11,9,10}
+\def\tmpsortlist{14,10,15,11.5,9,10}
 \sortasclist{\tmpsortlist}\tmpsortlist\\
 %analysing
 \readlist*\tmpSORTlist{\tmpsortlist}
@@ -305,11 +321,26 @@
 \showitems{\tmpSORTlist}
 \end{DemoCode}
 
+\begin{DemoCode}{listing only}
+%extract value, only printing
+\getvaluefromlist*{list}{index}
+%extract value and storing into macro (\myelt by default)
+\getvaluefromlist{list}{index}[\macro]
+\end{DemoCode}
+
 \begin{DemoCode}{}
+%extract value, only printing
+\def\listtmp{1,2,3,6,3,1,5,7,3}%
+\getvaluefromlist*{\listtmp}{4}\par\smallskip
+%storing
+\getvaluefromlist{\listtmp}{-1}[\mylastelt]The last element is \mylastelt
+\end{DemoCode}
+
+\begin{DemoCode}{}
 %sorting (des), only printing
-\sortdeslist*{14,10,15,11,9,10}\\
+\sortdeslist*{14,10,15,11.5,9,10}\\
 %sorting (asc) and storing (overwrite)
-\def\tmpsortlist{14,10,15,11,9,10}
+\def\tmpsortlist{14,10,15,11.5,9,10}
 \sortdeslist{\tmpsortlist}\tmpsortlist\\
 %analysing
 \readlist*\tmpSORTlist{\tmpsortlist}
@@ -406,8 +437,10 @@
 
 \section{History}
 
-\texttt{0.1.0 : Initial version}
+\texttt{0.1.1: Compatibility with decimals, len of list, get value}
 
+\texttt{0.1.0: Initial version}
+
 \section{The code}
 
 \DemoCodeFile{commalists-tools.sty}

Modified: trunk/Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty	2024-10-10 19:42:42 UTC (rev 72517)
+++ trunk/Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty	2024-10-10 19:42:53 UTC (rev 72518)
@@ -2,9 +2,10 @@
 % licence    : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{commalists-tools}[2024/09/25 0.1.0 Basic operations for numeral comma separated lists]
+\ProvidesPackage{commalists-tools}[2024/10/10 0.1.1 Basic operations for numeral comma separated lists]
 
 %------History
+% 0.1.1	Sorting with decimals (!)
 % 0.1.0	Initial version
 
 %------Packages
@@ -18,7 +19,7 @@
 {
 	\clist_set:Nx \l_foo_clist {#2}
 	\clist_sort:Nn \l_foo_clist{
-		\int_compare:nNnTF { ##1 } > { ##2 }
+		\fp_compare:nNnTF { ##1 } > { ##2 }
 			{ \sort_return_swapped: }
 			{ \sort_return_same: }
 	}
@@ -35,7 +36,7 @@
 {
 	\clist_set:Nx \l_foo_clist {#2}
 	\clist_sort:Nn \l_foo_clist{
-		\int_compare:nNnTF { ##1 } < { ##2 }
+		\fp_compare:nNnTF { ##1 } < { ##2 }
 			{ \sort_return_swapped: }
 			{ \sort_return_same: }
 	}
@@ -185,4 +186,10 @@
 	\IfBooleanT{#1}{#4}%
 }
 
+\NewDocumentCommand\lenoflist{ s m O{\resmylen} }{%
+	\readlist*\tmpreadlist{#2}%
+	\xdef#3{\tmpreadlistlen}%
+	\IfBooleanT{#1}{#3}%
+}
+
 \endinput
\ No newline at end of file



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