[latex3-commits] [git/LaTeX3-latex3-latex3] xparse: Improve xparse messages, especially for environments (bb50b33)

Bruno Le Floch bruno at le-floch.fr
Wed Feb 27 17:41:06 CET 2019


Repository : https://github.com/latex3/latex3
On branch  : xparse
Link       : https://github.com/latex3/latex3/commit/bb50b335940fe1ce9f0a2cc54f617e630e31001e

>---------------------------------------------------------------

commit bb50b335940fe1ce9f0a2cc54f617e630e31001e
Author: Bruno Le Floch <bruno at le-floch.fr>
Date:   Wed Feb 27 17:41:06 2019 +0100

    Improve xparse messages, especially for environments


>---------------------------------------------------------------

bb50b335940fe1ce9f0a2cc54f617e630e31001e
 l3packages/CHANGELOG.md                          |    2 +-
 l3packages/xparse/testfiles/xparse003.tlg        |   46 +++---
 l3packages/xparse/testfiles/xparse004.luatex.tlg |   72 ++++-----
 l3packages/xparse/testfiles/xparse004.tlg        |   72 ++++-----
 l3packages/xparse/testfiles/xparse005.tlg        |   74 +++++----
 l3packages/xparse/xparse.dtx                     |  173 ++++++++++++----------
 6 files changed, 213 insertions(+), 226 deletions(-)

diff --git a/l3packages/CHANGELOG.md b/l3packages/CHANGELOG.md
index 16a4b7d..42253d6 100644
--- a/l3packages/CHANGELOG.md
+++ b/l3packages/CHANGELOG.md
@@ -12,7 +12,7 @@ this project uses date-based 'snapshot' version identifiers.
 
 ### Changed
 - `xparse`: make \IfBooleanTF safer
-- `xparse`: clearer error messages
+- `xparse`: clearer error messages, especially for environments
 
 ## [2018-09-24]
 
diff --git a/l3packages/xparse/testfiles/xparse003.tlg b/l3packages/xparse/testfiles/xparse003.tlg
index b7be5e0..7e33a16 100644
--- a/l3packages/xparse/testfiles/xparse003.tlg
+++ b/l3packages/xparse/testfiles/xparse003.tlg
@@ -8,40 +8,37 @@ I got '\foo*-%#^^-{}
 I got '\foo*-%^^-{}
 I got '\foo[ak]-%-{}
 I got '\foo[a]-bcd-{de}
-! LaTeX3 Error: The verbatim command '\foo ' cannot be used inside an
-(LaTeX3)        argument.
+! LaTeX3 Error: The verbatim command '\foo' cannot be used inside an argument.
 For immediate help type H <return>.
  ...                                              
 l. ...\use:n {\foo*+&#~+}
-The command '\foo ' takes a verbatim argument. It may not appear within the
+The command '\foo' takes a verbatim argument. It may not appear within the
 argument of another function. It received an illegal token '##'.
 LaTeX will ignore '+&'.
 I got '\foo*--NoValue--{##}
-! LaTeX3 Error: The verbatim command '\foo ' cannot be used inside an
-(LaTeX3)        argument.
+! LaTeX3 Error: The verbatim command '\foo' cannot be used inside an argument.
 For immediate help type H <return>.
  ...                                              
 l. ...\use:n {\foo[\ab]+\ab+}
-The command '\foo ' takes a verbatim argument. It may not appear within the
+The command '\foo' takes a verbatim argument. It may not appear within the
 argument of another function. It received an illegal token '\ab '.
 LaTeX will ignore '+'.
 I got '\foo[\ab ]--NoValue--{\ab }
-! LaTeX3 Error: The verbatim command '\foo ' cannot be used inside an
-(LaTeX3)        argument.
+! LaTeX3 Error: The verbatim command '\foo' cannot be used inside an argument.
 For immediate help type H <return>.
  ...                                              
 l. ...\use:n {\foo\abc\ }
-The command '\foo ' takes a verbatim argument. It may not appear within the
+The command '\foo' takes a verbatim argument. It may not appear within the
 argument of another function. It received an illegal token '\abc '.
 LaTeX will ignore ''.
 I got '\foo--NoValue--{\abc }
-! LaTeX3 Error: Verbatim argument of '\foo ' ended by end of line.
+! LaTeX3 Error: Verbatim argument of command '\foo' ended by end of line.
 For immediate help type H <return>.
  ...                                              
 l. ...\foo+a
-The verbatim argument of '\foo ' cannot contain more than one line, but the
-end of the current line has been reached. You may have forgotten the closing
-delimiter.
+The verbatim argument of the command '\foo' cannot contain more than one line,
+but the end of the current line has been reached. You may have forgotten the
+closing delimiter.
 LaTeX will ignore '+a'.
 I got '\foo--NoValue--{+}
 I got '\foo-b-{}
@@ -51,22 +48,21 @@ I got '\foo-%#$|+-{}
 I got '\foo-@#${%{$}#}-{}
 I got '\foo-{{}}-{}
 I got '\foo--{}
-! LaTeX3 Error: Verbatim argument of '\foo ' ended by end of line.
+! LaTeX3 Error: Verbatim argument of command '\foo' ended by end of line.
 For immediate help type H <return>.
  ...                                              
 l. ...\foo{
-The verbatim argument of '\foo ' cannot contain more than one line, but the
-end of the current line has been reached. You may have forgotten the closing
-delimiter.
+The verbatim argument of the command '\foo' cannot contain more than one line,
+but the end of the current line has been reached. You may have forgotten the
+closing delimiter.
 LaTeX will ignore '{'.
 I got '\foo--NoValue--{}
-! LaTeX3 Error: The verbatim command '\foo ' cannot be used inside an
-(LaTeX3)        argument.
+! LaTeX3 Error: The verbatim command '\foo' cannot be used inside an argument.
 For immediate help type H <return>.
  ...                                              
 l. ...\foo#
            {}
-The command '\foo ' takes a verbatim argument. It may not appear within the
+The command '\foo' takes a verbatim argument. It may not appear within the
 argument of another function. It received an illegal token '##'.
 LaTeX will ignore ''.
 I got '\foo--NoValue--{##}
@@ -87,20 +83,18 @@ I've got \foo--{}--
 I've got \foo-
 -{ }-
 -
-! LaTeX3 Error: The verbatim command '\foo ' cannot be used inside an
-(LaTeX3)        argument.
+! LaTeX3 Error: The verbatim command '\foo' cannot be used inside an argument.
 For immediate help type H <return>.
  ...                                              
 l. ...\foo#
-The command '\foo ' takes a verbatim argument. It may not appear within the
+The command '\foo' takes a verbatim argument. It may not appear within the
 argument of another function. It received an illegal token '##'.
 LaTeX will ignore ''.
-! LaTeX3 Error: The verbatim command '\foo ' cannot be used inside an
-(LaTeX3)        argument.
+! LaTeX3 Error: The verbatim command '\foo' cannot be used inside an argument.
 For immediate help type H <return>.
  ...                                              
 l. ...\foo#
-The command '\foo ' takes a verbatim argument. It may not appear within the
+The command '\foo' takes a verbatim argument. It may not appear within the
 argument of another function. It received an illegal token '##'.
 LaTeX will ignore ''.
 I've got \foo--NoValue----NoValue--
diff --git a/l3packages/xparse/testfiles/xparse004.luatex.tlg b/l3packages/xparse/testfiles/xparse004.luatex.tlg
index 0d026b2..11bf2cb 100644
--- a/l3packages/xparse/testfiles/xparse004.luatex.tlg
+++ b/l3packages/xparse/testfiles/xparse004.luatex.tlg
@@ -24,86 +24,76 @@ TEST 2: Basic definitions R-type arguments
 ============================================================
 TEST 3: r-type argument errors
 ============================================================
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (-NoValue-)(-NoValue-)(there)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (nothing)(-NoValue-)(there)
-! LaTeX3 Error: Failed to find required argument starting with '[' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '['. LaTeX did
+The current command '\foo' expects an argument starting with '['. LaTeX did
 not find it, and will insert a default value to be processed.
 (stuff)(is)(-NoValue-)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (-NoValue-)(-NoValue-)
 ============================================================
 ============================================================
 TEST 4: R-type argument errors
 ============================================================
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (-NoValue-)(drat)(there)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (nothing)(drat)(there)
-! LaTeX3 Error: Failed to find required argument starting with '[' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '['. LaTeX did
+The current command '\foo' expects an argument starting with '['. LaTeX did
 not find it, and will insert a default value to be processed.
 (stuff)(is)(drat)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (drat)(drat)
 ============================================================
@@ -529,24 +519,22 @@ TEST 11: SplitList
 ============================================================
 TEST 12: Test ## in argument specification
 ============================================================
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 1|##|\BooleanFalse |{1##}{2##}|...|A|##|C|D
 ##|1|\BooleanFalse |{1##}{2##}|...|A|B|C|D
 ##|##|\BooleanTrue |{1##}{2##}|...|A|B|C|D
 ##|##|\BooleanFalse |{1##}{1}|...|A|B|C|D
 1|2|\BooleanTrue |{3}{4}|...|A|B|C|D
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 1|##|\BooleanFalse |{1##}{2##}|...|A|##|C|D
 ##|1|\BooleanFalse |{1##}{2##}|...|A|B|C|D
@@ -567,12 +555,12 @@ TEST 13: Defaults referring to other arguments
 \A |{\B }{2}\C \A |{\B }{2}|{\B }{2}\C |\C 
 \A |\A |{1}{2}|{1}{2}\B |\B 
 \A |\A |{1}{2}|\B |\C 
-! LaTeX3 Error: Circular dependency in defaults of '\foo '.
+! LaTeX3 Error: Defaults of command '\foo' have circular dependency.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The default values of two or more arguments of '\foo ' depend on each other in
-a way that cannot be resolved.
+The default values of two or more arguments of the command '\foo' depend on
+each other in a way that cannot be resolved.
 {1}{\A }\B {1}{\A }\B {1}{\A }\B {-NoValue-}{\A }\B -NoValue-|{1}{\A }\B {1}{\A }\B {1}{\A }\B {1}{\A }\B -NoValue--NoValue-|{1}{\A }|{1}{\A }\B |\B 
 -NoValue-|-NoValue-|{1}{2}||\B 
 \A |{\B }{\C }\D \A |{\B }{\C }|{\B }{\C }\D |\D 
@@ -587,7 +575,7 @@ TEST 14: Test ## in expandable argument specification
 ============================================================
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
-                Failed to find required argument starting with '(' for command 
+                Missing required argument for \foobar.
 l. ...  }
 The control sequence at the end of the top line
 of your error message was never \def'ed. If you have
@@ -604,7 +592,7 @@ TEST 15: Refer to other args (expandable)
 ============================================================
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
-                Circular dependency in defaults of '\foobar  '.
+                Defaults of \foobar have circular dependency.
 l. ...  }
 The control sequence at the end of the top line
 of your error message was never \def'ed. If you have
