summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/randintlist/doc/randintlist-doc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/randintlist/doc/randintlist-doc.tex')
-rw-r--r--macros/latex/contrib/randintlist/doc/randintlist-doc.tex353
1 files changed, 353 insertions, 0 deletions
diff --git a/macros/latex/contrib/randintlist/doc/randintlist-doc.tex b/macros/latex/contrib/randintlist/doc/randintlist-doc.tex
new file mode 100644
index 0000000000..9042b601d8
--- /dev/null
+++ b/macros/latex/contrib/randintlist/doc/randintlist-doc.tex
@@ -0,0 +1,353 @@
+% !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{randintlist}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{tabularray}
+\usepackage{fontawesome5}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [randintlist]}
+\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.2}
+\def\TPdate{24/10/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={euromoney},%
+ keywordstyle={\color{violet}},%
+ classoffset=2,%
+ alsoletter={-},%
+ morekeywords={\randintlist,\getitemfromrandintlist},%
+ keywordstyle={\color{green!50!black}},%
+ classoffset=3,%
+ morekeywords={min,max,nb,seed,sort,sep,repeat,exclude},%
+ 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,tikz,calc,simplekv,graphicx,\readlist,\showitems,\xintFor,\xintSeq},%
+ alsoletter={-},%
+ keywordstyle={\color{blue}},%
+ classoffset=1,%
+ alsoletter={-},%
+ morekeywords={euromoney},%
+ keywordstyle={\color{violet}},%
+ classoffset=2,%
+ alsoletter={-},%
+ morekeywords={\randintlist,\getitemfromrandintlist,\ListeRandint,\ExtraireEltListeRandint},%
+ keywordstyle={\color{green!50!black}},%
+ classoffset=3,%
+ morekeywords={min,max,nb,seed,sort,sep,repeat,Min,Max,Nb,Graine,Sep,Tri,Repet,exclude,Exclure},%
+ 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{randintlist}}\\
+ \\
+ {\LARGE Creating random integer number lists,} \\
+ {\LARGE with multiple numbers or not,} \\
+ {\LARGE sorted or not.} \\
+ \\
+ {\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/randintlist}} \\
+ \end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+10 numbers, between 1 and 100, without repetition:
+
+\hfill\randintlist[min=1,max=100,nb=10]{\mylist}\textcolor{red}{\mylist}\hfill~
+
+The 5th value is:
+
+\hfill\textcolor{blue}{\getitemfromrandintlist{\mylist}{5}}\hfill~
+\end{tcolorbox}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+10 numbers, between 1 and 100, without multiples of 5:
+
+\hfill\randintlist[min=1,max=100,nb=10,exclude={5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100}]{\mylist}\textcolor{olive}{\mylist}\hfill~
+
+The 9th value is:
+
+\hfill\textcolor{purple}{\getitemfromrandintlist{\mylist}{9}}\hfill~
+\end{tcolorbox}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+15 numbers, between 1 and 20, with repetition:
+
+\hfill\randintlist[min=1,max=20,nb=15,repeat]{\mylist}\textcolor{red}{\mylist}\hfill~
+
+The last value is:
+
+\hfill\textcolor{blue}{\getitemfromrandintlist{\mylist}{-1}}\hfill~
+\end{tcolorbox}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+6 sorted numbers, between 1 and 51, without repetition:
+
+\hfill\randintlist[min=1,max=51,nb=6,sort=asc]{\mylist}ascending : \textcolor{red}{\mylist}\hfill~
+
+\hfill\randintlist[min=1,max=51,nb=6,sort=des,sep=>]{\mylist}descending : \textcolor{red}{\mylist}\hfill~
+\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{randintlist}
+\end{DemoCode}
+
+Loaded packages are \texttt{ifthen}, \texttt{simplekv}, \texttt{listofitems}, \texttt{randomlist}, \texttt{xintexpr} and \texttt{xstring}.
+
+\section{The Macros}
+
+\subsection{Global usage}
+
+Package \texttt{randintlist} supports the creation of random integer number lists where a number will appear only once or multiple times. Generated lists can te used with \texttt{listofitems}.
+
+\hfill\textbf{All engines \TeX\ are compatible with this package.}\hfill~
+
+\subsection{Generate the list}
+
+\begin{DemoCode}{listing only}
+%generate list
+\randintlist[keys]{\macro}
+\end{DemoCode}
+
+Available keys are:
+
+\begin{itemize}
+ \item \ShowCode{min}: minimum value (default \ShowCode{1});
+ \item \ShowCode{max}: maximum value (default \ShowCode{50});
+ \item \ShowCode{nb}: number of values (default \ShowCode{6});
+ \item \ShowCode{sep}: separator for the list (default \ShowCode{,});
+ \item \ShowCode{sort}: sorting options, within \ShowCode{no/asc/dec} (default \ShowCode{no});
+ \item \ShowCode{repeat}: boolean to authorize repeating values (default \ShowCode{false});
+ \item \ShowCode{exclude}: list of excluded values (default \ShowCode{empty});
+ \item \ShowCode{seed}: random seed value according to used packages (default \ShowCode{-}).
+\end{itemize}
+
+\begin{DemoCode}{}
+%default values
+\randintlist{\mylistA}\mylistA
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%10 between 1 and 50, with ascending
+\randintlist[sort=asc,min=1,max=50,nb=10]{\mylistB}\mylistB
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%15 between 1 and 50, with ascending and repetitions allowed
+\randintlist[sort=asc,min=1,max=50,nb=15,repeat]{\mylistC}\mylistC
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%15 between 1 and 50, without multiples of 5
+\randintlist[%
+ sort=asc,min=1,max=50,nb=15,repeat,%
+ exclude={5,10,15,20,25,30,35,40,45,50}]%
+ {\mylistC}\mylistC
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%list used with listofitems
+\randintlist{\mylistD}\mylistD\par
+\readlist*\mylistused{\mylistD}\showitems{\mylistused}\par
+\mylistused[1]; \mylistused[-1]
+\end{DemoCode}
+
+\subsection{Accessing elements}
+
+\begin{DemoCode}{listing only}
+%accessing item
+\getitemfromrandintlist[separator]{\macro}{index}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%with default keys
+\randintlist{\mylistE}raw list: \mylistE\par
+items list:\par
+\xintFor* #1 in {\xintSeq{1}{6}}\do{\getitemfromrandintlist{\mylistE}{#1}\par}
+first element: \getitemfromrandintlist{\mylistE}{1}
+\end{DemoCode}
+
+\subsection{Version française}
+
+Voilà les commandes en version française, la syntaxe et les clés ne seront pas explicitées.
+
+\begin{DemoCode}{listing only}
+%obtenir la liste
+\ListeRandint[Min=..,Max=..,Nb=..,Repet=..,Graine=..,Tri=..,Sep=..,Exclure=..]{\macro}
+
+%extraire un élément
+\ExtraireEltListeRandint[sep]{\macro}{position}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%liste
+\ListeRandint[Min=5,Max=15,Nb=7,Repet,Tri=croiss,Sep={/}]{\maliste}\maliste\\
+%élément
+\ExtraireEltListeRandint[/]{\maliste}{4}
+\end{DemoCode}
+
+\pagebreak
+
+\section{Example}
+
+The following example uses \TikZ, and comes from \texttt{luarandom}'s documentation.
+
+\begin{DemoCode}{}
+\begin{tikzpicture}[scale=0.75]
+ \randintlist[min=1,max=100,nb=100]{\mylistsquare}
+ \draw[thin,gray] (0,0) grid (10,10) ;
+ \foreach \i in {1,...,100}{%
+ \xdef\tmpnumber{\getitemfromrandintlist{\mylistsquare}{\i}}%
+ \xdef\tmpnumberrow{\xinteval{\xintiiRem{\i-1}{10}}}%
+ \xdef\tmpnumbercol{\xinteval{\xintiiQuo{\i-1}{10}}}%
+ \draw ({0.5+\tmpnumbercol},{0.5+\tmpnumberrow}) node {\tmpnumber} ;
+ }%
+\end{tikzpicture}
+\end{DemoCode}
+
+\pagebreak
+
+\section{History}
+
+\texttt{0.1.2: Changing name of internal macro}
+
+\texttt{0.1.1: Possibility to exclude values}
+
+\texttt{0.1.0: Initial version}
+
+\section{The code}
+
+\DemoCodeFile{randintlist.sty}
+
+\end{document}