summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-01-28 22:07:57 +0000
committerKarl Berry <karl@freefriends.org>2019-01-28 22:07:57 +0000
commit58716ee4be6eb8b578e9e7097971079d0e9d0b6a (patch)
tree04ad920aed8f772a75bad93e9ec399c067f44001 /Master/texmf-dist/source/latex/l3kernel/l3token.dtx
parent0e9654fedc389811d7b81b1d05f8a4a986caec1c (diff)
l3 (28jan19)
git-svn-id: svn://tug.org/texlive/trunk@49853 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3token.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx40
1 files changed, 21 insertions, 19 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index d94b08dc5a4..3725929968d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -1,6 +1,8 @@
% \iffalse meta-comment
%
-%% File: l3token.dtx Copyright (C) 2005-2019 The LaTeX3 Project
+%% File: l3token.dtx
+%
+% Copyright (C) 2005-2019 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -41,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-01-13}
+% \date{Released 2019-01-28}
%
% \maketitle
%
@@ -121,7 +123,7 @@
% be an active character.
% \end{function}
%
-% \begin{function}[EXP, added = 2015-09-09, updated = 2018-04-19]
+% \begin{function}[EXP, added = 2015-09-09, updated = 2019-01-16]
% {\char_generate:nn}
% \begin{syntax}
% \cs{char_generate:nn} \Arg{charcode} \Arg{catcode}
@@ -144,6 +146,9 @@
% and other values raise an error. The \meta{charcode} may be any one valid
% for the engine in use.
% Active characters cannot be generated in older versions of \XeTeX{}.
+% \begin{texnote}
+% Exactly two expansions are needed to produce the character.
+% \end{texnote}
% \end{function}
%
% \begin{variable}[added = 2011-09-05]{\c_catcode_other_space_tl}
@@ -1415,7 +1420,9 @@
% Engine-dependent definitions are now needed for the implementation. For
% \LuaTeX{} and \XeTeX{} there is engine-level support.
% They can do cases that macro emulation can't. All of those are filtered
-% out here using a primitive-based boolean expression for speed.
+% out here using a primitive-based boolean expression to avoid fixing
+% the category code of the null character used in the false branch
+% (for 8-bit engines).
% The final level is the basic definition at the engine level: the arguments
% here are integers so there is no need to worry about them too much.
% Older versions of \XeTeX{} cannot generate active characters so we filter
@@ -1465,7 +1472,7 @@
}
\else:
% \end{macrocode}
-% For engines where \tn{Ucharcat} isn't available (or emulated) then we have
+% For engines where \tn{Ucharcat} isn't available or emulated, we have
% to work in macros, and cover only the $8$-bit range. The first stage is
% to build up a |tl| containing |^^@| with each category code that can
% be accessed in this way, with an error set up for the other cases. This
@@ -1483,21 +1490,8 @@
\tl_set:Nx \l_@@_tmp_tl { \l_@@_tmp_tl }
\char_set_catcode_math_toggle:n { 0 }
\tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ }
-% \end{macrocode}
-% As \TeX{} is very unhappy if if finds an alignment character inside
-% a primitive \tn{halign} even when skipping false branches, some precautions
-% are required. \TeX{} is happy if the token is hidden inside
-% \tn{unexpanded} (which needs to be the primitive). The expansion chain here
-% is required so that the conditional gets cleaned up correctly (other code
-% assumes there is exactly one token to skip during the clean-up).
-% \begin{macrocode}
\char_set_catcode_alignment:n { 0 }
- \tl_put_right:Nn \l_@@_tmp_tl
- {
- \or:
- \__kernel_exp_not:w \exp_after:wN
- { \exp_after:wN ^^@ \exp_after:wN }
- }
+ \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ }
\tl_put_right:Nn \l_@@_tmp_tl { \or: }
\char_set_catcode_parameter:n { 0 }
\tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ }
@@ -1550,15 +1544,23 @@
%<*initex>
\int_step_function:nnN { 0 } { 255 } \@@_tmp:n
%</initex>
+% \end{macrocode}
+% As \TeX{} is very unhappy if if finds an alignment character inside
+% a primitive \tn{halign} even when skipping false branches, some
+% precautions are required. \TeX{} is happy if the token is hidden
+% between braces within \cs{if_false:} \dots{} \cs{fi:}.
+% \begin{macrocode}
\cs_new:Npn \@@_generate_aux:nnw #1#2#3 \exp_end:
{
#3
+ \if_false: { \fi:
\exp_after:wN \exp_after:wN
\exp_after:wN \exp_end:
\exp_after:wN \exp_after:wN
\if_case:w #2
\exp_last_unbraced:Nv \exp_stop_f:
{ c_@@_ \@@_int_to_roman:w #1 _tl }
+ \or: }
\fi:
}
\fi: