texlive[70688] Master/texmf-dist: advice (18mar24)

commits+karl at tug.org commits+karl at tug.org
Mon Mar 18 20:59:21 CET 2024


Revision: 70688
          https://tug.org/svn/texlive?view=revision&revision=70688
Author:   karl
Date:     2024-03-18 20:59:21 +0100 (Mon, 18 Mar 2024)
Log Message:
-----------
advice (18mar24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/advice/CHANGELOG.md
    trunk/Master/texmf-dist/doc/generic/advice/README.md
    trunk/Master/texmf-dist/source/generic/advice/advice.edtx
    trunk/Master/texmf-dist/tex/context/third/advice/t-advice.tex
    trunk/Master/texmf-dist/tex/latex/advice/advice.sty
    trunk/Master/texmf-dist/tex/plain/advice/advice.tex

Modified: trunk/Master/texmf-dist/doc/generic/advice/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/advice/CHANGELOG.md	2024-03-18 19:59:11 UTC (rev 70687)
+++ trunk/Master/texmf-dist/doc/generic/advice/CHANGELOG.md	2024-03-18 19:59:21 UTC (rev 70688)
@@ -14,6 +14,10 @@
 repository](https://github.com/sasozivanovic/memoize) for the recent
 development history.
 
+## 2024/03/15 v1.1.1
+* Bugfix in `\AdviceGetOriginal`.
+* Simplify the definition of the initial outer handler.
+
 ## 2024/01/02 v1.1.0
 * Implement `\AdviceCsnameGetOriginal`.
 * Change `\AdviceGetOriginal` to expand to the internal control sequence

Modified: trunk/Master/texmf-dist/doc/generic/advice/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/advice/README.md	2024-03-18 19:59:11 UTC (rev 70687)
+++ trunk/Master/texmf-dist/doc/generic/advice/README.md	2024-03-18 19:59:21 UTC (rev 70688)
@@ -15,5 +15,5 @@
 https://www.latex-project.org/lppl.txt and version 1.3c or later is part of all
 distributions of LaTeX version 2008 or later.
 
-This work has the LPPL maintenance status `maintained'.  The Current Maintainer
-of this work is Sašo Živanović (saso.zivanovic at guest.arnes.si).
+This work has the LPPL maintenance status `maintained`.  The Current Maintainer
+of this work is Sašo Živanović (`saso.zivanovic at guest.arnes.si`).

Modified: trunk/Master/texmf-dist/source/generic/advice/advice.edtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/advice/advice.edtx	2024-03-18 19:59:11 UTC (rev 70687)
+++ trunk/Master/texmf-dist/source/generic/advice/advice.edtx	2024-03-18 19:59:21 UTC (rev 70688)
@@ -29,14 +29,14 @@
 % \relax
 %
 %<*main>
-%<latex>\ProvidesPackage{advice}[2024/01/02 v1.1.0 Extend commands and environments]
+%<latex>\ProvidesPackage{advice}[2024/03/15 v1.1.1 Extend commands and environments]
 %<context>%D \module[
 %<context>%D         file=t-advice.tex,
-%<context>%D      version=1.1.0,
+%<context>%D      version=1.1.1,
 %<context>%D        title=Advice,
 %<context>%D     subtitle=Extend commands and environments,
 %<context>%D       author=Saso Zivanovic,
-%<context>%D         date=2024-01-02,
+%<context>%D         date=2024-03-15,
 %<context>%D    copyright=Saso Zivanovic,
 %<context>%D      license=LPPL,
 %<context>%D ]
@@ -203,7 +203,7 @@
     % commands, as assigned by |\advice at setup@init at command|.
     run conditions/.default=\AdviceRuntrue,
     bailout handler/.default=\relax,
-    outer handler/.default=\advice at default@outer at handler,
+    outer handler/.default=\AdviceCollector,
     collector/.default=\advice at CollectArgumentsRaw,
     collector options/.value required,
     raw collector options/.value required,
@@ -324,7 +324,7 @@
 \def\advice at setup@init at common{%
   \def\AdviceRunConditions{\AdviceRuntrue}%
   \def\AdviceBailoutHandler{\relax}%
-  \def\AdviceOuterHandler{\advice at default@outer at handler}%
+  \def\AdviceOuterHandler{\AdviceCollector}%
   \def\AdviceCollector{\advice at CollectArgumentsRaw}%
   \def\AdviceCollectorOptions{}%
   \def\AdviceInnerHandler{\advice at error@noinnerhandler}%
@@ -497,7 +497,7 @@
   \ifcsname advice at o#1//\string#2\endcsname
     \expandonce{\csname advice at o#1//\string#2\expandafter\endcsname\expandafter}%
   \else
-    \expandafter\noexpand\expandafter#2%
+    \unexpanded\expandafter{\expandafter#2\expandafter}%
   \fi
 }
 % \end{macro}
@@ -764,14 +764,6 @@
 \newif\ifAdviceRun
 % \end{macro}
 % 
-% \begin{macro}{\advice at default@outer at handler}
-%   The default outer handler merely executes the argument collector.  Note
-%   that it works for both commands and environments.
-\def\advice at default@outer at handler{%
-  \AdviceCollector
-}
-% \end{macro}
-% 
 % \begin{macro}{\advice at CollectArgumentsRaw}
 %   This is the default collector, which will collect the argument using
 %   CollArgs' command |\CollectArgumentsRaw|.  It will provide that command
@@ -1081,24 +1073,65 @@
     \noexpand\advice at trace{\space\space\space\space
       Raw options:
       \detokenize\expandafter{\AdviceRawCollectorOptions}}%
+    % Collargs' |return| complicates tracing of the received argument.  We put
+    % the code for remembering its value among the raw collector options.  The
+    % default is 0; it is needed when we're using a collector other that
+    % |\CollectArguments|, the assumption being that external collectors will
+    % always return the collected arguments braced.
+    \unexpanded{%
+      \gdef\advice at collargs@return{0}%
+      \appto\AdviceRawCollectorOptions{\advice at remember@collargs at return}%
+    }%
     \expandonce\AdviceCollector
   }%
-  % The tracing inner handler must grab the provided argument, if it's to show
-  % what it is.
-  \edef\advice at inner@handler at trace##1{%
+  \edef\advice at inner@handler at trace@do{%
     \noexpand\advice at trace{\space\space
       Executing inner handler:
       \detokenize\expandafter{\AdviceInnerHandler}}%
+    % When this macro is executed, the received arguments are waiting for us in
+    % |\toks0|.
     \noexpand\advice at trace{\space\space\space\space
-      Received arguments:
-      \noexpand\detokenize{##1}}%
+      Received arguments\noexpand\advice at inner@handler at trace@printcollargsreturn:
+      \noexpand\detokenize\noexpand\expandafter{\unexpanded{\the\toks0}}}%
     \noexpand\advice at trace{\space\space\space\space
       Options:
       \detokenize\expandafter{\AdviceOptions}}%
-    \expandonce{\AdviceInnerHandler}{##1}%
+    \expandonce{\AdviceInnerHandler}%
   }%
   \def\AdviceInnerHandler{\advice at inner@handler at trace}%
 }
+\def\advice at remember@collargs at return{%
+  \global\let\advice at collargs@return\collargsReturn
+}
+% This is the entry point into the tracing inner handler.  It will either get
+% the received arguments as a braced argument (when Collargs' |return=0|), or
+% from |\collargsArgs| otherwise.  We don't simply always inspect
+% |\collargsArgs| because foreign argument collectors will not use this token
+% register; the assumption is that they will always return the collected
+% arguments braced.
+\def\advice at inner@handler at trace{%
+  \ifnum\advice at collargs@return=0
+    \expandafter\advice at inner@handler at trace@i
+  \else
+    \expandafter\advice at inner@handler at trace@ii
+  \fi
+}
+\def\advice at inner@handler at trace@i#1{%
+  \toks0={#1}%
+  \advice at inner@handler at trace@do{#1}%
+}
+\def\advice at inner@handler at trace@ii{%
+  \expandafter\toks\expandafter0\expandafter{\the\collargsArgs}%
+  \advice at inner@handler at trace@do
+}
+\def\advice at inner@handler at trace@printcollargsreturn{%
+  \ifnum\advice at collargs@return=0
+  \else
+    \space(collargs return=%
+    \ifcase\advice at collargs@return braced\or plain\or no\fi
+    )%
+  \fi
+}
 % \end{macro}
 %<plain>\resetatcatcode
 %<context>\stopmodule

Modified: trunk/Master/texmf-dist/tex/context/third/advice/t-advice.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/third/advice/t-advice.tex	2024-03-18 19:59:11 UTC (rev 70687)
+++ trunk/Master/texmf-dist/tex/context/third/advice/t-advice.tex	2024-03-18 19:59:21 UTC (rev 70688)
@@ -27,11 +27,11 @@
 %% (<texmf>/doc/generic/advice/)FILES.
 %D \module[
 %D         file=t-advice.tex,
-%D      version=1.1.0,
+%D      version=1.1.1,
 %D        title=Advice,
 %D     subtitle=Extend commands and environments,
 %D       author=Saso Zivanovic,
-%D         date=2024-01-02,
+%D         date=2024-03-15,
 %D    copyright=Saso Zivanovic,
 %D      license=LPPL,
 %D ]
@@ -116,7 +116,7 @@
     },
     run conditions/.default=\AdviceRuntrue,
     bailout handler/.default=\relax,
-    outer handler/.default=\advice at default@outer at handler,
+    outer handler/.default=\AdviceCollector,
     collector/.default=\advice at CollectArgumentsRaw,
     collector options/.value required,
     raw collector options/.value required,
@@ -154,7 +154,7 @@
 \def\advice at setup@init at common{%
   \def\AdviceRunConditions{\AdviceRuntrue}%
   \def\AdviceBailoutHandler{\relax}%
-  \def\AdviceOuterHandler{\advice at default@outer at handler}%
+  \def\AdviceOuterHandler{\AdviceCollector}%
   \def\AdviceCollector{\advice at CollectArgumentsRaw}%
   \def\AdviceCollectorOptions{}%
   \def\AdviceInnerHandler{\advice at error@noinnerhandler}%
@@ -232,7 +232,7 @@
   \ifcsname advice at o#1//\string#2\endcsname
     \expandonce{\csname advice at o#1//\string#2\expandafter\endcsname\expandafter}%
   \else
-    \expandafter\noexpand\expandafter#2%
+    \normalunexpanded\expandafter{\expandafter#2\expandafter}%
   \fi
 }
 \begingroup
@@ -345,9 +345,6 @@
   \expandafter\expandafter\expandafter{\expandafter\string\AdviceName}%
 }
 \newif\ifAdviceRun
-\def\advice at default@outer at handler{%
-  \AdviceCollector
-}
 \def\advice at CollectArgumentsRaw{%
   \AdviceIfArgs{}{%
     \expandafter\GetDocumentCommandArgSpec\expandafter{\AdviceName}%
@@ -480,22 +477,52 @@
     \noexpand\advice at trace{\space\space\space\space
       Raw options:
       \detokenize\expandafter{\AdviceRawCollectorOptions}}%
+    \normalunexpanded{%
+      \gdef\advice at collargs@return{0}%
+      \appto\AdviceRawCollectorOptions{\advice at remember@collargs at return}%
+    }%
     \expandonce\AdviceCollector
   }%
-  \edef\advice at inner@handler at trace##1{%
+  \edef\advice at inner@handler at trace@do{%
     \noexpand\advice at trace{\space\space
       Executing inner handler:
       \detokenize\expandafter{\AdviceInnerHandler}}%
     \noexpand\advice at trace{\space\space\space\space
-      Received arguments:
-      \noexpand\detokenize{##1}}%
+      Received arguments\noexpand\advice at inner@handler at trace@printcollargsreturn:
+      \noexpand\detokenize\noexpand\expandafter{\normalunexpanded{\the\toks0}}}%
     \noexpand\advice at trace{\space\space\space\space
       Options:
       \detokenize\expandafter{\AdviceOptions}}%
-    \expandonce{\AdviceInnerHandler}{##1}%
+    \expandonce{\AdviceInnerHandler}%
   }%
   \def\AdviceInnerHandler{\advice at inner@handler at trace}%
 }
+\def\advice at remember@collargs at return{%
+  \global\let\advice at collargs@return\collargsReturn
+}
+\def\advice at inner@handler at trace{%
+  \ifnum\advice at collargs@return=0
+    \expandafter\advice at inner@handler at trace@i
+  \else
+    \expandafter\advice at inner@handler at trace@ii
+  \fi
+}
+\def\advice at inner@handler at trace@i#1{%
+  \toks0={#1}%
+  \advice at inner@handler at trace@do{#1}%
+}
+\def\advice at inner@handler at trace@ii{%
+  \expandafter\toks\expandafter0\expandafter{\the\collargsArgs}%
+  \advice at inner@handler at trace@do
+}
+\def\advice at inner@handler at trace@printcollargsreturn{%
+  \ifnum\advice at collargs@return=0
+  \else
+    \space(collargs return=%
+    \ifcase\advice at collargs@return braced\or plain\or no\fi
+    )%
+  \fi
+}
 \stopmodule
 \protect
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/advice/advice.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/advice/advice.sty	2024-03-18 19:59:11 UTC (rev 70687)
+++ trunk/Master/texmf-dist/tex/latex/advice/advice.sty	2024-03-18 19:59:21 UTC (rev 70688)
@@ -25,7 +25,7 @@
 %%
 %% The files belonging to this work and covered by LPPL are listed in
 %% (<texmf>/doc/generic/advice/)FILES.
-\ProvidesPackage{advice}[2024/01/02 v1.1.0 Extend commands and environments]
+\ProvidesPackage{advice}[2024/03/15 v1.1.1 Extend commands and environments]
 \RequirePackage{collargs}
 \RequirePackage{xparse}
 \pgfkeys{
@@ -104,7 +104,7 @@
     },
     run conditions/.default=\AdviceRuntrue,
     bailout handler/.default=\relax,
-    outer handler/.default=\advice at default@outer at handler,
+    outer handler/.default=\AdviceCollector,
     collector/.default=\advice at CollectArgumentsRaw,
     collector options/.value required,
     raw collector options/.value required,
@@ -143,7 +143,7 @@
 \def\advice at setup@init at common{%
   \def\AdviceRunConditions{\AdviceRuntrue}%
   \def\AdviceBailoutHandler{\relax}%
-  \def\AdviceOuterHandler{\advice at default@outer at handler}%
+  \def\AdviceOuterHandler{\AdviceCollector}%
   \def\AdviceCollector{\advice at CollectArgumentsRaw}%
   \def\AdviceCollectorOptions{}%
   \def\AdviceInnerHandler{\advice at error@noinnerhandler}%
@@ -221,7 +221,7 @@
   \ifcsname advice at o#1//\string#2\endcsname
     \expandonce{\csname advice at o#1//\string#2\expandafter\endcsname\expandafter}%
   \else
-    \expandafter\noexpand\expandafter#2%
+    \unexpanded\expandafter{\expandafter#2\expandafter}%
   \fi
 }
 \begingroup
@@ -334,9 +334,6 @@
   \expandafter\expandafter\expandafter{\expandafter\string\AdviceName}%
 }
 \newif\ifAdviceRun
-\def\advice at default@outer at handler{%
-  \AdviceCollector
-}
 \def\advice at CollectArgumentsRaw{%
   \AdviceIfArgs{}{%
     \expandafter\GetDocumentCommandArgSpec\expandafter{\AdviceName}%
@@ -499,22 +496,52 @@
     \noexpand\advice at trace{\space\space\space\space
       Raw options:
       \detokenize\expandafter{\AdviceRawCollectorOptions}}%
+    \unexpanded{%
+      \gdef\advice at collargs@return{0}%
+      \appto\AdviceRawCollectorOptions{\advice at remember@collargs at return}%
+    }%
     \expandonce\AdviceCollector
   }%
-  \edef\advice at inner@handler at trace##1{%
+  \edef\advice at inner@handler at trace@do{%
     \noexpand\advice at trace{\space\space
       Executing inner handler:
       \detokenize\expandafter{\AdviceInnerHandler}}%
     \noexpand\advice at trace{\space\space\space\space
-      Received arguments:
-      \noexpand\detokenize{##1}}%
+      Received arguments\noexpand\advice at inner@handler at trace@printcollargsreturn:
+      \noexpand\detokenize\noexpand\expandafter{\unexpanded{\the\toks0}}}%
     \noexpand\advice at trace{\space\space\space\space
       Options:
       \detokenize\expandafter{\AdviceOptions}}%
-    \expandonce{\AdviceInnerHandler}{##1}%
+    \expandonce{\AdviceInnerHandler}%
   }%
   \def\AdviceInnerHandler{\advice at inner@handler at trace}%
 }
+\def\advice at remember@collargs at return{%
+  \global\let\advice at collargs@return\collargsReturn
+}
+\def\advice at inner@handler at trace{%
+  \ifnum\advice at collargs@return=0
+    \expandafter\advice at inner@handler at trace@i
+  \else
+    \expandafter\advice at inner@handler at trace@ii
+  \fi
+}
+\def\advice at inner@handler at trace@i#1{%
+  \toks0={#1}%
+  \advice at inner@handler at trace@do{#1}%
+}
+\def\advice at inner@handler at trace@ii{%
+  \expandafter\toks\expandafter0\expandafter{\the\collargsArgs}%
+  \advice at inner@handler at trace@do
+}
+\def\advice at inner@handler at trace@printcollargsreturn{%
+  \ifnum\advice at collargs@return=0
+  \else
+    \space(collargs return=%
+    \ifcase\advice at collargs@return braced\or plain\or no\fi
+    )%
+  \fi
+}
 \endinput
 %%
 %% End of file `advice.sty'.

Modified: trunk/Master/texmf-dist/tex/plain/advice/advice.tex
===================================================================
--- trunk/Master/texmf-dist/tex/plain/advice/advice.tex	2024-03-18 19:59:11 UTC (rev 70687)
+++ trunk/Master/texmf-dist/tex/plain/advice/advice.tex	2024-03-18 19:59:21 UTC (rev 70688)
@@ -103,7 +103,7 @@
     },
     run conditions/.default=\AdviceRuntrue,
     bailout handler/.default=\relax,
-    outer handler/.default=\advice at default@outer at handler,
+    outer handler/.default=\AdviceCollector,
     collector/.default=\advice at CollectArgumentsRaw,
     collector options/.value required,
     raw collector options/.value required,
@@ -141,7 +141,7 @@
 \def\advice at setup@init at common{%
   \def\AdviceRunConditions{\AdviceRuntrue}%
   \def\AdviceBailoutHandler{\relax}%
-  \def\AdviceOuterHandler{\advice at default@outer at handler}%
+  \def\AdviceOuterHandler{\AdviceCollector}%
   \def\AdviceCollector{\advice at CollectArgumentsRaw}%
   \def\AdviceCollectorOptions{}%
   \def\AdviceInnerHandler{\advice at error@noinnerhandler}%
@@ -219,7 +219,7 @@
   \ifcsname advice at o#1//\string#2\endcsname
     \expandonce{\csname advice at o#1//\string#2\expandafter\endcsname\expandafter}%
   \else
-    \expandafter\noexpand\expandafter#2%
+    \unexpanded\expandafter{\expandafter#2\expandafter}%
   \fi
 }
 \begingroup
@@ -332,9 +332,6 @@
   \expandafter\expandafter\expandafter{\expandafter\string\AdviceName}%
 }
 \newif\ifAdviceRun
-\def\advice at default@outer at handler{%
-  \AdviceCollector
-}
 \def\advice at CollectArgumentsRaw{%
   \AdviceIfArgs{}{%
     \expandafter\GetDocumentCommandArgSpec\expandafter{\AdviceName}%
@@ -469,22 +466,52 @@
     \noexpand\advice at trace{\space\space\space\space
       Raw options:
       \detokenize\expandafter{\AdviceRawCollectorOptions}}%
+    \unexpanded{%
+      \gdef\advice at collargs@return{0}%
+      \appto\AdviceRawCollectorOptions{\advice at remember@collargs at return}%
+    }%
     \expandonce\AdviceCollector
   }%
-  \edef\advice at inner@handler at trace##1{%
+  \edef\advice at inner@handler at trace@do{%
     \noexpand\advice at trace{\space\space
       Executing inner handler:
       \detokenize\expandafter{\AdviceInnerHandler}}%
     \noexpand\advice at trace{\space\space\space\space
-      Received arguments:
-      \noexpand\detokenize{##1}}%
+      Received arguments\noexpand\advice at inner@handler at trace@printcollargsreturn:
+      \noexpand\detokenize\noexpand\expandafter{\unexpanded{\the\toks0}}}%
     \noexpand\advice at trace{\space\space\space\space
       Options:
       \detokenize\expandafter{\AdviceOptions}}%
-    \expandonce{\AdviceInnerHandler}{##1}%
+    \expandonce{\AdviceInnerHandler}%
   }%
   \def\AdviceInnerHandler{\advice at inner@handler at trace}%
 }
+\def\advice at remember@collargs at return{%
+  \global\let\advice at collargs@return\collargsReturn
+}
+\def\advice at inner@handler at trace{%
+  \ifnum\advice at collargs@return=0
+    \expandafter\advice at inner@handler at trace@i
+  \else
+    \expandafter\advice at inner@handler at trace@ii
+  \fi
+}
+\def\advice at inner@handler at trace@i#1{%
+  \toks0={#1}%
+  \advice at inner@handler at trace@do{#1}%
+}
+\def\advice at inner@handler at trace@ii{%
+  \expandafter\toks\expandafter0\expandafter{\the\collargsArgs}%
+  \advice at inner@handler at trace@do
+}
+\def\advice at inner@handler at trace@printcollargsreturn{%
+  \ifnum\advice at collargs@return=0
+  \else
+    \space(collargs return=%
+    \ifcase\advice at collargs@return braced\or plain\or no\fi
+    )%
+  \fi
+}
 \resetatcatcode
 \endinput
 %%



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