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.