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.