@@ -613,7 +601,7 @@ spelling (e.g., `I\hbox'). Otherwise just continue,
 and I'll forget about whatever was undefined.
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
-                Circular dependency in defaults of '\foobar  '.
+                Defaults of \foobar have circular dependency.
 l. ...  }
 The control sequence at the end of the top line
 of your error message was never \def'ed. If you have
diff --git a/l3packages/xparse/testfiles/xparse004.tlg b/l3packages/xparse/testfiles/xparse004.tlg
index bfd1983..8adce8c 100644
--- a/l3packages/xparse/testfiles/xparse004.tlg
+++ b/l3packages/xparse/testfiles/xparse004.tlg
@@ -24,86 +24,76 @@ TEST 2: Basic definitions R-type arguments
 ============================================================
 TEST 3: r-type argument errors
 ============================================================
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (-NoValue-)(-NoValue-)(there)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (nothing)(-NoValue-)(there)
-! LaTeX3 Error: Failed to find required argument starting with '[' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '['. LaTeX did
+The current command '\foo' expects an argument starting with '['. LaTeX did
 not find it, and will insert a default value to be processed.
 (stuff)(is)(-NoValue-)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (-NoValue-)(-NoValue-)
 ============================================================
 ============================================================
 TEST 4: R-type argument errors
 ============================================================
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (-NoValue-)(drat)(there)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (nothing)(drat)(there)
-! LaTeX3 Error: Failed to find required argument starting with '[' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '['. LaTeX did
+The current command '\foo' expects an argument starting with '['. LaTeX did
 not find it, and will insert a default value to be processed.
 (stuff)(is)(drat)
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 (drat)(drat)
 ============================================================
@@ -529,24 +519,22 @@ TEST 11: SplitList
 ============================================================
 TEST 12: Test ## in argument specification
 ============================================================
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 1|##|\BooleanFalse |{1##}{2##}|...|A|##|C|D
 ##|1|\BooleanFalse |{1##}{2##}|...|A|B|C|D
 ##|##|\BooleanTrue |{1##}{2##}|...|A|B|C|D
 ##|##|\BooleanFalse |{1##}{1}|...|A|B|C|D
 1|2|\BooleanTrue |{3}{4}|...|A|B|C|D
-! LaTeX3 Error: Failed to find required argument starting with '(' for command
-(LaTeX3)        '\foo '.
+! LaTeX3 Error: Missing required argument for command '\foo'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The current command '\foo ' expects an argument starting with '('. LaTeX did
+The current command '\foo' expects an argument starting with '('. LaTeX did
 not find it, and will insert a default value to be processed.
 1|##|\BooleanFalse |{1##}{2##}|...|A|##|C|D
 ##|1|\BooleanFalse |{1##}{2##}|...|A|B|C|D
@@ -567,12 +555,12 @@ TEST 13: Defaults referring to other arguments
 \A |{\B }{2}\C \A |{\B }{2}|{\B }{2}\C |\C 
 \A |\A |{1}{2}|{1}{2}\B |\B 
 \A |\A |{1}{2}|\B |\C 
-! LaTeX3 Error: Circular dependency in defaults of '\foo '.
+! LaTeX3 Error: Defaults of command '\foo' have circular dependency.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The default values of two or more arguments of '\foo ' depend on each other in
-a way that cannot be resolved.
+The default values of two or more arguments of the command '\foo' depend on
+each other in a way that cannot be resolved.
 {1}{\A }\B {1}{\A }\B {1}{\A }\B {-NoValue-}{\A }\B -NoValue-|{1}{\A }\B {1}{\A }\B {1}{\A }\B {1}{\A }\B -NoValue--NoValue-|{1}{\A }|{1}{\A }\B |\B 
 -NoValue-|-NoValue-|{1}{2}||\B 
 \A |{\B }{\C }\D \A |{\B }{\C }|{\B }{\C }\D |\D 
@@ -587,7 +575,7 @@ TEST 14: Test ## in expandable argument specification
 ============================================================
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
-                           Failed to find required argument starting with '(...
+                           Missing required argument for \foobar.
 l. ...  }
 The control sequence at the end of the top line
 of your error message was never \def'ed. If you have
@@ -604,7 +592,7 @@ TEST 15: Refer to other args (expandable)
 ============================================================
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
-                           Circular dependency in defaults of '\foobar  '.
+                           Defaults of \foobar have circular dependency.
 l. ...  }
 The control sequence at the end of the top line
 of your error message was never \def'ed. If you have
@@ -613,7 +601,7 @@ spelling (e.g., `I\hbox'). Otherwise just continue,
 and I'll forget about whatever was undefined.
 ! Undefined control sequence.
 <argument> \LaTeX3 error: 
-                           Circular dependency in defaults of '\foobar  '.
+                           Defaults of \foobar have circular dependency.
 l. ...  }
 The control sequence at the end of the top line
 of your error message was never \def'ed. If you have
