[latex3-commits] [latex3/latex2e] ltcmd-verb: Collect \endlinechar as \par in ltcmd +v-type (8c7bb64f)
github at latex-project.org
github at latex-project.org
Wed Jun 14 10:44:27 CEST 2023
Repository : https://github.com/latex3/latex2e
On branch : ltcmd-verb
Link : https://github.com/latex3/latex2e/commit/8c7bb64f36b8ca0dcaaa43d03266a556662fb172
>---------------------------------------------------------------
commit 8c7bb64f36b8ca0dcaaa43d03266a556662fb172
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Wed Jun 14 07:49:22 2023 +0100
Collect \endlinechar as \par in ltcmd +v-type
Includes a temporary fix to l3doc that will need to
be moved back to expl3 in due course.
>---------------------------------------------------------------
8c7bb64f36b8ca0dcaaa43d03266a556662fb172
base/changes.txt | 1 +
base/doc/ltnews38.tex | 14 ++++++++++++++
base/ltcmd.dtx | 22 +++++++++++++++++++++-
base/testfiles-ltcmd/github-0876.tlg | 8 ++++----
texmf/tex/latex/l3kernel/l3doc.cls | 1 +
5 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/base/changes.txt b/base/changes.txt
index 698d1bbe..77c9a67b 100644
--- a/base/changes.txt
+++ b/base/changes.txt
@@ -12,6 +12,7 @@ are not part of the distribution.
Support (visible) tabs in verbatim material
* ltcmd.dtx
Collect spaces and tabs as active chars
+ Collect \endlinechar as \par
2023-06-09 Joseph Wright <Joseph.Wright at latex-project.org>
diff --git a/base/doc/ltnews38.tex b/base/doc/ltnews38.tex
index 78c8d03e..8b13cf81 100644
--- a/base/doc/ltnews38.tex
+++ b/base/doc/ltnews38.tex
@@ -172,6 +172,20 @@ to easily print visible spaces. We have adjusted the implementation of the
space has been modified. However, the team believe that overall the benefit of
better consistency makes this a necessary change.
+\subsection{Handling of end-of-lines in \cs{NewDocumentCommand} \texttt{+v}
+arguments}
+
+The \texttt{+v} argument type provided by \cs{NewDocumentCommand}, etc., allows
+grabbing of multiple lines of text in a verbatim-like argument. Almost always,
+the result of this grabbing will be used in a typesetting context. Previously,
+the end-of-line characters were stored literally as category code~12
+(\enquote{other}) \verb|^^M| tokens. However, these are difficult to work with
+in general. We have now revised this behavior, such that end-of-line characters
+are converted to the \cs{par} command when parsed by \texttt{+v}-type
+arguments. As with the previous change, this may require adjustment in the
+source of some documents, but the enhanced ability of users and programmers to
+exploit the \texttt{+v}-type argument means we believe it is necessary.
+
\section{Bug fixes}
\section{Changes to packages in the \pkg{amsmath} category}
diff --git a/base/ltcmd.dtx b/base/ltcmd.dtx
index 7e87bcdc..ecb25939 100644
--- a/base/ltcmd.dtx
+++ b/base/ltcmd.dtx
@@ -3548,18 +3548,38 @@
% \end{macro}
%
% \begin{macro}{\@@_grab_v_aux_put:N}
+% \changes{v1.1f}{2023/06/14}{Collect \cs{endlinechar} as \cs{par} token}
% Storing one token in the collected argument. Most tokens are
% converted to category code $12$, with the exception of active
% characters.
% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2023/11/01}{\@@_grab_v_aux_put:N}%
+%<latexrelease> {Endlines~as~\par}
\cs_new_protected:Npn \@@_grab_v_aux_put:N #1
{
\tl_put_right:Nx \l_@@_v_arg_tl
{
\token_if_active:NTF #1
- { \exp_not:N #1 } { \token_to_str:N #1 }
+ { \exp_not:N #1 }
+ {
+ \int_compare:nNnTF {`#1} = \tex_endlinechar:D
+ { \exp_not:N \par }
+ { \token_to_str:N #1 }
+ }
}
}
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2020/10/01}{\@@_grab_v_aux_put:N}%
+%<latexrelease> {Endlines~as~\par}
+%<latexrelease>\cs_new_protected:Npn \@@_grab_v_aux_put:N #1
+%<latexrelease> {
+%<latexrelease> \tl_put_right:Nx \l_@@_v_arg_tl
+%<latexrelease> {
+%<latexrelease> \token_if_active:NTF #1
+%<latexrelease> { \exp_not:N #1 } { \token_to_str:N #1 }
+%<latexrelease> }
+%<latexrelease> }
+%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
% \end{macro}
%
diff --git a/base/testfiles-ltcmd/github-0876.tlg b/base/testfiles-ltcmd/github-0876.tlg
index e06c7c0f..7fde532d 100644
--- a/base/testfiles-ltcmd/github-0876.tlg
+++ b/base/testfiles-ltcmd/github-0876.tlg
@@ -16,7 +16,7 @@ The token list contains the tokens:
> b (the character b)
> a (the character a)
> r (the character r)
-> ^^M (the character ^^M)
+> \par (control sequence=\protected\long macro:->\scan_stop: \mode_if_h\ETC.)
> b (the character b)
> a (the character a)
> r (the character r).
@@ -27,7 +27,7 @@ The token list contains the tokens:
> b (the character b)
> a (the character a)
> r (the character r)
-> ^^M (the character ^^M)
+> \par (control sequence=\protected\long macro:->\scan_stop: \mode_if_h\ETC.)
> b (the character b)
> a (the character a)
> r (the character r).
@@ -35,11 +35,11 @@ The token list contains the tokens:
l. ...bar+
^^M
The token list contains the tokens:
-> ^^M (the character ^^M)
+> \par (control sequence=\protected\long macro:->\scan_stop: \mode_if_h\ETC.)
> b (the character b)
> a (the character a)
> r (the character r)
-> ^^M (the character ^^M)
+> \par (control sequence=\protected\long macro:->\scan_stop: \mode_if_h\ETC.)
> b (the character b)
> a (the character a)
> r (the character r).
diff --git a/texmf/tex/latex/l3kernel/l3doc.cls b/texmf/tex/latex/l3kernel/l3doc.cls
index f35d1f13..79143afe 100644
--- a/texmf/tex/latex/l3kernel/l3doc.cls
+++ b/texmf/tex/latex/l3kernel/l3doc.cls
@@ -828,6 +828,7 @@
{
\tl_remove_all:Nx \l__codedoc_tmpa_tl
{ \iow_char:N \^^M \c_percent_str }
+ \tl_remove_all:Nx \l__codedoc_tmpa_tl { \token_to_str:N \par \c_space_tl \c_percent_str }
\tl_remove_all:Nx \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
\tl_remove_all:Nx \l__codedoc_tmpa_tl { \iow_char:N \^^I }
\tl_remove_all:Nx \l__codedoc_tmpa_tl { \iow_char:N \^^M }
More information about the latex3-commits
mailing list.