summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-12-30 22:17:36 +0000
committerKarl Berry <karl@freefriends.org>2019-12-30 22:17:36 +0000
commitba67b1374de6f77b6df9d6f07e94a3854539010c (patch)
tree1264b39da5c84cc989ca185598f048f327d93491 /Master/texmf-dist/source
parentaab00778035c28a028f94e501e3c13f6b4081f87 (diff)
ran_toks (30dec19)
git-svn-id: svn://tug.org/texlive/trunk@53271 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx361
-rw-r--r--Master/texmf-dist/source/latex/ran_toks/ran_toks.ins60
2 files changed, 255 insertions, 166 deletions
diff --git a/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx b/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx
index 0a36c48614f..89aafdc826a 100644
--- a/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx
+++ b/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx
@@ -3,9 +3,9 @@
% makeindex -s gind.ist -o ran_toks.ind ran_toks.idx
%<*copyright>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Web package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
-%% dpstory@uakron.edu %%
+%% ran_toks package, %%
+%% Copyright (C) 1999-2019 D. P. Story %%
+%% dpstory@uakron.edu, dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
%% the terms of the LaTeX Project Public License %%
@@ -16,7 +16,7 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
%<package>\ProvidesPackage{ran_toks}
-%<package> [2017/05/04 v1.1 Randomizing tokens (dps)]
+%<package> [2019/12/28 v1.2 Randomizing tokens (dps)]
%<*driver>
\documentclass{ltxdoc}
\usepackage[colorlinks,hyperindex=false]{hyperref}
@@ -120,7 +120,7 @@
% We redefine \cs{nextrandom} from \texttt{random.tex} to save the initializing seed.
% \begin{macrocode}
\def\nextrandom{\begingroup
- \ifnum\randomi<\@ne % then initialize with time
+ \ifnum\randomi<\@ne % then initialize with time
\global\randomi\time
\global\multiply\randomi388 \global\advance\randomi\year
\global\multiply\randomi31 \global\advance\randomi\day
@@ -163,7 +163,27 @@
% \begin{macrocode}
\def\rt@nameedef#1{\expandafter\edef\csname #1\endcsname}
% \end{macrocode}
+% \begin{macrocode}
+%</package>
+%<*altpkgname>
+% \end{macrocode}
%
+% \section{Alternate package name: \texorpdfstring{\protect\pkg{ran-toks}}{ran-toks}}
+% CTAN lists this package (\pkg{ran\_toks}) as \pkg{ran-toks}, so we'll create
+% a dummy package by that name.
+% \changes{v1.2}{2019/12/28}{Added dummy package \string\pkg{ran-toks}}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ran-toks}
+ [2019/12/28 v1.0 ran-toks Alt-name (dps)]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{ran_toks}}
+\ProcessOptions
+\RequirePackage{ran_toks}[2019/12/28]
+% \end{macrocode}
+% \begin{macrocode}
+%</altpkgname>
+%<*package>
+% \end{macrocode}
% \section{Commands for controlling the process}
%
% \DescribeMacro{\ranToksOn}\DescribeMacro{\ranToksOff} These two turn on and turn off
@@ -186,23 +206,23 @@
\def\useLastAsSeed{\rt@useLastAsSeed}
\@onlypreamble\useLastAsSeed
\def\rt@useLastAsSeed{%
- \IfFileExists{\jobname_rt.sav}{%
- \PackageInfo{ran_toks}{Inputting \jobname_rt.sav}%
- \@ifundefined{readsavfile}{\newread\readsavfile}{}%
- \openin\readsavfile=\jobname_rt.sav
- \read\readsavfile to \InitSeedValue
- \read\readsavfile to \lastRandomNum
- \closein\readsavfile
- \randomi=\lastRandomNum
+ \IfFileExists{\jobname_rt.sav}{%
+ \PackageInfo{ran_toks}{Inputting \jobname_rt.sav}%
+ \@ifundefined{readsavfile}{\newread\readsavfile}{}%
+ \openin\readsavfile=\jobname_rt.sav
+ \read\readsavfile to \InitSeedValue
+ \read\readsavfile to \lastRandomNum
+ \closein\readsavfile
+ \randomi=\lastRandomNum
% \end{macrocode}
% When \cs{useLastAsSeed}, the last becomes the first.
% \begin{macrocode}
\xdef\InitSeedValue{\the\randomi}
- }{%
- \PackageInfo{ran_toks}{\jobname_rt.sav cannot
- be found, \MessageBreak
- using the random initializer}%
- }%
+ }{%
+ \PackageInfo{ran_toks}{\jobname_rt.sav cannot
+ be found, \MessageBreak
+ using the random initializer}%
+ }%
}
\@ifundefined{aeb@randomizeChoices}{%
\let\inputRandomSeed\useLastAsSeed
@@ -214,12 +234,12 @@
% A standard \cs{verbatim} write used in exerquiz and other package in the AeB family.
% \begin{macrocode}
\def\verbatimwrite{\@bsphack
- \let\do\@makeother\dospecials
- \catcode`\^^M\active \catcode`\^^I=12
- \def\verbatim@processline{%
- \immediate\write\verbatim@out
- {\the\verbatim@line}}%
- \verbatim@start}
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active \catcode`\^^I=12
+ \def\verbatim@processline{%
+ \immediate\write\verbatim@out
+ {\the\verbatim@line}}%
+ \verbatim@start}
\def\endverbatimwrite{\@esphack}
\def\rt@IWVO{\immediate\write\verbatim@out}
% \end{macrocode}
@@ -227,15 +247,15 @@
% \begin{macrocode}
\def\InitSeedValue{\the\randomi}
\def\rt@writeSeedData{\ifsaveseed
- \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
- \immediate\openout \saveseedinfo \jobname_rt.sav
- \let\verbatim@out\saveseedinfo
- \def\rt@msgi{initializing seed value}%
- \def\rt@msgii{last random number used}%
- \uccode`c=`\%\uppercase{%
- \rt@IWVO{\InitSeedValue\space c \rt@msgi}%
- \rt@IWVO{\the\randomi\space c \rt@msgii}}\immediate
- \closeout\saveseedinfo\fi}
+ \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
+ \immediate\openout \saveseedinfo \jobname_rt.sav
+ \let\verbatim@out\saveseedinfo
+ \def\rt@msgi{initializing seed value}%
+ \def\rt@msgii{last random number used}%
+ \uccode`c=`\%\uppercase{%
+ \rt@IWVO{\InitSeedValue\space c \rt@msgi}%
+ \rt@IWVO{\the\randomi\space c \rt@msgii}}\immediate
+ \closeout\saveseedinfo\fi}
% \end{macrocode}
% Save the initial seed value to hard drive.
% \begin{macrocode}
@@ -248,9 +268,9 @@
% randomly permuted by \cs{rt@RandomizeList}.
% \begin{macrocode}
\def\rt@populateList#1{\rt@listIn={}\rt@nCnt\z@
- \@whilenum\rt@nCnt<#1\do{\advance\rt@nCnt\@ne
- \edef\rt@listInHold{\the\rt@listIn\noexpand\\{\the\rt@nCnt}}%
- \rt@listIn=\expandafter{\rt@listInHold}}}
+ \@whilenum\rt@nCnt<#1\do{\advance\rt@nCnt\@ne
+ \edef\rt@listInHold{\the\rt@listIn\noexpand\\{\the\rt@nCnt}}%
+ \rt@listIn=\expandafter{\rt@listInHold}}}
% \end{macrocode}
% \DescribeMacro{\rt@RandomizeList}\hskip-\marginparsep\thinspace|{|\ameta{n}|}|
% is the command that gets the process of randomizing
@@ -259,17 +279,17 @@
% calls \cs{rt@randomizeList} to actually do the work.
% \begin{macrocode}
\def\rt@RandomizeList#1{\global
- \rt@listIn={}\global\rt@newListIn={}\global\rt@listOut={}%
- \rt@nMax=#1\relax\rt@populateList{\the\rt@nMax}%
- \ifwerandomize
- \expandafter\rt@randomizeList\else
- \global\rt@listOut=\expandafter{\the\rt@listIn}\fi
+ \rt@listIn={}\global\rt@newListIn={}\global\rt@listOut={}%
+ \rt@nMax=#1\relax\rt@populateList{\the\rt@nMax}%
+ \ifwerandomize
+ \expandafter\rt@randomizeList\else
+ \global\rt@listOut=\expandafter{\the\rt@listIn}\fi
% \end{macrocode}
% Save the list out as \cs{rt@BaseName-List} for later retrieval. This is the randomized
% list of integers for this base name.
% \changes{v1.1}{2017/05/04}{Save out list for later use}
% \begin{macrocode}
- \global\rt@nameedef{\rt@BaseName-List}{\the\rt@listOut}}
+ \global\rt@nameedef{\rt@BaseName-List}{\the\rt@listOut}}
% \end{macrocode}
% \DescribeMacro{\rt@randomizeList} randomizes the list of consecutive integers, and leaves the
% results,
@@ -280,24 +300,24 @@
% \cs{rt@randomizeList} is a loop, looping between itself and \cs{rt@loopTest}.
% \begin{macrocode}
\def\rt@randomizeList{\let\\=\rt@processi
- \setrannum{\rt@getRanNum}{1}{\the\rt@nMax}%
+ \setrannum{\rt@getRanNum}{1}{\the\rt@nMax}%
\ifrtdebug\typeout{\string\rt@getRanNum=\the\rt@getRanNum}\fi
- \rt@nCnt\z@
+ \rt@nCnt\z@
\ifrtdebug\typeout{LISTING: \the\rt@listIn}\fi
- \the\rt@listIn
- \rt@loopTest
+ \the\rt@listIn
+ \rt@loopTest
}
\def\rt@loopTest{\advance\rt@nMax\m@ne
- \ifnum\rt@nMax>\z@
- \def\rt@next{%
- \rt@listIn=\expandafter{\the\rt@newListIn}%
- \rt@newListIn={}\rt@randomizeList}%
- \else
- \let\rt@next\relax
- \global\rt@listOut=\expandafter{\the\rt@listOut}%
-\ifrtdebug\typeout{Final Result: \string\rt@listOut=\the\rt@listOut}\fi
- \fi
- \rt@next
+ \ifnum\rt@nMax>\z@
+ \def\rt@next{%
+ \rt@listIn=\expandafter{\the\rt@newListIn}%
+ \rt@newListIn={}\rt@randomizeList}%
+ \else
+ \let\rt@next\relax
+ \global\rt@listOut=\expandafter{\the\rt@listOut}%
+ \ifrtdebug
+ \typeout{Final Result: \string\rt@listOut=\the\rt@listOut}\fi
+ \fi\rt@next
}
% \end{macrocode}
% In \cs{rt@randomizeList}, we \verb~\let\\=\rt@processi~ before dumping the
@@ -305,16 +325,16 @@
% is the random integer between 1 and \cs{rt@nMax}.
% \begin{macrocode}
\def\rt@processi#1{\advance\rt@nCnt\@ne
- \ifnum\rt@nCnt=\rt@getRanNum
- \edef\rt@listOutHold{\the\rt@listOut}%
- \global\rt@listOut=\expandafter{\rt@listOutHold\\{#1}}%
-\ifrtdebug\typeout{Found it: \string\\{#1}}%
-\typeout{New \string\rt@listOut: \the\rt@listOut}\fi
- \else
- \edef\rt@listInHold{\the\rt@newListIn}%
- \rt@newListIn=\expandafter{\rt@listInHold\\{#1}}%
-\ifrtdebug\typeout{\string\rt@newListIn: \the\rt@newListIn}\fi
- \fi
+ \ifnum\rt@nCnt=\rt@getRanNum
+ \edef\rt@listOutHold{\the\rt@listOut}%
+ \global\rt@listOut=\expandafter{\rt@listOutHold\\{#1}}%
+ \ifrtdebug\typeout{Found it: \string\\{#1}}%
+ \typeout{New \string\rt@listOut: \the\rt@listOut}\fi
+ \else
+ \edef\rt@listInHold{\the\rt@newListIn}%
+ \rt@newListIn=\expandafter{\rt@listInHold\\{#1}}%
+ \ifrtdebug\typeout{\string\rt@newListIn: \the\rt@newListIn}\fi
+ \fi
}
% \end{macrocode}
% We perform modular arithmetic when the index of \cs{useRanTok} is too large.
@@ -326,36 +346,36 @@
% This macro uses \cs{dimen0} and
% \cs{dimen2}, so it should be called within a group.
% \begin{macrocode}
- \advance\count\z@\m@ne\divide\count\z@ #2\relax
- \multiply\count\z@ #2\relax
- \advance\count\tw@-\count\z@
- \edef\rt@mod{\the\count\tw@}}
+ \advance\count\z@\m@ne\divide\count\z@ #2\relax
+ \multiply\count\z@ #2\relax
+ \advance\count\tw@-\count\z@
+ \edef\rt@mod{\the\count\tw@}}
% \end{macrocode}
% Warning messages, these are \DescribeMacro{\rt@badIndex}\cs{rt@badIndex} and
% \cs{rt@badTokName}\DescribeMacro{\rt@badTokName}.
% \begin{macrocode}
\def\rt@badIndex#1#2{\PackageWarningNoLine{ran_toks}
- {The argument of \string\useRanTok{#1} on line
- \the\inputlineno\space is\MessageBreak
+ {The argument of \string\useRanTok{#1} on line
+ \the\inputlineno\space is\MessageBreak
greater than \string\nToksFor{#2} (\nToksFor{#2}),
- instead will use\MessageBreak
+ instead will use\MessageBreak
\string\useRanTok{\rt@mod}, obtained from modular
- arithmetic.\MessageBreak
+ arithmetic.\MessageBreak
You might want to fix this}
}
\def\rt@badTokName#1{%
- \PackageWarningNoLine{ran_toks}
- {The token list `#1' on line \the\inputlineno\space
- is undefined,\MessageBreak
+ \PackageWarningNoLine{ran_toks}
+ {The token list `#1' on line \the\inputlineno\space
+ is undefined,\MessageBreak
possibly simply mispelled; check spelling.\MessageBreak
If undefined, use \string\ranToks\space or \string\bRTVToks/%
- \string\eRTVToks\space\MessageBreak
+ \string\eRTVToks\space\MessageBreak
to define a list with the name `#1'}%
}
\def\rt@warnTokName#1{%
- \PackageWarningNoLine{ran_toks}
- {The token list `#1' on line \the\inputlineno\space
- is already defined,\MessageBreak
+ \PackageWarningNoLine{ran_toks}
+ {The token list `#1' on line \the\inputlineno\space
+ is already defined,\MessageBreak
will overwrite this list}%
}
% \end{macrocode}
@@ -365,8 +385,8 @@
% The randomized listing can be accessed using \cs{useRanTok}.
% \begin{macrocode}
\def\ranToks#1{\begingroup
- \useRTName{#1}%
- \r@nToks
+ \useRTName{#1}%
+ \r@nToks
}
\long\def\r@nToks#1{\rt@nMax\z@\r@ndToks#1\rt@NIL}
\def\rt@NIL{@nil}
@@ -394,8 +414,8 @@
% \cs{r@nVToks}.
% \begin{macrocode}
\newcommand{\eRTVToks}{\global
- \rt@nameedef{\rt@BaseName Cnt}{\the\rt@nCnt}%
- \expandafter\r@nVToks\expandafter{\rt@BaseName}}
+ \rt@nameedef{\rt@BaseName Cnt}{\the\rt@nCnt}%
+ \expandafter\r@nVToks\expandafter{\rt@BaseName}}
% \end{macrocode}
% \end{macro}
% \begin{environment}{rtVW}
@@ -404,15 +424,24 @@
% the source file in a random way.
% \begin{macrocode}
\def\reVerbEnd{\ifhmode\unskip\fi}
+% \end{macrocode}
+% Insert the hook \cs{rtVWHook} prior to writing the verbatim content.
+% The default is \cs{relax}.
+% \changes{v1.2}{2019/12/28}{Defined \string\cs{rtVWHook}}
+% \begin{macrocode}
+\def\rtVWHook#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\RTVWHook\relax\else\def\RTVWHook{#1}\fi}
+\rtVWHook{}
\newenvironment{rtVW}{\global\advance\rt@nCnt\@ne
- \immediate\openout\rt@Verb@write
- \jobname_\rt@BaseName\the\rt@nCnt.cut
- \let\verbatim@out\rt@Verb@write
- \verbatimwrite
+ \immediate\openout\rt@Verb@write
+ \jobname_\rt@BaseName\the\rt@nCnt.cut
+ \let\verbatim@out\rt@Verb@write
+ \rt@IWVO{\string\RTVWHook}%
+ \verbatimwrite
}{%
- \endverbatimwrite
- \immediate\write\rt@Verb@write{\string\reVerbEnd}%
- \immediate\closeout\rt@Verb@write
+ \endverbatimwrite
+ \immediate\write\rt@Verb@write{\string\reVerbEnd}%
+ \immediate\closeout\rt@Verb@write
}
% \end{macrocode}
% \end{environment}
@@ -420,15 +449,15 @@
% environment.
% \begin{macrocode}
\def\r@nVToks#1{\begingroup
- \gdef\rt@BaseName{#1}%
- \expandafter\rt@nMax\@nameuse{#1Cnt}%
- \rt@listIn={}\rt@nCnt=0\relax\let\rt@listInHold\@empty
- \@whilenum\rt@nCnt<\rt@nMax\do{\advance\rt@nCnt\@ne
- \edef\rt@listInHold{%
- \the\rt@listIn{\noexpand\rt@inputVerb{#1\the\rt@nCnt}}}%
- \rt@listIn=\expandafter{\rt@listInHold}}\ifrtdebug
- \typeout{\string\r@nVToks: \the\rt@listIn}\fi
- \expandafter\r@nToks\expandafter{\the\rt@listIn}}
+ \gdef\rt@BaseName{#1}%
+ \expandafter\rt@nMax\@nameuse{#1Cnt}%
+ \rt@listIn={}\rt@nCnt=0\relax\let\rt@listInHold\@empty
+ \@whilenum\rt@nCnt<\rt@nMax\do{\advance\rt@nCnt\@ne
+ \edef\rt@listInHold{%
+ \the\rt@listIn{\noexpand\rt@inputVerb{#1\the\rt@nCnt}}}%
+ \rt@listIn=\expandafter{\rt@listInHold}}\ifrtdebug
+ \typeout{\string\r@nVToks: \the\rt@listIn}\fi
+ \expandafter\r@nToks\expandafter{\the\rt@listIn}}
\def\rt@inputVerb#1{\input{\jobname_#1.cut}}
% \end{macrocode}
% \DescribeMacro{\r@ndToks} is main looping command for \cs{ranToks}
@@ -442,11 +471,11 @@
% \end{macrocode}
% If the current argument is \cs{par}, we skip it
% \begin{macrocode}
- \ifx\rt@rgi\rt@PAR\def\rt@next{\r@ndToks}\else
- \advance\rt@nMax\@ne
- \global\@namedef{rtTok\the\rt@nMax\rt@BaseName}{#1}%
- \def\rt@next{\@ifnextchar\rt@NIL
- {\rt@endToks\@gobble}{\r@ndToks}}\fi\rt@next}
+ \ifx\rt@rgi\rt@PAR\def\rt@next{\r@ndToks}\else
+ \advance\rt@nMax\@ne
+ \global\@namedef{rtTok\the\rt@nMax\rt@BaseName}{#1}%
+ \def\rt@next{\@ifnextchar\rt@NIL
+ {\rt@endToks\@gobble}{\r@ndToks}}\fi\rt@next}
% \end{macrocode}
% \hskip-\marginparsep|{|\ameta{n}|}| The \DescribeMacro{\rt@performRanDefns}\cs{rt@performRanDefns} performs code that
% is repeated in several other macros: \cs{rt@endToks}, \cs{reorderRanToks}, and
@@ -457,12 +486,12 @@
% \end{macrocode}
% Now we randomize the order of the integers 1, 2,\dots \texttt{\#1}.
% \begin{macrocode}
- \rt@RandomizeList{#1}\rt@nCnt\z@
+ \rt@RandomizeList{#1}\rt@nCnt\z@
% \end{macrocode}
% Now we randomize the definitions. We \verb!\let\\=\rt@ssign!, then
% let loose the tokens!
% \begin{macrocode}
- \let\\\rt@ssign\the\rt@listOut}
+ \let\\\rt@ssign\the\rt@listOut}
% \end{macrocode}
% The final destination for \DescribeMacro{\rt@endToks}\cs{r@ndToks}.
% \begin{macrocode}
@@ -470,23 +499,23 @@
% \end{macrocode}
% Save the number of tokens counted
% \begin{macrocode}
- \rt@nameedef{nMax4\rt@BaseName}{\the\rt@nMax}%
- \rt@performRanDefns{\the\rt@nMax}\endgroup}
+ \rt@nameedef{nMax4\rt@BaseName}{\the\rt@nMax}%
+ \rt@performRanDefns{\the\rt@nMax}\endgroup}
% \end{macrocode}
% \begin{macro}{\reorderRanToks}\hskip-\marginparsep\,\texttt{\darg{\ameta{name}}}
% The \cs{reorderRanToks} command reorders (or re-indexes)
% the family with name \ameta{name} (\texttt{\#1}).
% \begin{macrocode}
\def\reorderRanToks#1{\begingroup\useRTName{#1}\expandafter
- \ifx\csname nMax4#1\endcsname\relax
+ \ifx\csname nMax4#1\endcsname\relax
% \end{macrocode}
% Document author has not run \cs{ranToks} yet for this basename (\texttt{\#1})
% \begin{macrocode}
- \rt@badTokName{#1}\else
+ \rt@badTokName{#1}\else
% \end{macrocode}
% Good to go. We reorder this list.
% \begin{macrocode}
- \rt@performRanDefns{\@nameuse{nMax4#1}}\fi
+ \rt@performRanDefns{\@nameuse{nMax4#1}}\fi
\endgroup}
% \end{macrocode}
% \end{macro}
@@ -496,33 +525,33 @@
% a randomization of the same list, without affecting the original order of \ameta{name1}.
% \begin{macrocode}
\newcommand\copyRanToks[2]{\begingroup\expandafter
- \ifx\csname nMax4#1\endcsname\relax
+ \ifx\csname nMax4#1\endcsname\relax
% \end{macrocode}
% Source list is not defined
% \begin{macrocode}
\rt@badTokName{#1}%
- \else\expandafter
+ \else\expandafter
% \end{macrocode}
% Source list is defined
% \begin{macrocode}
- \ifx\csname nMax4#2\endcsname\relax
+ \ifx\csname nMax4#2\endcsname\relax
% \end{macrocode}
% Destination list is not defined, which is good in this instance. This is
% the case we copy the list.
% \begin{macrocode}
- \useRTName{#2}\global
- \rt@nameedef{nMax4#2}{\@nameuse{nMax4#1}}%
- \rt@nCnt=\csname nMax4#2\endcsname\relax
- \@whilenum\rt@nCnt>\z@\do{\global
- \rt@nameedef{rtTok\the\rt@nCnt#2}%
- {\noexpand\@nameuse{rtTok\the\rt@nCnt#1}}%
- \advance\rt@nCnt\m@ne}%
- \rt@performRanDefns{\@nameuse{nMax4#2}}\else
+ \useRTName{#2}\global
+ \rt@nameedef{nMax4#2}{\@nameuse{nMax4#1}}%
+ \rt@nCnt=\csname nMax4#2\endcsname\relax
+ \@whilenum\rt@nCnt>\z@\do{\global
+ \rt@nameedef{rtTok\the\rt@nCnt#2}%
+ {\noexpand\@nameuse{rtTok\the\rt@nCnt#1}}%
+ \advance\rt@nCnt\m@ne}%
+ \rt@performRanDefns{\@nameuse{nMax4#2}}\else
% \end{macrocode}
% Destination list is defined already, warn the user.
% \begin{macrocode}
- \rt@warnTokName{#2}\fi
- \fi
+ \rt@warnTokName{#2}\fi
+ \fi
\endgroup}
% \end{macrocode}
% \end{macro}
@@ -531,42 +560,42 @@
% contents of \verb!\the\rt@listOut!.
% \begin{macrocode}
\def\rt@ssign#1{\advance\rt@nCnt\@ne\global
- \rt@nameedef{rtRanTok\the\rt@nCnt\rt@BaseName}{\noexpand
- \@nameuse{rtTok#1\rt@BaseName}}}
+ \rt@nameedef{rtRanTok\the\rt@nCnt\rt@BaseName}{\noexpand
+ \@nameuse{rtTok#1\rt@BaseName}}}
% \end{macrocode}
% \subsection{Additional user access commands}
% \DescribeMacro{\nToksFor}\hskip-\marginparsep\texttt{\darg{\ameta{name}}}
% expands the the number of tokens whose name is \ameta{name} (\texttt{\#1}).
% \begin{macrocode}
\newcommand{\nToksFor}[1]{\expandafter
- \ifx\csname nMax4#1\endcsname\relax
- \textbf{??}\rt@badTokName{#1}\else
- \@nameuse{nMax4#1}\fi}
+ \ifx\csname nMax4#1\endcsname\relax
+ \textbf{??}\rt@badTokName{#1}\else
+ \@nameuse{nMax4#1}\fi}
% \end{macrocode}
% \DescribeMacro{\rtTokByNum}\hskip-\marginparsep\texttt{[\ameta{name}]\darg{\ameta{num}}} is an internal macro, but it can be used publicly.
% The argument of it is an integer, eg, \verb!\rtTokByNum{3}! is the third token, as listed in the order
% given in the argument of \cs{ranToks}.
% \begin{macrocode}
\newcommand{\rtTokByNum}[2][\rt@BaseName]{\expandafter
- \ifx\csname nMax4#1\endcsname\relax
- \textbf{??}\rt@badTokName{#1}\else
- \@nameuse{rtTok#2#1}\expandafter\ignorespaces\fi}
+ \ifx\csname nMax4#1\endcsname\relax
+ \textbf{??}\rt@badTokName{#1}\else
+ \@nameuse{rtTok#2#1}\expandafter\ignorespaces\fi}
% \end{macrocode}
%\DescribeMacro{\useRanTok}\hskip-\marginparsep\texttt{[\ameta{name}]\darg{\ameta{num}}}
% After \cs{ranToks} has been executed, the user has access to the
% randomized tokens through \cs{useRanTok}. The argument \ameta{num} is an integer 1 through max.
% \begin{macrocode}
\newcommand{\useRanTok}[2][\rt@BaseName]{\bgroup
- \expandafter\ifx\csname nMax4#1\endcsname\relax
- \rt@badTokName{#1}\else
+ \expandafter\ifx\csname nMax4#1\endcsname\relax
+ \rt@badTokName{#1}\else
\ifnum#2>\nToksFor{#1}\rt@modarith{#2}{\nToksFor{#1}}%
% \end{macrocode}
% If index (\texttt{\#2}) is greater than array length, use modular arithmetic to resolve
% the issue, and send a warning to the user.
% \changes{v1.1}{2017/05/04}{Add modular arithmetic to resolve case where index is greater than length}
% \begin{macrocode}
- \rt@badIndex{#2}{#1}\@nameuse{rtRanTok\rt@mod#1}\else
- \@nameuse{rtRanTok#2#1}\fi\fi\egroup}
+ \rt@badIndex{#2}{#1}\@nameuse{rtRanTok\rt@mod#1}\else
+ \@nameuse{rtRanTok#2#1}\fi\fi\egroup}
% \end{macrocode}
% \DescribeMacro{\displayListRandomly}\hskip-\marginparsep\texttt{[\ameta{prior}][\ameta{post}]\darg{\ameta{name}}}
% lists all items in the list as passed
@@ -578,11 +607,11 @@
%\changes{v1.1}{2017/05/04}{Added second optional argument to \string\cs{displayListRandomly}}
% \begin{macrocode}
\newcommand{\displayListRandomly}[1][]{\bgroup\def\rt@prior{#1}%
- \displ@yListRandomly}
+ \displ@yListRandomly}
\newcommand{\displ@yListRandomly}[2][]{\rt@nCnt\z@
- \expandafter\ifx\csname nMax4#2\endcsname\relax
- \rt@rgi\space\textbf{??}\rt@badTokName{#2}#1%
- \else
+ \expandafter\ifx\csname nMax4#2\endcsname\relax
+ \rt@rgi\space\textbf{??}\rt@badTokName{#2}#1%
+ \else
% \end{macrocode}
% Within the optional arguments, we define \DescribeMacro{\i}\cs{i},
% \DescribeMacro{\first}\cs{first}, \DescribeMacro{\last}\cs{last}, and
@@ -590,22 +619,22 @@
% These four macro are defined locally and not available outside the command
% \cs{displayListRandomly}.
% \begin{macrocode}
- \def\rt@post{#1}\useRTName{#2}\let\i\rt@nCnt
- \def\first{1}\edef\last{\@nameuse{nMax4#2}}%
- \@tempcnta\last \advance\@tempcnta\m@ne
- \edef\lessone{\the\@tempcnta}%
- \@whilenum\rt@nCnt<\last\advance\rt@nCnt\@ne
- \do{\rt@prior\useRanTok{\the\rt@nCnt}\rt@post}%
- \fi\egroup
-}
+ \def\rt@post{#1}\useRTName{#2}\let\i\rt@nCnt
+ \def\first{1}\edef\last{\@nameuse{nMax4#2}}%
+ \@tempcnta\last \advance\@tempcnta\m@ne
+ \edef\lessone{\the\@tempcnta}%
+ \@whilenum\rt@nCnt<\last\advance\rt@nCnt\@ne
+ \do{\rt@prior\useRanTok{\the\rt@nCnt}\rt@post}%
+ \fi
+\egroup}
% \end{macrocode}
% \section{Commands that support a DB application}
% We begin with some utility commands to help parse the argument of \cs{useProbDBs}.
% \begin{macrocode}
\def\rt@gettonil#1\@nil{\def\to@nilarg{#1}}
\def\rt@ifspc{\ifx\@let@token\@sptoken
- \let\rt@next\rt@xifspc\else
- \let\rt@next\rt@gettonil\fi\rt@next}
+ \let\rt@next\rt@xifspc\else
+ \let\rt@next\rt@gettonil\fi\rt@next}
\begingroup
\def\:{\rt@xifspc}
\expandafter\gdef\: {\futurelet\@let@token\rt@ifspc}
@@ -618,21 +647,21 @@
% in the preamble. Refer to the demo file \texttt{mc\_db.tex} for an illustration of its intended use.
% \begin{macrocode}
\def\ProbDBWarningMsg#1{\filename@parse{#1}
- \PackageWarning{ran_toks}
- {The file \filename@area\filename@base.\ifx\filename@ext\relax
- tex\else\filename@ext\fi\space cannot be found}}
+ \PackageWarning{ran_toks}
+ {The file \filename@area\filename@base.\ifx\filename@ext\relax
+ tex\else\filename@ext\fi\space cannot be found}}
\def\useTheseDBs#1{\def\rt@dblist{#1}\ifx\rt@dblist\@empty\else
- \let\rt@DB@List\@empty
- \edef\temp@expand{\noexpand\@for\noexpand\@@tmp:=\rt@dblist}%
- \temp@expand\do{\ifx\@@tmp\@empty\else
- \expandafter\rt@strpspcs\@@tmp\@nil\edef\@@tmp{\to@nilarg}%
- \edef\rt@nextDB{\noexpand
- \InputIfFileExists{\@@tmp}{}{\noexpand
- \ProbDBWarningMsg{\@@tmp}}}%
- \toks\tw@=\expandafter{\rt@DB@List}%
- \toks@=\expandafter{\rt@nextDB}%
- \edef\rt@DB@List{\the\toks\tw@\space\the\toks@}\fi
- }\expandafter\rt@DB@List\fi}
+ \let\rt@DB@List\@empty
+ \edef\temp@expand{\noexpand\@for\noexpand\@@tmp:=\rt@dblist}%
+ \temp@expand\do{\ifx\@@tmp\@empty\else
+ \expandafter\rt@strpspcs\@@tmp\@nil\edef\@@tmp{\to@nilarg}%
+ \edef\rt@nextDB{\noexpand
+ \InputIfFileExists{\@@tmp}{}{\noexpand
+ \ProbDBWarningMsg{\@@tmp}}}%
+ \toks\tw@=\expandafter{\rt@DB@List}%
+ \toks@=\expandafter{\rt@nextDB}%
+ \edef\rt@DB@List{\the\toks\tw@\space\the\toks@}\fi
+ }\expandafter\rt@DB@List\fi}
\let\useProbDBs\useTheseDBs
% \end{macrocode}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/ran_toks/ran_toks.ins b/Master/texmf-dist/source/latex/ran_toks/ran_toks.ins
new file mode 100644
index 00000000000..4d2d77d191a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/ran_toks/ran_toks.ins
@@ -0,0 +1,60 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1999-2019 D. P. Story
+%%
+%% This file is part of the `AcroTeX eDucation Bundle'.
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2019/12/28}
+\def\batchfile{ran_toks.ins}
+%
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+\generate
+{%
+ \file{ran_toks.sty}{\from{ran_toks.dtx}{copyright,package}}
+ \file{ran-toks.sty}{\from{ran_toks.dtx}{copyright,altpkgname}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput