diff options
Diffstat (limited to 'macros/latex/contrib/randintlist/doc/randintlist-doc.tex')
-rw-r--r-- | macros/latex/contrib/randintlist/doc/randintlist-doc.tex | 353 |
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} |