texlive[53271] Master/texmf-dist: ran_toks (30dec19)

commits+karl at tug.org commits+karl at tug.org
Mon Dec 30 23:17:36 CET 2019


Revision: 53271
          http://tug.org/svn/texlive?view=revision&revision=53271
Author:   karl
Date:     2019-12-30 23:17:36 +0100 (Mon, 30 Dec 2019)
Log Message:
-----------
ran_toks (30dec19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/ran_toks/README.md
    trunk/Master/texmf-dist/doc/latex/ran_toks/examples/mc-db.tex
    trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx
    trunk/Master/texmf-dist/tex/latex/ran_toks/ran_toks.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/ran_toks/docs/
    trunk/Master/texmf-dist/doc/latex/ran_toks/docs/ran_toks.pdf
    trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.pdf
    trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.tex
    trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.ins
    trunk/Master/texmf-dist/tex/latex/ran_toks/ran-toks.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/ran_toks/doc/

Modified: trunk/Master/texmf-dist/doc/latex/ran_toks/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ran_toks/README.md	2019-12-30 22:17:03 UTC (rev 53270)
+++ trunk/Master/texmf-dist/doc/latex/ran_toks/README.md	2019-12-30 22:17:36 UTC (rev 53271)
@@ -1,6 +1,6 @@
 The ran_toks Package
 Author: D. P. Story
-Dated: 2017/05/04 
+Dated: 2019-12-28 
 
 This short package, with minimal requirements, defines macros for
 randomizing a list of tokens.  There are two approaches:
@@ -40,6 +40,9 @@
 For users of AeB or eqexam, the latter structure can be used to randomize
 the order of the questions on a quiz or exam.
 
+What's New (2019-12-28 ) Defined \rtVWHook to insert at the top of the
+rtVW environment. Also created an alternate package name of ran-toks.
+
 What's new in v1.1: Added the convenience command \useTheseDBs to input files for
 an application to constructing exams (using eqexam) from a series of DB files. Refer to the
 new demo file mc-db.tex.

Added: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/ran_toks.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/ran_toks.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ran_toks/docs/ran_toks.pdf	2019-12-30 22:17:03 UTC (rev 53270)
+++ trunk/Master/texmf-dist/doc/latex/ran_toks/docs/ran_toks.pdf	2019-12-30 22:17:36 UTC (rev 53271)

Property changes on: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/ran_toks.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.pdf	2019-12-30 22:17:03 UTC (rev 53270)
+++ trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.pdf	2019-12-30 22:17:36 UTC (rev 53271)

Property changes on: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.tex	2019-12-30 22:17:36 UTC (rev 53271)
@@ -0,0 +1,689 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[
+    web={centertitlepage,designv,forcolorpaper,
+         latextoc,pro}, %tight,
+    eforms,aebxmp
+]{aeb_pro}
+\usepackage{ran_toks}
+
+\useThisSeed{1441984427}
+%\useLastAsSeed
+%\useThisSeed{2001383846}
+
+%2001383846 % initializing seed value
+%1629639958 % last random number used
+
+\let\pkg\textsf
+\let\env\texttt
+
+%\rtdebugtrue
+%\ranToksOn
+%\ranToksOff
+
+
+%\usepackage{myriadpro}
+\usepackage[altbullet]{lucidbry}
+
+%\usepackage{makeidx}
+%\makeindex
+\usepackage{acroman}
+
+\makeatletter
+\def\eq at fititin#1{\noindent\unskip\nobreak\hfill\penalty50
+    \hskip2em\hbox{}\nobreak\hfill#1}
+\def\fitit{\eq at fititin{\exrtnlabelformat}}
+\@mparswitchfalse\reversemarginpar
+\renewcommand{\paragraph}
+    {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}
+    {\normalfont\normalsize\bfseries}}
+\renewcommand{\subparagraph}
+    {\@startsection{subparagraph}{5}{\parindent}{6pt}{-3pt}%
+    {\normalfont\normalsize\bfseries}}
+\makeatother
+
+\def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\let\ameta\anglemeta
+\def\meta#1{\textit{\texttt{#1}}}
+\def\darg#1{\texttt{\{#1\}}}
+\def\takeMeasure{\bgroup\obeyspaces\takeMeasurei}
+\def\takeMeasurei#1{\global\setbox\webtempboxi\hbox{\ttfamily#1}\egroup}
+\def\bxSize{\wd\webtempboxi+2\fboxsep+2\fboxrule}
+
+\usepackage[active]{srcltx}
+
+\let\amtIndent\leftmargini
+\def\SUB#1{${}_{\text{#1}}$}
+
+\newdimen\aebdimen \aebdimen\topsep
+\newcommand\bVerb[1][]{\begingroup#1\vskip\aebdimen\parindent0pt}%
+\def\eVerb{\vskip\aebdimen\endgroup\noindent}
+
+
+\urlstyle{rm}
+
+\DeclareDocInfo
+{
+    university={\AcroTeX.Net},
+    title={\texorpdfstring{The \textsf{ran\_toks}}{The manual for the ran\_toks}
+        Package\texorpdfstring{\\[6pt]\large}{: }
+        Randomizing the order of tokens},
+    author={D. P. Story},
+    email={dpstory at acrotex.net},
+    subject=Documentation for the ran\_toks package,
+    talksite={\url{www.acrotex.net}},
+    version={1.2, 2019/12/28},
+    Keywords={LaTeX,PDF,random, tokens, JavaScript,Adobe Acrobat},
+    copyrightStatus=True,
+    copyrightNotice={Copyright (C) \the\year, D. P. Story},
+    copyrightInfoURL={http://www.acrotex.net}
+}
+\DeclareInitView{windowoptions={showtitle}}
+
+
+\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
+       \kern-.6em \hbox{$\mathcal S$}}$}
+
+\universityLayout{fontsize=Large}
+\titleLayout{fontsize=LARGE}
+\authorLayout{fontsize=Large}
+\tocLayout{fontsize=Large,color=aeb}
+\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb}
+\subsectionLayout{indent=-31.25pt,color=aeb}
+\subsubsectionLayout{indent=0pt,color=aeb}
+\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}}
+
+\def\exSrc{\makebox[0pt][r]{\large{\Pisymbol{webd}{157}}\enspace}}
+
+%\pagestyle{empty}
+%\parindent0pt\parskip\medskipamount
+
+\chngDocObjectTo{\newDO}{doc}
+\begin{docassembly}
+var titleOfManual="The ran_toks Package";
+var manualfilename="Manual_BG_Print_rt.pdf";
+var manualtemplate="Manual_BG_Brown.pdf"; // Blue, Green, Brown
+var _pathToBlank="C:/Users/Public/Documents/ManualBGs/"+manualtemplate;
+var doc;
+var buildIt=false;
+if ( buildIt ) {
+    console.println("Creating new " + manualfilename + " file.");
+    doc = \appopenDoc({cPath: _pathToBlank, bHidden: true});
+    var _path=this.path;
+    var pos=_path.lastIndexOf("/");
+    _path=_path.substring(0,pos)+"/"+manualfilename;
+    \docSaveAs\newDO ({ cPath: _path });
+    doc.closeDoc();
+    doc = \appopenDoc({cPath: manualfilename, oDoc:this, bHidden: true});
+    f=doc.getField("ManualTitle");
+    f.value=titleOfManual;
+    doc.flattenPages();
+    \docSaveAs\newDO({ cPath: manualfilename });
+    doc.closeDoc();
+} else {
+    console.println("Using the current "+manualfilename+" file.");
+}
+var _path=this.path;
+var pos=_path.lastIndexOf("/");
+_path=_path.substring(0,pos)+"/"+manualfilename;
+\addWatermarkFromFile({
+    bOnTop:false,
+    bOnPrint:false,
+    cDIPath:_path
+});
+\executeSave();
+\end{docassembly}
+
+%\definePath\bgPath{"C:/Users/Public/Documents/%
+%    ManualBGs/Manual_BG_Print_AeB.pdf"}
+%\begin{docassembly}
+%\addWatermarkFromFile({%
+%    bOnTop: false,
+%    cDIPath: \bgPath
+%})
+%\executeSave()
+%\end{docassembly}
+
+\begin{document}
+
+\maketitle
+
+\selectColors{linkColor=black}
+\tableofcontents
+\selectColors{linkColor=webgreen}
+
+\section{Introduction}
+
+This is a short package for randomizing the order of tokens. The package
+is long overdue; users of \textbf{AeB} and of \textsf{eqexam} have long asked for a way to
+randomize the order of the problems in a test or quiz, or anything for
+that matter.
+
+\newtopic\noindent\exSrc The \texttt{examples} folder contains three demonstration files:
+\begin{enumerate}
+    \item \texttt{ran\_toks.tex} reproduces the sample code of this manual.
+    \item \texttt{random\_tst.tex} shows how to use \pkg{ran\_toks} to
+        randomize the \emph{questions} of an exam document created by the
+        \pkg{eqexam} package.
+    \item \texttt{random\_tst\_qz.tex} shows how to randomize choices of a
+        multiple choice field in a \env{quiz} environment of the
+        \pkg{exerquiz} package, when the choices contain verbatim text.
+    \item \texttt{mc-db.tex} is an \pkg{eqexam} file that draws from the
+        database files \texttt{db1.tex}, \texttt{db2.tex},
+        \texttt{db3.tex}, and \texttt{db4.tex}, to construct the questions
+        of the exam. The questions are drawn at random from the DB files. Refer
+        to \hyperref[s:DBConcept]{Section~\ref*{s:DBConcept}} for a few more details.
+
+\end{enumerate}
+
+\section{The Preamble and Package Options}
+
+The preamble for this package is
+\bVerb\takeMeasure{\string\usepackage\darg{ran\_toks}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single]
+\usepackage{ran_toks}
+\end{Verbatim}
+\end{minipage}\eVerb
+The package itself has no options.
+
+The requirements for \textsf{ran\_toks} are the \textsf{verbatim} package
+(part of the standard {\LaTeX} distribution, and the macro file
+\texttt{random.tex} by Donald Arseneau.
+
+
+\section{The main commands and environments}\label{rtmain}
+
+There are two styles for defining a series of tokens to be randomized,
+using either the \cs{ranToks} command or the \cs{bRTVToks}/\cs{eRTVToks}
+pair. Each of these is discussed in the next two subsections.
+
+\subsection{The \texorpdfstring{\protect\cs{ranToks}}{\CMD{ranToks}} command}
+
+The \cs{ranToks} command was the original concept; declare a series of
+tokens to be randomized.
+\bVerb\takeMeasure{\string\ranToks\darg{\meta{name}}\{\%\enspace}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\ranToks{!meta(name)}{%
+    {!meta(token!SUB(1))}
+    {!meta(token!SUB(2))}
+    ...
+    {!meta(token!SUB(n))}
+}
+\end{Verbatim}
+\end{minipage}\eVerb
+were \meta{token\SUB{k}} is any non-verbatim content;\footnote{Any token that
+can be in the argument of a command.} each token is enclosed in braces
+(\darg{}), this is required. The \meta{name} parameter is required, and
+must be unique for the document; it is used to build the names of internal
+macros. Of course several such \cs{ranToks} can be used in the document,
+either in the preamble or in the body of the document. Multiple
+\cs{ranToks} commands must have a different \meta{name} parameter.
+
+\emph{After} a \cs{ranToks} command has been executed, the number of tokens
+counted is accessible through the \cs{nToksFor} command,
+\bVerb\takeMeasure{\string\nToksFor\darg{\meta{name}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\nToksFor{!meta(name)}
+\end{Verbatim}
+\end{minipage}\eVerb
+The one argument is \meta{name}, and will expand to the total number
+of tokens listing as argument in the \cs{ranToks} command by the same
+name.
+
+The \cs{ranToks} command does not display the randomized tokens, for that
+the command \cs{useRanTok} is used.
+\bVerb\takeMeasure{\string\useRTName\darg{\meta{name}}}%
+\begin{minipage}{\bxSize}
+\begin{Verbatim}[frame=single,commandchars=!()]
+\useRanTok{!meta(num)}
+\useRTName{!meta(name)}
+\end{Verbatim}
+\end{minipage}\eVerb
+The argument of \cs{useRanTok} is a positive integer between 1 and
+\cs{nToksFor\darg{\meta{name}}}, the number of tokens declared by
+\cs{ranToks}, inclusive. There is no space created following the
+\cs{useRanTok} command, so if these are to be used ``inline'', enclose them
+in braces (\darg{}), for example, \darg{\cs{useRanTok\darg{1}}}. The use of
+\cs{useRTName} is optional unless the listing of the \cs{useRanTok} commands
+is separated from the \cs{ranToks} command that defined them by another
+\cs{ranToks} command of a different name. That should be clear!
+
+Consider this example.
+
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ranToks{myPals}{%
+    {Jim}{Richard}{Don}
+    {Alex}{Tom}{J\"{u}rgen}
+}
+\end{Verbatim}
+\ranToks{myPals}{%
+    {Jim}{Richard}{Don}
+    {Alex}{Tom}{J\"{u}rgen}
+}
+I have {\nToksFor{myPals}} pals, they are \useRanTok{1}, \useRanTok{2},
+\useRanTok{3}, \useRanTok{4}, {\useRanTok{5}} and \useRanTok{6}. (Listed
+in the order of best friend to least best friend.)
+The verbatim listing is,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+I have {\nToksFor{myPals}} pals, they are \useRanTok{1},
+\useRanTok{2}, \useRanTok{3}, \useRanTok{4}, {\useRanTok{5}}
+and \useRanTok{6}.
+\end{Verbatim}
+Notice that \cs{useRanToks} are not enclosed in braces for 1--4 because
+they are each followed by a comma; the fifth token, \texttt{\darg{\cs{useRanTok\darg{5}}}}, is
+enclosed in braces to generate a space following the insertion of the text.
+
+Repeating the sentence yields, ``I have {\nToksFor{myPals}} pals, they are
+\useRanTok{1}, \useRanTok{2}, \useRanTok{3}, \useRanTok{4},
+{\useRanTok{5}} and \useRanTok{6}'', which is the exact same random order. To
+obtain a different order, re-execute the \cs{ranToks} command with the same
+arguments.\footnote{{\ttfamily\string\ranToks\darg{myPals}\darg{\darg{Jim}\darg{Richard}\darg{Don}\darg{Alex}\darg{Tom}\darg{J\string\"\darg{u}rgen}}} in this example.} Doing just that, \ranToks{myPals}{{Jim}{Richard}{Don}
+{Alex}{Tom}{J\"{u}rgen}}we obtain, ``I have {\nToksFor{myPals}} pals, they
+are \useRanTok{1}, \useRanTok{2}, \useRanTok{3}, \useRanTok{4},
+{\useRanTok{5}} and \useRanTok{6}.'' A new order?
+An alternative to re-executing \cs{ranToks} is to use the \cs{reorderRanToks} command:
+\bVerb\takeMeasure{\string\reorderRanToks\darg{\meta{name}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\reorderRanToks{!meta(name)}
+\end{Verbatim}
+\end{minipage}\eVerb Now, executing \verb~\reorderRanToks{myPals}~ and compiling the sentence again yields,
+``I have {\nToksFor{myPals}} pals, they are
+\useRanTok{1}, \useRanTok{2}, \useRanTok{3}, \useRanTok{4},
+{\useRanTok{5}} and \useRanTok{6}.'' For most applications, re-randomizing
+the same token list in the same document is not very likely something you
+need to do.
+
+The \cs{reorderRanToks\darg{\meta{name}}} rearranges the list of tokens
+associated with \ameta{name}, which may not be what you want; the
+\cs{copyRanToks} command, on the other hand, makes a (randomized) copy of its
+first required argument \ameta{name\SUB1} and saves it as \ameta{name\SUB2}, without
+effecting the order of \ameta{name\SUB1}.
+\bVerb\takeMeasure{\string\copyRanToks\darg{\ameta{name\SUB1}}\darg{\ameta{name\SUB2}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\copyRanToks{!ameta(name!SUB1)}{!ameta(name!SUB2)}
+\end{Verbatim}
+\end{minipage}\eVerb Thus, if \verb!\copyRanToks{myPals}{myPals1}! is executed, the token list name
+\texttt{myPals1} contains the names of my pals in another randomized order,
+while maintaining the same order of \texttt{myPals}.
+
+
+\newtopic
+My original application for this, the one that motivated writing this
+package at long last, was the need to arrange several form buttons
+randomly on the page. My point is that the listing given in the argument
+of \cs{ranToks} can pretty much be anything that is allowed to be an
+argument of a macro; this would exclude verbatim text created by \cs{verb}
+and verbatim environments.
+
+\subsection{The
+\texorpdfstring{\protect\cs{bRTVToks}/\protect\cs{eRTVToks}}
+    {\CMD{bRTVToks}/\CMD{eRTVToks}} pair of commands}\label{ss:RTVToks}
+
+Sometimes the content to be randomized is quite large or contains verbatim
+text. For this, it may be more convenient to use the
+\cs{bRTVToks}/\penalty0\cs{eRTVToks} command pair. The syntax is
+\bVerb\takeMeasure{\string\bRTVToks\darg{\meta{name}}\quad}%
+\edef\WIDTH{\the\wd\webtempboxi}%
+\def\1{\rlap{\hspace*{\WIDTH}\texttt{\% <-{\sffamily{ End token listing}}}}}%
+\takeMeasure{\string\bRTVToks\darg{\meta{name}}\quad\% <-{\sffamily{ Begin token listing}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\bRTVToks{!meta(name)}!quad% <-!sffamily( Begin token listing)
+\begin{rtVW}
+!qquad!ameta(content!SUB(1))
+\end{rtVW}
+...
+...
+\begin{rtVW}
+!qquad!ameta(content!SUB(n))
+\end{rtVW}
+!1\eRTVToks
+\end{Verbatim}
+\end{minipage}\eVerb
+The \cs{bRTVToks}\texttt{\{\meta{name}\}} command begins the (pseudo)
+environment and is ended by \cs{eRTVToks}. Between these two are a series of
+\texttt{rtVW} (random toks verbatim write) environments. When the document is
+compiled, the contents (\ameta{content\SUB{i}}) of each of these environments
+are written to the computer hard drive and saved under a different name
+(based on the parameter \meta{name}). Later, using the \cs{useRanTok}
+commands, they are input back into the document in a random order.
+
+The \env{rtWVW} environment also writes the command
+\cs{RTVWHook}\marginpar{\small\itshape\flushright\cs{RTVWHook}} to the top of
+the file. Its initial value is \cs{relax}. It can be redefined using the convenience
+command \cs{rtVWHook\darg{\ameta{arg}}}, which expands to
+\verb|\def\RTVWHook{|\ameta{arg}\verb|}|.
+
+The use of \cs{useRTName} and \cs{useRanTok} were explained and illustrated
+in the previous section. Let's go to the examples,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\bRTVToks{myThoughts}
+\begin{rtVW}
+\begin{minipage}[t]{.67\linewidth}
+Roses are red and violets are blue,
+I've forgotten the rest, have you too?
+\end{minipage}
+\end{rtVW}
+\begin{rtVW}
+\begin{minipage}[t]{.67\linewidth}
+I gave up saying bad things like
+\verb!$#%%%^*%^&#$@#! when I was just a teenager.
+\end{minipage}
+\end{rtVW}
+\begin{rtVW}
+\begin{minipage}[t]{.67\linewidth}
+I am a good guy, pass it on! The code for this last sentence is,
+\begin{verbatim}
+%#$% I am a good guy, pass it on! ^&*&^*
+\end{verbatim}
+How did that other stuff get in there?
+\end{minipage}
+\end{rtVW}
+\eRTVToks
+\end{Verbatim}
+OK, now, let's display these three in random order. Here we place them in
+an \texttt{enumerate} environment.
+
+\bRTVToks{myThoughts}%
+\begin{rtVW}
+\begin{minipage}[t]{.67\linewidth}
+Roses are red and violets are blue,
+I've forgotten the rest, have you too?
+\end{minipage}
+\end{rtVW}
+\begin{rtVW}
+\begin{minipage}[t]{.67\linewidth}
+I gave up saying bad things like
+\verb!$#%%%^*%^&#$@#! when I was just a teenager.
+\end{minipage}
+\end{rtVW}
+\begin{rtVW}
+\begin{minipage}[t]{.67\linewidth}
+I am a good guy, pass it on! The code for this last sentence is,
+\begin{verbatim}
+%#$% I am a good guy, pass it on! ^&*&^*
+\end{verbatim}
+How did that other stuff get in there?
+\end{minipage}
+\end{rtVW}
+\eRTVToks
+\begin{enumerate}
+    \item \useRanTok{1}
+    \item \useRanTok{2}
+    \item \useRanTok{3}
+\end{enumerate}
+The verbatim listing of the example above is
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\begin{enumerate}
+    \item \useRanTok{1}
+    \item \useRanTok{2}
+    \item \useRanTok{3}
+\end{enumerate}
+\end{Verbatim}
+The \cs{reorderRanToks} works for lists created by the \cs{bRTVToks}/\penalty0\cs{bRTVToks} construct.
+If we say \cs{reorderRanToks\darg{myThoughts}} and reissue the above list, we obtain,
+\begin{enumerate}\ranToksOn\reorderRanToks{myThoughts}
+    \displayListRandomly[\item]{myThoughts}
+\end{enumerate}
+The command \cs{copyRanToks} works for list created by
+\cs{bRTVToks}/\penalty0\cs{bRTVToks} as well.
+
+
+\paragraph*{On the \cs{displayListRandomly} command.}\label{para:DLR}
+In the enumerate example immediately above, the items in the list are
+explicitly listed as \cs{item \cs{useRanTok\darg{1}}} and so one; an
+alternate approach is to use the command \cs{displayListRandomly}, like so,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\begin{enumerate}
+    \displayListRandomly[\item]{myThoughts}
+\end{enumerate}
+\end{Verbatim}
+The full syntax for \cs{displayListRandomly} is displayed next.
+\bVerb\takeMeasure{\string\displayListRandomly[\ameta{prior}][\ameta{post}]\darg{\meta{name}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\displayListRandomly[!ameta(prior)][!ameta(post)]{!meta(name)}
+\end{Verbatim}
+\end{minipage}
+\eVerb The action of \cs{displayListRandomly} is to expand all tokens that
+are listed in the \meta{name} token list, each entry is displayed as
+\ameta{prior}\cs{useRanTok\darg{i}}\ameta{post}, where \texttt{i}
+goes from~1 to \cs{nToksFor\darg{\meta{name}}}. In the example above,
+\meta{prior} is \cs{item}, but normally, its default is empty. The defaults
+for \ameta{prior} and \ameta{post} are both empty.
+
+\subparagraph*{The optional arguments.} When only one optional argument is present,
+if is interpreted as \ameta{prior}. To obtain a \ameta{post} with no \ameta{prior}
+use the syntax,
+\begin{quote}
+\cs{displayListRandomly[][\ameta{post}]\darg{\ameta{name}}}
+\end{quote}
+Within \emph{each optional argument}, the four commands \cs{i},
+\cs{first}, \cs{last}, and \cs{lessone} are (locally) defined. The \cs{i} command is the index
+counter of the token currently being typeset; \cs{first} is the index of the
+first item; \cs{last} is the index of the last item; and \cs{lessone} is one
+less than \cs{last}. The two optional arguments and the four commands may use
+to perform logic on the token as it is being typeset. For example:
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+List of pals: \displayListRandomly
+    [\ifnum\i=\last and \fi]
+    [\ifnum\i=\last.\else, \fi]{myPals}
+\end{Verbatim}
+yields,
+\begin{quote}
+List of pals: \displayListRandomly
+    [\ifnum\i=\last and \fi]
+    [\ifnum\i=\last.\else, \fi]{myPals}
+\end{quote}
+The optional arguments are wrapped to the next line to keep them within the margins, cool.
+
+The example above shows the list of my pals with an Oxford comma. How would
+you modify the optional argument to get the same listing without the Oxford
+comma? (\displayListRandomly[\ifnum\i=\last and \fi][\ifnum\i=\last.\else\ifnum\i=\lessone\relax\space\else, \fi\fi]{myPals})
+Hint: a solution involves the other command \cs{lessone}.
+
+
+
+\section{Additional arguments and commands}\label{AddCmds}
+
+The syntax given earlier for \cs{useRanTok} was not completely specified.
+It is
+\bVerb\takeMeasure{\string\useRanTok[\meta{name}]\darg{\meta{num}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\useRanTok[!meta(name)]{!meta(num)}
+\end{Verbatim}
+\end{minipage}\eVerb
+The optional first parameter specifies the \meta{name} of the list from
+which to draw a random token; \meta{num} is the number of the
+token in the range of 1 and \cs{nToksFor\darg{\meta{name}}},
+inclusive. The optional argument is useful in special circumstances when
+you want to mix two random lists together.
+
+\newtopic\noindent To illustrate: \useRanTok[myPals]{1}, \useRanTok[myThoughts]{2}
+
+\newtopic\noindent The verbatim listing is
+\begin{Verbatim}[xleftmargin=\amtIndent]
+To illustrate: \useRanTok[myPals]{1}, \useRanTok[myThoughts]{2}
+\end{Verbatim}
+The typeset version looks a little strange, but recall, the text of
+\texttt{myThoughts} were each put in a \texttt{minipage} of width \texttt{.67\cs{linewidth}}.
+Without the \texttt{minipage}, the text would wrap around normally.
+
+\paragraph*{Accessing the original order.} The original order of the list of tokens is not lost, you can retrieve
+them using the command \cs{rtTokByNum},
+\bVerb\takeMeasure{\string\rtTokByNum[\meta{name}]\darg{\meta{num}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\rtTokByNum[!meta(name)]{!meta(num)}
+\end{Verbatim}
+\end{minipage}\eVerb
+This command expands to the token declared in the list named \meta{name}
+that appears at the \meta{num} place in the list. (Rather awkwardly written.)
+For example, my really best pals are {\rtTokByNum[myPals]{3}} and
+\rtTokByNum[myPals]{4}, but don't tell them. The listing is,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+For example, my really best pals are {\rtTokByNum[myPals]{3}}
+and \rtTokByNum[myPals]{4}, but don't tell them.
+\end{Verbatim}
+In some sense, \cs{rtTokByNum[\meta{name}]} acts like a simple array, the
+length of which is \cs{nToksFor\{\meta{name}\}}, and whose $k^{\text{th}}$
+element is \cs{rtTokByNum[\meta{name}]\{\meta{k}\}}.
+
+\paragraph*{Turning off randomization.} The randomization may be turned off
+using \cs{ranToksOff} or turned back on with \cs{ranToksOn}.
+\bVerb\takeMeasure{\string\ranToksOff\quad\string\ranToksOn}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\ranToksOff!quad\ranToksOn
+\end{Verbatim}
+\end{minipage}\eVerb
+This can be done globally in the preamble for the whole of the document,
+or in the body of the document just prior to either \cs{ranToks} or
+\cs{bRTVToks}. For example,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ranToksOff
+\ranToks{integers}{ {1}{2}{3}{4} }
+\ranToksOn
+\end{Verbatim}
+As a check, executing `$\cs{useRanTok\darg{3}} =  \cs{rtTokByNum\darg{3}} = 3 $' yields
+`\ranToksOff\ranToks{integers}{ {1}{2}{3}{4}}\ranToksOn
+$\useRanTok{3} = \rtTokByNum{3} = 3 $'? As anticipated.
+
+To create a non-randomized list of tokens that already have been created (and randomized), use
+\cs{copyRanToks}:
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ranToksOff\copyRanToks{myPals}{myOriginalPals}\ranToksOn
+\end{Verbatim}
+Then, using \cs{displayListRandomly} in a clever way,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\displayListRandomly[\ifnum\i=\last\space and \fi(\the\i)~]
+    [\ifnum\i=\last.\else,\fi\space]{myOriginalPals}
+\end{Verbatim}
+we obtain: \ranToksOff\copyRanToks{myPals}{myOriginalPals}\ranToksOn
+\displayListRandomly[\ifnum\i=\last\space and \fi(\the\i)~][\ifnum\i=\last.\else,\fi\space]{myOriginalPals}
+The original list for \texttt{myPals} remains unchanged:
+\displayListRandomly[\ifnum\i=\last\space and \fi(\the\i)~][\ifnum\i=\last.\else,\fi\space]{myPals}
+
+The \cs{useRanTok} command---whether it operates on a randomized token list
+or not---behaves similarly to an array. Thus, if we wanted the extract
+the third entry of the non-randomized token list (array)
+\texttt{myOriginalPals}, we do so by expanding the command
+\verb!\useRanTok[myOriginalPals]{3}! to produce
+\useRanTok[myOriginalPals]{3}.
+
+\subparagraph*{Document preparation.}
+The command \cs{ranToksOff} is probably best in the preamble to turn off
+all randomization while the rest of the document is being composed.
+
+\paragraph*{The \textsf{ran\_toks} auxiliary file.} The package writes to a file named
+\cs{jobname\_rt.sav}, below represents two typical lines in this file.
+\begin{Verbatim}[xleftmargin=\amtIndent]
+1604051353 % initializing seed value
+5747283528 % last random number used
+\end{Verbatim}
+The first line is the initializing seed value used for the last
+compilation of the document; the second line is the last value of the
+pseudo-random number generator used in the document.
+
+Normally, the pseudo-random number generator provided by
+\texttt{random.tex} produces a new initial seed value every minute. So if
+you recompile again before another minute, you'll get the same initial
+seed value.
+
+\paragraph*{Controlling the initial seed value.} To obtain a new initial seed
+value each time you compile, place \cs{useLastAsSeed} in the preamble.
+\bVerb\takeMeasure{\string\useLastAsSeed}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single]
+\useLastAsSeed
+\end{Verbatim}
+\end{minipage}\eVerb
+When the document is compiled, the initial seed value taken as the second
+line in the \cs{jobname\_rt.sav} file, as seen in the above example.
+With this command in the preamble, a new set of random numbers is
+generated on each compile. If the file \cs{jobname\_rt.sav} does not
+exist, the generator will be initialized by its usual method, using the time and date.
+
+The command \cs{useThisSeed} allows you to reproduce a previous
+pseudo-random sequence.
+\bVerb\takeMeasure{\string\useThisSeed\darg{\meta{init\_seed\_value}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\useThisSeed{!meta(init_seed_value)}
+\end{Verbatim}
+\end{minipage}\eVerb
+This command needs to be placed in the preamble. The value of
+\meta{init\_seed\_value} is an integer, normally taken from the
+first line of the \cs{jobname\_rt.sav} file.
+
+When creating tests (possibly using \textsf{eqexam}), the problems, or
+contiguous collections of problems, can be randomly ordered using the
+\cs{bRTVToks}/\penalty0\cs{eRTVToks} command pair paradigm. For example,
+suppose there are two classes and you want a random order (some of) the
+problems for each of the two classes. Proceed as follows:
+\begin{enumerate}
+\item Compile the document, open \cs{jobname\_rt.sav}, and copy the
+    first line (in the above example, that would be
+    \texttt{1604051353}).
+\item Place \cs{useThisSeed\darg{1604051353}} in the preamble. Compiling
+    will bring back the same pseudo-random sequence very time.
+\item Comment this line out, and repeat the process (use
+    \cs{useLastAsSeed} to generate new random sequences at each
+    compile) until you get another distinct randomization, open
+    \cs{jobname\_rt.sav}, and copy the first line again, say its \texttt{735794511}.
+\item Place \cs{useThisSeed\darg{735794511}} in the preamble.
+\item Label each
+\begin{Verbatim}
+%\useThisSeed{1604051353} % 11:00 class
+%\useThisSeed{735794511}  % 12:30 class
+\end{Verbatim}
+To reproduce the random sequence for the class, just uncomment the random
+seed used for that class.
+\end{enumerate}
+If you are using \textsf{eqexam}, the process can be automated as follows:
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
+\vA{\useThisSeed{1604051353}} % 11:00 class
+\vB{\useThisSeed{735794511}}  % 12:30 class
+\end{Verbatim}
+Again, this goes in the preamble.
+
+\section{Commands to support a DB application}\label{s:DBConcept}
+
+One user wanted to create exams using \pkg{eqexam}, but wanted to randomly
+select questions from a series of `database' files. My thought was that
+\pkg{ran\_toks} would do the job for him. After setting up a demo for him, I
+added the new command \cs{useTheseDBs} to \pkg{ran\_toks}:
+\bVerb\takeMeasure{\string\useTheseDBs\darg{\ameta{db\SUB{1}},\ameta{db\SUB{2}},...,\ameta{db\SUB{n}}}}%
+\begin{minipage}{\bxSize}\kern0pt
+\begin{Verbatim}[frame=single,commandchars=!()]
+\useTheseDBs{!ameta(db!SUB(1)),!ameta(db!SUB(2)),...,!ameta(db!SUB(n))}
+\useProbDBs{!ameta(db!SUB(1)),!ameta(db!SUB(2)),...,!ameta(db!SUB(n))}
+\end{Verbatim}
+\end{minipage}\eVerb The argument of \cs{useTheseDBs} is a comma-delimited
+list of file names. Each file name contains a
+\cs{bRTVToks}/\penalty0\cs{eRTVToks} construct. Within this pair are
+\env{rtVW} environments, as described in
+\hyperref[ss:RTVToks]{Section~\ref*{ss:RTVToks}}. The \cs{useTheseDBs}
+command inputs the files listed in its comma-delimited argument; a warning is
+emitted if one or more of the files are not found. The default extension is
+\texttt{.tex}, \cs{useTheseDBs\darg{db1,db2}} inputs the files
+\texttt{db1.tex} and \texttt{db2.tex}, if they exist, while
+\cs{useTheseDBs\darg{db1.def,db2.db}} inputs the files \texttt{db1.def} and
+\texttt{db2.db}, if they exist. The command \cs{useProbDBs} is an alias for
+\cs{useTheseDBs}.
+
+The placement of \cs{useTheseDBs} is anywhere prior to the insertion of the
+problems into the document, usually in the preamble.
+
+Refer to the demonstration file \texttt{mc-db.tex} for an example.
+
+\newtopic\noindent
+Now, I simply must get back to my retirement. \dps
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/ran_toks/docs/rantoks_man.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/ran_toks/examples/mc-db.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ran_toks/examples/mc-db.tex	2019-12-30 22:17:03 UTC (rev 53270)
+++ trunk/Master/texmf-dist/doc/latex/ran_toks/examples/mc-db.tex	2019-12-30 22:17:36 UTC (rev 53271)
@@ -34,7 +34,7 @@
 Solve each without error. Passing is 100\%.
 
 \medskip\noindent
-This part demonstrates how to not only randomly pull problems (two from each of the DB files) at random, but
+This part demonstrates how to not only randomly pull problems (two from each of the DB files), but
 to randomize the order they are listed in the exam.
 \end{instructions}
 

Modified: trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx	2019-12-30 22:17:03 UTC (rev 53270)
+++ trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.dtx	2019-12-30 22:17:36 UTC (rev 53271)
@@ -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 at uakron.edu                                 %%
+%% ran_toks package,                                    %%
+%% Copyright (C) 1999-2019  D. P. Story                 %%
+%%   dpstory at uakron.edu, dpstory at 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 at 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 at useLastAsSeed}
 \@onlypreamble\useLastAsSeed
 \def\rt at 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 at 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 at processline{%
-        \immediate\write\verbatim at out
-        {\the\verbatim at line}}%
-    \verbatim at start}
+  \let\do\@makeother\dospecials
+  \catcode`\^^M\active \catcode`\^^I=12
+  \def\verbatim at processline{%
+    \immediate\write\verbatim at out
+    {\the\verbatim at line}}%
+  \verbatim at start}
 \def\endverbatimwrite{\@esphack}
 \def\rt at IWVO{\immediate\write\verbatim at out}
 %    \end{macrocode}
@@ -227,15 +247,15 @@
 %    \begin{macrocode}
 \def\InitSeedValue{\the\randomi}
 \def\rt at writeSeedData{\ifsaveseed
-    \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
-    \immediate\openout \saveseedinfo \jobname_rt.sav
-    \let\verbatim at out\saveseedinfo
-    \def\rt at msgi{initializing seed value}%
-    \def\rt at msgii{last random number used}%
-    \uccode`c=`\%\uppercase{%
-    \rt at IWVO{\InitSeedValue\space c \rt at msgi}%
-    \rt at IWVO{\the\randomi\space c \rt at msgii}}\immediate
-    \closeout\saveseedinfo\fi}
+  \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
+  \immediate\openout \saveseedinfo \jobname_rt.sav
+  \let\verbatim at out\saveseedinfo
+  \def\rt at msgi{initializing seed value}%
+  \def\rt at msgii{last random number used}%
+  \uccode`c=`\%\uppercase{%
+  \rt at IWVO{\InitSeedValue\space c \rt at msgi}%
+  \rt at IWVO{\the\randomi\space c \rt at 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 at RandomizeList}.
 %    \begin{macrocode}
 \def\rt at populateList#1{\rt at listIn={}\rt at nCnt\z@
-    \@whilenum\rt at nCnt<#1\do{\advance\rt at nCnt\@ne
-        \edef\rt at listInHold{\the\rt at listIn\noexpand\\{\the\rt at nCnt}}%
-        \rt at listIn=\expandafter{\rt at listInHold}}}
+  \@whilenum\rt at nCnt<#1\do{\advance\rt at nCnt\@ne
+    \edef\rt at listInHold{\the\rt at listIn\noexpand\\{\the\rt at nCnt}}%
+    \rt at listIn=\expandafter{\rt at listInHold}}}
 %    \end{macrocode}
 % \DescribeMacro{\rt at RandomizeList}\hskip-\marginparsep\thinspace|{|\ameta{n}|}|
 % is the command that gets the process of randomizing
@@ -259,17 +279,17 @@
 % calls \cs{rt at randomizeList} to actually do the work.
 %    \begin{macrocode}
 \def\rt at RandomizeList#1{\global
-    \rt at listIn={}\global\rt at newListIn={}\global\rt at listOut={}%
-    \rt at nMax=#1\relax\rt at populateList{\the\rt at nMax}%
-    \ifwerandomize
-        \expandafter\rt at randomizeList\else
-        \global\rt at listOut=\expandafter{\the\rt at listIn}\fi
+  \rt at listIn={}\global\rt at newListIn={}\global\rt at listOut={}%
+  \rt at nMax=#1\relax\rt at populateList{\the\rt at nMax}%
+  \ifwerandomize
+    \expandafter\rt at randomizeList\else
+    \global\rt at listOut=\expandafter{\the\rt at listIn}\fi
 %    \end{macrocode}
 %    Save the list out as \cs{rt at 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 at nameedef{\rt at BaseName-List}{\the\rt at listOut}}
+  \global\rt at nameedef{\rt at BaseName-List}{\the\rt at listOut}}
 %    \end{macrocode}
 % \DescribeMacro{\rt at randomizeList} randomizes the list of consecutive integers, and leaves the
 % results,
@@ -280,24 +300,24 @@
 % \cs{rt at randomizeList} is a loop, looping between itself and \cs{rt at loopTest}.
 %    \begin{macrocode}
 \def\rt at randomizeList{\let\\=\rt at processi
-    \setrannum{\rt at getRanNum}{1}{\the\rt at nMax}%
+  \setrannum{\rt at getRanNum}{1}{\the\rt at nMax}%
 \ifrtdebug\typeout{\string\rt at getRanNum=\the\rt at getRanNum}\fi
-    \rt at nCnt\z@
+  \rt at nCnt\z@
 \ifrtdebug\typeout{LISTING: \the\rt at listIn}\fi
-    \the\rt at listIn
-    \rt at loopTest
+  \the\rt at listIn
+  \rt at loopTest
 }
 \def\rt at loopTest{\advance\rt at nMax\m at ne
-    \ifnum\rt at nMax>\z@
-        \def\rt at next{%
-            \rt at listIn=\expandafter{\the\rt at newListIn}%
-            \rt at newListIn={}\rt at randomizeList}%
-    \else
-        \let\rt at next\relax
-        \global\rt at listOut=\expandafter{\the\rt at listOut}%
-\ifrtdebug\typeout{Final Result: \string\rt at listOut=\the\rt at listOut}\fi
-    \fi
-    \rt at next
+  \ifnum\rt at nMax>\z@
+    \def\rt at next{%
+      \rt at listIn=\expandafter{\the\rt at newListIn}%
+      \rt at newListIn={}\rt at randomizeList}%
+  \else
+    \let\rt at next\relax
+    \global\rt at listOut=\expandafter{\the\rt at listOut}%
+    \ifrtdebug
+      \typeout{Final Result: \string\rt at listOut=\the\rt at listOut}\fi
+  \fi\rt at next
 }
 %    \end{macrocode}
 % In \cs{rt at randomizeList}, we \verb~\let\\=\rt at processi~ before dumping the
@@ -305,16 +325,16 @@
 % is the random integer between 1 and \cs{rt at nMax}.
 %    \begin{macrocode}
 \def\rt at processi#1{\advance\rt at nCnt\@ne
-    \ifnum\rt at nCnt=\rt at getRanNum
-        \edef\rt at listOutHold{\the\rt at listOut}%
-        \global\rt at listOut=\expandafter{\rt at listOutHold\\{#1}}%
-\ifrtdebug\typeout{Found it: \string\\{#1}}%
-\typeout{New \string\rt at listOut: \the\rt at listOut}\fi
-    \else
-        \edef\rt at listInHold{\the\rt at newListIn}%
-        \rt at newListIn=\expandafter{\rt at listInHold\\{#1}}%
-\ifrtdebug\typeout{\string\rt at newListIn: \the\rt at newListIn}\fi
-    \fi
+  \ifnum\rt at nCnt=\rt at getRanNum
+    \edef\rt at listOutHold{\the\rt at listOut}%
+    \global\rt at listOut=\expandafter{\rt at listOutHold\\{#1}}%
+    \ifrtdebug\typeout{Found it: \string\\{#1}}%
+    \typeout{New \string\rt at listOut: \the\rt at listOut}\fi
+  \else
+    \edef\rt at listInHold{\the\rt at newListIn}%
+      \rt at newListIn=\expandafter{\rt at listInHold\\{#1}}%
+    \ifrtdebug\typeout{\string\rt at newListIn: \the\rt at 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 at ne\divide\count\z@ #2\relax
-    \multiply\count\z@ #2\relax
-    \advance\count\tw at -\count\z@
-    \edef\rt at mod{\the\count\tw@}}
+  \advance\count\z@\m at ne\divide\count\z@ #2\relax
+  \multiply\count\z@ #2\relax
+  \advance\count\tw at -\count\z@
+  \edef\rt at mod{\the\count\tw@}}
 %    \end{macrocode}
 %    Warning messages, these are \DescribeMacro{\rt at badIndex}\cs{rt at badIndex} and
 %    \cs{rt at badTokName}\DescribeMacro{\rt at badTokName}.
 %    \begin{macrocode}
 \def\rt at 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 at mod}, obtained from modular
-            arithmetic.\MessageBreak
+        arithmetic.\MessageBreak
         You might want to fix this}
 }
 \def\rt at 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 at 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 at nToks
+  \useRTName{#1}%
+  \r at nToks
 }
 \long\def\r at nToks#1{\rt at nMax\z@\r at ndToks#1\rt at NIL}
 \def\rt at NIL{@nil}
@@ -394,8 +414,8 @@
 % \cs{r at nVToks}.
 %    \begin{macrocode}
 \newcommand{\eRTVToks}{\global
-    \rt at nameedef{\rt at BaseName Cnt}{\the\rt at nCnt}%
-    \expandafter\r at nVToks\expandafter{\rt at BaseName}}
+  \rt at nameedef{\rt at BaseName Cnt}{\the\rt at nCnt}%
+  \expandafter\r at nVToks\expandafter{\rt at 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 at nCnt\@ne
-    \immediate\openout\rt at Verb@write
-        \jobname_\rt at BaseName\the\rt at nCnt.cut
-    \let\verbatim at out\rt at Verb@write
-    \verbatimwrite
+  \immediate\openout\rt at Verb@write
+    \jobname_\rt at BaseName\the\rt at nCnt.cut
+  \let\verbatim at out\rt at Verb@write
+  \rt at IWVO{\string\RTVWHook}%
+  \verbatimwrite
 }{%
-    \endverbatimwrite
-    \immediate\write\rt at Verb@write{\string\reVerbEnd}%
-    \immediate\closeout\rt at Verb@write
+  \endverbatimwrite
+  \immediate\write\rt at Verb@write{\string\reVerbEnd}%
+  \immediate\closeout\rt at Verb@write
 }
 %    \end{macrocode}
 %    \end{environment}
@@ -420,15 +449,15 @@
 % environment.
 %    \begin{macrocode}
 \def\r at nVToks#1{\begingroup
-    \gdef\rt at BaseName{#1}%
-    \expandafter\rt at nMax\@nameuse{#1Cnt}%
-    \rt at listIn={}\rt at nCnt=0\relax\let\rt at listInHold\@empty
-    \@whilenum\rt at nCnt<\rt at nMax\do{\advance\rt at nCnt\@ne
-        \edef\rt at listInHold{%
-            \the\rt at listIn{\noexpand\rt at inputVerb{#1\the\rt at nCnt}}}%
-        \rt at listIn=\expandafter{\rt at listInHold}}\ifrtdebug
-            \typeout{\string\r at nVToks: \the\rt at listIn}\fi
-    \expandafter\r at nToks\expandafter{\the\rt at listIn}}
+  \gdef\rt at BaseName{#1}%
+  \expandafter\rt at nMax\@nameuse{#1Cnt}%
+  \rt at listIn={}\rt at nCnt=0\relax\let\rt at listInHold\@empty
+  \@whilenum\rt at nCnt<\rt at nMax\do{\advance\rt at nCnt\@ne
+    \edef\rt at listInHold{%
+      \the\rt at listIn{\noexpand\rt at inputVerb{#1\the\rt at nCnt}}}%
+    \rt at listIn=\expandafter{\rt at listInHold}}\ifrtdebug
+  \typeout{\string\r at nVToks: \the\rt at listIn}\fi
+  \expandafter\r at nToks\expandafter{\the\rt at listIn}}
 \def\rt at inputVerb#1{\input{\jobname_#1.cut}}
 %    \end{macrocode}
 % \DescribeMacro{\r at 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 at rgi\rt at PAR\def\rt at next{\r at ndToks}\else
-        \advance\rt at nMax\@ne
-        \global\@namedef{rtTok\the\rt at nMax\rt at BaseName}{#1}%
-        \def\rt at next{\@ifnextchar\rt at NIL
-            {\rt at endToks\@gobble}{\r at ndToks}}\fi\rt at next}
+  \ifx\rt at rgi\rt at PAR\def\rt at next{\r at ndToks}\else
+    \advance\rt at nMax\@ne
+    \global\@namedef{rtTok\the\rt at nMax\rt at BaseName}{#1}%
+    \def\rt at next{\@ifnextchar\rt at NIL
+      {\rt at endToks\@gobble}{\r at ndToks}}\fi\rt at next}
 %    \end{macrocode}
 %    \hskip-\marginparsep|{|\ameta{n}|}| The \DescribeMacro{\rt at performRanDefns}\cs{rt at performRanDefns} performs code that
 %    is repeated in several other macros: \cs{rt at 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 at RandomizeList{#1}\rt at nCnt\z@
+  \rt at RandomizeList{#1}\rt at nCnt\z@
 %    \end{macrocode}
 % Now we randomize the definitions. We \verb!\let\\=\rt at ssign!, then
 % let loose the tokens!
 %    \begin{macrocode}
-    \let\\\rt at ssign\the\rt at listOut}
+  \let\\\rt at ssign\the\rt at listOut}
 %    \end{macrocode}
 % The final destination for \DescribeMacro{\rt at endToks}\cs{r at ndToks}.
 %    \begin{macrocode}
@@ -470,8 +499,8 @@
 %    \end{macrocode}
 % Save the number of tokens counted
 %    \begin{macrocode}
-    \rt at nameedef{nMax4\rt at BaseName}{\the\rt at nMax}%
-    \rt at performRanDefns{\the\rt at nMax}\endgroup}
+  \rt at nameedef{nMax4\rt at BaseName}{\the\rt at nMax}%
+  \rt at performRanDefns{\the\rt at nMax}\endgroup}
 %    \end{macrocode}
 %    \begin{macro}{\reorderRanToks}\hskip-\marginparsep\,\texttt{\darg{\ameta{name}}}
 %    The \cs{reorderRanToks} command reorders (or re-indexes)
@@ -478,15 +507,15 @@
 %    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 at badTokName{#1}\else
+    \rt at badTokName{#1}\else
 %    \end{macrocode}
 %    Good to go. We reorder this list.
 %    \begin{macrocode}
-        \rt at performRanDefns{\@nameuse{nMax4#1}}\fi
+    \rt at 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 at 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 at nameedef{nMax4#2}{\@nameuse{nMax4#1}}%
-            \rt at nCnt=\csname nMax4#2\endcsname\relax
-            \@whilenum\rt at nCnt>\z@\do{\global
-                \rt at nameedef{rtTok\the\rt at nCnt#2}%
-                    {\noexpand\@nameuse{rtTok\the\rt at nCnt#1}}%
-                \advance\rt at nCnt\m at ne}%
-            \rt at performRanDefns{\@nameuse{nMax4#2}}\else
+      \useRTName{#2}\global
+      \rt at nameedef{nMax4#2}{\@nameuse{nMax4#1}}%
+      \rt at nCnt=\csname nMax4#2\endcsname\relax
+      \@whilenum\rt at nCnt>\z@\do{\global
+        \rt at nameedef{rtTok\the\rt at nCnt#2}%
+          {\noexpand\@nameuse{rtTok\the\rt at nCnt#1}}%
+        \advance\rt at nCnt\m at ne}%
+      \rt at performRanDefns{\@nameuse{nMax4#2}}\else
 %    \end{macrocode}
 %    Destination list is defined already, warn the user.
 %    \begin{macrocode}
-        \rt at warnTokName{#2}\fi
-    \fi
+      \rt at warnTokName{#2}\fi
+  \fi
 \endgroup}
 %    \end{macrocode}
 %    \end{macro}
@@ -531,8 +560,8 @@
 % contents of \verb!\the\rt at listOut!.
 %    \begin{macrocode}
 \def\rt at ssign#1{\advance\rt at nCnt\@ne\global
-    \rt at nameedef{rtRanTok\the\rt at nCnt\rt at BaseName}{\noexpand
-        \@nameuse{rtTok#1\rt at BaseName}}}
+  \rt at nameedef{rtRanTok\the\rt at nCnt\rt at BaseName}{\noexpand
+  \@nameuse{rtTok#1\rt at BaseName}}}
 %    \end{macrocode}
 % \subsection{Additional user access commands}
 % \DescribeMacro{\nToksFor}\hskip-\marginparsep\texttt{\darg{\ameta{name}}}
@@ -539,9 +568,9 @@
 % 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 at badTokName{#1}\else
-        \@nameuse{nMax4#1}\fi}
+  \ifx\csname nMax4#1\endcsname\relax
+    \textbf{??}\rt at 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
@@ -548,9 +577,9 @@
 % given in the argument of \cs{ranToks}.
 %    \begin{macrocode}
 \newcommand{\rtTokByNum}[2][\rt at BaseName]{\expandafter
-    \ifx\csname nMax4#1\endcsname\relax
-        \textbf{??}\rt at badTokName{#1}\else
-        \@nameuse{rtTok#2#1}\expandafter\ignorespaces\fi}
+  \ifx\csname nMax4#1\endcsname\relax
+    \textbf{??}\rt at 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
@@ -557,8 +586,8 @@
 %   randomized tokens through \cs{useRanTok}. The argument \ameta{num} is an integer 1 through max.
 %    \begin{macrocode}
 \newcommand{\useRanTok}[2][\rt at BaseName]{\bgroup
-    \expandafter\ifx\csname nMax4#1\endcsname\relax
-        \rt at badTokName{#1}\else
+  \expandafter\ifx\csname nMax4#1\endcsname\relax
+    \rt at badTokName{#1}\else
     \ifnum#2>\nToksFor{#1}\rt at modarith{#2}{\nToksFor{#1}}%
 %    \end{macrocode}
 %    If index (\texttt{\#2}) is greater than array length, use modular arithmetic to resolve
@@ -565,8 +594,8 @@
 %    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 at badIndex{#2}{#1}\@nameuse{rtRanTok\rt at mod#1}\else
-            \@nameuse{rtRanTok#2#1}\fi\fi\egroup}
+      \rt at badIndex{#2}{#1}\@nameuse{rtRanTok\rt at 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 at prior{#1}%
-    \displ at yListRandomly}
+  \displ at yListRandomly}
 \newcommand{\displ at yListRandomly}[2][]{\rt at nCnt\z@
-    \expandafter\ifx\csname nMax4#2\endcsname\relax
-        \rt at rgi\space\textbf{??}\rt at badTokName{#2}#1%
-    \else
+  \expandafter\ifx\csname nMax4#2\endcsname\relax
+    \rt at rgi\space\textbf{??}\rt at 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,14 +619,14 @@
 %   These four macro are defined locally and not available outside the command
 %   \cs{displayListRandomly}.
 %    \begin{macrocode}
-        \def\rt at post{#1}\useRTName{#2}\let\i\rt at nCnt
-        \def\first{1}\edef\last{\@nameuse{nMax4#2}}%
-        \@tempcnta\last \advance\@tempcnta\m at ne
-        \edef\lessone{\the\@tempcnta}%
-        \@whilenum\rt at nCnt<\last\advance\rt at nCnt\@ne
-        \do{\rt at prior\useRanTok{\the\rt at nCnt}\rt at post}%
-    \fi\egroup
-}
+    \def\rt at post{#1}\useRTName{#2}\let\i\rt at nCnt
+    \def\first{1}\edef\last{\@nameuse{nMax4#2}}%
+    \@tempcnta\last \advance\@tempcnta\m at ne
+    \edef\lessone{\the\@tempcnta}%
+    \@whilenum\rt at nCnt<\last\advance\rt at nCnt\@ne
+    \do{\rt at prior\useRanTok{\the\rt at nCnt}\rt at 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}.
@@ -604,8 +633,8 @@
 %    \begin{macrocode}
 \def\rt at gettonil#1\@nil{\def\to at nilarg{#1}}
 \def\rt at ifspc{\ifx\@let at token\@sptoken
-    \let\rt at next\rt at xifspc\else
-    \let\rt at next\rt at gettonil\fi\rt at next}
+  \let\rt at next\rt at xifspc\else
+  \let\rt at next\rt at gettonil\fi\rt at next}
 \begingroup
 \def\:{\rt at xifspc}
 \expandafter\gdef\: {\futurelet\@let at token\rt at 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 at parse{#1}
-    \PackageWarning{ran_toks}
-    {The file \filename at area\filename at base.\ifx\filename at ext\relax
-        tex\else\filename at ext\fi\space cannot be found}}
+  \PackageWarning{ran_toks}
+  {The file \filename at area\filename at base.\ifx\filename at ext\relax
+      tex\else\filename at ext\fi\space cannot be found}}
 \def\useTheseDBs#1{\def\rt at dblist{#1}\ifx\rt at dblist\@empty\else
-    \let\rt at DB@List\@empty
-    \edef\temp at expand{\noexpand\@for\noexpand\@@tmp:=\rt at dblist}%
-    \temp at expand\do{\ifx\@@tmp\@empty\else
-            \expandafter\rt at strpspcs\@@tmp\@nil\edef\@@tmp{\to at nilarg}%
-            \edef\rt at nextDB{\noexpand
-                \InputIfFileExists{\@@tmp}{}{\noexpand
-                \ProbDBWarningMsg{\@@tmp}}}%
-            \toks\tw@=\expandafter{\rt at DB@List}%
-            \toks@=\expandafter{\rt at nextDB}%
-            \edef\rt at DB@List{\the\toks\tw@\space\the\toks@}\fi
-    }\expandafter\rt at DB@List\fi}
+  \let\rt at DB@List\@empty
+  \edef\temp at expand{\noexpand\@for\noexpand\@@tmp:=\rt at dblist}%
+  \temp at expand\do{\ifx\@@tmp\@empty\else
+    \expandafter\rt at strpspcs\@@tmp\@nil\edef\@@tmp{\to at nilarg}%
+    \edef\rt at nextDB{\noexpand
+      \InputIfFileExists{\@@tmp}{}{\noexpand
+      \ProbDBWarningMsg{\@@tmp}}}%
+    \toks\tw@=\expandafter{\rt at DB@List}%
+    \toks@=\expandafter{\rt at nextDB}%
+    \edef\rt at DB@List{\the\toks\tw@\space\the\toks@}\fi
+  }\expandafter\rt at DB@List\fi}
 \let\useProbDBs\useTheseDBs
 %    \end{macrocode}
 %    \end{macro}

Added: trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/ran_toks/ran_toks.ins	2019-12-30 22:17:36 UTC (rev 53271)
@@ -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

Added: trunk/Master/texmf-dist/tex/latex/ran_toks/ran-toks.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ran_toks/ran-toks.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/ran_toks/ran-toks.sty	2019-12-30 22:17:36 UTC (rev 53271)
@@ -0,0 +1,28 @@
+%%
+%% This is file `ran-toks.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% ran_toks.dtx  (with options: `copyright,altpkgname')
+%% 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ran_toks package,                                    %%
+%% Copyright (C) 1999-2019  D. P. Story                 %%
+%%   dpstory at uakron.edu, dpstory at acrotex.net            %%
+%%                                                      %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License        %%
+%% Distributed from CTAN archives in directory          %%
+%% macros/latex/base/lppl.txt; either version 1 of the  %%
+%% License, or (at your option) any later version.      %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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]
+\endinput
+%%
+%% End of file `ran-toks.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/ran_toks/ran-toks.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/ran_toks/ran_toks.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ran_toks/ran_toks.sty	2019-12-30 22:17:03 UTC (rev 53270)
+++ trunk/Master/texmf-dist/tex/latex/ran_toks/ran_toks.sty	2019-12-30 22:17:36 UTC (rev 53271)
@@ -7,9 +7,9 @@
 %% ran_toks.dtx  (with options: `copyright,package')
 %% 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Web package,                                         %%
-%% Copyright (C) 1999-2017  D. P. Story                 %%
-%%   dpstory at uakron.edu                                 %%
+%% ran_toks package,                                    %%
+%% Copyright (C) 1999-2019  D. P. Story                 %%
+%%   dpstory at uakron.edu, dpstory at acrotex.net            %%
 %%                                                      %%
 %% This program can redistributed and/or modified under %%
 %% the terms of the LaTeX Project Public License        %%
@@ -19,11 +19,11 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \NeedsTeXFormat{LaTeX2e}[1997/12/01]
 \ProvidesPackage{ran_toks}
- [2017/05/04 v1.1 Randomizing tokens (dps)]
+ [2019/12/28 v1.2 Randomizing tokens (dps)]
 \RequirePackage{verbatim}
 \@ifundefined{nextrandom}{\input{random.tex}}{}
 \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
@@ -61,120 +61,120 @@
 \def\useLastAsSeed{\rt at useLastAsSeed}
 \@onlypreamble\useLastAsSeed
 \def\rt at 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
         \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 at randomizeChoices}{%
     \let\inputRandomSeed\useLastAsSeed
     \let\useRandomSeed\useThisSeed}{}
 \def\verbatimwrite{\@bsphack
-    \let\do\@makeother\dospecials
-    \catcode`\^^M\active \catcode`\^^I=12
-    \def\verbatim at processline{%
-        \immediate\write\verbatim at out
-        {\the\verbatim at line}}%
-    \verbatim at start}
+  \let\do\@makeother\dospecials
+  \catcode`\^^M\active \catcode`\^^I=12
+  \def\verbatim at processline{%
+    \immediate\write\verbatim at out
+    {\the\verbatim at line}}%
+  \verbatim at start}
 \def\endverbatimwrite{\@esphack}
 \def\rt at IWVO{\immediate\write\verbatim at out}
 \def\InitSeedValue{\the\randomi}
 \def\rt at writeSeedData{\ifsaveseed
-    \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
-    \immediate\openout \saveseedinfo \jobname_rt.sav
-    \let\verbatim at out\saveseedinfo
-    \def\rt at msgi{initializing seed value}%
-    \def\rt at msgii{last random number used}%
-    \uccode`c=`\%\uppercase{%
-    \rt at IWVO{\InitSeedValue\space c \rt at msgi}%
-    \rt at IWVO{\the\randomi\space c \rt at msgii}}\immediate
-    \closeout\saveseedinfo\fi}
+  \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
+  \immediate\openout \saveseedinfo \jobname_rt.sav
+  \let\verbatim at out\saveseedinfo
+  \def\rt at msgi{initializing seed value}%
+  \def\rt at msgii{last random number used}%
+  \uccode`c=`\%\uppercase{%
+  \rt at IWVO{\InitSeedValue\space c \rt at msgi}%
+  \rt at IWVO{\the\randomi\space c \rt at msgii}}\immediate
+  \closeout\saveseedinfo\fi}
 \AtEndDocument{\rt at writeSeedData}%
 \def\rt at populateList#1{\rt at listIn={}\rt at nCnt\z@
-    \@whilenum\rt at nCnt<#1\do{\advance\rt at nCnt\@ne
-        \edef\rt at listInHold{\the\rt at listIn\noexpand\\{\the\rt at nCnt}}%
-        \rt at listIn=\expandafter{\rt at listInHold}}}
+  \@whilenum\rt at nCnt<#1\do{\advance\rt at nCnt\@ne
+    \edef\rt at listInHold{\the\rt at listIn\noexpand\\{\the\rt at nCnt}}%
+    \rt at listIn=\expandafter{\rt at listInHold}}}
 \def\rt at RandomizeList#1{\global
-    \rt at listIn={}\global\rt at newListIn={}\global\rt at listOut={}%
-    \rt at nMax=#1\relax\rt at populateList{\the\rt at nMax}%
-    \ifwerandomize
-        \expandafter\rt at randomizeList\else
-        \global\rt at listOut=\expandafter{\the\rt at listIn}\fi
-    \global\rt at nameedef{\rt at BaseName-List}{\the\rt at listOut}}
+  \rt at listIn={}\global\rt at newListIn={}\global\rt at listOut={}%
+  \rt at nMax=#1\relax\rt at populateList{\the\rt at nMax}%
+  \ifwerandomize
+    \expandafter\rt at randomizeList\else
+    \global\rt at listOut=\expandafter{\the\rt at listIn}\fi
+  \global\rt at nameedef{\rt at BaseName-List}{\the\rt at listOut}}
 \def\rt at randomizeList{\let\\=\rt at processi
-    \setrannum{\rt at getRanNum}{1}{\the\rt at nMax}%
+  \setrannum{\rt at getRanNum}{1}{\the\rt at nMax}%
 \ifrtdebug\typeout{\string\rt at getRanNum=\the\rt at getRanNum}\fi
-    \rt at nCnt\z@
+  \rt at nCnt\z@
 \ifrtdebug\typeout{LISTING: \the\rt at listIn}\fi
-    \the\rt at listIn
-    \rt at loopTest
+  \the\rt at listIn
+  \rt at loopTest
 }
 \def\rt at loopTest{\advance\rt at nMax\m at ne
-    \ifnum\rt at nMax>\z@
-        \def\rt at next{%
-            \rt at listIn=\expandafter{\the\rt at newListIn}%
-            \rt at newListIn={}\rt at randomizeList}%
-    \else
-        \let\rt at next\relax
-        \global\rt at listOut=\expandafter{\the\rt at listOut}%
-\ifrtdebug\typeout{Final Result: \string\rt at listOut=\the\rt at listOut}\fi
-    \fi
-    \rt at next
+  \ifnum\rt at nMax>\z@
+    \def\rt at next{%
+      \rt at listIn=\expandafter{\the\rt at newListIn}%
+      \rt at newListIn={}\rt at randomizeList}%
+  \else
+    \let\rt at next\relax
+    \global\rt at listOut=\expandafter{\the\rt at listOut}%
+    \ifrtdebug
+      \typeout{Final Result: \string\rt at listOut=\the\rt at listOut}\fi
+  \fi\rt at next
 }
 \def\rt at processi#1{\advance\rt at nCnt\@ne
-    \ifnum\rt at nCnt=\rt at getRanNum
-        \edef\rt at listOutHold{\the\rt at listOut}%
-        \global\rt at listOut=\expandafter{\rt at listOutHold\\{#1}}%
-\ifrtdebug\typeout{Found it: \string\\{#1}}%
-\typeout{New \string\rt at listOut: \the\rt at listOut}\fi
-    \else
-        \edef\rt at listInHold{\the\rt at newListIn}%
-        \rt at newListIn=\expandafter{\rt at listInHold\\{#1}}%
-\ifrtdebug\typeout{\string\rt at newListIn: \the\rt at newListIn}\fi
-    \fi
+  \ifnum\rt at nCnt=\rt at getRanNum
+    \edef\rt at listOutHold{\the\rt at listOut}%
+    \global\rt at listOut=\expandafter{\rt at listOutHold\\{#1}}%
+    \ifrtdebug\typeout{Found it: \string\\{#1}}%
+    \typeout{New \string\rt at listOut: \the\rt at listOut}\fi
+  \else
+    \edef\rt at listInHold{\the\rt at newListIn}%
+      \rt at newListIn=\expandafter{\rt at listInHold\\{#1}}%
+    \ifrtdebug\typeout{\string\rt at newListIn: \the\rt at newListIn}\fi
+  \fi
 }
 \def\rt at modarith#1#2{\count\z@=#1\relax\count\tw@=#1\relax
-    \advance\count\z@\m at ne\divide\count\z@ #2\relax
-    \multiply\count\z@ #2\relax
-    \advance\count\tw at -\count\z@
-    \edef\rt at mod{\the\count\tw@}}
+  \advance\count\z@\m at ne\divide\count\z@ #2\relax
+  \multiply\count\z@ #2\relax
+  \advance\count\tw at -\count\z@
+  \edef\rt at mod{\the\count\tw@}}
 \def\rt at 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 at mod}, obtained from modular
-            arithmetic.\MessageBreak
+        arithmetic.\MessageBreak
         You might want to fix this}
 }
 \def\rt at 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 at 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}%
 }
 \def\ranToks#1{\begingroup
-    \useRTName{#1}%
-    \r at nToks
+  \useRTName{#1}%
+  \r at nToks
 }
 \long\def\r at nToks#1{\rt at nMax\z@\r at ndToks#1\rt at NIL}
 \def\rt at NIL{@nil}
@@ -182,99 +182,103 @@
 \let\rt at BaseName\@empty
 \newcommand{\bRTVToks}[1]{\rt at nCnt\z@\useRTName{#1}}
 \newcommand{\eRTVToks}{\global
-    \rt at nameedef{\rt at BaseName Cnt}{\the\rt at nCnt}%
-    \expandafter\r at nVToks\expandafter{\rt at BaseName}}
+  \rt at nameedef{\rt at BaseName Cnt}{\the\rt at nCnt}%
+  \expandafter\r at nVToks\expandafter{\rt at BaseName}}
 \def\reVerbEnd{\ifhmode\unskip\fi}
+\def\rtVWHook#1{\def\@rgi{#1}\ifx\@rgi\@empty
+  \let\RTVWHook\relax\else\def\RTVWHook{#1}\fi}
+\rtVWHook{}
 \newenvironment{rtVW}{\global\advance\rt at nCnt\@ne
-    \immediate\openout\rt at Verb@write
-        \jobname_\rt at BaseName\the\rt at nCnt.cut
-    \let\verbatim at out\rt at Verb@write
-    \verbatimwrite
+  \immediate\openout\rt at Verb@write
+    \jobname_\rt at BaseName\the\rt at nCnt.cut
+  \let\verbatim at out\rt at Verb@write
+  \rt at IWVO{\string\RTVWHook}%
+  \verbatimwrite
 }{%
-    \endverbatimwrite
-    \immediate\write\rt at Verb@write{\string\reVerbEnd}%
-    \immediate\closeout\rt at Verb@write
+  \endverbatimwrite
+  \immediate\write\rt at Verb@write{\string\reVerbEnd}%
+  \immediate\closeout\rt at Verb@write
 }
 \def\r at nVToks#1{\begingroup
-    \gdef\rt at BaseName{#1}%
-    \expandafter\rt at nMax\@nameuse{#1Cnt}%
-    \rt at listIn={}\rt at nCnt=0\relax\let\rt at listInHold\@empty
-    \@whilenum\rt at nCnt<\rt at nMax\do{\advance\rt at nCnt\@ne
-        \edef\rt at listInHold{%
-            \the\rt at listIn{\noexpand\rt at inputVerb{#1\the\rt at nCnt}}}%
-        \rt at listIn=\expandafter{\rt at listInHold}}\ifrtdebug
-            \typeout{\string\r at nVToks: \the\rt at listIn}\fi
-    \expandafter\r at nToks\expandafter{\the\rt at listIn}}
+  \gdef\rt at BaseName{#1}%
+  \expandafter\rt at nMax\@nameuse{#1Cnt}%
+  \rt at listIn={}\rt at nCnt=0\relax\let\rt at listInHold\@empty
+  \@whilenum\rt at nCnt<\rt at nMax\do{\advance\rt at nCnt\@ne
+    \edef\rt at listInHold{%
+      \the\rt at listIn{\noexpand\rt at inputVerb{#1\the\rt at nCnt}}}%
+    \rt at listIn=\expandafter{\rt at listInHold}}\ifrtdebug
+  \typeout{\string\r at nVToks: \the\rt at listIn}\fi
+  \expandafter\r at nToks\expandafter{\the\rt at listIn}}
 \def\rt at inputVerb#1{\input{\jobname_#1.cut}}
 \def\rt at PAR{\par}
 \long\def\r at ndToks#1{\def\rt at rgi{#1}%
-    \ifx\rt at rgi\rt at PAR\def\rt at next{\r at ndToks}\else
-        \advance\rt at nMax\@ne
-        \global\@namedef{rtTok\the\rt at nMax\rt at BaseName}{#1}%
-        \def\rt at next{\@ifnextchar\rt at NIL
-            {\rt at endToks\@gobble}{\r at ndToks}}\fi\rt at next}
+  \ifx\rt at rgi\rt at PAR\def\rt at next{\r at ndToks}\else
+    \advance\rt at nMax\@ne
+    \global\@namedef{rtTok\the\rt at nMax\rt at BaseName}{#1}%
+    \def\rt at next{\@ifnextchar\rt at NIL
+      {\rt at endToks\@gobble}{\r at ndToks}}\fi\rt at next}
 \def\rt at performRanDefns#1{%
-    \rt at RandomizeList{#1}\rt at nCnt\z@
-    \let\\\rt at ssign\the\rt at listOut}
+  \rt at RandomizeList{#1}\rt at nCnt\z@
+  \let\\\rt at ssign\the\rt at listOut}
 \def\rt at endToks{\global
-    \rt at nameedef{nMax4\rt at BaseName}{\the\rt at nMax}%
-    \rt at performRanDefns{\the\rt at nMax}\endgroup}
+  \rt at nameedef{nMax4\rt at BaseName}{\the\rt at nMax}%
+  \rt at performRanDefns{\the\rt at nMax}\endgroup}
 \def\reorderRanToks#1{\begingroup\useRTName{#1}\expandafter
-    \ifx\csname nMax4#1\endcsname\relax
-        \rt at badTokName{#1}\else
-        \rt at performRanDefns{\@nameuse{nMax4#1}}\fi
+  \ifx\csname nMax4#1\endcsname\relax
+    \rt at badTokName{#1}\else
+    \rt at performRanDefns{\@nameuse{nMax4#1}}\fi
 \endgroup}
 \newcommand\copyRanToks[2]{\begingroup\expandafter
-    \ifx\csname nMax4#1\endcsname\relax
+  \ifx\csname nMax4#1\endcsname\relax
         \rt at badTokName{#1}%
-    \else\expandafter
-        \ifx\csname nMax4#2\endcsname\relax
-            \useRTName{#2}\global
-            \rt at nameedef{nMax4#2}{\@nameuse{nMax4#1}}%
-            \rt at nCnt=\csname nMax4#2\endcsname\relax
-            \@whilenum\rt at nCnt>\z@\do{\global
-                \rt at nameedef{rtTok\the\rt at nCnt#2}%
-                    {\noexpand\@nameuse{rtTok\the\rt at nCnt#1}}%
-                \advance\rt at nCnt\m at ne}%
-            \rt at performRanDefns{\@nameuse{nMax4#2}}\else
-        \rt at warnTokName{#2}\fi
-    \fi
+  \else\expandafter
+    \ifx\csname nMax4#2\endcsname\relax
+      \useRTName{#2}\global
+      \rt at nameedef{nMax4#2}{\@nameuse{nMax4#1}}%
+      \rt at nCnt=\csname nMax4#2\endcsname\relax
+      \@whilenum\rt at nCnt>\z@\do{\global
+        \rt at nameedef{rtTok\the\rt at nCnt#2}%
+          {\noexpand\@nameuse{rtTok\the\rt at nCnt#1}}%
+        \advance\rt at nCnt\m at ne}%
+      \rt at performRanDefns{\@nameuse{nMax4#2}}\else
+      \rt at warnTokName{#2}\fi
+  \fi
 \endgroup}
 \def\rt at ssign#1{\advance\rt at nCnt\@ne\global
-    \rt at nameedef{rtRanTok\the\rt at nCnt\rt at BaseName}{\noexpand
-        \@nameuse{rtTok#1\rt at BaseName}}}
+  \rt at nameedef{rtRanTok\the\rt at nCnt\rt at BaseName}{\noexpand
+  \@nameuse{rtTok#1\rt at BaseName}}}
 \newcommand{\nToksFor}[1]{\expandafter
-    \ifx\csname nMax4#1\endcsname\relax
-        \textbf{??}\rt at badTokName{#1}\else
-        \@nameuse{nMax4#1}\fi}
+  \ifx\csname nMax4#1\endcsname\relax
+    \textbf{??}\rt at badTokName{#1}\else
+    \@nameuse{nMax4#1}\fi}
 \newcommand{\rtTokByNum}[2][\rt at BaseName]{\expandafter
-    \ifx\csname nMax4#1\endcsname\relax
-        \textbf{??}\rt at badTokName{#1}\else
-        \@nameuse{rtTok#2#1}\expandafter\ignorespaces\fi}
+  \ifx\csname nMax4#1\endcsname\relax
+    \textbf{??}\rt at badTokName{#1}\else
+    \@nameuse{rtTok#2#1}\expandafter\ignorespaces\fi}
 \newcommand{\useRanTok}[2][\rt at BaseName]{\bgroup
-    \expandafter\ifx\csname nMax4#1\endcsname\relax
-        \rt at badTokName{#1}\else
+  \expandafter\ifx\csname nMax4#1\endcsname\relax
+    \rt at badTokName{#1}\else
     \ifnum#2>\nToksFor{#1}\rt at modarith{#2}{\nToksFor{#1}}%
-        \rt at badIndex{#2}{#1}\@nameuse{rtRanTok\rt at mod#1}\else
-            \@nameuse{rtRanTok#2#1}\fi\fi\egroup}
+      \rt at badIndex{#2}{#1}\@nameuse{rtRanTok\rt at mod#1}\else
+      \@nameuse{rtRanTok#2#1}\fi\fi\egroup}
 \newcommand{\displayListRandomly}[1][]{\bgroup\def\rt at prior{#1}%
-    \displ at yListRandomly}
+  \displ at yListRandomly}
 \newcommand{\displ at yListRandomly}[2][]{\rt at nCnt\z@
-    \expandafter\ifx\csname nMax4#2\endcsname\relax
-        \rt at rgi\space\textbf{??}\rt at badTokName{#2}#1%
-    \else
-        \def\rt at post{#1}\useRTName{#2}\let\i\rt at nCnt
-        \def\first{1}\edef\last{\@nameuse{nMax4#2}}%
-        \@tempcnta\last \advance\@tempcnta\m at ne
-        \edef\lessone{\the\@tempcnta}%
-        \@whilenum\rt at nCnt<\last\advance\rt at nCnt\@ne
-        \do{\rt at prior\useRanTok{\the\rt at nCnt}\rt at post}%
-    \fi\egroup
-}
+  \expandafter\ifx\csname nMax4#2\endcsname\relax
+    \rt at rgi\space\textbf{??}\rt at badTokName{#2}#1%
+  \else
+    \def\rt at post{#1}\useRTName{#2}\let\i\rt at nCnt
+    \def\first{1}\edef\last{\@nameuse{nMax4#2}}%
+    \@tempcnta\last \advance\@tempcnta\m at ne
+    \edef\lessone{\the\@tempcnta}%
+    \@whilenum\rt at nCnt<\last\advance\rt at nCnt\@ne
+    \do{\rt at prior\useRanTok{\the\rt at nCnt}\rt at post}%
+  \fi
+\egroup}
 \def\rt at gettonil#1\@nil{\def\to at nilarg{#1}}
 \def\rt at ifspc{\ifx\@let at token\@sptoken
-    \let\rt at next\rt at xifspc\else
-    \let\rt at next\rt at gettonil\fi\rt at next}
+  \let\rt at next\rt at xifspc\else
+  \let\rt at next\rt at gettonil\fi\rt at next}
 \begingroup
 \def\:{\rt at xifspc}
 \expandafter\gdef\: {\futurelet\@let at token\rt at ifspc}
@@ -281,21 +285,21 @@
 \endgroup
 \def\rt at strpspcs{\futurelet\@let at token\rt at ifspc}
 \def\ProbDBWarningMsg#1{\filename at parse{#1}
-    \PackageWarning{ran_toks}
-    {The file \filename at area\filename at base.\ifx\filename at ext\relax
-        tex\else\filename at ext\fi\space cannot be found}}
+  \PackageWarning{ran_toks}
+  {The file \filename at area\filename at base.\ifx\filename at ext\relax
+      tex\else\filename at ext\fi\space cannot be found}}
 \def\useTheseDBs#1{\def\rt at dblist{#1}\ifx\rt at dblist\@empty\else
-    \let\rt at DB@List\@empty
-    \edef\temp at expand{\noexpand\@for\noexpand\@@tmp:=\rt at dblist}%
-    \temp at expand\do{\ifx\@@tmp\@empty\else
-            \expandafter\rt at strpspcs\@@tmp\@nil\edef\@@tmp{\to at nilarg}%
-            \edef\rt at nextDB{\noexpand
-                \InputIfFileExists{\@@tmp}{}{\noexpand
-                \ProbDBWarningMsg{\@@tmp}}}%
-            \toks\tw@=\expandafter{\rt at DB@List}%
-            \toks@=\expandafter{\rt at nextDB}%
-            \edef\rt at DB@List{\the\toks\tw@\space\the\toks@}\fi
-    }\expandafter\rt at DB@List\fi}
+  \let\rt at DB@List\@empty
+  \edef\temp at expand{\noexpand\@for\noexpand\@@tmp:=\rt at dblist}%
+  \temp at expand\do{\ifx\@@tmp\@empty\else
+    \expandafter\rt at strpspcs\@@tmp\@nil\edef\@@tmp{\to at nilarg}%
+    \edef\rt at nextDB{\noexpand
+      \InputIfFileExists{\@@tmp}{}{\noexpand
+      \ProbDBWarningMsg{\@@tmp}}}%
+    \toks\tw@=\expandafter{\rt at DB@List}%
+    \toks@=\expandafter{\rt at nextDB}%
+    \edef\rt at DB@List{\the\toks\tw@\space\the\toks@}\fi
+  }\expandafter\rt at DB@List\fi}
 \let\useProbDBs\useTheseDBs
 \endinput
 %%



More information about the tex-live-commits mailing list