[latex3-commits] [l3svn] 07/07: (u)pTeX has added some more boxes
noreply at latex-project.org
noreply at latex-project.org
Tue Jun 7 22:48:53 CEST 2016
This is an automated email from the git hooks/post-receive script.
joseph pushed a commit to branch master
in repository l3svn.
commit dfa3a671cadd437357aae907aa44922204603723
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Tue Jun 7 21:28:35 2016 +0100
(u)pTeX has added some more boxes
---
.../xcoffins/testfiles/xcoffins003.ptex.tlg | 8 +
.../xcoffins/testfiles/xcoffins003.uptex.tlg | 8 +
l3packages/xparse/testfiles/xparse001.ptex.tlg | 1239 ++++++++++++++++++++
l3packages/xparse/testfiles/xparse001.uptex.tlg | 1239 ++++++++++++++++++++
4 files changed, 2494 insertions(+)
diff --git a/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg b/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg
index be8e07a..becab47 100644
--- a/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg
+++ b/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg
@@ -6,6 +6,7 @@ TEST 1: Test 1: rotation
============================================================
> \box72=
\hbox(50.5+45.5)x62.2222
+.\hbox(0.0+0.0)x0.0
.\hbox(50.5+45.5)x62.2222
..\mathon
..\vbox(50.5+45.5)x62.2222
@@ -160,6 +161,7 @@ TEST 1: Test 1: rotation
....\glue(\tabskip) 0.0
...\rule(0.0+0.0)x62.2222
..\mathoff
+.\hbox(0.0+0.0)x0.0
! OK.
<argument> \showbox \aaa
x\fbox {\usebox \aaa }\RotateCoffin \aaa {45}\showb...
@@ -176,6 +178,7 @@ l. ...}
.....\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
.....\hbox(50.5+45.5)x0.0
......\hbox(50.5+45.5)x62.2222
+.......\hbox(0.0+0.0)x0.0
.......\hbox(50.5+45.5)x62.2222
........\mathon
........\vbox(50.5+45.5)x62.2222
@@ -330,6 +333,7 @@ l. ...}
..........\glue(\tabskip) 0.0
.........\rule(0.0+0.0)x62.2222
........\mathoff
+.......\hbox(0.0+0.0)x0.0
.....\special{pdf:literal Q}
! OK.
<argument> ...RotateCoffin \aaa {45}\showbox \aaa
@@ -357,6 +361,7 @@ l. ...}
...........\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
...........\hbox(50.5+45.5)x0.0
............\hbox(50.5+45.5)x62.2222
+.............\hbox(0.0+0.0)x0.0
.............\hbox(50.5+45.5)x62.2222
..............\mathon
..............\vbox(50.5+45.5)x62.2222
@@ -511,6 +516,7 @@ l. ...}
................\glue(\tabskip) 0.0
...............\rule(0.0+0.0)x62.2222
..............\mathoff
+.............\hbox(0.0+0.0)x0.0
...........\special{pdf:literal Q}
.....\special{pdf:literal Q}
! OK.
@@ -556,6 +562,7 @@ TEST 2: Test 2: rotation+alignment
....................\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
....................\hbox(50.5+45.5)x0.0
.....................\hbox(50.5+45.5)x62.2222
+......................\hbox(0.0+0.0)x0.0
......................\hbox(50.5+45.5)x62.2222
.......................\mathon
.......................\vbox(50.5+45.5)x62.2222
@@ -710,6 +717,7 @@ TEST 2: Test 2: rotation+alignment
.........................\glue(\tabskip) 0.0
........................\rule(0.0+0.0)x62.2222
.......................\mathoff
+......................\hbox(0.0+0.0)x0.0
....................\special{pdf:literal Q}
..............\special{pdf:literal Q}
........\special{pdf:literal Q}
diff --git a/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg b/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg
index be8e07a..becab47 100644
--- a/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg
+++ b/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg
@@ -6,6 +6,7 @@ TEST 1: Test 1: rotation
============================================================
> \box72=
\hbox(50.5+45.5)x62.2222
+.\hbox(0.0+0.0)x0.0
.\hbox(50.5+45.5)x62.2222
..\mathon
..\vbox(50.5+45.5)x62.2222
@@ -160,6 +161,7 @@ TEST 1: Test 1: rotation
....\glue(\tabskip) 0.0
...\rule(0.0+0.0)x62.2222
..\mathoff
+.\hbox(0.0+0.0)x0.0
! OK.
<argument> \showbox \aaa
x\fbox {\usebox \aaa }\RotateCoffin \aaa {45}\showb...
@@ -176,6 +178,7 @@ l. ...}
.....\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
.....\hbox(50.5+45.5)x0.0
......\hbox(50.5+45.5)x62.2222
+.......\hbox(0.0+0.0)x0.0
.......\hbox(50.5+45.5)x62.2222
........\mathon
........\vbox(50.5+45.5)x62.2222
@@ -330,6 +333,7 @@ l. ...}
..........\glue(\tabskip) 0.0
.........\rule(0.0+0.0)x62.2222
........\mathoff
+.......\hbox(0.0+0.0)x0.0
.....\special{pdf:literal Q}
! OK.
<argument> ...RotateCoffin \aaa {45}\showbox \aaa
@@ -357,6 +361,7 @@ l. ...}
...........\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
...........\hbox(50.5+45.5)x0.0
............\hbox(50.5+45.5)x62.2222
+.............\hbox(0.0+0.0)x0.0
.............\hbox(50.5+45.5)x62.2222
..............\mathon
..............\vbox(50.5+45.5)x62.2222
@@ -511,6 +516,7 @@ l. ...}
................\glue(\tabskip) 0.0
...............\rule(0.0+0.0)x62.2222
..............\mathoff
+.............\hbox(0.0+0.0)x0.0
...........\special{pdf:literal Q}
.....\special{pdf:literal Q}
! OK.
@@ -556,6 +562,7 @@ TEST 2: Test 2: rotation+alignment
....................\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
....................\hbox(50.5+45.5)x0.0
.....................\hbox(50.5+45.5)x62.2222
+......................\hbox(0.0+0.0)x0.0
......................\hbox(50.5+45.5)x62.2222
.......................\mathon
.......................\vbox(50.5+45.5)x62.2222
@@ -710,6 +717,7 @@ TEST 2: Test 2: rotation+alignment
.........................\glue(\tabskip) 0.0
........................\rule(0.0+0.0)x62.2222
.......................\mathoff
+......................\hbox(0.0+0.0)x0.0
....................\special{pdf:literal Q}
..............\special{pdf:literal Q}
........\special{pdf:literal Q}
diff --git a/l3packages/xparse/testfiles/xparse001.ptex.tlg b/l3packages/xparse/testfiles/xparse001.ptex.tlg
new file mode 100644
index 0000000..c4697b7
--- /dev/null
+++ b/l3packages/xparse/testfiles/xparse001.ptex.tlg
@@ -0,0 +1,1239 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Joseph Wright, Frank Mittelbach, Bruno Le Floch
+============================================================
+TEST 1: Checking for existing definitions
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-already-defined"
+!
+! Command '\foo' already defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentCommand with a command that already has a
+| definition.
+| The existing definition of '\foo' will not be altered.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-not-yet-defined"
+!
+! Command '\foo' not yet defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentCommand with a command that was never defined.
+| A new command '\foo' will be created.
+|...............................................
+> \foo=\protected macro:->First definition.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 2: Commands with simple mandatory arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=\protected macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mm' on line ....
+.................................................
+> \foo=\protected macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmmm' on line ....
+.................................................
+> \foo=\protected
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 3: Command with too many arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'mmmmmmmmmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "kernel/bad-number-of-arguments"
+!
+! Function '\foo' cannot be defined with 10 arguments.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| LaTeX has been asked to define a function '\foo' with 10 arguments. TeX
+| allows between 0 and 9 arguments for a single function.
+|...............................................
+> \foo=undefined.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 4: Commands with one long mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_2:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_3:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_4:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_5:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_6:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_7:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_8:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 5: Commands with one processed mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. '>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_process_arg:n {\foo }\__xparse_grab_m:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_2:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_3:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_4:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_5:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_6:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_7:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_8:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 6: Arguments read up to first brace
+============================================================
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 7: Various mandatory combinations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'lm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_l:w \__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mlm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_l:w \__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'u{end}u{stop!}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_u:w {end}\__xparse_grab_u:w {stop!}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'lll' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_l:w \__xparse_grab_l:w \__xparse_grab_l:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+l>{\foo }u{end}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_l_long:w \__xparse_process_arg:n {\foo }\__xparse_grab_u:w
+{end}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 8: Optional argument creation
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'som' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_t:w *\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 't+d()+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_t:w +\__xparse_grab_D:w (){-NoValue-}\__xparse_grab_m_long:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+t\par O{default}mmm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_t_long:w \par \__xparse_grab_D:w
+[]{default}\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'momo' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mgom' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {-NoValue-}\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mG{test}sm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {test}\__xparse_grab_t:w
+*\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 9: Unknown argument types
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'mmn' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'n' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'n' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'abc' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'a' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'a' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'b' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'b' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'c' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'c' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 10: Some valid expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\long macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'om' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+o+m' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'sm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_t:w \foo (arg 1)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'osm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_t:w \foo (arg 2)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 11: Not valid as expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'mo' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+!
+! Argument specification for expandable command ends with optional argument.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_m:w \__xparse_expandable_grab_D:w
+\foo (arg 2) []{-NoValue-}\__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+mmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+!
+! Inconsistent long arguments for expandable command.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+!
+! Inconsistent long arguments for expandable command.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'o+m' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+!
+! Inconsistent long arguments for expandable command.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'r()o' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+!
+! Argument specification for expandable command ends with optional argument.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_R:w \foo (arg 1)
+(){-NoValue-}\__xparse_expandable_grab_D:w \foo (arg 2)
+[]{-NoValue-}\__xparse_grab_expandable_end:wN \foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 12: Checking for existing environments
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-already-defined"
+!
+! Environment 'foo' already defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentEnvironment with an environment that already has a
+| definition.
+| The existing definition of 'foo' will be overwritten.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-not-yet-defined"
+!
+! Environment 'foo' not yet defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentEnvironment with an environment that was never
+| defined.
+| A new environment 'foo' will be created.
+|...............................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:->\cs_set_nopar:Npx \environment
+foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }First.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 13: Valid environment declarations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-environment"
+.
+. Defining environment 'foo' with sig. 'mmm' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'som' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'so+m' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'u{stop}om' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_u:w
+{stop}\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl
+.
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'moo' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\__xparse_grab_D_trailing:w
+[]{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 14: Environment groups: should show "outside" and 1
+============================================================
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 15: Passing args to end of environments: display correct args
+============================================================
+> (A).
+<recently read> }
+l. ...}
+> (A)(B).
+<recently read> }
+l. ...}
+> (A)(B)(C).
+<recently read> }
+l. ...}
+> (A)(-NoValue-)(-NoValue-).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 16: Nested environments
+============================================================
+> \@currenvir=foo.
+<recently read> }
+l. ...}
+> \@currenvir=document.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 17: Passing arguments to the end with more complex cases
+============================================================
+> \box57=
+\hbox(6.94444+1.94444)x142.50034
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 18: Expansion at end of environment
+============================================================
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line ....
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line ....
+> \box57=
+\hbox(8.5+3.5)x58.44452
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
diff --git a/l3packages/xparse/testfiles/xparse001.uptex.tlg b/l3packages/xparse/testfiles/xparse001.uptex.tlg
new file mode 100644
index 0000000..c4697b7
--- /dev/null
+++ b/l3packages/xparse/testfiles/xparse001.uptex.tlg
@@ -0,0 +1,1239 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Joseph Wright, Frank Mittelbach, Bruno Le Floch
+============================================================
+TEST 1: Checking for existing definitions
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-already-defined"
+!
+! Command '\foo' already defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentCommand with a command that already has a
+| definition.
+| The existing definition of '\foo' will not be altered.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-not-yet-defined"
+!
+! Command '\foo' not yet defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentCommand with a command that was never defined.
+| A new command '\foo' will be created.
+|...............................................
+> \foo=\protected macro:->First definition.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 2: Commands with simple mandatory arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=\protected macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mm' on line ....
+.................................................
+> \foo=\protected macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmmm' on line ....
+.................................................
+> \foo=\protected
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 3: Command with too many arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'mmmmmmmmmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "kernel/bad-number-of-arguments"
+!
+! Function '\foo' cannot be defined with 10 arguments.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| LaTeX has been asked to define a function '\foo' with 10 arguments. TeX
+| allows between 0 and 9 arguments for a single function.
+|...............................................
+> \foo=undefined.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 4: Commands with one long mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_2:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_3:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_4:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_5:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_6:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_7:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_8:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 5: Commands with one processed mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. '>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_process_arg:n {\foo }\__xparse_grab_m:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_2:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_3:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_4:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_5:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_6:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_7:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_8:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 6: Arguments read up to first brace
+============================================================
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 7: Various mandatory combinations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'lm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_l:w \__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mlm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_l:w \__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'u{end}u{stop!}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_u:w {end}\__xparse_grab_u:w {stop!}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'lll' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_l:w \__xparse_grab_l:w \__xparse_grab_l:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+l>{\foo }u{end}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_l_long:w \__xparse_process_arg:n {\foo }\__xparse_grab_u:w
+{end}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 8: Optional argument creation
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'som' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_t:w *\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 't+d()+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_t:w +\__xparse_grab_D:w (){-NoValue-}\__xparse_grab_m_long:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+t\par O{default}mmm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_t_long:w \par \__xparse_grab_D:w
+[]{default}\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'momo' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mgom' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {-NoValue-}\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mG{test}sm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {test}\__xparse_grab_t:w
+*\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 9: Unknown argument types
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'mmn' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'n' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'n' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'abc' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'a' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'a' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'b' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'b' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+!
+! Unknown argument type 'c' replaced by 'm'.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The letter 'c' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 10: Some valid expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\long macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'om' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+o+m' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'sm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_t:w \foo (arg 1)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'osm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_t:w \foo (arg 2)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 11: Not valid as expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+.
+. Defining command \foo with sig. 'mo' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+!
+! Argument specification for expandable command ends with optional argument.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_m:w \__xparse_expandable_grab_D:w
+\foo (arg 2) []{-NoValue-}\__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. '+mmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+!
+! Inconsistent long arguments for expandable command.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+!
+! Inconsistent long arguments for expandable command.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'o+m' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+!
+! Inconsistent long arguments for expandable command.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'r()o' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+!
+! Argument specification for expandable command ends with optional argument.
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+|
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_R:w \foo (arg 1)
+(){-NoValue-}\__xparse_expandable_grab_D:w \foo (arg 2)
+[]{-NoValue-}\__xparse_grab_expandable_end:wN \foo code \q__xparse \foo .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 12: Checking for existing environments
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-already-defined"
+!
+! Environment 'foo' already defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentEnvironment with an environment that already has a
+| definition.
+| The existing definition of 'foo' will be overwritten.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-not-yet-defined"
+!
+! Environment 'foo' not yet defined!
+!
+! See the LaTeX3 documentation for further information.
+!
+! For immediate help type H <return>.
+!...............................................
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentEnvironment with an environment that was never
+| defined.
+| A new environment 'foo' will be created.
+|...............................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:->\cs_set_nopar:Npx \environment
+foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }First.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 13: Valid environment declarations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-environment"
+.
+. Defining environment 'foo' with sig. 'mmm' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'som' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'so+m' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'u{stop}om' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_u:w
+{stop}\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl
+.
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+.
+. Redefining environment 'foo' with sig. 'moo' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo }\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\__xparse_grab_D_trailing:w
+[]{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 14: Environment groups: should show "outside" and 1
+============================================================
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 15: Passing args to end of environments: display correct args
+============================================================
+> (A).
+<recently read> }
+l. ...}
+> (A)(B).
+<recently read> }
+l. ...}
+> (A)(B)(C).
+<recently read> }
+l. ...}
+> (A)(-NoValue-)(-NoValue-).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 16: Nested environments
+============================================================
+> \@currenvir=foo.
+<recently read> }
+l. ...}
+> \@currenvir=document.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 17: Passing arguments to the end with more complex cases
+============================================================
+> \box57=
+\hbox(6.94444+1.94444)x142.50034
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
+============================================================
+TEST 18: Expansion at end of environment
+============================================================
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line ....
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line ....
+> \box57=
+\hbox(8.5+3.5)x58.44452
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+! OK.
+<argument> \l_tmpa_box
+l. ... }
+============================================================
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the latex3-commits
mailing list