diff --git a/l3packages/xparse/testfiles/xparse005.tlg b/l3packages/xparse/testfiles/xparse005.tlg
index 6c595db..2dab2fe 100644
--- a/l3packages/xparse/testfiles/xparse005.tlg
+++ b/l3packages/xparse/testfiles/xparse005.tlg
@@ -149,13 +149,13 @@ l. ...  }
 The letter 'b' can only be used in environment argument specifications, not
 for commands.
 LaTeX will ignore this entire definition.
-! LaTeX3 Error: In the definition of 'environment env3', b (body) argument
+! LaTeX3 Error: In the definition of environment 'env3', b (body) argument
 (LaTeX3)        must be last.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
 The 'body' argument type is followed by 'm' in the argument specification of
-'environment env3'. This is not allowed.
+the environment 'env3'. This is not allowed.
 LaTeX will ignore this entire definition.
 ============================================================
 ============================================================
@@ -175,16 +175,15 @@ l. ...  }
 The argument specification provided was not valid: one or more mandatory
 pieces of information were missing.
 LaTeX will ignore this entire definition.
-! LaTeX3 Error: Bad argument specification 'D[]' for command '\environment
-(LaTeX3)        testA'.
+! LaTeX3 Error: Bad argument specification 'D[]' for environment 'testA'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
 The argument specification provided was not valid: one or more mandatory
 pieces of information were missing.
 LaTeX will ignore this entire definition.
-! LaTeX3 Error: Bad argument specification '!+>{\TrimSpaces }' for command
-(LaTeX3)        '\environment testA'.
+! LaTeX3 Error: Bad argument specification '!+>{\TrimSpaces }' for environment
+(LaTeX3)        'testA'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
@@ -198,8 +197,8 @@ For immediate help type H <return>.
 l. ...  }
 The prefix '!' can only apply to trailing optional arguments.
 LaTeX will ignore this entire definition.
-! LaTeX3 Error: Prefix '!' used before mandatory argument 'm' of command
-(LaTeX3)        '\environment testA'.
+! LaTeX3 Error: Prefix '!' used before mandatory argument 'm' of environment
+(LaTeX3)        'testA'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
@@ -214,7 +213,7 @@ The argument specification provided has more than 9 arguments. This cannot be
 implemented.
 LaTeX will ignore this entire definition.
 ! LaTeX3 Error: Too many arguments in argument specification 'mmmmmmmmmmmm' of
-(LaTeX3)        command '\environment testA'.
+(LaTeX3)        environment 'testA'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
@@ -237,7 +236,7 @@ l. ...  }
 The argument specification provided has two markers '!' applying to the same
 argument; these are redundant.
 ! LaTeX3 Error: Two '!' apply to the same argument in argument specification
-(LaTeX3)        of command '\environment testA'.
+(LaTeX3)        of environment 'testA'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
@@ -249,8 +248,7 @@ For immediate help type H <return>.
 l. ...  }
 The letter 'X' does not specify a known argument type.
 LaTeX will ignore this entire definition.
-! LaTeX3 Error: Unknown argument type 'X' for the command '\environment
-(LaTeX3)        testA'.
+! LaTeX3 Error: Unknown argument type 'X' for the environment 'testA'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
@@ -411,45 +409,45 @@ TEST 10: Arg spec
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-You have asked for the argument specification for a command '\space', but this
-is not a command defined using xparse.
+You have asked for the argument specification for the command '\space', but
+this was not defined using xparse.
 macro:->
 ! LaTeX3 Error: Unknown document command '\undefined'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-You have asked for the argument specification for a command '\undefined', but
-it is not defined.
+You have asked for the argument specification for the command '\undefined',
+but it is not defined.
 ! LaTeX3 Error: Environment 'verbatim' not defined using xparse.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-You have asked for the argument specification for an environment 'verbatim',
-but this is not an environment defined using xparse.
+You have asked for the argument specification for the environment 'verbatim',
+but this was not defined using xparse.
 macro:->
 ! LaTeX3 Error: Unknown document environment 'undefined'.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-You have asked for the argument specification for an environment 'undefined',
+You have asked for the argument specification for the environment 'undefined',
 but it is not defined.
 ============================================================
 ============================================================
 TEST 11: Run-time errors
 ============================================================
-! LaTeX3 Error: Circular dependency in defaults of '\testA '.
+! LaTeX3 Error: Defaults of command '\testA' have circular dependency.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The default values of two or more arguments of '\testA ' depend on each other
-in a way that cannot be resolved.
+The default values of two or more arguments of the command '\testA' depend on
+each other in a way that cannot be resolved.
 \C \E \C \E \C \E \C \E -NoValue-|\C \E \C \E \C \E \C \E -NoValue--NoValue-|\C |\C \E |\E 
-! LaTeX3 Error: Circular dependency in defaults of '\environment testB '.
+! LaTeX3 Error: Defaults of environment 'testB' have circular dependency.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The default values of two or more arguments of '\environment testB ' depend on
-each other in a way that cannot be resolved.
+The default values of two or more arguments of the environment 'testB' depend
+on each other in a way that cannot be resolved.
 \C \E \C \E \C \E \C \E -NoValue-|\C \E \C \E \C \E \C \E -NoValue--NoValue-|\C |\C \E |\E 
 ! LaTeX3 Error: Too many ',' tokens when trying to split argument.
 For immediate help type H <return>.
