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.