[latex3-commits] [git/LaTeX3-latex3-latex3] gh590: Merge branch 'main' into gh590 (d7dfb2bcf)
GitHub
noreply at github.com
Tue Apr 27 12:28:36 CEST 2021
Repository : https://github.com/latex3/latex3
On branch : gh590
Link : https://github.com/latex3/latex3/commit/d7dfb2bcf5057e4a48f703990ee7b2ca969c5e4c
>---------------------------------------------------------------
commit d7dfb2bcf5057e4a48f703990ee7b2ca969c5e4c
Merge: 9ef29b191 a4dc3331a
Author: Bruno Le Floch <blflatex at gmail.com>
Date: Tue Apr 27 12:28:36 2021 +0200
Merge branch 'main' into gh590
>---------------------------------------------------------------
d7dfb2bcf5057e4a48f703990ee7b2ca969c5e4c
l3kernel/CHANGELOG.md | 4 ++
l3kernel/l3bootstrap.dtx | 14 ++++--
l3kernel/l3coffins.dtx | 4 +-
l3kernel/l3doc.dtx | 4 +-
l3kernel/l3file.dtx | 82 +++++++++++++++++++-------------
l3kernel/l3regex.dtx | 64 ++++++++++++++++++-------
l3kernel/l3text.dtx | 55 ++++++++++++++++++---
l3kernel/testfiles/m3regex005.luatex.tlg | 41 ++++++++++++----
l3kernel/testfiles/m3regex005.lvt | 13 ++++-
l3kernel/testfiles/m3regex005.tlg | 41 ++++++++++++----
l3kernel/testfiles/m3regex005.xetex.tlg | 46 ++++++++++++++----
l3kernel/testfiles/m3text001.lvt | 8 ++++
l3kernel/testfiles/m3text001.tlg | 13 +++++
13 files changed, 299 insertions(+), 90 deletions(-)
diff --cc l3kernel/CHANGELOG.md
index 8f42358a0,570ebd586..b414439c8
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@@ -11,13 -11,14 +11,17 @@@ this project uses date-based 'snapshot
- `\seq_set_split_keep_spaces:Nnn` (see #784)
- `\tracingstacklevels`
- Color export in comma-separated format
+- `\ur{...}` escape in `l3regex` to compose regexes
### Changed
+ - Use prevailing catcodes instead of string in regex replacement (issue #621)
- `\__kernel_file_name_sanitize:n` now uses a faster `\csname`-based
approach to expand the file name.
- `\pdf_version_gset:n` for `dvips`.
+- Show printable characters explicitly in `\regex_show:n`
++- Allow quantifiers for `\u` escape in `l3regex`
+ - Improve handling of `\exp_not:n` in `\text_expand:n` (issue #875)
+ - `\file_full_name:n` now avoids calling `\pdffilesize` multiple times on the same file.
### Fixed
- Evalutate integer constants only once (issue#861)
diff --cc l3kernel/testfiles/m3regex005.luatex.tlg
index d665ec17e,32057e3e5..67aa90647
--- a/l3kernel/testfiles/m3regex005.luatex.tlg
+++ b/l3kernel/testfiles/m3regex005.luatex.tlg
@@@ -354,154 -353,29 +354,179 @@@ There were 2 missing right parentheses
> \l_tmpb_tl=.
============================================================
============================================================
-TEST 15: Catcode used by default
+TEST 15: Repetitions on \u escape
+============================================================
+The token list \l_tmpa_tl contains the tokens:
+> / (the character /)
+> \foobaz (control sequence=undefined)
+> \foobaz (control sequence=undefined)
+> y (the letter y)
+> / (the character /)
+> y (the letter y).
+<recently read> }
+l. ... }
+============================================================
+> Compiled regex variable \l_tmpb_regex:
++-branch
+ ,-group begin (no capture)
+ | char code 97 (a)
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ `-group end, repeated 0 or more times, greedy
+ ,-group begin
+ | ,-group begin
+ | | char code 66 (B)
+ | `-group end
+ | char code 97 (a)
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ | ,-group begin
+ | | char code 67 (C)
+ | `-group end
+ `-group end.
+<recently read> }
+l. ... }
+> \l_tmpa_tl=(aAaAaABaAC,BaAC,B,C)aABC(BaAC,BaAC,B,C)BBC.
+<recently read> }
+l. ... }
+============================================================
+> Compiled regex variable \l_tmpb_regex:
++-branch
+ ,-group begin (no capture)
+ | char code 97 (a)
+ +-branch
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ `-group end, repeated between 0 and 2 times, greedy
+ ,-group begin
+ | ,-group begin
+ | | char code 66 (B)
+ | `-group end
+ | ,-group begin (no capture)
+ | | char code 97 (a)
+ | +-branch
+ | | ,-group begin (no capture)
+ | | | char code 65 (A)
+ | | `-group end
+ | `-group end
+ | ,-group begin
+ | | char code 67 (C)
+ | `-group end
+ `-group end.
+<recently read> }
+l. ... }
+> \l_tmpa_tl=aAaA(aABAC,BAC,B,C)aABC(BaC,BaC,B,C)BBaAC.
+<recently read> }
+l. ... }
+============================================================
+============================================================
+TEST 16: c and u escapes with braces
+============================================================
+! LaTeX3 Error: Left braces must be escaped in '\c{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\c{...{...}' are not allowed and should be replaced by
+'\c{...\{...}'.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Left braces must be escaped in '\u{...}'.
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Erroneous variable \csname\endcsnameused!
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+> Compiled regex {\c {{}\u {{}\cD }\cU }}:
++-branch
+ control sequence \
+ Match
+ categories D, class
+ char code 125 (})
+ Match
+ categories U, class
+ char code 125 (}).
+<recently read> }
+l. ... }
+! LaTeX3 Error: Left braces must be escaped in '\u{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\u{...{...}' are not allowed and should be replaced by
+'\u{...\{...}'.
+! LaTeX3 Error: Left braces must be escaped in '\u{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\u{...{...}' are not allowed and should be replaced by
+'\u{...\{...}'.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Erroneous variable \csname\endcsnameused!
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+The token list \l_tmpa_tl contains the tokens:
+> \csname\endcsname(control sequence=undefined)
+> } (subscript character })
+> } (superscript character }).
+<recently read> }
+l. ... }
+============================================================
+Defining \x{ on line ...
+> Compiled regex {\c {\{}\u {x\{}}:
++-branch
+ control sequence \{
+ char 102 (f), catcode 11
+ char 111 (o), catcode 11
+ char 111 (o), catcode 11.
+<recently read> }
+l. ... }
+The token list \l_tmpa_tl contains the tokens:
+> \{ (control sequence=\protected macro:->\ifmmode \lbrace \else \textb\ETC.)
+> f (the letter f)
+> o (the letter o)
+> o (the letter o).
++============================================================
++============================================================
++TEST 17: Catcode used by default
+ ============================================================
+ \g__cctab_next_cctab=\catcodetable...
+ The token list \l_tmpa_tl contains the tokens:
+ > ^^M (the character ^^M)
+ > ! (the character !)
+ > @ (the character @)
+ > # (macro parameter character #)
+ > # (macro parameter character #)
+ > # (macro parameter character #)
+ > $ (math shift character $)
+ > % (the character %)
+ > $ (math shift character $)
+ > ^ (superscript character ^)
+ > & (alignment tab character &)
+ > * (the character *)
+ > { (begin-group character {)
+ > (blank space )
+ > } (end-group character })
+ > : (the character :)
+ > _ (subscript character _)
+ > ~ (active character=macro:->\nobreakspace {})
+ > \ (the character \).
<recently read> }
l. ... }
============================================================
diff --cc l3kernel/testfiles/m3regex005.lvt
index 98e0c4c32,602a50efa..482022fd4
--- a/l3kernel/testfiles/m3regex005.lvt
+++ b/l3kernel/testfiles/m3regex005.lvt
@@@ -188,45 -189,15 +189,55 @@@
\tl_log:N \l_tmpb_tl
}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\TEST { Repetitions~on~\u~escape }
+ {
+ \tl_set:Nn \l_tmpa_tl { \foobaz \foobaz y y }
+ \tl_set:Nn \l_tmpb_tl { \foobaz }
+ \regex_replace_once:nnN { \u{l_tmpb_tl}*? . y } { / \0 / } \l_tmpa_tl
+ \tl_analysis_show:N \l_tmpa_tl
+ %
+ \SEPARATOR
+ \regex_set:Nn \l_tmpa_regex { a(A) }
+ \regex_set:Nn \l_tmpb_regex { \ur{l_tmpa_regex}* ((B) \ur{l_tmpa_regex} (C)) }
+ \regex_show:N \l_tmpb_regex
+ \tl_set:Nn \l_tmpa_tl { aAaAaABaAC aABC BaAC BBC }
+ \regex_replace_all:NnN \l_tmpb_regex { (\0,\1,\2,\3) } \l_tmpa_tl
+ \tl_show:N \l_tmpa_tl
+ %
+ \SEPARATOR
+ \regex_set:Nn \l_tmpa_regex { a|(A) }
+ \regex_set:Nn \l_tmpb_regex { \ur{l_tmpa_regex}{0,2} ((B) \ur{l_tmpa_regex} (C)) }
+ \regex_show:N \l_tmpb_regex
+ \tl_set:Nn \l_tmpa_tl { aAaAaABAC aABC BaC BBaAC }
+ \regex_replace_all:NnN \l_tmpb_regex { (\0,\1,\2,\3) } \l_tmpa_tl
+ \tl_show:N \l_tmpa_tl
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\TEST { c~and~u~escapes~with~braces }
+ {
+ \regex_show:n { \c{{} \u{{} \cD} \cU} }
+ \tl_clear:N \l_tmpa_tl
+ \regex_replace_all:nnN { } { \c{{} \u{{} \cD} \cU} } \l_tmpa_tl
+ \tl_analysis_show:N \l_tmpa_tl
+ \SEPARATOR
+ \cs_new_nopar:cpn { x \iow_char:N \{ } { foo }
+ \regex_show:n { \c{ \{ } \u{ x \{ } }
+ \tl_clear:N \l_tmpa_tl
+ \regex_replace_all:nnN { } { \c{\{} \u{x\{} } \l_tmpa_tl
+ \tl_analysis_show:N \l_tmpa_tl
+ }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \TEST { Catcode~used~by~default }
+ {
+ \cctab_begin:N \c_document_cctab
+ \tl_clear:N \l_tmpa_tl
+ \regex_replace_all:nnN { } { \x0d!@#\#$\%$^&*{\ }:_\~\\ } \l_tmpa_tl
+ \tl_analysis_show:N \l_tmpa_tl
+ \cctab_end:
+ }
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\END
diff --cc l3kernel/testfiles/m3regex005.tlg
index 4fd8236f7,cc6c44cba..f658e05a4
--- a/l3kernel/testfiles/m3regex005.tlg
+++ b/l3kernel/testfiles/m3regex005.tlg
@@@ -354,154 -353,29 +354,179 @@@ There were 2 missing right parentheses
> \l_tmpb_tl=.
============================================================
============================================================
-TEST 15: Catcode used by default
+TEST 15: Repetitions on \u escape
+============================================================
+The token list \l_tmpa_tl contains the tokens:
+> / (the character /)
+> \foobaz (control sequence=undefined)
+> \foobaz (control sequence=undefined)
+> y (the letter y)
+> / (the character /)
+> y (the letter y).
+<recently read> }
+l. ... }
+============================================================
+> Compiled regex variable \l_tmpb_regex:
++-branch
+ ,-group begin (no capture)
+ | char code 97 (a)
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ `-group end, repeated 0 or more times, greedy
+ ,-group begin
+ | ,-group begin
+ | | char code 66 (B)
+ | `-group end
+ | char code 97 (a)
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ | ,-group begin
+ | | char code 67 (C)
+ | `-group end
+ `-group end.
+<recently read> }
+l. ... }
+> \l_tmpa_tl=(aAaAaABaAC,BaAC,B,C)aABC(BaAC,BaAC,B,C)BBC.
+<recently read> }
+l. ... }
+============================================================
+> Compiled regex variable \l_tmpb_regex:
++-branch
+ ,-group begin (no capture)
+ | char code 97 (a)
+ +-branch
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ `-group end, repeated between 0 and 2 times, greedy
+ ,-group begin
+ | ,-group begin
+ | | char code 66 (B)
+ | `-group end
+ | ,-group begin (no capture)
+ | | char code 97 (a)
+ | +-branch
+ | | ,-group begin (no capture)
+ | | | char code 65 (A)
+ | | `-group end
+ | `-group end
+ | ,-group begin
+ | | char code 67 (C)
+ | `-group end
+ `-group end.
+<recently read> }
+l. ... }
+> \l_tmpa_tl=aAaA(aABAC,BAC,B,C)aABC(BaC,BaC,B,C)BBaAC.
+<recently read> }
+l. ... }
+============================================================
+============================================================
+TEST 16: c and u escapes with braces
+============================================================
+! LaTeX3 Error: Left braces must be escaped in '\c{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\c{...{...}' are not allowed and should be replaced by
+'\c{...\{...}'.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Left braces must be escaped in '\u{...}'.
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Erroneous variable \csname\endcsnameused!
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+> Compiled regex {\c {{}\u {{}\cD }\cU }}:
++-branch
+ control sequence \
+ Match
+ categories D, class
+ char code 125 (})
+ Match
+ categories U, class
+ char code 125 (}).
+<recently read> }
+l. ... }
+! LaTeX3 Error: Left braces must be escaped in '\u{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\u{...{...}' are not allowed and should be replaced by
+'\u{...\{...}'.
+! LaTeX3 Error: Left braces must be escaped in '\u{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\u{...{...}' are not allowed and should be replaced by
+'\u{...\{...}'.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Erroneous variable \csname\endcsnameused!
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+The token list \l_tmpa_tl contains the tokens:
+> \csname\endcsname(control sequence=undefined)
+> } (subscript character })
+> } (superscript character }).
+<recently read> }
+l. ... }
+============================================================
+Defining \x{ on line ...
+> Compiled regex {\c {\{}\u {x\{}}:
++-branch
+ control sequence \{
+ char 102 (f), catcode 11
+ char 111 (o), catcode 11
+ char 111 (o), catcode 11.
+<recently read> }
+l. ... }
+The token list \l_tmpa_tl contains the tokens:
+> \{ (control sequence=\protected macro:->\ifmmode \lbrace \else \textb\ETC.)
+> f (the letter f)
+> o (the letter o)
+> o (the letter o).
++============================================================
++============================================================
++TEST 17: Catcode used by default
+ ============================================================
+ Defining \g__cctab_1_cctab on line ...
+ The token list \l_tmpa_tl contains the tokens:
+ > ^^M (the character ^^M)
+ > ! (the character !)
+ > @ (the character @)
+ > # (macro parameter character #)
+ > # (macro parameter character #)
+ > # (macro parameter character #)
+ > $ (math shift character $)
+ > % (the character %)
+ > $ (math shift character $)
+ > ^ (superscript character ^)
+ > & (alignment tab character &)
+ > * (the character *)
+ > { (begin-group character {)
+ > (blank space )
+ > } (end-group character })
+ > : (the character :)
+ > _ (subscript character _)
+ > ~ (active character=macro:->\nobreakspace {})
+ > \ (the character \).
<recently read> }
l. ... }
============================================================
diff --cc l3kernel/testfiles/m3regex005.xetex.tlg
index 5aba4c713,b74de5b57..c4375ffb7
--- a/l3kernel/testfiles/m3regex005.xetex.tlg
+++ b/l3kernel/testfiles/m3regex005.xetex.tlg
@@@ -280,13 -280,12 +280,18 @@@ TEST 10: Caseless matching and c
============================================================
TEST 11: Braces
============================================================
-|\{}|
+! LaTeX3 Error: Left braces must be escaped in '\u{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\u{...{...}' are not allowed and should be replaced by
+'\u{...\{...}'.
+|\csname\endcsname}|
+ The token list \l_tmpa_tl contains the tokens:
+ > \{ (control sequence=\protected macro:->\ifmmode \lbrace \else \textb\ETC.)
+ > } (the letter }).
+ <recently read> }
+ l. ... }
! LaTeX3 Error: Missing right brace inserted in replacement text.
For immediate help type H <return>.
...
@@@ -354,154 -353,29 +359,179 @@@ There were 2 missing right parentheses
> \l_tmpb_tl=.
============================================================
============================================================
+TEST 15: Repetitions on \u escape
+============================================================
+The token list \l_tmpa_tl contains the tokens:
+> / (the character /)
+> \foobaz (control sequence=undefined)
+> \foobaz (control sequence=undefined)
+> y (the letter y)
+> / (the character /)
+> y (the letter y).
+<recently read> }
+l. ... }
+============================================================
+> Compiled regex variable \l_tmpb_regex:
++-branch
+ ,-group begin (no capture)
+ | char code 97 (a)
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ `-group end, repeated 0 or more times, greedy
+ ,-group begin
+ | ,-group begin
+ | | char code 66 (B)
+ | `-group end
+ | char code 97 (a)
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ | ,-group begin
+ | | char code 67 (C)
+ | `-group end
+ `-group end.
+<recently read> }
+l. ... }
+> \l_tmpa_tl=(aAaAaABaAC,BaAC,B,C)aABC(BaAC,BaAC,B,C)BBC.
+<recently read> }
+l. ... }
+============================================================
+> Compiled regex variable \l_tmpb_regex:
++-branch
+ ,-group begin (no capture)
+ | char code 97 (a)
+ +-branch
+ | ,-group begin (no capture)
+ | | char code 65 (A)
+ | `-group end
+ `-group end, repeated between 0 and 2 times, greedy
+ ,-group begin
+ | ,-group begin
+ | | char code 66 (B)
+ | `-group end
+ | ,-group begin (no capture)
+ | | char code 97 (a)
+ | +-branch
+ | | ,-group begin (no capture)
+ | | | char code 65 (A)
+ | | `-group end
+ | `-group end
+ | ,-group begin
+ | | char code 67 (C)
+ | `-group end
+ `-group end.
+<recently read> }
+l. ... }
+> \l_tmpa_tl=aAaA(aABAC,BAC,B,C)aABC(BaC,BaC,B,C)BBaAC.
+<recently read> }
+l. ... }
+============================================================
+============================================================
+TEST 16: c and u escapes with braces
+============================================================
+! LaTeX3 Error: Left braces must be escaped in '\c{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\c{...{...}' are not allowed and should be replaced by
+'\c{...\{...}'.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Left braces must be escaped in '\u{...}'.
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Erroneous variable \csname\endcsnameused!
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+> Compiled regex {\c {{}\u {{}\cD }\cU }}:
++-branch
+ control sequence \
+ Match
+ categories D, class
+ char code 125 (})
+ Match
+ categories U, class
+ char code 125 (}).
+<recently read> }
+l. ... }
+! LaTeX3 Error: Left braces must be escaped in '\u{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\u{...{...}' are not allowed and should be replaced by
+'\u{...\{...}'.
+! LaTeX3 Error: Left braces must be escaped in '\u{...}'.
+For immediate help type H <return>.
+ ...
+l. ... }
+Constructions such as '\u{...{...}' are not allowed and should be replaced by
+'\u{...\{...}'.
+! Undefined control sequence.
+<argument> \LaTeX3 error:
+ Erroneous variable \csname\endcsnameused!
+l. ... }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+The token list \l_tmpa_tl contains the tokens:
+> \csname\endcsname(control sequence=undefined)
+> } (subscript character })
+> } (superscript character }).
+<recently read> }
+l. ... }
+============================================================
+Defining \x{ on line ...
+> Compiled regex {\c {\{}\u {x\{}}:
++-branch
+ control sequence \{
+ char 102 (f), catcode 11
+ char 111 (o), catcode 11
+ char 111 (o), catcode 11.
+<recently read> }
+l. ... }
+The token list \l_tmpa_tl contains the tokens:
+> \{ (control sequence=\protected macro:->\ifmmode \lbrace \else \textb\ETC.)
+> f (the letter f)
+> o (the letter o)
+> o (the letter o).
++============================================================
++============================================================
+ TEST 15: Catcode used by default
+ ============================================================
+ Defining \g__cctab_1_cctab on line ...
+ The token list \l_tmpa_tl contains the tokens:
+ > ^^M (the character ^^M)
+ > ! (the character !)
+ > @ (the character @)
+ > # (macro parameter character #)
+ > # (macro parameter character #)
+ > # (macro parameter character #)
+ > $ (math shift character $)
+ > % (the character %)
+ > $ (math shift character $)
+ > ^ (superscript character ^)
+ > & (alignment tab character &)
+ > * (the character *)
+ > { (begin-group character {)
+ > (blank space )
+ > } (end-group character })
+ > : (the character :)
+ > _ (subscript character _)
+ > ~ (active character=macro:->\nobreakspace {})
+ > \ (the character \).
<recently read> }
l. ... }
============================================================
More information about the latex3-commits
mailing list.