diff options
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/latex/commalists-tools/README.md | 6 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.pdf | bin | 0 -> 61757 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex | 415 |
3 files changed, 421 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/commalists-tools/README.md b/Master/texmf-dist/doc/latex/commalists-tools/README.md new file mode 100644 index 00000000000..2691841bce9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/commalists-tools/README.md @@ -0,0 +1,6 @@ +This package provides some macros for manipulating numeral comma separated lists. +Available tools are adding, removing, counting, testing, reversing, sorting, etc +--------------------------------------------------------------------------------- +Author..: Cédric Pierquet +email...: cpierquet@outlook.fr +Licence.: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.pdf b/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.pdf Binary files differnew file mode 100644 index 00000000000..8720ca502e8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.pdf diff --git a/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex b/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex new file mode 100644 index 00000000000..daab3e31833 --- /dev/null +++ b/Master/texmf-dist/doc/latex/commalists-tools/commalists-tools-doc.tex @@ -0,0 +1,415 @@ +% !TeX TXS-program:compile = txs:///arara +% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} +% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} + +\documentclass[11pt,a4paper]{ltxdoc} +\usepackage{bera} +\usepackage{inconsolata} +\usepackage[T1]{fontenc} +\usepackage[scale=0.875]{cabin} +\usepackage{commalists-tools} +\usepackage{fancyvrb} +\usepackage{fancyhdr} +\usepackage{tabularray} +\usepackage{fontawesome5} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\lfoot{\sffamily\small [commalists-tools]} +\cfoot{\sffamily\small - \thepage{} -} +\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} +\usepackage{hologo} +\providecommand\tikzlogo{Ti\textit{k}Z} +\providecommand\TeXLive{\TeX{}Live\xspace} +\let\TikZ\tikzlogo + +\usepackage{hyperref} +\urlstyle{same} +\hypersetup{pdfborder=0 0 0} +\usepackage[margin=2cm]{geometry} +\setlength{\parindent}{0pt} +\def\TPversion{0.1.0} +\def\TPdate{25/09/2024} +\usepackage{tcolorbox} +\usepackage{pgffor} +\tcbuselibrary{breakable,skins,hooks,listingsutf8} +%\usepackage{soul} +%\sethlcolor{lightgray!25} + +\lstset{ + language=[LaTeX]TeX,% + basicstyle=\ttfamily,% + keywordstyle={\color{blue}},% + classoffset=0,% + keywords={},% + alsoletter={-},% + keywordstyle={\color{blue}},% + classoffset=1,% + alsoletter={-},% + morekeywords={commalists-tools},% + keywordstyle={\color{violet}},% + classoffset=2,% + alsoletter={-},% + morekeywords={\sortasclist,\sortdeslist,\addvalinlist,\removevalinlist,\boolvalinlist,\xintifvalinlist,\countvalinlist,\minoflist,\maxoflist,\meanoflist,\sumoflist,\prodoflist,\reverselist,\getvaluefromlist},% + keywordstyle={\color{green!50!black}},% + classoffset=3,% + morekeywords={},% + keywordstyle={\color{orange}} +} + +\newtcblisting{DemoCode}[1]{% + enhanced,width=\linewidth,% + bicolor,size=title,% + colback=cyan!10!white,% + colbacklower=cyan!5!white,% + colframe=cyan!75!black,% + listing options={% + breaklines=true,% + breakatwhitespace=true,% + style=tcblatex,basicstyle=\small\ttfamily,% + tabsize=4,% + commentstyle={\itshape\color{gray}}, + keywordstyle={\color{blue}},% + classoffset=0,% + keywords={\usepackage,\includegraphics,xstring,listofitems,\readlist,\showitems,\xintFor,\xintSeq},% + alsoletter={-},% + keywordstyle={\color{blue}},% + classoffset=1,% + alsoletter={-},% + morekeywords={euromoney},% + keywordstyle={\color{violet}},% + classoffset=2,% + alsoletter={-},% + morekeywords={\sortasclist,\sortdeslist,\addvalinlist,\removevalinlist,\boolvalinlist,\xintifvalinlist,\countvalinlist,\minoflist,\maxoflist,\meanoflist,\sumoflist,\prodoflist,\reverselist,\getvaluefromlist},% + keywordstyle={\color{green!50!black}},% + classoffset=3,% + morekeywords={},% + keywordstyle={\color{orange}} + },% + #1 +} + +\newtcbinputlisting\DemoCodeFile[1]{% + enhanced,width=\linewidth,% + bicolor,size=title,% + colback=lightgray!10!white,% + colbacklower=lightgray!5!white,% + colframe=lightgray!75!black,% + listing options={% + breaklines=true,% + breakatwhitespace=true,% + style=tcblatex, + basicstyle=\scriptsize\ttfamily,% + tabsize=4,% + commentstyle={\itshape\color{gray}},% + %lastline=148 + },% + breakable, + listing only,% + listing file={#1} +} + +\NewDocumentCommand\ShowCode{ m }{% + \lstinline{#1}% +} + +\begin{document} + +\thispagestyle{empty} + +\begin{center} + \begin{minipage}{0.88\linewidth} + \begin{tcolorbox}[colframe=yellow,colback=yellow!15] + \begin{center} + \renewcommand{\arraystretch}{1.25}% + \begin{tabular}{c} + {\Huge \texttt{commalists-tools}}\\ + \\ + {\LARGE Macros for manipulating numeral} \\ + {\LARGE comma separated lists :} \\ + {\LARGE sorting, adding, removing, etc} \\ + \\ + {\small \texttt{Version \TPversion{} -- \TPdate}} + \end{tabular} + \end{center} + \end{tcolorbox} + \end{minipage} +\end{center} + +\begin{center} + \begin{tabular}{c} + \texttt{Cédric Pierquet}\\ + {\ttfamily c pierquet -- at -- outlook . fr}\\ + \texttt{\url{https://github.com/cpierquet/commalists-tools}} \\ + \end{tabular} +\end{center} + +\hrule + +\vfill + +\begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only} +\def\mytestlist{14,10,15,11,9,10} +\minoflist*{\mytestlist} +\maxoflist*{14,10,15,11,9,10} +\sortasclist*{\mytestlist} +\meanoflist*{\mytestlist} +\removevalinlist*{10}{\mytestlist} +\xintifvalinlist{15}{\mytestlist}{true}{false} +\end{tcblisting} + +\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5] +\def\mytestlist{14,10,15,11,9,10} +We consider the list : \mytestlist\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} +\end{tcolorbox} + +\vfill~ + +%\hrule +% +%\medskip + +%\emph{% +% The \textsf{luarandom} package do the same things, but with the obligation to compile with \hologo{LuaLaTeX}. +%} +% +%\medskip + +\hrule + +\vspace*{5mm} + +\pagebreak + +\phantomsection + +\hypertarget{matoc}{} + +\tableofcontents + +\vspace*{5mm} + +%\hrule + +\pagebreak + +\section{Loading, useful packages} + +In order to load \texttt{randintlist}, simply use : + +\begin{DemoCode}{listing only} +\usepackage{commalists-tools} +\end{DemoCode} + +Loaded packages are \texttt{listofitems}, \texttt{xintexpr} and \texttt{xstring}. + +\smallskip + +The idea is to propose "reusage" of lists with \texttt{listofitems} or other commands, for example. + +\section{The Macros} + +\subsection{Global usage} + +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 +\end{itemize} + +Starred versions only print the result, whereas non starred versions store the result into a macro. + +\medskip + +\hfill\textbf{All engines \TeX\ are compatible with this package.}\hfill~ + +\subsection{The macros for calculing} + +\begin{DemoCode}{listing only} +%getting min of list, only printing +\minoflist*{list} +%storing min of list into \macro (\resmin by default) +\minoflist{list}[\macro] +%getting max of list, only printing +\maxoflist*{list} +%storing max of list into \macro (\resmax by default) +\maxoflist{list}[\macro] +\end{DemoCode} + +\begin{DemoCode}{} +%only printing +\minoflist*{14,10,15,11,9,10} and \maxoflist*{14,10,15,11,9,10} \\ +%storing min/max of list +\def\mytestlist{10,14.5,20,12,8.5} +\minoflist{\mytestlist}[\mymin]Min of list is \mymin\ \& +\maxoflist{\mytestlist}[\mymax]Max of list is \mymax +\end{DemoCode} + +\begin{DemoCode}{listing only} +%getting mean of list, only printing +\meanoflist*{list} +%storing mean of list into \macro (\resmean by default) +\meanoflist{list}[\macro] +%getting sum of list, only printing +\sumoflist*{list} +%storing max of list into \macro (\ressum by default) +\sumoflist{list}[\macro] +%getting prod of list, only printing +\prodoflist*{list} +%storing max of list into \macro (\resprod by default) +\prodoflist{list}[\macro] +\end{DemoCode} + +\begin{DemoCode}{} +%only printing +\meanoflist*{14,10,15,11,9,10} \\ +%storing +\meanoflist{14,10,15,11,9,10}[\mymean]\mymean \\ +%only printing +\sumoflist*{14,10,15,11,9,10} and \prodoflist*{14,10,15,11,9,10} \\ +%storing +\sumoflist{14,10,15,11,9,10}[\mysum]\prodoflist{14,10,15,11,9,10}[\myprod] +The sum is \mysum\ and the prod is \myprod +\end{DemoCode} + +\subsection{Macros for manipulating} + +\begin{DemoCode}{listing only} +%sorting (asc), only printing +\sortasclist*{list} +%sorting (asc) and storing (overwrite) +\sortasclist{list} +%sorting (des), only printing +\sortdeslist*{list} +%sorting (des) and storing (overwrite) +\sortdeslist{list} +\end{DemoCode} + +\begin{DemoCode}{} +%sorting (asc), only printing +\sortasclist*{14,10,15,11,9,10}\\ +%sorting (asc) and storing (overwrite) +\def\tmpsortlist{14,10,15,11,9,10} +\sortasclist{\tmpsortlist}\tmpsortlist\\ +%analysing +\readlist*\tmpSORTlist{\tmpsortlist} +\showitems{\tmpSORTlist} +\end{DemoCode} + +\begin{DemoCode}{} +%sorting (des), only printing +\sortdeslist*{14,10,15,11,9,10}\\ +%sorting (asc) and storing (overwrite) +\def\tmpsortlist{14,10,15,11,9,10} +\sortdeslist{\tmpsortlist}\tmpsortlist\\ +%analysing +\readlist*\tmpSORTlist{\tmpsortlist} +\showitems{\tmpSORTlist} +\end{DemoCode} + +\begin{DemoCode}{listing only} +%adding, only printing +\addvalinlist*{values}{list} +%adding and storing (overwrite) +\addvalinlist{values}{list} +%removing, only printing +\removevalinlist*{value}{list} +%removing and storing (overwrite) +\removevalinlist{value}{list} +\end{DemoCode} + +\begin{DemoCode}{} +%only printing +\addvalinlist*{3}{1,2,5,6}\\ +%defining and adding +\def\tmpaddlist{1,2,4,5,6} +\addvalinlist{3}{\tmpaddlist}\tmpaddlist\\ +%analysing +\readlist*\tmpADDlist{\tmpaddlist} +\showitems{\tmpADDlist} +\end{DemoCode} + +\begin{DemoCode}{} +%only printing +\removevalinlist*{3}{1,2,3,6,3,1,5,7,3}\\ +%defining and removing +\def\tmpremlist{1,2,3,6,3,1,5,7,3} +\removevalinlist{3}{\tmpremlist}\tmpremlist\\ +%analysing +\readlist*\tmpREMlist{\tmpremlist} +\showitems{\tmpREMlist} +\end{DemoCode} + +\begin{DemoCode}{listing only} +%reversing, only printing +\reverselist*{list} +%reversing and storing (overwrite) +\reverselist{list} +\end{DemoCode} + +\begin{DemoCode}{} +%only printing +\reverselist*{14,10,15,11,9,10}\\ +%reversing and storing +%storing +\reverselist{14,10,15,11,9,10}[\myreverse]\myreverse\\ +%analysing +\readlist*\tmpREVERSElist{\myreverse} +\showitems{\tmpREVERSElist} +\end{DemoCode} + +\subsection{Macros with testing} + +\begin{DemoCode}{listing only} +%testing if value is in list, with boolean result in \macro (\resisinlist by default) +\boolvalinlist{value}{list}[\macro] +%conditionnal test if value is in list, according to xint syntax +\xintifvalinlist{3}{0,1,2,3}{true}{false} +\end{DemoCode} + +\begin{DemoCode}{} +%test with xint syntax +\xintifvalinlist{-1}{0,1,2,3}{true}{false}\\ +%test with xint syntax +\xintifvalinlist{3}{0,1,2,3}{true}{false}\\ +%boolean macro +\def\myteslist{0,5,10,5,6,9,7,8} +\boolvalinlist{5}{\myteslist}[\resisinlist]\resisinlist +\end{DemoCode} + +\begin{DemoCode}{listing only} +%counting value, only printing +\countvalinlist*{value}{list} +%counting value, with result in \macro (\rescount by default) +\countvalinlist{value}{list}[\macro] +\end{DemoCode} + +\begin{DemoCode}{} +%only printing +\countvalinlist*{8}{1,2,3,4,5,6,6,7,8,8,8,9}\\ +%storing +\def\tmpcountlist{1,2,3,4,5,6,6,7,8,8,8,9} +\countvalinlist{6}{\tmpcountlist}[\rescountsix]\rescountsix\\ +\countvalinlist{10}{\tmpcountlist}[\rescountten]\rescountten +\end{DemoCode} + +\pagebreak + +\section{History} + +\texttt{0.1.0 : Initial version} + +\section{The code} + +\DemoCodeFile{commalists-tools.sty} + +\end{document} |