@@ -463,44 +461,42 @@ For immediate help type H <return>.
 l. ...  }
 LaTeX was asked to split the input 'a,b,c,d' at each occurrence of the token
 ',', up to a maximum of 3 parts. There were too many ',' tokens.
-! LaTeX3 Error: The verbatim command '\testE ' cannot be used inside an
+! LaTeX3 Error: The verbatim command '\testE' cannot be used inside an
 (LaTeX3)        argument.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The command '\testE ' takes a verbatim argument. It may not appear within the
+The command '\testE' takes a verbatim argument. It may not appear within the
 argument of another function. It received an illegal token '\TYPE '.
 LaTeX will ignore '+'.
 -NoValue-
 +
-! LaTeX3 Error: The verbatim command '\environment testF ' cannot be used
-(LaTeX3)        inside an argument.
+! LaTeX3 Error: The verbatim environment 'testF' cannot be used inside an
+(LaTeX3)        argument.
 For immediate help type H <return>.
  ...                                              
 l. ...  }
-The command '\environment testF ' takes a verbatim argument. It may not appear
-within the argument of another function. It received an illegal token '\TYPE
-'.
+The environment 'testF' takes a verbatim argument. It may not appear within
+the argument of another function. It received an illegal token '\TYPE '.
 LaTeX will ignore '+'.
 -NoValue-
 +
 ============================================================
-! LaTeX3 Error: Verbatim argument of '\testG ' ended by end of line.
+! LaTeX3 Error: Verbatim argument of command '\testG' ended by end of line.
 For immediate help type H <return>.
  ...                                              
 l. ...\testG+
-The verbatim argument of '\testG ' cannot contain more than one line, but the
-end of the current line has been reached. You may have forgotten the closing
-delimiter.
+The verbatim argument of the command '\testG' cannot contain more than one
+line, but the end of the current line has been reached. You may have forgotten
+the closing delimiter.
 LaTeX will ignore '+'.
 -NoValue-
 +
-! LaTeX3 Error: Verbatim argument of '\environment testH ' ended by end of
-(LaTeX3)        line.
+! LaTeX3 Error: Verbatim argument of environment 'testH' ended by end of line.
 For immediate help type H <return>.
  ...                                              
 l. ...\begin{testH}+
-The verbatim argument of '\environment testH ' cannot contain more than one
+The verbatim argument of the environment 'testH' cannot contain more than one
 line, but the end of the current line has been reached. You may have forgotten
 the closing delimiter.
 LaTeX will ignore '+'.
diff --git a/l3packages/xparse/xparse.dtx b/l3packages/xparse/xparse.dtx
index 2580216..4a8447b 100644
--- a/l3packages/xparse/xparse.dtx
+++ b/l3packages/xparse/xparse.dtx
@@ -1164,13 +1164,16 @@
     \@@_declare_cmd_internal:Nnn #1 {#2}
   }
 %    \end{macrocode}
+%   At definition time, the variable \cs{l_@@_fn_tl} is only used for error messages.
 %   The real business of defining a document command starts with setting up
 %   the appropriate name, then normalizing the argument specification to get rid of
