texlive[60615] Master/texmf-dist: scrambledenvs (25sep21)

commits+karl at tug.org commits+karl at tug.org
Sun Sep 26 23:00:24 CEST 2021


Revision: 60615
          http://tug.org/svn/texlive?view=revision&revision=60615
Author:   karl
Date:     2021-09-26 23:00:24 +0200 (Sun, 26 Sep 2021)
Log Message:
-----------
scrambledenvs (25sep21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/scrambledenvs/README.md
    trunk/Master/texmf-dist/doc/latex/scrambledenvs/scrambledenvs.pdf
    trunk/Master/texmf-dist/source/latex/scrambledenvs/scrambledenvs.dtx
    trunk/Master/texmf-dist/tex/latex/scrambledenvs/scrambledenvs.sty

Modified: trunk/Master/texmf-dist/doc/latex/scrambledenvs/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/scrambledenvs/README.md	2021-09-26 21:00:02 UTC (rev 60614)
+++ trunk/Master/texmf-dist/doc/latex/scrambledenvs/README.md	2021-09-26 21:00:24 UTC (rev 60615)
@@ -1,4 +1,4 @@
-# The LaTeX package scrambledenvs - version 1.0.1 (2021/08/03)
+# The LaTeX package scrambledenvs - version 1.1.0 (2021/09/26)
 
 > Copyright (C) 2021 Dennis Chen proofprogram at gmail.com
 >

Modified: trunk/Master/texmf-dist/doc/latex/scrambledenvs/scrambledenvs.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/scrambledenvs/scrambledenvs.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/scrambledenvs/scrambledenvs.dtx	2021-09-26 21:00:02 UTC (rev 60614)
+++ trunk/Master/texmf-dist/source/latex/scrambledenvs/scrambledenvs.dtx	2021-09-26 21:00:24 UTC (rev 60615)
@@ -15,7 +15,7 @@
 \iffalse
 %</internal>
 %<*readme>
-# The LaTeX package scrambledenvs - version 1.0.1 (2021/08/03)
+# The LaTeX package scrambledenvs - version 1.1.0 (2021/09/26)
 
 > Copyright (C) 2021 Dennis Chen proofprogram at gmail.com
 > 
@@ -119,13 +119,14 @@
 %</internal>
 %<*main>
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{scrambledenvs}[2021/08/03 v1.0.1 Create and print scrambled environments]
+\ProvidesPackage{scrambledenvs}[2021/09/26 v1.1.0 Create and print scrambled environments]
+\RequirePackage{ifthen}
 \RequirePackage{forloop}
 \RequirePackage{pgfmath}
 \pgfmathsetseed{2407}
 %</main>
 %<*driver>
-\ProvidesFile{\jobname.dtx}[2021/08/03 v1.0.1 Create and print scrambled environments]
+\ProvidesFile{\jobname.dtx}[2021/09/26 v1.1.0 Create and print scrambled environments]
 \documentclass{ltxdoc}
 
 \EnableCrossrefs
@@ -217,6 +218,7 @@
 %</helper>
 % \fi
 % \DescribeEnv{hints}
+% \changes{v1.1.0}{2021/09/26}{Fix internal bug when referencing counters}
 % \changes{v1.0.1}{2021/08/03}{Adjust spacing to make two scrambled envs look prettier together}
 % This is the outer environment. Depending on how many |hint| environments are put inside it, it will either typeset \emph{Hints:} or \emph{Hint:} with the numerical labels of the passed in hints following it.
 % You should put in nothing but the inner environment |hint|. (See the examples for a correct usage.)
@@ -234,11 +236,11 @@
 \else
     \ifnum\value{scrambledenvs@#1 at tempcount}=1\relax
         {\csname scrambledenvs@#1 at labelfont\endcsname\csname scrambledenvs@#1 at label\endcsname :}
-        {\csname scrambledenvs@#1 at reffont\endcsname\ref{#1:\value{scrambledenvs@#1 at count}}}%
+        {\csname scrambledenvs@#1 at reffont\endcsname\csname scrambledenvs@#1 at refprefix\endcsname\ref{#1:\the\numexpr\value{scrambledenvs@#1 at count}}}%
     \else
         {\csname scrambledenvs@#1 at labelfont\endcsname\csname scrambledenvs@#1 at label\endcsname s:}
         \forloop{scrambledenvs at loopcount}{\the\numexpr\value{scrambledenvs@#1 at count}-\value{scrambledenvs@#1 at tempcount}+1\relax}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax} {%
-            {\csname scrambledenvs@#1 at reffont\endcsname\ref{#1:\thescrambledenvs at loopcount}}
+            {\csname scrambledenvs@#1 at reffont\endcsname\csname scrambledenvs@#1 at refprefix\endcsname\ref{#1:\thescrambledenvs at loopcount}}
         }
     \fi
 \fi
@@ -268,9 +270,17 @@
 % \fi
 %
 % \DescribeMacro{\printhint}
-%
+% \changes{v1.1.0}{2021/09/26}{Feature: printhint only outputs unprinted hints (allows for printhint in each chapter, etc)}
+% \changes{v1.1.0}{2021/09/26}{Bugfix: switch from forloop to TeX loops}
 % To print out the hints (either in a random or fixed order, depending on whether the option |noscramble| is passed in), just write |\printhint|.
 %
+% Only hints that have not been printed before will be printed. Therefore, in a book, you could write |\printhint| at the end of each chapter to get end-of-chapter hints.
+%
+% By default, the hint counter resets each time. So if you use |\printhint| twice, you will have two hint 1's, etc. If you want the counter to continue, the following code will work:
+%\begin{verbatim}
+%\hintprintenv{\begin{enumerate}\setcounter{enumi}{\the\numexpr\csname scrambledenvs at hint@start\endcsname-1\relax}}{\end{enumerate}}
+%\end{verbatim}
+% Wrap this with a |\makeatletter| |\makeatother| pair if appropriate (i.e. in TeX files).
 % \iffalse
 %<*helper>
 \newcounter{scrambledenvs at loopcount}
@@ -277,23 +287,36 @@
 \newcounter{scrambledenvs at innerloopcount}
 %</helper>
 %<*main>
+\expandafter\def\csname scrambledenvs@#1 at start\endcsname{1}
 \expandafter\newcommand\csname print#1\endcsname{%
     \ifscrambledenvs at scramble %\if
         \ifcsname thescrambledenvs@#1 at count\endcsname
-            \ifnum\value{scrambledenvs@#1 at count}>0\relax
-                \expandafter\edef\csname pgfmath at randomlist@#1\endcsname{\value{scrambledenvs@#1 at count}}%
-                \forloop{scrambledenvs at loopcount}{1}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{\expandafter\edef\csname pgfmath at randomlist@#1@\thescrambledenvs at loopcount\endcsname{\thescrambledenvs at loopcount}}%
-                \begin{scrambledenvs@#1 at printenv}%
-                    \forloop{scrambledenvs at loopcount}{0}{\value{scrambledenvs at loopcount}<\value{scrambledenvs@#1 at count}}{%
-                        \pgfmathrandomitem\scrambledenvs at tempindex{#1}%
-                        \csname scrambledenvs@#1 at printitem\endcsname\label{#1:\scrambledenvs at tempindex}%
+            \ifnum\value{scrambledenvs@#1 at count}<\csname scrambledenvs@#1 at start\endcsname\relax
+            \else
+                \expandafter\edef\csname pgfmath at randomlist@#1\endcsname{\numexpr\value{scrambledenvs@#1 at count}-\csname scrambledenvs@#1 at start\endcsname+1}
+                    \count@=1
+                    \loop
+                        \expandafter\edef\csname pgfmath at randomlist@#1@\the\count@\endcsname{\the\numexpr\count at +\csname scrambledenvs@#1 at start\endcsname-1\relax}
+                    \ifnum\count@<\numexpr\value{scrambledenvs@#1 at count}-\csname scrambledenvs@#1 at start\endcsname+1\relax
+                    \advance\count@ 1
+                    \repeat
+                \begin{scrambledenvs@#1 at printenv}
+                    \setcounter{scrambledenvs at loopcount}{\csname scrambledenvs@#1 at start\endcsname}
+                    \whiledo{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{%
+                    \stepcounter{scrambledenvs at loopcount}
+                    \pgfmathrandomitem\scrambledenvs at tempindex{#1}
+                    \csname scrambledenvs@#1 at printitem\endcsname\label{#1:\scrambledenvs at tempindex}%
                         \input{\jobname-\scrambledenvs at tempindex.#1}%
-                        \forloop{scrambledenvs at innerloopcount}{\scrambledenvs at tempindex}{\value{scrambledenvs at innerloopcount}<\csname pgfmath at randomlist@#1\endcsname}{%
-                            \global\expandafter\let\csname pgfmath at randomlist@#1@\thescrambledenvs at innerloopcount\expandafter\endcsname\csname pgfmath at randomlist@#1@\the\numexpr\thescrambledenvs at innerloopcount+1\relax\endcsname%
-                        }%
-                        \expandafter\xdef\csname pgfmath at randomlist@#1\endcsname{\the\numexpr\csname pgfmath at randomlist@#1\endcsname-1\relax}%
-                    }%
+                        \count@\pgfmath at randomtemp
+                        \loop
+                            \global\expandafter\let\csname pgfmath at randomlist@#1@\the\count@\expandafter\endcsname\csname pgfmath at randomlist@#1@\the\numexpr\the\count at +1\relax\endcsname%
+                        \advance\count@ 1
+                        \ifnum \count@ < \csname pgfmath at randomlist@#1\endcsname\relax
+                        \repeat
+                    \expandafter\xdef\csname pgfmath at randomlist@#1\endcsname{\the\numexpr\csname pgfmath at randomlist@#1\endcsname-1\relax}%
+                    }
                 \end{scrambledenvs@#1 at printenv}
+                \expandafter\edef\csname scrambledenvs@#1 at start\endcsname{\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}
             \fi
         \fi
     \else
@@ -300,8 +323,9 @@
         \ifcsname thescrambledenvs@#1 at count\endcsname
             \ifnum\value{scrambledenvs@#1 at count}>0\relax
                 \begin{scrambledenvs@#1 at printenv}%
-                    \forloop{scrambledenvs at loopcount}{1}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{\csname scrambledenvs@#1 at printitem\endcsname\label{#1:\thescrambledenvs at loopcount}\input{\jobname-\thescrambledenvs at loopcount.#1}}%
+                    \forloop{scrambledenvs at loopcount}{\csname scrambledenvs@#1 at start\endcsname}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{\csname scrambledenvs@#1 at printitem\endcsname\label{#1:\thescrambledenvs at loopcount}\input{\jobname-\thescrambledenvs at loopcount.#1}}%
                 \end{scrambledenvs@#1 at printenv}
+                \expandafter\edef\csname scrambledenvs@#1 at start\endcsname{\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}
             \fi
         \fi
     \fi
@@ -338,12 +362,24 @@
 \expandafter\newcommand\csname #1labelfont\endcsname[1]{\expandafter\def\csname scrambledenvs@#1 at labelfont\endcsname{##1}}
 %</main>
 % \fi
+% \changes{v1.1.0}{2021/09/26}{Added ref prefix}
+% \DescribeMacro{\hintrefprefix}
+% Sets the prefix before the reference. (This may be useful if you have multiple |\printhint| statements, like one at the end of each chapter.)
 %
+% \iffalse
+%<*main>
+\expandafter\def\csname scrambledenvs@#1 at refprefix\endcsname{\scrambledenvs at refprefix}
+\scrambledenvs at check@macrodefined{#1refprefix}
+\expandafter\newcommand\csname #1refprefix\endcsname[1]{\expandafter\def\csname scrambledenvs@#1 at refprefix\endcsname{##1}}
+%</main>
+% \fi
 % \DescribeMacro{\hintreffont}
 % Sets the font of the numerical references the follows the label.
 %
 % If you are using hyperref and you are using the |colorlinks| option: because the references are generated with |\ref|, you must change hyperref colors in order to change the color. |\color| will not work. Otherwise |\color| will work.
 %
+% If you are using hyperref \emph{and} have a prefix, since the prefix is not part of the label, you must use \emph{both} |\hypersetup| and |\color|.
+%
 % \iffalse
 %<*main>
 \expandafter\def\csname scrambledenvs@#1 at reffont\endcsname{\scrambledenvs at reffont}
@@ -392,6 +428,15 @@
 %</helper>
 % \fi
 %
+% \DescribeMacro{\defaultrefprefix}
+% Changes the default reference prefix.
+% \iffalse
+%<*helper>
+\def\scrambledenvs at refprefix{}
+\def\defaultrefprefix#1{\def\scrambledenvs at refprefix{#1}}
+%</helper>
+% \fi
+%
 % \DescribeMacro{\defaultreffont}
 % Changes the default reference font.
 % \iffalse
@@ -456,7 +501,7 @@
 %\hintprintenv{\begin{enumerate}\small}{\end{enumerate}}
 %\hintprintitem{\bfseries\item}
 %\end{verbatim}
-% \subsection{Changing hintreffont color: hpyerrefs colorlink}
+% \subsection{Changing hintreffont color: hyperrefs colorlink}
 % Since we are using |\ref| to typeset labels (which are set with |\label|), if we use |colorlinks| from package |hyperref| we must locally change the linkcolor in order to change the color the numbers are typeset in.
 %\begin{verbatim}
 %\documentclass{article}
@@ -467,6 +512,37 @@
 %\newscrambledenv{hint}
 %\hintreffont{\hypersetup{linkcolor=blue}}
 %\end{verbatim}
+%\subsection{Changing hint ref prefix}
+%\begin{verbatim}
+%\documentclass{article}
+%\usepackage{scrambledenvs}
+%\usepackage{xcolor}
+%\usepackage{hyperref}
+%\hypersetup{colorlinks}
+%\newscrambledenv{hint}
+%\hintrefprefix{\thesection.}
+%\hintreffont{\color{blue}\hypersetup{linkcolor=blue}}
+%\begin{document}
+%\section{First Problem}
+%This is a problem.
+%\begin{hints}
+%\begin{hint}
+%This hint will be referenced as 1.1.
+%\end{hint}
+%\end{hints}
+%\subsection{Hints}
+%\printhint
+%\section{Second Problem}
+%This is another problem.
+%\begin{hints}
+%\begin{hint}
+%This hint will be referenced as 2.1.
+%\end{hint}
+%\end{hints}
+%\subsection{Hints}
+%\printhint
+%\end{document}
+%\end{verbatim}
 % ^^A At the end, close brace
 %\iffalse
 %<*main>

Modified: trunk/Master/texmf-dist/tex/latex/scrambledenvs/scrambledenvs.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/scrambledenvs/scrambledenvs.sty	2021-09-26 21:00:02 UTC (rev 60614)
+++ trunk/Master/texmf-dist/tex/latex/scrambledenvs/scrambledenvs.sty	2021-09-26 21:00:24 UTC (rev 60615)
@@ -27,7 +27,8 @@
 
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{scrambledenvs}[2021/08/03 v1.0.1 Create and print scrambled environments]
+\ProvidesPackage{scrambledenvs}[2021/09/26 v1.1.0 Create and print scrambled environments]
+\RequirePackage{ifthen}
 \RequirePackage{forloop}
 \RequirePackage{pgfmath}
 \pgfmathsetseed{2407}
@@ -49,11 +50,11 @@
 \else
     \ifnum\value{scrambledenvs@#1 at tempcount}=1\relax
         {\csname scrambledenvs@#1 at labelfont\endcsname\csname scrambledenvs@#1 at label\endcsname :}
-        {\csname scrambledenvs@#1 at reffont\endcsname\ref{#1:\value{scrambledenvs@#1 at count}}}%
+        {\csname scrambledenvs@#1 at reffont\endcsname\csname scrambledenvs@#1 at refprefix\endcsname\ref{#1:\the\numexpr\value{scrambledenvs@#1 at count}}}%
     \else
         {\csname scrambledenvs@#1 at labelfont\endcsname\csname scrambledenvs@#1 at label\endcsname s:}
         \forloop{scrambledenvs at loopcount}{\the\numexpr\value{scrambledenvs@#1 at count}-\value{scrambledenvs@#1 at tempcount}+1\relax}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax} {%
-            {\csname scrambledenvs@#1 at reffont\endcsname\ref{#1:\thescrambledenvs at loopcount}}
+            {\csname scrambledenvs@#1 at reffont\endcsname\csname scrambledenvs@#1 at refprefix\endcsname\ref{#1:\thescrambledenvs at loopcount}}
         }
     \fi
 \fi
@@ -72,23 +73,36 @@
 {%
     \endfilecontents
 }
+\expandafter\def\csname scrambledenvs@#1 at start\endcsname{1}
 \expandafter\newcommand\csname print#1\endcsname{%
     \ifscrambledenvs at scramble %\if
         \ifcsname thescrambledenvs@#1 at count\endcsname
-            \ifnum\value{scrambledenvs@#1 at count}>0\relax
-                \expandafter\edef\csname pgfmath at randomlist@#1\endcsname{\value{scrambledenvs@#1 at count}}%
-                \forloop{scrambledenvs at loopcount}{1}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{\expandafter\edef\csname pgfmath at randomlist@#1@\thescrambledenvs at loopcount\endcsname{\thescrambledenvs at loopcount}}%
-                \begin{scrambledenvs@#1 at printenv}%
-                    \forloop{scrambledenvs at loopcount}{0}{\value{scrambledenvs at loopcount}<\value{scrambledenvs@#1 at count}}{%
-                        \pgfmathrandomitem\scrambledenvs at tempindex{#1}%
-                        \csname scrambledenvs@#1 at printitem\endcsname\label{#1:\scrambledenvs at tempindex}%
+            \ifnum\value{scrambledenvs@#1 at count}<\csname scrambledenvs@#1 at start\endcsname\relax
+            \else
+                \expandafter\edef\csname pgfmath at randomlist@#1\endcsname{\numexpr\value{scrambledenvs@#1 at count}-\csname scrambledenvs@#1 at start\endcsname+1}
+                    \count@=1
+                    \loop
+                        \expandafter\edef\csname pgfmath at randomlist@#1@\the\count@\endcsname{\the\numexpr\count at +\csname scrambledenvs@#1 at start\endcsname-1\relax}
+                    \ifnum\count@<\numexpr\value{scrambledenvs@#1 at count}-\csname scrambledenvs@#1 at start\endcsname+1\relax
+                    \advance\count@ 1
+                    \repeat
+                \begin{scrambledenvs@#1 at printenv}
+                    \setcounter{scrambledenvs at loopcount}{\csname scrambledenvs@#1 at start\endcsname}
+                    \whiledo{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{%
+                    \stepcounter{scrambledenvs at loopcount}
+                    \pgfmathrandomitem\scrambledenvs at tempindex{#1}
+                    \csname scrambledenvs@#1 at printitem\endcsname\label{#1:\scrambledenvs at tempindex}%
                         \input{\jobname-\scrambledenvs at tempindex.#1}%
-                        \forloop{scrambledenvs at innerloopcount}{\scrambledenvs at tempindex}{\value{scrambledenvs at innerloopcount}<\csname pgfmath at randomlist@#1\endcsname}{%
-                            \global\expandafter\let\csname pgfmath at randomlist@#1@\thescrambledenvs at innerloopcount\expandafter\endcsname\csname pgfmath at randomlist@#1@\the\numexpr\thescrambledenvs at innerloopcount+1\relax\endcsname%
-                        }%
-                        \expandafter\xdef\csname pgfmath at randomlist@#1\endcsname{\the\numexpr\csname pgfmath at randomlist@#1\endcsname-1\relax}%
-                    }%
+                        \count@\pgfmath at randomtemp
+                        \loop
+                            \global\expandafter\let\csname pgfmath at randomlist@#1@\the\count@\expandafter\endcsname\csname pgfmath at randomlist@#1@\the\numexpr\the\count at +1\relax\endcsname%
+                        \advance\count@ 1
+                        \ifnum \count@ < \csname pgfmath at randomlist@#1\endcsname\relax
+                        \repeat
+                    \expandafter\xdef\csname pgfmath at randomlist@#1\endcsname{\the\numexpr\csname pgfmath at randomlist@#1\endcsname-1\relax}%
+                    }
                 \end{scrambledenvs@#1 at printenv}
+                \expandafter\edef\csname scrambledenvs@#1 at start\endcsname{\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}
             \fi
         \fi
     \else
@@ -95,8 +109,9 @@
         \ifcsname thescrambledenvs@#1 at count\endcsname
             \ifnum\value{scrambledenvs@#1 at count}>0\relax
                 \begin{scrambledenvs@#1 at printenv}%
-                    \forloop{scrambledenvs at loopcount}{1}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{\csname scrambledenvs@#1 at printitem\endcsname\label{#1:\thescrambledenvs at loopcount}\input{\jobname-\thescrambledenvs at loopcount.#1}}%
+                    \forloop{scrambledenvs at loopcount}{\csname scrambledenvs@#1 at start\endcsname}{\value{scrambledenvs at loopcount}<\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}{\csname scrambledenvs@#1 at printitem\endcsname\label{#1:\thescrambledenvs at loopcount}\input{\jobname-\thescrambledenvs at loopcount.#1}}%
                 \end{scrambledenvs@#1 at printenv}
+                \expandafter\edef\csname scrambledenvs@#1 at start\endcsname{\the\numexpr\value{scrambledenvs@#1 at count}+1\relax}
             \fi
         \fi
     \fi
@@ -107,6 +122,9 @@
 \expandafter\def\csname scrambledenvs@#1 at labelfont\endcsname{\scrambledenvs at labelfont}
 \scrambledenvs at check@macrodefined{#1labelfont}
 \expandafter\newcommand\csname #1labelfont\endcsname[1]{\expandafter\def\csname scrambledenvs@#1 at labelfont\endcsname{##1}}
+\expandafter\def\csname scrambledenvs@#1 at refprefix\endcsname{\scrambledenvs at refprefix}
+\scrambledenvs at check@macrodefined{#1refprefix}
+\expandafter\newcommand\csname #1refprefix\endcsname[1]{\expandafter\def\csname scrambledenvs@#1 at refprefix\endcsname{##1}}
 \expandafter\def\csname scrambledenvs@#1 at reffont\endcsname{\scrambledenvs at reffont}
 \scrambledenvs at check@macrodefined{#1reffont}
 \expandafter\newcommand\csname #1reffont\endcsname[1]{\expandafter\def\csname scrambledenvs@#1 at reffont\endcsname{##1}}
@@ -138,6 +156,8 @@
 \newcounter{scrambledenvs at innerloopcount}
 \def\scrambledenvs at labelfont{\bfseries}
 \def\defaultlabelfont#1{\def\scrambledenvs at lineformat{#1}}
+\def\scrambledenvs at refprefix{}
+\def\defaultrefprefix#1{\def\scrambledenvs at refprefix{#1}}
 \def\scrambledenvs at reffont{}
 \def\defaultreffont#1{\def\scrambledenvs at reffont{#1}}
 \newenvironment{scrambledenvs at printenv}{\begin{enumerate}}{\end{enumerate}}



More information about the tex-live-commits mailing list.