-%   shorthands (this step also counts the number of mandatory arguments).
+%   shorthands.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_declare_cmd_internal:Nnn #1#2#3
   {
     \tl_set:Nx \l_@@_function_tl { \cs_to_str:N #1 }
+    \tl_set:Nx \l_@@_fn_tl
+      { \exp_not:c { \l_@@_function_tl \c_space_tl } }
     \@@_normalize_arg_spec:n {#2}
     \exp_args:No \@@_prepare_signature:n \l_@@_arg_spec_tl
     \@@_declare_cmd_code:Nnn #1 {#2} {#3}
@@ -1456,7 +1459,7 @@
 \cs_new_protected:Npn \@@_defaults_error:w \q_recursion_stop
   {
     \__kernel_msg_error:nnx { xparse } { loop-in-defaults }
-      { \exp_after:wN \token_to_str:N \l_@@_fn_tl }
+      { \@@_environment_or_command: }
   }
 %    \end{macrocode}
 %   To construct \cs{@@_tmp:w}, first go through the arguments
@@ -1572,8 +1575,9 @@
     \@@_end_expandable_defaults:nnnNNn {#1} { } {#1} #2#3
       { } { } { } { } { } { } { } { } { } { }
       {
-        \__kernel_msg_expandable_error:nnn
-          { xparse } { loop-in-defaults } {#4}
+        \__kernel_msg_expandable_error:nnf
+          { xparse } { loop-in-defaults }
+          { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N #4 } }
         \use_iv:nnnn
       }
     \q_stop
@@ -1671,7 +1675,7 @@
     \int_compare:nNnT \l_@@_current_arg_int > 9
       {
         \__kernel_msg_error:nnxx { xparse } { too-many-arguments }
-          { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
         \@@_bad_def:wn
       }
     \bool_if:NT \l_@@_expandable_bool
@@ -1695,7 +1699,7 @@
     \cs_if_exist_use:cF { @@_normalize_type_ \tl_to_str:n {#1} :w }
       {
         \__kernel_msg_error:nnxx { xparse } { unknown-argument-type }
-          { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
         \@@_bad_def:wn
       }
   }
@@ -1783,7 +1787,7 @@
     \bool_if:NT \l_@@_long_bool
       {
         \__kernel_msg_error:nnxx { xparse } { two-markers }
-          { \iow_char:N \\ \l_@@_function_tl } { + }
+          { \@@_environment_or_command: } { + }
         \@@_bad_def:wn
       }
     \bool_set_true:N \l_@@_long_bool
@@ -1796,7 +1800,7 @@
     \bool_if:NT \l_@@_obey_spaces_bool
       {
         \__kernel_msg_error:nnxx { xparse } { two-markers }
-          { \iow_char:N \\ \l_@@_function_tl } { ! }
+          { \@@_environment_or_command: } { ! }
         \@@_bad_def:wn
       }
     \bool_set_true:N \l_@@_obey_spaces_bool
@@ -1952,16 +1956,16 @@
       {
         \__kernel_msg_error:nnxx
           { xparse } { invalid-command-arg }
-          { \iow_char:N \\ \l_@@_function_tl } { b }
+          { \@@_environment_or_command: } { b }
         \@@_bad_def:wn
       }
     \quark_if_recursion_tail_stop_do:nn {#1} { \@@_bad_arg_spec:wn }
     \tl_clear:N \l_@@_last_delimiters_tl
     \@@_add_arg_spec:n { b {#1} }
     \quark_if_recursion_tail_stop:n {#2}
-    \__kernel_msg_error:nnxx
-      { xparse } { arg-after-body }
-      { \l_@@_function_tl } { \tl_to_str:n {#2} }
+    \__kernel_msg_error:nnxx { xparse } { arg-after-body }
+      { \@@_environment_or_command: }
+      { \tl_to_str:n {#2} }
     \@@_bad_def:wn
   }
 %    \end{macrocode}
@@ -1981,13 +1985,13 @@
           { \exp_args:No \tl_to_str:n { \use:nn #1 { } } }
           {
             \__kernel_msg_warning:nnxx { xparse } { not-single-char }
-              { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+              { \@@_environment_or_command: } { \tl_to_str:n {#1} }
           }
         \group_end:
       }
       {
         \__kernel_msg_error:nnxx { xparse } { not-single-char }
-          { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
         \@@_bad_def:wn
       }
   }
@@ -2052,7 +2056,7 @@
 \cs_new_protected:Npn \@@_bad_arg_spec:wn #1 \@@_break_point:n #2
   {
     \__kernel_msg_error:nnxx { xparse } { bad-arg-spec }
-      { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#2} }
+      { \@@_environment_or_command: } { \tl_to_str:n {#2} }
   }
 \cs_new_protected:Npn \@@_bad_def:wn #1 \@@_break_point:n #2 { }
 %    \end{macrocode}
@@ -2100,7 +2104,7 @@
     \bool_if:NT \l_@@_some_obey_spaces_bool
       {
         \__kernel_msg_error:nnxx { xparse } { non-trailing-obey-spaces }
-          { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
         \@@_bad_def:wn
       }
     \tl_clear:N \l_@@_last_delimiters_tl
@@ -3205,7 +3209,7 @@
       { \@@_grab_D_call:Nw #1 }
       {
         \__kernel_msg_error:nnxx { xparse } { missing-required }
-          { \exp_after:wN \token_to_str:N \l_@@_fn_tl }
+          { \@@_environment_or_command: }
           { \token_to_str:N #1 }
         \@@_add_arg:o \c_novalue_tl
       }
@@ -3484,14 +3488,14 @@
       \peek_meaning_remove:NTF \char_generate:nn { \tex_endlinechar:D } { 6 }
       {
         \__kernel_msg_error:nnxxx { xparse } { verbatim-newline }
-          { \exp_after:wN \token_to_str:N \l_@@_fn_tl }
+          { \@@_environment_or_command: }
           { \tl_to_str:N \l_@@_v_arg_tl }
           { \tl_to_str:n {#1} }
         \@@_add_arg:o \c_novalue_tl
       }
       {
         \__kernel_msg_error:nnxxx { xparse } { verbatim-tokenized }
-          { \exp_after:wN \token_to_str:N \l_@@_fn_tl }
+          { \@@_environment_or_command: }
           { \tl_to_str:N \l_@@_v_arg_tl }
           { \tl_to_str:n {#1} }
         \@@_add_arg:o \c_novalue_tl
@@ -3841,8 +3845,10 @@
               \q_nil { } ##2 \ERROR \q_@@ \ERROR
           }
           {
-            \__kernel_msg_expandable_error:nnnn
-              { xparse } { missing-required } {##5} {##2}
+            \__kernel_msg_expandable_error:nnff
+              { xparse } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##5 } }
+              { \tl_to_str:n {##2} }
             ##4 {#1} \q_@@ ##5 ##6 {##7}
           }
       }
@@ -3877,8 +3883,10 @@
               ##6 \ERROR
           }
           {
-            \__kernel_msg_expandable_error:nnnn
-              { xparse } { missing-required } {##4} {##2}
+            \__kernel_msg_expandable_error:nnff
+              { xparse } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##4 } }
+              { \tl_to_str:n {##2} }
             ##3 {#1} \q_@@ ##4 ##5 {##6}
           }
       }
@@ -4059,35 +4067,38 @@
 % \subsection{Access to the argument specification}
 %
 % \begin{macro}{\@@_get_arg_spec_error:N, \@@_get_arg_spec_error:n}
+% \begin{macro}{\@@_get_arg_spec_error_aux:n}
 %   Provide an informative error when trying to get the argument
 %   specification of a non-\pkg{xparse} command or environment.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_get_arg_spec_error:N #1
   {
-    \cs_if_exist:NTF #1
-      {
-        \__kernel_msg_error:nnx { xparse } { non-xparse-command }
-          { \token_to_str:N #1 }
-      }
-      {
-        \__kernel_msg_error:nnx { xparse } { unknown-command }
-          { \token_to_str:N #1 }
-      }
+    \bool_set_false:N \l_@@_environment_bool
+    \tl_set:Nn \l_@@_fn_tl {#1}
+    \@@_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 }
   }
 \cs_new_protected:Npn \@@_get_arg_spec_error:n #1
   {
-    \cs_if_exist:cTF {#1}
+    \bool_set_true:N \l_@@_environment_bool
+    \str_set:Nx \l_@@_environment_str {#1}
+    \@@_get_arg_spec_error_aux:n
+      { \cs_if_exist:cTF { \l_@@_environment_str } }
+  }
+\cs_new_protected:Npn \@@_get_arg_spec_error_aux:n #1
+  {
+    #1
       {
-        \__kernel_msg_error:nnx { xparse } { non-xparse-environment }
-          { \tl_to_str:n {#1} }
+        \__kernel_msg_error:nnx { xparse } { non-xparse }
+          { \@@_environment_or_command: }
       }
       {
-        \__kernel_msg_error:nnx { xparse } { unknown-environment }
-          { \tl_to_str:n {#1} }
+        \__kernel_msg_error:nnx { xparse } { unknown }
+          { \@@_environment_or_command: }
       }
   }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\@@_get_arg_spec:NTF}
 %   If the command is not an \pkg{xparse} command, complain.  If it is,
@@ -4286,19 +4297,38 @@
 %
 % \subsection{Messages}
 %
-% Some messages intended as errors when defining commands/environments.
+% \begin{macro}{\@@_environment_or_command:}
+% \begin{variable}{\c_@@_ignore_def_tl}
+%   Two texts used in several messages.
 %    \begin{macrocode}
+\cs_new:Npn \@@_environment_or_command:
+  {
+    \bool_if:NTF \l_@@_environment_bool
+      { environment ~ ' \l_@@_environment_str ' }
+      {
+        command ~ '
+        \exp_args:Nf \tl_trim_spaces:n
+          { \exp_after:wN \token_to_str:N \l_@@_fn_tl }
+        '
+      }
+  }
 \tl_const:Nn \c_@@_ignore_def_tl
   { \\ \\ LaTeX~will~ignore~this~entire~definition. }
+%    \end{macrocode}
+% \end{variable}
+% \end{macro}
+%
+% Some messages intended as errors when defining commands/environments.
+%    \begin{macrocode}
 \__kernel_msg_new:nnnn { xparse } { arg-after-body }
-  { In~the~definition~of~'#1',~b~(body)~argument~must~be~last. }
+  { In~the~definition~of~#1,~b~(body)~argument~must~be~last. }
   {
     The~'body'~argument~type~is~followed~by~'#2'~in~the~argument~
-    specification~of~'#1'.~This~is~not~allowed.
+    specification~of~the~#1.~This~is~not~allowed.
     \c_@@_ignore_def_tl
   }
 \__kernel_msg_new:nnnn { xparse } { bad-arg-spec }
-  { Bad~argument~specification~'#2'~for~command~'#1'. }
+  { Bad~argument~specification~'#2'~for~#1. }
   {
     The~argument~specification~provided~was~not~valid:~
     one~or~more~mandatory~pieces~of~information~were~missing.
@@ -4349,7 +4379,7 @@
     arguments~after~long~arguments.~You~have~tried~to~mix~the~two~types.
   }
 \__kernel_msg_new:nnnn { xparse } { invalid-command-arg }
-  { Argument~type~'#2'~not~available~for~command~'#1'. }
+  { Argument~type~'#2'~not~available~for~#1. }
   {
     The~letter~'#2'~can~only~be~used~in~environment~argument~
     specifications,~not~for~commands.
@@ -4374,7 +4404,7 @@
     \c_@@_ignore_def_tl
   }
 \__kernel_msg_new:nnnn { xparse } { non-trailing-obey-spaces }
-  { Prefix~'!'~used~before~mandatory~argument~'#2'~of~command~'#1'. }
+  { Prefix~'!'~used~before~mandatory~argument~'#2'~of~#1. }
   {
     The~prefix~'!'~can~only~apply~to~trailing~optional~arguments.
     \c_@@_ignore_def_tl
@@ -4397,7 +4427,7 @@
   }
 \__kernel_msg_new:nnnn { xparse } { not-single-char }
   {
-    Argument~delimiter~'#2'~for~the~command~'#1'~should~be~
+    Argument~delimiter~'#2'~for~the~#1~should~be~
     a~single~character.
   }
   {
@@ -4413,53 +4443,50 @@
     \c_@@_ignore_def_tl
   }
 \__kernel_msg_new:nnnn { xparse } { too-many-arguments }
-  { Too~many~arguments~in~argument~specification~'#2'~of~command~'#1'. }
+  { Too~many~arguments~in~argument~specification~'#2'~of~#1. }
   {
     The~argument~specification~provided~has~more~than~9~arguments.~
     This~cannot~be~implemented.
     \c_@@_ignore_def_tl
   }
 \__kernel_msg_new:nnnn { xparse } { two-markers }
-  { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~command~'#1'. }
+  { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~#1. }
   {
     The~argument~specification~provided~has~two~markers~'#2'~applying~
     to~the~same~argument;~these~are~redundant.
   }
 \__kernel_msg_new:nnnn { xparse } { unknown-argument-type }
-  { Unknown~argument~type~'#2'~for~the~command~'#1'. }
+  { Unknown~argument~type~'#2'~for~the~#1. }
   {
     The~letter~'#2'~does~not~specify~a~known~argument~type.
     \c_@@_ignore_def_tl
   }
 %    \end{macrocode}
 %
-% Errors when using commands/environments.
+% Errors when using commands/environments.  The \texttt{if-boolean}
+% message is always used in expandable errors.  The
+% \texttt{loop-in-defaults} and \texttt{missing-required} messages can
+% be expandable or not expandable.
 %    \begin{macrocode}
 \__kernel_msg_new:nnn { xparse } { if-boolean }
   { Invalid~use~\IfBooleanTF {#1} }
 \__kernel_msg_new:nnnn { xparse } { loop-in-defaults }
-  { Circular~dependency~in~defaults~of~'#1'. }
+  { Defaults~of~#1~have~circular~dependency. }
   {
-    The~default~values~of~two~or~more~arguments~of~'#1'~depend~on~each~
-    other~in~a~way~that~cannot~be~resolved.
+    The~default~values~of~two~or~more~arguments~of~the~#1~
+    depend~on~each~other~in~a~way~that~cannot~be~resolved.
   }
 \__kernel_msg_new:nnnn { xparse } { missing-required }
-  { Failed~to~find~required~argument~starting~with~'#2'~for~command~'#1'. }
+  { Missing~required~argument~for~#1. }
   {
-    The~current~command~'#1'~expects~an~argument~starting~with~'#2'.~
+    The~current~#1~expects~an~argument~starting~with~'#2'.~
     LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed.
   }
-\__kernel_msg_new:nnnn { xparse } { non-xparse-command }
-  { Command~'#1'~not~defined~using~xparse. }
+\__kernel_msg_new:nnnn { xparse } { non-xparse }
+  { \str_upper_case:n #1~not~defined~using~xparse. }
   {
-    You~have~asked~for~the~argument~specification~for~a~command~'#1',~
-    but~this~is~not~a~command~defined~using~xparse.
-  }
-\__kernel_msg_new:nnnn { xparse } { non-xparse-environment }
-  { Environment~'#1'~not~defined~using~xparse. }
-  {
-    You~have~asked~for~the~argument~specification~for~an~environment~'#1',~
-    but~this~is~not~an~environment~defined~using~xparse.
+    You~have~asked~for~the~argument~specification~for~the~#1,~
+    but~this~was~not~defined~using~xparse.
   }
 \__kernel_msg_new:nnnn { xparse } { split-excess-tokens }
   { Too~many~'#1'~tokens~when~trying~to~split~argument. }
@@ -4468,22 +4495,16 @@
     at~each~occurrence~of~the~token~'#1',~up~to~a~maximum~of~#2~parts.~
     There~were~too~many~'#1'~tokens.
   }
-\__kernel_msg_new:nnnn { xparse } { unknown-command }
-  { Unknown~document~command~'#1'. }
-  {
-    You~have~asked~for~the~argument~specification~for~a~command~'#1',~
-    but~it~is~not~defined.
-  }
-\__kernel_msg_new:nnnn { xparse } { unknown-environment }
-  { Unknown~document~environment~'#1'. }
+\__kernel_msg_new:nnnn { xparse } { unknown }
+  { Unknown~document~#1. }
   {
-    You~have~asked~for~the~argument~specification~for~an~environment~'#1',~
+    You~have~asked~for~the~argument~specification~for~the~#1,~
     but~it~is~not~defined.
   }
 \__kernel_msg_new:nnnn { xparse } { verbatim-newline }
-  { Verbatim~argument~of~'#1'~ended~by~end~of~line. }
+  { Verbatim~argument~of~#1~ended~by~end~of~line. }
   {
-    The~verbatim~argument~of~'#1'~cannot~contain~more~than~one~line,~
+    The~verbatim~argument~of~the~#1~cannot~contain~more~than~one~line,~
     but~the~end~
     of~the~current~line~has~been~reached.~You~may~have~forgotten~the~
     closing~delimiter.
@@ -4491,9 +4512,9 @@
     LaTeX~will~ignore~'#2'.
   }
 \__kernel_msg_new:nnnn { xparse } { verbatim-tokenized }
-  { The~verbatim~command~'#1'~cannot~be~used~inside~an~argument. }
+  { The~verbatim~#1~cannot~be~used~inside~an~argument. }
   {
-    The~command~'#1'~takes~a~verbatim~argument.~
+    The~#1~takes~a~verbatim~argument.~
     It~may~not~appear~within~the~argument~of~another~function.~
     It~received~an~illegal~token \tl_if_empty:nF {#3} { ~'#3' } .
     \\ \\





More information about the latex3-commits mailing list