summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-09-06 23:19:17 +0000
committerKarl Berry <karl@freefriends.org>2015-09-06 23:19:17 +0000
commit3cb4e75696df6c7abebf17fbc606ca86dcdfb520 (patch)
tree729978e0726cdb9d9f34a3d2e249c71a82e07f97 /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
parent32f50b97c2ae44e93225d1024afab9727fc02e00 (diff)
l3 (6sep15)
git-svn-id: svn://tug.org/texlive/trunk@38305 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex1597
1 files changed, 881 insertions, 716 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 26b50c35a38..d6a472cf469 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -81,8 +81,8 @@
%% -----------------------------------------------------------------------
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 programming layer}
-\def\ExplFileDate{2015/07/30}
-\def\ExplFileVersion{5724}
+\def\ExplFileDate{2015/09/06}
+\def\ExplFileVersion{5925}
\begingroup
\def\next{\endgroup}
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -241,7 +241,7 @@
}
}
\endgroup
-\GetIdInfo$Id: l3bootstrap.dtx 5721 2015-07-30 11:46:45Z bruno $
+\GetIdInfo$Id: l3bootstrap.dtx 5729 2015-07-31 05:56:12Z joseph $
{L3 Bootstrap code}
\begingroup
\expandafter\ifx\csname directlua\endcsname\relax
@@ -308,10 +308,11 @@
{%
LaTeX3 requires the e-TeX primitives and \string\pdfstrcmp.\LineBreak
\LineBreak
- These are available in engine versions:\LineBreak
- - pdfTeX 1.30\LineBreak
- - XeTeX 0.9994\LineBreak
- - LuaTeX 0.40\LineBreak
+ These are available in the engines\LineBreak
+ - pdfTeX v1.30\LineBreak
+ - XeTeX v0.9994\LineBreak
+ - LuaTeX v0.40\LineBreak
+ - e-(u)pTeX mid-2012\LineBreak
or later.\LineBreak
\LineBreak
}%
@@ -446,7 +447,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3names.dtx 5705 2015-07-28 21:31:02Z joseph $
+\GetIdInfo$Id: l3names.dtx 5848 2015-08-17 05:27:13Z joseph $
{L3 Namespace for primitives}
\let \tex_global:D \global
\let \tex_let:D \let
@@ -846,7 +847,7 @@
\__kernel_primitive:NN \unexpanded \etex_unexpanded:D
\__kernel_primitive:NN \unless \etex_unless:D
\__kernel_primitive:NN \widowpenalties \etex_widowpenalties:D
- \__kernel_primitive:NN \pdfannot \pdttex_pdfannot:D
+ \__kernel_primitive:NN \pdfannot \pdftex_pdfannot:D
\__kernel_primitive:NN \pdfcatalog \pdftex_pdfcatalog:D
\__kernel_primitive:NN \pdfcompresslevel \pdftex_pdfcompresslevel:D
\__kernel_primitive:NN \pdfcolorstack \pdftex_pdfcolorstack:D
@@ -1388,7 +1389,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3basics.dtx 5500 2015-01-27 14:37:04Z joseph $
+\GetIdInfo$Id: l3basics.dtx 5897 2015-08-28 09:06:29Z joseph $
{L3 Basic definitions}
\tex_let:D \if_true: \tex_iftrue:D
\tex_let:D \if_false: \tex_iffalse:D
@@ -1411,9 +1412,13 @@
\tex_let:D \exp_after:wN \tex_expandafter:D
\tex_let:D \exp_not:N \tex_noexpand:D
\tex_let:D \exp_not:n \etex_unexpanded:D
+\tex_let:D \exp:w \tex_romannumeral:D
+\tex_chardef:D \exp_end: = 0 ~
+
\tex_let:D \token_to_meaning:N \tex_meaning:D
-\tex_let:D \token_to_str:N \tex_string:D
\tex_let:D \cs_meaning:N \tex_meaning:D
+\tex_let:D \tl_to_str:n \etex_detokenize:D
+\tex_let:D \token_to_str:N \tex_string:D
\tex_let:D \scan_stop: \tex_relax:D
\tex_let:D \group_begin: \tex_begingroup:D
\tex_let:D \group_end: \tex_endgroup:D
@@ -1509,9 +1514,9 @@
\cs_set:Npn \use_none:nnnnnnnn #1#2#3#4#5#6#7#8 { }
\cs_set:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { }
\cs_set_nopar:Npn \prg_return_true:
- { \exp_after:wN \use_i:nn \__int_to_roman:w }
+ { \exp_after:wN \use_i:nn \exp:w }
\cs_set_nopar:Npn \prg_return_false:
- { \exp_after:wN \use_ii:nn \__int_to_roman:w}
+ { \exp_after:wN \use_ii:nn \exp:w}
\cs_set_protected_nopar:Npn \prg_set_conditional:Npnn
{ \__prg_generate_conditional_parm:nnNpnn { set } { } }
\cs_set_protected_nopar:Npn \prg_new_conditional:Npnn
@@ -1561,7 +1566,7 @@
{
\exp_not:N \__prg_generate_conditional:nnnnnnw
\exp_not:n { {#4} {#5} {#1} {#2} {#6} {#8} }
- \etex_detokenize:D {#7}
+ \tl_to_str:n {#7}
\exp_not:n { , \q_recursion_tail , \q_recursion_stop }
}
}
@@ -1592,7 +1597,7 @@
\fi:
{
\exp_args:cc { cs_ #2 #3 :Npn } { #4 _p: #5 } #6
- { #7 \c_zero \c_true_bool \c_false_bool }
+ { #7 \exp_end: \c_true_bool \c_false_bool }
}
{
\__msg_kernel_error:nnx { kernel } { protected-predicate }
@@ -1603,19 +1608,19 @@
#1 \q_stop #2#3#4#5#6#7
{
\exp_args:cc { cs_ #2 #3 :Npn } { #4 : #5 T } #6
- { #7 \c_zero \use:n \use_none:n }
+ { #7 \exp_end: \use:n \use_none:n }
}
\cs_set_protected:Npn \__prg_generate_F_form:wnnnnnn
#1 \q_stop #2#3#4#5#6#7
{
\exp_args:cc { cs_ #2 #3 :Npn } { #4 : #5 F } #6
- { #7 \c_zero { } }
+ { #7 \exp_end: { } }
}
\cs_set_protected:Npn \__prg_generate_TF_form:wnnnnnn
#1 \q_stop #2#3#4#5#6#7
{
\exp_args:cc { cs_ #2 #3 :Npn } { #4 : #5 TF } #6
- { #7 \c_zero }
+ { #7 \exp_end: }
}
\cs_set_protected_nopar:Npn \prg_set_eq_conditional:NNn
{ \__prg_set_eq_conditional:NNNn \cs_set_eq:cc }
@@ -1629,7 +1634,7 @@
\__cs_split_function:NN #2 \prg_do_nothing:
\__cs_split_function:NN #3 \prg_do_nothing:
\exp_not:N #1
- \etex_detokenize:D {#4}
+ \tl_to_str:n {#4}
\exp_not:n { , \q_recursion_tail , \q_recursion_stop }
}
}
@@ -1688,32 +1693,29 @@
\tex_chardef:D \c_false_bool = 0 ~
\cs_set_nopar:Npn \cs_to_str:N
{
- \__int_to_roman:w
+ \tex_romannumeral:D
\if:w \token_to_str:N \ \__cs_to_str:w \fi:
\exp_after:wN \__cs_to_str:N \token_to_str:N
}
\cs_set:Npn \__cs_to_str:N #1 { \c_zero }
\cs_set:Npn \__cs_to_str:w #1 \__cs_to_str:N
{ - \__int_value:w \fi: \exp_after:wN \c_zero }
-\group_begin:
-\tex_lccode:D `\@ = `\: \scan_stop:
-\tex_catcode:D `\@ = 12 ~
-\tex_lowercase:D
+\cs_set:Npx \__cs_split_function:NN #1
{
- \group_end:
- \cs_set:Npn \__cs_split_function:NN #1
- {
- \exp_after:wN \exp_after:wN
- \exp_after:wN \__cs_split_function_auxi:w
- \cs_to_str:N #1 \q_mark \c_true_bool
- @ \q_mark \c_false_bool
- \q_stop
- }
- \cs_set:Npn \__cs_split_function_auxi:w #1 @ #2 \q_mark #3#4 \q_stop #5
- { \__cs_split_function_auxii:w #5 #1 \q_mark \q_stop {#2} #3 }
- \cs_set:Npn \__cs_split_function_auxii:w #1#2 \q_mark #3 \q_stop
- { #1 {#2} }
+ \exp_not:N \exp_after:wN \exp_not:N \exp_after:wN
+ \exp_not:N \exp_after:wN \exp_not:N \__cs_split_function_auxi:w
+ \exp_not:N \cs_to_str:N #1 \exp_not:N \q_mark \c_true_bool
+ \token_to_str:N : \exp_not:N \q_mark \c_false_bool
+ \exp_not:N \q_stop
}
+\use:x
+ {
+ \cs_set:Npn \exp_not:N \__cs_split_function_auxi:w
+ ##1 \token_to_str:N : ##2 \exp_not:N \q_mark ##3##4 \exp_not:N \q_stop ##5
+ }
+ { \__cs_split_function_auxii:w #5 #1 \q_mark \q_stop {#2} #3 }
+\cs_set:Npn \__cs_split_function_auxii:w #1#2 \q_mark #3 \q_stop
+ { #1 {#2} }
\cs_set:Npn \__cs_get_function_name:N #1
{ \__cs_split_function:NN #1 \use_i:nnn }
\cs_set:Npn \__cs_get_function_signature:N #1
@@ -1794,6 +1796,25 @@
{ \tex_immediate:D \tex_write:D \c_minus_one }
\cs_set_protected_nopar:Npn \iow_term:x
{ \tex_immediate:D \tex_write:D \c_sixteen }
+\tex_ifodd:D \l@expl@log@functions@bool
+ \cs_set_protected_nopar:Npn \__chk_log:x { \iow_log:x }
+ \cs_set_protected_nopar:Npn \__chk_suspend_log:
+ {
+ \cs_set_protected_nopar:Npx \__chk_resume_log:
+ {
+ \cs_set_protected_nopar:Npn \__chk_resume_log:
+ { \exp_not:o { \__chk_resume_log: } }
+ \cs_set_protected_nopar:Npn \__chk_log:x
+ { \exp_not:o { \__chk_log:x } }
+ }
+ \cs_set_protected_nopar:Npn \__chk_log:x { \use_none:n }
+ }
+ \cs_set_protected_nopar:Npn \__chk_resume_log: { }
+\else:
+ \cs_set_protected_nopar:Npn \__chk_log:x { \use_none:n }
+ \cs_set_protected_nopar:Npn \__chk_suspend_log: { }
+ \cs_set_protected_nopar:Npn \__chk_resume_log: { }
+\fi:
\cs_set_protected:Npn \__msg_kernel_error:nnxx #1#2#3#4
{
\tex_newlinechar:D = `\^^J \tex_relax:D
@@ -1829,7 +1850,7 @@
\__msg_kernel_error:nnxx { kernel } { command-already-defined }
{ \token_to_str:N #1 } { \token_to_meaning:N #1 }
}
- \iow_log:x { Defining~\token_to_str:N #1~ \msg_line_context: }
+ \__chk_log:x { Defining~\token_to_str:N #1~ \msg_line_context: }
}
\fi:
\cs_set_protected_nopar:Npn \__chk_if_free_cs:c
@@ -2078,32 +2099,13 @@
\cs_new_nopar:Npn \cs_if_eq:ccF { \exp_args:Ncc \cs_if_eq:NNF }
\cs_new_protected:Npn \__kernel_register_show:N #1
{
- \cs_if_exist:NTF #1
- { \tex_showthe:D \use:n {#1} }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
+ \__msg_show_variable:NNNnn #1 \cs_if_exist:NTF ? { }
+ { > ~ \token_to_str:N #1 = \tex_the:D #1 }
}
\cs_new_protected_nopar:Npn \__kernel_register_show:c
{ \exp_args:Nc \__kernel_register_show:N }
-\group_begin:
- \tex_lccode:D `? = `: \scan_stop:
- \tex_catcode:D `? = 12 \scan_stop:
-\tex_lowercase:D
- {
- \group_end:
- \cs_new_protected:Npn \cs_show:N #1
- {
- \__msg_show_variable:n
- {
- > ~ \token_to_str:N #1 =
- \exp_after:wN \__cs_show:www \cs_meaning:N #1
- \use_none:nn ? \prg_do_nothing:
- }
- }
- \cs_new:Npn \__cs_show:www #1 ? { #1 ? \\ }
- }
+\cs_new_protected:Npn \cs_show:N #1
+ { \__msg_show_wrap:n { > ~ \token_to_str:N #1 = \cs_meaning:N #1 } }
\cs_new_protected_nopar:Npn \cs_show:c
{ \group_begin: \exp_args:NNc \group_end: \cs_show:N }
\cs_new_eq:NN \luatex_if_engine:T \use_none:n
@@ -2153,7 +2155,7 @@
\cs_new_eq:NN \__prg_break_point: \prg_do_nothing:
\cs_new:Npn \__prg_break: #1 \__prg_break_point: { }
\cs_new:Npn \__prg_break:n #1#2 \__prg_break_point: {#1}
-%% File: l3expan.dtx Copyright (C) 1990-2014 The LaTeX3 project
+%% File: l3expan.dtx Copyright (C) 1990-2015 The LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -2185,7 +2187,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3expan.dtx 5472 2014-11-27 09:10:40Z joseph $
+\GetIdInfo$Id: l3expan.dtx 5897 2015-08-28 09:06:29Z joseph $
{L3 Argument expansion}
\cs_new:Npn \__exp_arg_next:nnn #1#2#3 { #2 \::: { #3 {#1} } }
\cs_new:Npn \__exp_arg_next:Nnn #1#2#3 { #2 \::: { #3 #1 } }
@@ -2200,7 +2202,7 @@
\cs_new:Npn \::f #1 \::: #2#3
{
\exp_after:wN \__exp_arg_next:nnn
- \exp_after:wN { \tex_romannumeral:D -`0 #3 }
+ \exp_after:wN { \exp:w \exp_end_continue_f:w #3 }
{#1} {#2}
}
\use:nn { \cs_new_eq:NN \exp_stop_f: } { ~ }
@@ -2212,13 +2214,13 @@
\cs_new:Npn \::V #1 \::: #2#3
{
\exp_after:wN \__exp_arg_next:nnn
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:N #3 }
+ \exp_after:wN { \exp:w \__exp_eval_register:N #3 }
{#1} {#2}
}
\cs_new:Npn \::v # 1\::: #2#3
{
\exp_after:wN \__exp_arg_next:nnn
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:c {#3} }
+ \exp_after:wN { \exp:w \__exp_eval_register:c {#3} }
{#1} {#2}
}
\cs_new:Npn \__exp_eval_register:N #1
@@ -2230,7 +2232,7 @@
\else:
\exp_after:wN \use_i_ii:nnn
\fi:
- \exp_after:wN \c_zero \tex_the:D #1
+ \exp_after:wN \exp_end: \tex_the:D #1
}
\cs_new:Npn \__exp_eval_register:c #1
{ \exp_after:wN \__exp_eval_register:N \cs:w #1 \cs_end: }
@@ -2239,7 +2241,7 @@
\fi:
\fi:
\__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#2}
- \c_zero
+ \exp_end:
}
\cs_new:Npn \exp_args:No #1#2 { \exp_after:wN #1 \exp_after:wN {#2} }
\cs_new:Npn \exp_args:NNo #1#2#3
@@ -2258,34 +2260,34 @@
\cs:w #4 \cs_end:
}
\cs_new:Npn \exp_args:Nf #1#2
- { \exp_after:wN #1 \exp_after:wN { \tex_romannumeral:D -`0 #2 } }
+ { \exp_after:wN #1 \exp_after:wN { \exp:w \exp_end_continue_f:w #2 } }
\cs_new:Npn \exp_args:Nv #1#2
{
\exp_after:wN #1 \exp_after:wN
- { \tex_romannumeral:D \__exp_eval_register:c {#2} }
+ { \exp:w \__exp_eval_register:c {#2} }
}
\cs_new:Npn \exp_args:NV #1#2
{
\exp_after:wN #1 \exp_after:wN
- { \tex_romannumeral:D \__exp_eval_register:N #2 }
+ { \exp:w \__exp_eval_register:N #2 }
}
\cs_new:Npn \exp_args:NNf #1#2#3
{
\exp_after:wN #1
\exp_after:wN #2
- \exp_after:wN { \tex_romannumeral:D -`0 #3 }
+ \exp_after:wN { \exp:w \exp_end_continue_f:w #3 }
}
\cs_new:Npn \exp_args:NNv #1#2#3
{
\exp_after:wN #1
\exp_after:wN #2
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:c {#3} }
+ \exp_after:wN { \exp:w \__exp_eval_register:c {#3} }
}
\cs_new:Npn \exp_args:NNV #1#2#3
{
\exp_after:wN #1
\exp_after:wN #2
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:N #3 }
+ \exp_after:wN { \exp:w \__exp_eval_register:N #3 }
}
\cs_new:Npn \exp_args:Nco #1#2#3
{
@@ -2297,21 +2299,21 @@
{
\exp_after:wN #1
\cs:w #2 \exp_after:wN \cs_end:
- \exp_after:wN { \tex_romannumeral:D -`0 #3 }
+ \exp_after:wN { \exp:w \exp_end_continue_f:w #3 }
}
\cs_new:Npn \exp_args:NVV #1#2#3
{
\exp_after:wN #1
- \exp_after:wN { \tex_romannumeral:D \exp_after:wN
+ \exp_after:wN { \exp:w \exp_after:wN
\__exp_eval_register:N \exp_after:wN #2 \exp_after:wN }
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:N #3 }
+ \exp_after:wN { \exp:w \__exp_eval_register:N #3 }
}
\cs_new:Npn \exp_args:NNNV #1#2#3#4
{
\exp_after:wN #1
\exp_after:wN #2
\exp_after:wN #3
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:N #4 }
+ \exp_after:wN { \exp:w \__exp_eval_register:N #4 }
}
\cs_new:Npn \exp_args:NcNc #1#2#3#4
{
@@ -2355,6 +2357,7 @@
\cs_new_nopar:Npn \exp_args:Nnnc { \::n \::n \::c \::: }
\cs_new_nopar:Npn \exp_args:Nnno { \::n \::n \::o \::: }
\cs_new_nopar:Npn \exp_args:Nooo { \::o \::o \::o \::: }
+\cs_new_protected_nopar:Npn \exp_args:NNNx { \::N \::N \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:NNnx { \::N \::n \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:NNox { \::N \::o \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:Nnnx { \::n \::n \::x \::: }
@@ -2366,19 +2369,19 @@
\cs_new:Npn \::f_unbraced \::: #1#2
{
\exp_after:wN \__exp_arg_last_unbraced:nn
- \exp_after:wN { \tex_romannumeral:D -`0 #2 } {#1}
+ \exp_after:wN { \exp:w \exp_end_continue_f:w #2 } {#1}
}
\cs_new:Npn \::o_unbraced \::: #1#2
{ \exp_after:wN \__exp_arg_last_unbraced:nn \exp_after:wN {#2} {#1} }
\cs_new:Npn \::V_unbraced \::: #1#2
{
\exp_after:wN \__exp_arg_last_unbraced:nn
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:N #2 } {#1}
+ \exp_after:wN { \exp:w \__exp_eval_register:N #2 } {#1}
}
\cs_new:Npn \::v_unbraced \::: #1#2
{
\exp_after:wN \__exp_arg_last_unbraced:nn
- \exp_after:wN { \tex_romannumeral:D \__exp_eval_register:c {#2} } {#1}
+ \exp_after:wN { \exp:w \__exp_eval_register:c {#2} } {#1}
}
\cs_new_protected:Npn \::x_unbraced \::: #1#2
{
@@ -2386,25 +2389,25 @@
\l__exp_internal_tl
}
\cs_new:Npn \exp_last_unbraced:NV #1#2
- { \exp_after:wN #1 \tex_romannumeral:D \__exp_eval_register:N #2 }
+ { \exp_after:wN #1 \exp:w \__exp_eval_register:N #2 }
\cs_new:Npn \exp_last_unbraced:Nv #1#2
- { \exp_after:wN #1 \tex_romannumeral:D \__exp_eval_register:c {#2} }
+ { \exp_after:wN #1 \exp:w \__exp_eval_register:c {#2} }
\cs_new:Npn \exp_last_unbraced:No #1#2 { \exp_after:wN #1 #2 }
\cs_new:Npn \exp_last_unbraced:Nf #1#2
- { \exp_after:wN #1 \tex_romannumeral:D -`0 #2 }
+ { \exp_after:wN #1 \exp:w \exp_end_continue_f:w #2 }
\cs_new:Npn \exp_last_unbraced:Nco #1#2#3
{ \exp_after:wN #1 \cs:w #2 \exp_after:wN \cs_end: #3 }
\cs_new:Npn \exp_last_unbraced:NcV #1#2#3
{
\exp_after:wN #1
\cs:w #2 \exp_after:wN \cs_end:
- \tex_romannumeral:D \__exp_eval_register:N #3
+ \exp:w \__exp_eval_register:N #3
}
\cs_new:Npn \exp_last_unbraced:NNV #1#2#3
{
\exp_after:wN #1
\exp_after:wN #2
- \tex_romannumeral:D \__exp_eval_register:N #3
+ \exp:w \__exp_eval_register:N #3
}
\cs_new:Npn \exp_last_unbraced:NNo #1#2#3
{ \exp_after:wN #1 \exp_after:wN #2 #3 }
@@ -2413,7 +2416,7 @@
\exp_after:wN #1
\exp_after:wN #2
\exp_after:wN #3
- \tex_romannumeral:D \__exp_eval_register:N #4
+ \exp:w \__exp_eval_register:N #4
}
\cs_new:Npn \exp_last_unbraced:NNNo #1#2#3#4
{ \exp_after:wN #1 \exp_after:wN #2 \exp_after:wN #3 #4 }
@@ -2429,17 +2432,22 @@
\cs_new:Npn \exp_not:o #1 { \etex_unexpanded:D \exp_after:wN {#1} }
\cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
\cs_new:Npn \exp_not:f #1
- { \etex_unexpanded:D \exp_after:wN { \tex_romannumeral:D -`0 #1 } }
+ { \etex_unexpanded:D \exp_after:wN { \exp:w \exp_end_continue_f:w #1 } }
\cs_new:Npn \exp_not:V #1
{
\etex_unexpanded:D \exp_after:wN
- { \tex_romannumeral:D \__exp_eval_register:N #1 }
+ { \exp:w \__exp_eval_register:N #1 }
}
\cs_new:Npn \exp_not:v #1
{
\etex_unexpanded:D \exp_after:wN
- { \tex_romannumeral:D \__exp_eval_register:c {#1} }
+ { \exp:w \__exp_eval_register:c {#1} }
}
+\tex_catcode:D `\^^@=13
+\cs_new_protected:Npn \exp_end_continue_f:w {`^^@}
+\cs_new:Npn ^^@{\expansionERROR}
+\cs_new:Npn \exp_end_continue_f:nw #1 { `^^@ #1 }
+\tex_catcode:D `\^^@=15
\cs_new_protected:Npn \cs_generate_variant:Nn #1#2
{
\__chk_if_exist_cs:N #1
@@ -2448,37 +2456,36 @@
\exp_after:wN #1
\exp_after:wN \__cs_generate_variant:nnNN
\exp_after:wN #1
- \etex_detokenize:D {#2} , \scan_stop: , \q_recursion_stop
+ \tl_to_str:n {#2} , \scan_stop: , \q_recursion_stop
+ }
+\cs_new_protected:Npx \__cs_generate_variant:N #1
+ {
+ \exp_not:N \exp_after:wN \exp_not:N \if_meaning:w
+ \exp_not:N \exp_not:N #1 #1
+ \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected_nopar:Npx
+ \exp_not:N \else:
+ \exp_not:N \exp_after:wN \exp_not:N \__cs_generate_variant:ww
+ \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma }
+ \exp_not:N \q_mark
+ \exp_not:N \q_mark \cs_new_protected_nopar:Npx
+ \tl_to_str:n { pr }
+ \exp_not:N \q_mark \cs_new_nopar:Npx
+ \exp_not:N \q_stop
+ \exp_not:N \fi:
}
-\group_begin:
- \tex_catcode:D `\M = 12 \scan_stop:
- \tex_catcode:D `\A = 12 \scan_stop:
- \tex_catcode:D `\P = 12 \scan_stop:
- \tex_catcode:D `\R = 12 \scan_stop:
-\tex_lowercase:D
+\use:x
{
- \group_end:
- \cs_new_protected:Npn \__cs_generate_variant:N #1
- {
- \exp_after:wN \if_meaning:w \exp_not:N #1 #1
- \cs_set_eq:NN \__cs_tmp:w \cs_new_protected_nopar:Npx
- \else:
- \exp_after:wN \__cs_generate_variant:ww
- \token_to_meaning:N #1 MA \q_mark
- \q_mark \cs_new_protected_nopar:Npx
- PR
- \q_mark \cs_new_nopar:Npx
- \q_stop
- \fi:
- }
- \cs_new_protected:Npn \__cs_generate_variant:ww #1 MA #2 \q_mark
- { \__cs_generate_variant:wwNw #1 }
- \cs_new_protected:Npn \__cs_generate_variant:wwNw
- #1 PR #2 \q_mark #3 #4 \q_stop
- {
- \cs_set_eq:NN \__cs_tmp:w #3
- }
+ \cs_new_protected:Npn \exp_not:N \__cs_generate_variant:ww
+ ##1 \tl_to_str:n { ma } ##2 \exp_not:N \q_mark
}
+ { \__cs_generate_variant:wwNw #1 }
+\use:x
+ {
+ \cs_new_protected:Npn \exp_not:N \__cs_generate_variant:wwNw
+ ##1 \tl_to_str:n { pr } ##2 \exp_not:N \q_mark
+ ##3 ##4 \exp_not:N \q_stop
+ }
+ { \cs_set_eq:NN \__cs_tmp:w #3 }
\cs_new_protected:Npn \__cs_generate_variant:nnNN #1#2#3#4
{
\if_meaning:w \c_false_bool #3
@@ -2590,40 +2597,39 @@
\group_end:
}
{
- \iow_log:x
+ \__chk_log:x
{
Variant~\token_to_str:N #4~%
- already~defined;~ not~ changing~ it~on~line~%
- \tex_the:D \tex_inputlineno:D
+ already~defined;~ not~ changing~ it~ \msg_line_context:
}
}
}
-\group_begin:
- \tex_catcode:D `\X = 12 \scan_stop:
- \tex_lccode:D `\N = `\N \scan_stop:
-\tex_lowercase:D
+\cs_new_protected:Npx \__cs_generate_internal_variant:n #1
{
- \group_end:
- \cs_new_protected:Npn \__cs_generate_internal_variant:n #1
- {
- \__cs_generate_internal_variant:wwnNwnn
- #1 \q_mark
- { \cs_set_eq:NN \__cs_tmp:w \cs_new_protected_nopar:Npx }
- \cs_new_protected_nopar:cpx
- X \q_mark
- { }
- \cs_new_nopar:cpx
- \q_stop
- { exp_args:N #1 }
- { \__cs_generate_internal_variant_loop:n #1 { : \use_i:nn } }
- }
- \cs_new_protected:Npn \__cs_generate_internal_variant:wwnNwnn
- #1 X #2 \q_mark #3 #4 #5 \q_stop #6 #7
+ \exp_not:N \__cs_generate_internal_variant:wwnNwnn
+ #1 \exp_not:N \q_mark
+ { \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected_nopar:Npx }
+ \cs_new_protected_nopar:cpx
+ \token_to_str:N x \exp_not:N \q_mark
+ { }
+ \cs_new_nopar:cpx
+ \exp_not:N \q_stop
+ { exp_args:N #1 }
{
- #3
- \cs_if_free:cT {#6} { #4 {#6} {#7} }
+ \exp_not:N \__cs_generate_internal_variant_loop:n #1
+ { : \exp_not:N \use_i:nn }
}
}
+\use:x
+ {
+ \cs_new_protected:Npn \exp_not:N \__cs_generate_internal_variant:wwnNwnn
+ ##1 \token_to_str:N x ##2 \exp_not:N \q_mark
+ ##3 ##4 ##5 \exp_not:N \q_stop ##6 ##7
+ }
+ {
+ #3
+ \cs_if_free:cT {#6} { #4 {#6} {#7} }
+ }
\cs_new:Npn \__cs_generate_internal_variant_loop:n #1
{
\exp_after:wN \exp_not:N \cs:w :: #1 \cs_end:
@@ -2661,7 +2667,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3tl.dtx 5659 2015-07-14 18:58:00Z joseph $
+\GetIdInfo$Id: l3tl.dtx 5908 2015-09-02 14:50:27Z joseph $
{L3 Token lists}
\cs_new_protected:Npn \tl_new:N #1
{
@@ -2709,7 +2715,6 @@
\cs_generate_variant:Nn \tl_gconcat:NNN { ccc }
\prg_new_eq_conditional:NNn \tl_if_exist:N \cs_if_exist:N { TF , T , F , p }
\prg_new_eq_conditional:NNn \tl_if_exist:c \cs_if_exist:c { TF , T , F , p }
-%%
\tl_const:Nn \c_empty_tl { }
\tl_const:Nx \c_job_name_tl { \tex_jobname:D }
\tl_const:Nn \c_space_tl { ~ }
@@ -2782,7 +2787,7 @@
\tex_ifodd:D \l@expl@check@declarations@bool
\cs_set_protected:Npn \__cs_tmp:w #1
{
- \if_meaning:w ? #1
+ \if_meaning:w \q_recursion_tail #1
\exp_after:wN \use_none_delimit_by_q_recursion_stop:w
\fi:
\use:x
@@ -2806,7 +2811,7 @@
\tl_put_right:No \tl_put_right:Nx
\tl_gput_right:Nn \tl_gput_right:NV
\tl_gput_right:No \tl_gput_right:Nx
- ? \q_recursion_stop
+ \q_recursion_tail \q_recursion_stop
\cs_set_protected:Npn \tl_set_eq:NN #1#2
{
\__chk_if_exist_var:N #1
@@ -2845,30 +2850,90 @@
{
\group_begin:
\exp_args:No \etex_everyeof:D { \c__tl_rescan_marker_tl \exp_not:N }
- \tex_endlinechar:D \c_minus_one
- \tex_newlinechar:D \c_minus_one
+ \int_compare:nNnT \tex_endlinechar:D = { 32 }
+ { \tex_endlinechar:D \c_minus_one }
+ \tex_newlinechar:D \tex_endlinechar:D
#3 \scan_stop:
- \use:x
- {
- \group_end:
- #1 \exp_not:N #2
- {
- \exp_after:wN \__tl_rescan:w
- \exp_after:wN \prg_do_nothing:
- \etex_scantokens:D {#4}
- }
- }
+ \exp_args:No \__tl_set_rescan:n { \tl_to_str:n {#4} }
+ \exp_args:NNNo
+ \group_end:
+ #1 #2 \l__tl_internal_a_tl
}
-\use:x
+\cs_new_protected:Npn \__tl_set_rescan_multi:n #1
{
- \cs_new:Npn \exp_not:N \__tl_rescan:w ##1
- \c__tl_rescan_marker_tl
- { \exp_not:N \exp_not:o { ##1 } }
+ \tl_set:Nx \l__tl_internal_a_tl
+ {
+ \exp_after:wN \__tl_rescan:w
+ \exp_after:wN \prg_do_nothing:
+ \etex_scantokens:D {#1}
+ }
}
+\exp_args:Nno \use:nn
+ { \cs_new:Npn \__tl_rescan:w #1 } \c__tl_rescan_marker_tl
+ { \exp_not:o {#1} }
\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nno , Nnx }
\cs_generate_variant:Nn \tl_set_rescan:Nnn { c , cno , cnx }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nnx }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cno }
+\group_begin:
+ \tex_catcode:D `\^^@ = 12 \scan_stop:
+ \cs_new_protected:Npn \__tl_set_rescan:n #1
+ {
+ \int_compare:nNnTF \tex_newlinechar:D < \c_zero
+ { \use_ii:nn }
+ {
+ \char_set_lccode:nn { 0 } { \tex_newlinechar:D }
+ \tl_to_lowercase:n { \__tl_set_rescan:NnTF ^^@ } {#1}
+ }
+ { \__tl_set_rescan_multi:n }
+ { \__tl_set_rescan_single:nn { ' } }
+ {#1}
+ }
+ \cs_new_protected:Npn \__tl_set_rescan:NnTF #1#2
+ { \tl_if_in:nnTF {#2} {#1} }
+ \cs_new_protected:Npn \__tl_set_rescan_single:nn #1
+ {
+ \int_compare:nNnTF
+ { \char_value_catcode:n { `#1 } / \c_three } = \c_four
+ { \__tl_set_rescan_single_aux:nn {#1} }
+ {
+ \int_compare:nNnTF { `#1 } < { `\~ }
+ {
+ \char_set_lccode:nn { 0 } { `#1 + 1 }
+ \tl_to_lowercase:n { \__tl_set_rescan_single:nn { ^^@ } }
+ }
+ { \__tl_set_rescan_single_aux:nn { } }
+ }
+ }
+ \cs_new_protected:Npn \__tl_set_rescan_single_aux:nn #1#2
+ {
+ \tex_endlinechar:D \c_minus_one
+ \use:x
+ {
+ \exp_not:N \use:n
+ {
+ \exp_not:n { \cs_set:Npn \__tl_rescan:w ##1 }
+ \exp_after:wN \__tl_rescan:w
+ \exp_after:wN \prg_do_nothing:
+ \etex_scantokens:D {#1}
+ }
+ \c__tl_rescan_marker_tl
+ }
+ { \exp_not:o {##1} }
+ \tl_set:Nx \l__tl_internal_a_tl
+ {
+ \int_compare:nNnT
+ {
+ \char_value_catcode:n
+ { \exp_last_unbraced:Nf ` \str_head:n {#2} ~ }
+ }
+ = \c_ten { ~ }
+ \exp_after:wN \__tl_rescan:w
+ \exp_after:wN \prg_do_nothing:
+ \etex_scantokens:D { #2 #1 }
+ }
+ }
+\group_end:
\cs_new_protected:Npn \tl_to_lowercase:n #1
{ \tex_lowercase:D {#1} }
\cs_new_protected:Npn \tl_to_uppercase:n #1
@@ -2990,7 +3055,7 @@
\cs_new:Npn \__tl_if_empty_return:o #1
{
\exp_after:wN \if_meaning:w \exp_after:wN \q_nil
- \tl_to_str:n \exp_after:wN {#1} \q_nil
+ \etex_detokenize:D \exp_after:wN {#1} \q_nil
\prg_return_true:
\else:
\prg_return_false:
@@ -3058,22 +3123,22 @@
\cs_new:Npn \__tl_if_single:nnw #1#2#3 \q_stop {#2}
\cs_new:Npn \tl_case:Nn #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__tl_case:NnTF #1 {#2} { } { }
}
\cs_new:Npn \tl_case:NnT #1#2#3
{
- \tex_romannumeral:D
+ \exp:w
\__tl_case:NnTF #1 {#2} {#3} { }
}
\cs_new:Npn \tl_case:NnF #1#2#3
{
- \tex_romannumeral:D
+ \exp:w
\__tl_case:NnTF #1 {#2} { } {#3}
}
\cs_new:Npn \tl_case:NnTF #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__tl_case:NnTF #1 {#2}
}
\cs_new:Npn \__tl_case:NnTF #1#2#3#4
@@ -3137,7 +3202,6 @@
{ \__prg_map_break:Nn \tl_map_break: { } }
\cs_new_nopar:Npn \tl_map_break:n
{ \__prg_map_break:Nn \tl_map_break: }
-\cs_new_eq:NN \tl_to_str:n \etex_detokenize:D
\cs_new:Npn \tl_to_str:N #1 { \etex_detokenize:D \exp_after:wN {#1} }
\cs_generate_variant:Nn \tl_to_str:N { c }
\cs_new:Npn \tl_use:N #1
@@ -3252,7 +3316,7 @@
{#3} #4
}
\cs_new:Npn \__tl_act_end:wn #1 \__tl_act_result:n #2
- { \group_align_safe_end: \c_zero #2 }
+ { \group_align_safe_end: \exp_end: #2 }
\cs_new:Npn \__tl_act_group:nwnNNN #1 #2 \q__tl_act_stop #3#4#5
{
#5 {#3} {#1}
@@ -3274,7 +3338,7 @@
{
\etex_unexpanded:D \exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_act:NNNnn
\__tl_reverse_normal:nN
\__tl_reverse_group_preserve:nn
@@ -3432,14 +3496,14 @@
}
\prg_new_conditional:Npnn \tl_if_head_is_space:n #1 { p , T , F , TF }
{
- \tex_romannumeral:D \if_false: { \fi:
+ \exp:w \if_false: { \fi:
\__tl_if_head_is_space:w ? #1 ? ~ }
}
\cs_new:Npn \__tl_if_head_is_space:w #1 ~
{
\tl_if_empty:oTF { \use_none:n #1 }
- { \exp_after:wN \c_zero \exp_after:wN \prg_return_true: }
- { \exp_after:wN \c_zero \exp_after:wN \prg_return_false: }
+ { \exp_after:wN \exp_end: \exp_after:wN \prg_return_true: }
+ { \exp_after:wN \exp_end: \exp_after:wN \prg_return_false: }
\exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
}
\cs_new:Npn \tl_item:nn #1#2
@@ -3468,16 +3532,12 @@
\cs_generate_variant:Nn \tl_item:Nn { c }
\cs_new_protected:Npn \tl_show:N #1
{
- \tl_if_exist:NTF #1
- { \cs_show:N #1 }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
+ \__msg_show_variable:NNNnn #1 \tl_if_exist:NTF ? { }
+ { > ~ \token_to_str:N #1 = \tl_to_str:N #1 }
}
\cs_generate_variant:Nn \tl_show:N { c }
\cs_new_protected:Npn \tl_show:n #1
- { \__msg_show_variable:n { > ~ \tl_to_str:n {#1} } }
+ { \__msg_show_wrap:n { > ~ \tl_to_str:n {#1} } }
\tl_new:N \g_tmpa_tl
\tl_new:N \g_tmpb_tl
\tl_new:N \l_tmpa_tl
@@ -3514,7 +3574,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3str.dtx 5659 2015-07-14 18:58:00Z joseph $
+\GetIdInfo$Id: l3str.dtx 5920 2015-09-05 07:55:06Z joseph $
{L3 Strings}
\cs_new:Npn \str_head:n #1
{
@@ -3583,22 +3643,22 @@
}
\cs_new:Npn \str_case:nn #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__str_case:nnTF {#1} {#2} { } { }
}
\cs_new:Npn \str_case:nnT #1#2#3
{
- \tex_romannumeral:D
+ \exp:w
\__str_case:nnTF {#1} {#2} {#3} { }
}
\cs_new:Npn \str_case:nnF #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__str_case:nnTF {#1} {#2} { }
}
\cs_new:Npn \str_case:nnTF #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__str_case:nnTF {#1} {#2}
}
\cs_new:Npn \__str_case:nnTF #1#2#3#4
@@ -3615,22 +3675,22 @@
}
\cs_new:Npn \str_case_x:nn #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__str_case_x:nnTF {#1} {#2} { } { }
}
\cs_new:Npn \str_case_x:nnT #1#2#3
{
- \tex_romannumeral:D
+ \exp:w
\__str_case_x:nnTF {#1} {#2} {#3} { }
}
\cs_new:Npn \str_case_x:nnF #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__str_case_x:nnTF {#1} {#2} { }
}
\cs_new:Npn \str_case_x:nnTF #1#2
{
- \tex_romannumeral:D
+ \exp:w
\__str_case_x:nnTF {#1} {#2}
}
\cs_new:Npn \__str_case_x:nnTF #1#2#3#4
@@ -3645,6 +3705,7 @@
\cs_new:Npn \str_fold_case:n #1 { \__str_change_case:nn {#1} { fold } }
\cs_new:Npn \str_lower_case:n #1 { \__str_change_case:nn {#1} { lower } }
\cs_new:Npn \str_upper_case:n #1 { \__str_change_case:nn {#1} { upper } }
+\cs_generate_variant:Nn \str_fold_case:n { V }
\cs_generate_variant:Nn \str_lower_case:n { f }
\cs_generate_variant:Nn \str_upper_case:n { f }
\cs_new:Npn \__str_change_case:nn #1
@@ -3717,7 +3778,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3seq.dtx 5681 2015-07-24 03:01:31Z bruno $
+\GetIdInfo$Id: l3seq.dtx 5777 2015-08-05 02:32:21Z bruno $
{L3 Sequences and stacks}
\cs_new:Npn \__seq_item:n
{
@@ -4237,7 +4298,8 @@
\prg_new_eq_conditional:NNn \seq_gpop:cN \seq_gpop_left:cN { T , F , TF }
\cs_new_protected:Npn \seq_show:N #1
{
- \__msg_show_variable:Nnn #1 { seq }
+ \__msg_show_variable:NNNnn #1
+ \seq_if_exist:NTF \seq_if_empty:NTF { seq }
{ \seq_map_function:NN #1 \__msg_show_item:n }
}
\cs_generate_variant:Nn \seq_show:N { c }
@@ -4277,7 +4339,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3int.dtx 5659 2015-07-14 18:58:00Z joseph $
+\GetIdInfo$Id: l3int.dtx 5885 2015-08-24 13:29:14Z mittelba $
{L3 Integers}
\cs_new_eq:NN \__int_value:w \tex_number:D
\cs_new_eq:NN \__int_eval:w \etex_numexpr:D
@@ -4515,22 +4577,22 @@
}
\cs_new:Npn \int_case:nnTF #1
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__int_case:nnTF { \int_eval:n {#1} }
}
\cs_new:Npn \int_case:nnT #1#2#3
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__int_case:nnTF { \int_eval:n {#1} } {#2} {#3} { }
}
\cs_new:Npn \int_case:nnF #1#2
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__int_case:nnTF { \int_eval:n {#1} } {#2} { }
}
\cs_new:Npn \int_case:nn #1#2
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__int_case:nnTF { \int_eval:n {#1} } {#2} { } { }
}
\cs_new:Npn \__int_case:nnTF #1#2#3#4
@@ -5025,10 +5087,18 @@
}
\cs_new:Npn \__int_from_roman_error:w #1 \q_recursion_stop #2
{ #2 * \c_zero - \c_one }
-\cs_new_eq:NN \int_show:N \__kernel_register_show:N
-\cs_new_eq:NN \int_show:c \__kernel_register_show:c
-\cs_new_protected:Npn \int_show:n #1
- { \etex_showtokens:D \exp_after:wN { \int_use:N \__int_eval:w #1 } }
+\cs_new_protected:Npn \int_show:N #1
+ {
+ \use:x
+ {
+ \exp_not:n
+ { \__msg_show_variable:NNNnn #1 \cs_if_exist:NTF ? { } }
+ { > ~ \token_to_str:N #1 = \tex_the:D #1 }
+ }
+ }
+\cs_generate_variant:Nn \int_show:N { c }
+\cs_new_protected_nopar:Npn \int_show:n
+ { \__msg_show_wrap:Nn \int_eval:n }
\int_const:Nn \c_one { 1 }
\int_const:Nn \c_two { 2 }
\int_const:Nn \c_three { 3 }
@@ -5093,7 +5163,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3quark.dtx 5659 2015-07-14 18:58:00Z joseph $
+\GetIdInfo$Id: l3quark.dtx 5855 2015-08-17 17:22:56Z mittelba $
{L3 Quarks}
\cs_new_protected:Npn \quark_new:N #1 { \tl_const:Nn #1 {#1} }
\quark_new:N \q_nil
@@ -5233,11 +5303,11 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3prg.dtx 5722 2015-07-30 12:54:33Z bruno $
+\GetIdInfo$Id: l3prg.dtx 5891 2015-08-25 08:00:59Z mittelba $
{L3 Control structures}
%%
-\tex_let:D \if_bool:N \tex_ifodd:D
-\tex_let:D \if_predicate:w \tex_ifodd:D
+\cs_new_eq:NN \if_bool:N \tex_ifodd:D
+\cs_new_eq:NN \if_predicate:w \tex_ifodd:D
\cs_new_protected:Npn \bool_new:N #1 { \cs_new_eq:NN #1 \c_false_bool }
\cs_generate_variant:Nn \bool_new:N { c }
\cs_new_protected:Npn \bool_set_true:N #1
@@ -5266,7 +5336,7 @@
{ \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2} }
\cs_generate_variant:Nn \bool_set:Nn { c }
\cs_generate_variant:Nn \bool_gset:Nn { c }
-\tex_ifodd:D \l@expl@check@declarations@bool
+\if_bool:N \l@expl@check@declarations@bool
\cs_set_protected:Npn \bool_set_true:N #1
{
\__chk_if_exist_var:N #1
@@ -5307,7 +5377,7 @@
\__chk_if_exist_var:N #1
\tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2}
}
-\tex_fi:D
+\fi:
\prg_new_conditional:Npnn \bool_if:N #1 { p , T , F , TF }
{
\if_meaning:w \c_true_bool #1
@@ -5322,22 +5392,13 @@
\cs_generate_variant:Nn \bool_if:NTF { c }
\cs_new_protected:Npn \bool_show:N #1
{
- \bool_if_exist:NTF #1
- {
- \__msg_show_variable:n
- { > \token_to_str:N #1 = \bool_if:NTF #1 { true } { false } }
- }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
- }
-\cs_new_protected:Npn \bool_show:n #1
- {
- \bool_if:nTF {#1}
- { \__msg_show_variable:n { > ~ true } }
- { \__msg_show_variable:n { > ~ false } }
+ \__msg_show_variable:NNNnn #1 \bool_if_exist:NTF ? { }
+ { > ~ \token_to_str:N #1 = \__bool_to_str:n {#1} }
}
+\cs_new_protected_nopar:Npn \bool_show:n
+ { \__msg_show_wrap:Nn \__bool_to_str:n }
+\cs_new:Npn \__bool_to_str:n #1
+ { \bool_if:nTF {#1} { true } { false } }
\cs_generate_variant:Nn \bool_show:N { c }
\bool_new:N \l_tmpa_bool
\bool_new:N \l_tmpb_bool
@@ -5477,7 +5538,7 @@
}
\cs_new:Npn \prg_replicate:nn #1
{
- \__int_to_roman:w
+ \exp:w
\exp_after:wN \__prg_replicate_first:N
\__int_value:w \__int_eval:w #1 \__int_eval_end:
\cs_end:
@@ -5509,19 +5570,19 @@
{ \cs_end: {#1#1#1#1#1#1#1#1#1#1} #1#1#1#1#1#1#1#1#1 }
\cs_new:cpn { __prg_replicate_first_-:n } #1
{
- \c_zero
+ \exp_end:
\__msg_kernel_expandable_error:nn { kernel } { negative-replication }
}
-\cs_new:cpn { __prg_replicate_first_0:n } #1 { \c_zero }
-\cs_new:cpn { __prg_replicate_first_1:n } #1 { \c_zero #1 }
-\cs_new:cpn { __prg_replicate_first_2:n } #1 { \c_zero #1#1 }
-\cs_new:cpn { __prg_replicate_first_3:n } #1 { \c_zero #1#1#1 }
-\cs_new:cpn { __prg_replicate_first_4:n } #1 { \c_zero #1#1#1#1 }
-\cs_new:cpn { __prg_replicate_first_5:n } #1 { \c_zero #1#1#1#1#1 }
-\cs_new:cpn { __prg_replicate_first_6:n } #1 { \c_zero #1#1#1#1#1#1 }
-\cs_new:cpn { __prg_replicate_first_7:n } #1 { \c_zero #1#1#1#1#1#1#1 }
-\cs_new:cpn { __prg_replicate_first_8:n } #1 { \c_zero #1#1#1#1#1#1#1#1 }
-\cs_new:cpn { __prg_replicate_first_9:n } #1 { \c_zero #1#1#1#1#1#1#1#1#1 }
+\cs_new:cpn { __prg_replicate_first_0:n } #1 { \exp_end: }
+\cs_new:cpn { __prg_replicate_first_1:n } #1 { \exp_end: #1 }
+\cs_new:cpn { __prg_replicate_first_2:n } #1 { \exp_end: #1#1 }
+\cs_new:cpn { __prg_replicate_first_3:n } #1 { \exp_end: #1#1#1 }
+\cs_new:cpn { __prg_replicate_first_4:n } #1 { \exp_end: #1#1#1#1 }
+\cs_new:cpn { __prg_replicate_first_5:n } #1 { \exp_end: #1#1#1#1#1 }
+\cs_new:cpn { __prg_replicate_first_6:n } #1 { \exp_end: #1#1#1#1#1#1 }
+\cs_new:cpn { __prg_replicate_first_7:n } #1 { \exp_end: #1#1#1#1#1#1#1 }
+\cs_new:cpn { __prg_replicate_first_8:n } #1 { \exp_end: #1#1#1#1#1#1#1#1 }
+\cs_new:cpn { __prg_replicate_first_9:n } #1 { \exp_end: #1#1#1#1#1#1#1#1#1 }
\prg_new_conditional:Npnn \mode_if_vertical: { p , T , F , TF }
{ \if_mode_vertical: \prg_return_true: \else: \prg_return_false: \fi: }
\prg_new_conditional:Npnn \mode_if_horizontal: { p , T , F , TF }
@@ -5534,44 +5595,11 @@
{ \if_int_compare:w \if_false: { \fi: `} = \c_zero \fi: }
\cs_new_nopar:Npn \group_align_safe_end:
{ \if_int_compare:w `{ = \c_zero } \fi: }
-\cs_new_protected_nopar:Npn \scan_align_safe_stop: { }
-\group_begin:
- \tex_lccode:D `* = `g \scan_stop:
- \tex_catcode:D `* = \c_twelve
-\tl_to_lowercase:n
- {
- \group_end:
- \cs_new:Npn \__prg_variable_get_scope:N #1
- {
- \exp_after:wN \exp_after:wN
- \exp_after:wN \__prg_variable_get_scope:w
- \cs_to_str:N #1 \exp_stop_f: \q_stop
- }
- \cs_new:Npn \__prg_variable_get_scope:w #1#2 \q_stop
- { \token_if_eq_meaning:NNT * #1 { g } }
- }
-\group_begin:
- \tex_lccode:D `* = `_ \scan_stop:
- \tex_catcode:D `* = \c_twelve
-\tl_to_lowercase:n
- {
- \group_end:
- \cs_new:Npn \__prg_variable_get_type:N #1
- {
- \exp_after:wN \__prg_variable_get_type:w
- \token_to_str:N #1 * a \q_stop
- }
- \cs_new:Npn \__prg_variable_get_type:w #1 * #2#3 \q_stop
- {
- \token_if_eq_meaning:NNTF a #2
- {#1}
- { \__prg_variable_get_type:w #2#3 \q_stop }
- }
- }
\int_new:N \g__prg_map_int
+\cs_new_protected_nopar:Npn \scan_align_safe_stop: { }
%% File: l3clist.dtx Copyright (C) 2004-2011 Frank Mittelbach,
%% The LaTeX3 project
-%% (C) 2012-2014 The LaTeX3 Project
+%% (C) 2012-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -5603,7 +5631,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3clist.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3clist.dtx 5901 2015-09-02 05:59:23Z joseph $
{L3 Comma separated lists}
\cs_new_eq:NN \c_empty_clist \c_empty_tl
\tl_new:N \l__clist_internal_clist
@@ -6125,20 +6153,23 @@
\cs_new:Npn \__clist_item_n_strip:w #1 , { \exp_not:n {#1} }
\cs_new_protected:Npn \clist_show:N #1
{
- \__msg_show_variable:Nnn #1 { clist }
+ \__msg_show_variable:NNNnn #1
+ \clist_if_exist:NTF \clist_if_empty:NTF { clist }
{ \clist_map_function:NN #1 \__msg_show_item:n }
}
\cs_new_protected:Npn \clist_show:n #1
{
- \clist_set:Nn \l__clist_internal_clist {#1}
- \clist_show:N \l__clist_internal_clist
+ \__msg_show_pre:nnxxxx { LaTeX / kernel } { show-clist }
+ { } { \clist_if_empty:nF {#1} { ? } } { } { }
+ \__msg_show_wrap:n
+ { \clist_map_function:nN {#1} \__msg_show_item:n }
}
\cs_generate_variant:Nn \clist_show:N { c }
\clist_new:N \l_tmpa_clist
\clist_new:N \l_tmpb_clist
\clist_new:N \g_tmpa_clist
\clist_new:N \g_tmpb_clist
-%% File: l3token.dtx Copyright (C) 2005-2014 The LaTeX3 Project
+%% File: l3token.dtx Copyright (C) 2005-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -6170,14 +6201,80 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3token.dtx 5422 2014-09-15 10:44:23Z joseph $
+\GetIdInfo$Id: l3token.dtx 5893 2015-08-26 16:16:52Z mittelba $
{L3 Experimental token manipulation}
+\group_begin:
+\tex_catcode:D `@ = \c_eleven
+\tex_catcode:D \c_zero = \c_twelve
\cs_new_protected:Npn \char_set_catcode:nn #1#2
- { \tex_catcode:D #1 = \__int_eval:w #2 \__int_eval_end: }
+ {
+ \group_begin:
+ \char_set_lccode:nn { 0 } {#1}
+ \tl_to_lowercase:n
+ { \group_end: \__char_set_catcode:Nn ^^@ } {#2}
+ }
+\tex_catcode:D \c_zero = \c_thirteen
+\cs_new_protected:Npn \__char_set_catcode:Nn #1#2
+ {
+ \int_compare:nNnTF { \tex_catcode:D `#1 / \c_two } = \c_six
+ {
+ \__char_set_catcode:NnNNN #1 {#2} \int_compare:nNnF
+ \tl_put_right:Nn \seq_put_right:Nn
+ }
+ {
+ \__char_set_catcode:NnNNN #1 {#2} \int_compare:nNnT
+ \tl_remove_all:Nn \seq_remove_all:Nn
+ }
+ \int_compare:nNnT { \tex_catcode:D `#1 } = \c_thirteen
+ {
+ \group_begin:
+ \char_set_lccode:nn { 0 } { `#1 }
+ \tl_to_lowercase:n
+ {
+ \group_end:
+ \seq_if_in:NnF \l_char_active_seq { ^^@ }
+ { \seq_put_right:Nn \l_char_active_seq { ^^@ } }
+ }
+ }
+ }
+\cs_new_protected:Npn \__char_set_catcode:NnNNN #1#2#3#4#5
+ {
+ \tex_catcode:D `#1 = \__int_eval:w #2 \__int_eval_end:
+ #3 { \tex_catcode:D `#1 / \c_two } = \c_six
+ {
+ \group_begin: \exp_args:NNc \group_end:
+ \__char_set_catcode:NNN {#1} #4 #5
+ }
+ }
+\exp_args:Nnf \use:n
+ { \cs_new_protected:Npn \__char_set_catcode:NNN #1#2#3 }
+ {
+ \tl_if_exist:NT \dospecials
+ {
+ \tl_if_exist:NT \@sanitize { #2 \@sanitize { \@makeother #1 } }
+ #2 \dospecials { \do #1 }
+ }
+ #3 \l_char_special_seq {#1}
+ }
+\tl_if_exist:NT \@sanitize
+ {
+ \exp_args:Nno \use:n
+ { \cs_gset_protected:Npn \__char_set_catcode:Nn #1#2 }
+ {
+ \__char_set_catcode:Nn {#1} {#2}
+ \int_compare:nNnT { \tex_catcode:D `#1 / \c_two } = \c_one
+ {
+ \group_begin: \exp_args:NNNx \group_end:
+ \tl_remove_all:Nn \@sanitize
+ { \exp_not:N \@makeother \exp_not:c {#1} }
+ }
+ }
+ }
\cs_new:Npn \char_value_catcode:n #1
{ \tex_the:D \tex_catcode:D \__int_eval:w #1\__int_eval_end: }
\cs_new_protected:Npn \char_show_value_catcode:n #1
- { \int_show:n { \char_value_catcode:n {#1} } }
+ { \__msg_show_wrap:n { > ~ \char_value_catcode:n {#1} } }
+\group_end:
\cs_new_protected:Npn \char_set_catcode_escape:N #1
{ \char_set_catcode:nn { `#1 } \c_zero }
\cs_new_protected:Npn \char_set_catcode_group_begin:N #1
@@ -6243,29 +6340,61 @@
\cs_new_protected:Npn \char_set_catcode_invalid:n #1
{ \char_set_catcode:nn {#1} \c_fifteen }
\cs_new_protected:Npn \char_set_mathcode:nn #1#2
- { \tex_mathcode:D #1 = \__int_eval:w #2 \__int_eval_end: }
+ {
+ \tex_mathcode:D \__int_eval:w #1 \__int_eval_end:
+ = \__int_eval:w #2 \__int_eval_end:
+ }
\cs_new:Npn \char_value_mathcode:n #1
{ \tex_the:D \tex_mathcode:D \__int_eval:w #1\__int_eval_end: }
\cs_new_protected:Npn \char_show_value_mathcode:n #1
- { \int_show:n { \char_value_mathcode:n {#1} } }
+ { \__msg_show_wrap:n { > ~ \char_value_mathcode:n {#1} } }
\cs_new_protected:Npn \char_set_lccode:nn #1#2
- { \tex_lccode:D #1 = \__int_eval:w #2 \__int_eval_end: }
+ {
+ \tex_lccode:D \__int_eval:w #1 \__int_eval_end:
+ = \__int_eval:w #2 \__int_eval_end:
+ }
\cs_new:Npn \char_value_lccode:n #1
{ \tex_the:D \tex_lccode:D \__int_eval:w #1\__int_eval_end: }
\cs_new_protected:Npn \char_show_value_lccode:n #1
- { \int_show:n { \char_value_lccode:n {#1} } }
+ { \__msg_show_wrap:n { > ~ \char_value_lccode:n {#1} } }
\cs_new_protected:Npn \char_set_uccode:nn #1#2
- { \tex_uccode:D #1 = \__int_eval:w #2 \__int_eval_end: }
+ {
+ \tex_uccode:D \__int_eval:w #1 \__int_eval_end:
+ = \__int_eval:w #2 \__int_eval_end:
+ }
\cs_new:Npn \char_value_uccode:n #1
{ \tex_the:D \tex_uccode:D \__int_eval:w #1\__int_eval_end: }
\cs_new_protected:Npn \char_show_value_uccode:n #1
- { \int_show:n { \char_value_uccode:n {#1} } }
+ { \__msg_show_wrap:n { > ~ \char_value_uccode:n {#1} } }
\cs_new_protected:Npn \char_set_sfcode:nn #1#2
- { \tex_sfcode:D #1 = \__int_eval:w #2 \__int_eval_end: }
+ {
+ \tex_sfcode:D \__int_eval:w #1 \__int_eval_end:
+ = \__int_eval:w #2 \__int_eval_end:
+ }
\cs_new:Npn \char_value_sfcode:n #1
{ \tex_the:D \tex_sfcode:D \__int_eval:w #1\__int_eval_end: }
\cs_new_protected:Npn \char_show_value_sfcode:n #1
- { \int_show:n { \char_value_sfcode:n {#1} } }
+ { \__msg_show_wrap:n { > ~ \char_value_sfcode:n {#1} } }
+\seq_new:N \l_char_special_seq
+\seq_set_split:Nnn \l_char_special_seq { }
+ { \ \" \# \$ \% \& \\ \^ \_ \{ \} \~ }
+\seq_new:N \l_char_active_seq
+\use:n
+ {
+ \group_begin:
+ \char_set_catcode_active:N \"
+ \char_set_catcode_active:N \$
+ \char_set_catcode_active:N \&
+ \char_set_catcode_active:N \^
+ \char_set_catcode_active:N \_
+ \char_set_catcode_active:N \~
+ \use:nn
+ {
+ \group_end:
+ \seq_set_split:Nnn \l_char_active_seq { }
+ }
+ }
+ { { " $ & ^ _ ~ } } %$
\cs_new_protected:Npn \token_new:Nn #1#2 { \cs_new_eq:NN #1 #2 }
\group_begin:
\__chk_if_free_cs:N \c_group_begin_token
@@ -6289,26 +6418,6 @@
\char_set_catcode_active:N \*
\tl_const:Nn \c_catcode_active_tl { \exp_not:N * }
\group_end:
-\seq_new:N \l_char_active_seq
-\use:n
- {
- \group_begin:
- \char_set_catcode_active:N \"
- \char_set_catcode_active:N \$
- \char_set_catcode_active:N \&
- \char_set_catcode_active:N \^
- \char_set_catcode_active:N \_
- \char_set_catcode_active:N \~
- \use:nn
- {
- \group_end:
- \seq_set_split:Nnn \l_char_active_seq { }
- }
- }
- { { " $ & ^ _ ~ } } %$
-\seq_new:N \l_char_special_seq
-\seq_set_split:Nnn \l_char_special_seq { }
- { \ \" \# \$ \% \& \\ \^ \_ \{ \} \~ }
\prg_new_conditional:Npnn \token_if_group_begin:N #1 { p , T , F , TF }
{
\if_catcode:w \exp_not:N #1 \c_group_begin_token
@@ -6747,7 +6856,7 @@
\if_meaning:w \l_peek_token \c_space_token
\exp_after:wN \peek_after:Nw
\exp_after:wN \__peek_ignore_spaces_execute_branches:
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\else:
\exp_after:wN \__peek_execute_branches:
\fi:
@@ -6849,7 +6958,7 @@
}
{ \scan_stop: }
}
-%% File: l3prop.dtx Copyright (C) 1990-2014 The LaTeX3 Project
+%% File: l3prop.dtx Copyright (C) 1990-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -6881,7 +6990,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3prop.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3prop.dtx 5777 2015-08-05 02:32:21Z bruno $
{L3 Property lists}
\__scan_new:N \s__prop
\cs_new:Npn \__prop_pair:wn #1 \s__prop #2
@@ -7147,7 +7256,8 @@
{ \__prg_map_break:Nn \prop_map_break: }
\cs_new_protected:Npn \prop_show:N #1
{
- \__msg_show_variable:Nnn #1 { prop }
+ \__msg_show_variable:NNNnn #1
+ \prop_if_exist:NTF \prop_if_empty:NTF { prop }
{ \prop_map_function:NN #1 \__msg_show_item:nn }
}
\cs_generate_variant:Nn \prop_show:N { c }
@@ -7185,7 +7295,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3msg.dtx 5537 2015-02-26 21:25:23Z joseph $
+\GetIdInfo$Id: l3msg.dtx 5891 2015-08-25 08:00:59Z mittelba $
{L3 Messages}
\tl_new:N \l__msg_internal_tl
\tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ }
@@ -7203,7 +7313,7 @@
{#1} {#2}
}
}
-\tex_ifodd:D \l@expl@log@functions@bool
+\if_bool:N \l@expl@log@functions@bool
\cs_gset_protected:Npn \__chk_if_free_msg:nn #1#2
{
\msg_if_exist:nnT {#1} {#2}
@@ -7211,7 +7321,7 @@
\__msg_kernel_error:nnxx { kernel } { message-already-defined }
{#1} {#2}
}
- \iow_log:x { Defining~message~ #1 / #2 ~\msg_line_context: }
+ \__chk_log:x { Defining~message~ #1 / #2 ~\msg_line_context: }
}
\fi:
\cs_new_protected:Npn \msg_new:nnnn #1#2
@@ -7810,30 +7920,36 @@
{ Zero~step~size~for~step~function~#1. }
\__msg_kernel_new:nnn { kernel } { show-clist }
{
- The~comma~list~
- \str_if_eq:nnF {#1} { \l__clist_internal_clist } { \token_to_str:N #1~}
- \clist_if_empty:NTF #1
+ The~comma~list~ \tl_if_empty:nF {#1} { #1 ~ }
+ \tl_if_empty:nTF {#2}
{ is~empty }
{ contains~the~items~(without~outer~braces): }
}
\__msg_kernel_new:nnn { kernel } { show-prop }
{
- The~property~list~\token_to_str:N #1~
- \prop_if_empty:NTF #1
+ The~property~list~#1~
+ \tl_if_empty:nTF {#2}
{ is~empty }
{ contains~the~pairs~(without~outer~braces): }
}
\__msg_kernel_new:nnn { kernel } { show-seq }
{
- The~sequence~\token_to_str:N #1~
- \seq_if_empty:NTF #1
+ The~sequence~#1~
+ \tl_if_empty:nTF {#2}
{ is~empty }
{ contains~the~items~(without~outer~braces): }
}
-\__msg_kernel_new:nnn { kernel } { show-no-stream }
- { No~ #1 ~streams~are~open }
-\__msg_kernel_new:nnn { kernel } { show-open-streams }
- { The~following~ #1 ~streams~are~in~use: }
+\__msg_kernel_new:nnn { kernel } { show-streams }
+ {
+ \tl_if_empty:nTF {#2} { No~ } { The~following~ }
+ \str_case:nn {#1}
+ {
+ { ior } { input ~ }
+ { iow } { output ~ }
+ }
+ streams~are~
+ \tl_if_empty:nTF {#2} { open } { in~use: }
+ }
\group_begin:
\char_set_catcode_math_superscript:N \^
\char_set_lccode:nn { `^ } { `\ }
@@ -7846,11 +7962,11 @@
{
\exp_not:n
{
- \tex_romannumeral:D
+ \exp:w
\exp_after:wN \exp_after:wN
\exp_after:wN \__msg_expandable_error:w
\exp_after:wN \exp_after:wN
- \exp_after:wN \c_zero
+ \exp_after:wN \exp_end:
}
\exp_not:N \use:n { \exp_not:c { LaTeX3~error: } ^ #1 } ^
}
@@ -7886,48 +8002,72 @@
\__msg_kernel_expandable_error:nnnnnn
{#1} {#2} { } { } { } { }
}
-\cs_new_protected:Npn \__msg_term:nnnnnn #1#2#3#4#5#6
+\bool_new:N \g__msg_log_next_bool
+\cs_new_protected_nopar:Npn \__msg_log_next:
+ { \bool_gset_true:N \g__msg_log_next_bool }
+\cs_new_protected:Npn \__msg_show_pre:nnnnnn #1#2#3#4#5#6
{
- \iow_wrap:nnnN
- { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
- { } { } \iow_term:n
+ \exp_args:Nx \iow_wrap:nnnN
+ {
+ \exp_not:c { \c__msg_text_prefix_tl #1 / #2 }
+ { \tl_to_str:n {#3} }
+ { \tl_to_str:n {#4} }
+ { \tl_to_str:n {#5} }
+ { \tl_to_str:n {#6} }
+ }
+ { } { } \__msg_show_pre_aux:n
}
-\cs_generate_variant:Nn \__msg_term:nnnnnn { nnnnnV }
-\cs_new_protected:Npn \__msg_term:nnnnn #1#2#3#4#5
- { \__msg_term:nnnnnn {#1} {#2} {#3} {#4} {#5} { } }
-\cs_new_protected:Npn \__msg_term:nnn #1#2#3
- { \__msg_term:nnnnnn {#1} {#2} {#3} { } { } { } }
-\cs_new_protected:Npn \__msg_term:nn #1#2
- { \__msg_term:nnnnnn {#1} {#2} { } { } { } { } }
-\cs_new_protected:Npn \__msg_show_variable:Nnn #1#2#3
+\cs_new_protected:Npn \__msg_show_pre:nnxxxx #1#2#3#4#5#6
{
- \cs_if_exist:NTF #1
+ \use:x
+ { \exp_not:n { \__msg_show_pre:nnnnnn {#1} {#2} } {#3} {#4} {#5} {#6} }
+ }
+\cs_generate_variant:Nn \__msg_show_pre:nnnnnn { nnnnnV }
+\cs_new_protected_nopar:Npn \__msg_show_pre_aux:n
+ { \bool_if:NTF \g__msg_log_next_bool { \iow_log:n } { \iow_term:n } }
+\cs_new_protected:Npn \__msg_show_variable:NNNnn #1#2#3#4#5
+ {
+ #2 #1
{
- \__msg_term:nnn { LaTeX / kernel } { show- #2 } {#1}
- \__msg_show_variable:n {#3}
+ \tl_if_empty:nF {#4}
+ {
+ \__msg_show_pre:nnxxxx { LaTeX / kernel } { show- #4 }
+ { \token_to_str:N #1 } { #3 #1 { } { ? } } { } { }
+ }
+ \__msg_show_wrap:n {#5}
}
{
\__msg_kernel_error:nnx { kernel } { variable-not-defined }
{ \token_to_str:N #1 }
+ \bool_gset_false:N \g__msg_log_next_bool
}
}
-\cs_new_protected:Npn \__msg_show_variable:n #1
- { \iow_wrap:nnnN {#1} { } { } \__msg_show_variable_aux:n }
-\cs_new_protected:Npn \__msg_show_variable_aux:n #1
+\cs_new_protected:Npn \__msg_show_wrap:Nn #1#2
+ { \exp_args:Nx \__msg_show_wrap:n { > ~ \tl_to_str:n {#2} = #1 {#2} } }
+\cs_new_protected:Npn \__msg_show_wrap:n #1
+ { \iow_wrap:nnnN { #1 . } { } { } \__msg_show_wrap_aux:n }
+\cs_new_protected:Npn \__msg_show_wrap_aux:n #1
{
- \tl_if_empty:nTF {#1}
+ \tl_if_single:nTF {#1}
{ \tl_clear:N \l__msg_internal_tl }
- { \tl_set:Nf \l__msg_internal_tl { \__msg_show_variable_aux:w #1 } }
- \__iow_with:Nnn \tex_newlinechar:D { 10 }
+ { \tl_set:Nf \l__msg_internal_tl { \__msg_show_wrap_aux:w #1 \q_stop } }
+ \bool_if:NTF \g__msg_log_next_bool
{
- \__iow_with:Nnn \tex_errorcontextlines:D \c_minus_one
+ \iow_log:x { > ~ \l__msg_internal_tl . }
+ \bool_gset_false:N \g__msg_log_next_bool
+ }
+ {
+ \__iow_with:Nnn \tex_newlinechar:D { 10 }
{
- \etex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN
- { \exp_after:wN \l__msg_internal_tl }
+ \__iow_with:Nnn \tex_errorcontextlines:D \c_minus_one
+ {
+ \etex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN
+ { \exp_after:wN \l__msg_internal_tl }
+ }
}
}
}
-\cs_new:Npn \__msg_show_variable_aux:w #1 > { }
+\cs_new:Npn \__msg_show_wrap_aux:w #1 > #2 . \q_stop {#2}
\cs_new:Npn \__msg_show_item:n #1
{
\\ > \ \ \{ \tl_to_str:n {#1} \}
@@ -7974,7 +8114,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3file.dtx 5714 2015-07-30 00:51:47Z bruno $
+\GetIdInfo$Id: l3file.dtx 5786 2015-08-05 16:18:39Z bruno $
{L3 File and I/O operations}
\tl_new:N \g_file_current_name_tl
\cs_if_exist:NT \@currname
@@ -8215,13 +8355,12 @@
}
\cs_generate_variant:Nn \ior_close:N { c }
\cs_new_protected_nopar:Npn \ior_list_streams:
- { \__ior_list_streams:Nn \g__ior_streams_prop { input } }
+ { \__ior_list_streams:Nn \g__ior_streams_prop { ior } }
\cs_new_protected:Npn \__ior_list_streams:Nn #1#2
{
- \__msg_term:nnn { LaTeX / kernel }
- { \prop_if_empty:NTF #1 { show-no-stream } { show-open-streams } }
- {#2}
- \__msg_show_variable:n
+ \__msg_show_pre:nnxxxx { LaTeX / kernel } { show-streams }
+ {#2} { \prop_if_empty:NF #1 { ? } } { } { }
+ \__msg_show_wrap:n
{ \prop_map_function:NN #1 \__msg_show_item_unbraced:nn }
}
\cs_new_eq:NN \if_eof:w \tex_ifeof:D
@@ -8310,7 +8449,7 @@
}
\cs_generate_variant:Nn \iow_close:N { c }
\cs_new_protected_nopar:Npn \iow_list_streams:
- { \__iow_list_streams:Nn \g__iow_streams_prop { output } }
+ { \__iow_list_streams:Nn \g__iow_streams_prop { iow } }
\cs_new_eq:NN \__iow_list_streams:Nn \__ior_list_streams:Nn
\cs_new_protected:Npn \iow_shipout_x:Nn #1#2
{ \tex_write:D #1 {#2} }
@@ -8406,10 +8545,7 @@
\cs_set_eq:NN \iow_indent:n \__iow_indent_error:n
\tl_set:Nx \l__iow_newline_tl { \iow_newline: #2 }
\tl_set:Nx \l__iow_newline_tl { \tl_to_str:N \l__iow_newline_tl }
- \tl_replace_all:Nnn \l__iow_newline_tl { ~ } { \c_space_tl }
- \int_set:Nn \l__iow_target_count_int
- { \l_iow_line_count_int - \tl_count:N \l__iow_newline_tl + \c_one }
- \int_zero:N \l__iow_current_indentation_int
+ \int_set_eq:NN \l__iow_target_count_int \l_iow_line_count_int
\tl_clear:N \l__iow_current_indentation_tl
\int_zero:N \l__iow_current_line_int
\tl_set:Nn \l__iow_current_line_tl { \use_none:n }
@@ -8428,6 +8564,16 @@
#4 \l__iow_wrap_tl
}
\cs_new_eq:NN \__iow_wrap_set:Nx \protected@edef
+\cs_new_protected_nopar:Npn \__iow_wrap_set_target:
+ {
+ \cs_set_protected_nopar:Npn \__iow_wrap_set_target:
+ {
+ \cs_set_protected_nopar:Npn \__iow_wrap_set_target: { }
+ \tl_replace_all:Nnn \l__iow_newline_tl { ~ } { \c_space_tl }
+ \int_set:Nn \l__iow_target_count_int
+ { \l_iow_line_count_int - \tl_count:N \l__iow_newline_tl + \c_one }
+ }
+ }
\cs_new_protected:Npn \__iow_wrap_loop:w #1 ~ %
{
\tl_set:Nn \l__iow_current_word_tl {#1}
@@ -8463,6 +8609,7 @@
}
\cs_new_protected_nopar:Npn \__iow_wrap_word_newline:
{
+ \__iow_wrap_set_target:
\tl_put_right:Nx \l__iow_wrap_tl
{ \l__iow_current_line_tl \l__iow_newline_tl }
\int_set:Nn \l__iow_current_line_int
@@ -8482,6 +8629,7 @@
}
\cs_new_protected_nopar:Npn \__iow_wrap_newline:
{
+ \__iow_wrap_set_target:
\tl_put_right:Nx \l__iow_wrap_tl
{ \l__iow_current_line_tl \l__iow_newline_tl }
\int_zero:N \l__iow_current_line_int
@@ -8585,7 +8733,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3skip.dtx 5659 2015-07-14 18:58:00Z joseph $
+\GetIdInfo$Id: l3skip.dtx 5893 2015-08-26 16:16:52Z mittelba $
{L3 Dimensions and skips}
\cs_new_eq:NN \if_dim:w \tex_ifdim:D
\cs_new_eq:NN \__dim_eval:w \etex_dimexpr:D
@@ -8684,7 +8832,7 @@
}
\cs_new:Npn \__dim_compare:w #1 \__prg_compare_error:
{
- \exp_after:wN \if_false: \tex_romannumeral:D -`0
+ \exp_after:wN \if_false: \exp:w \exp_end_continue_f:w
\__dim_compare:wNN #1 ? { = \__dim_compare_end:w \else: } \q_stop
}
\exp_args:Nno \use:nn
@@ -8715,22 +8863,22 @@
{ #1 \prg_return_false: \else: \prg_return_true: \fi: }
\cs_new:Npn \dim_case:nnTF #1
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__dim_case:nnTF { \dim_eval:n {#1} }
}
\cs_new:Npn \dim_case:nnT #1#2#3
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__dim_case:nnTF { \dim_eval:n {#1} } {#2} {#3} { }
}
\cs_new:Npn \dim_case:nnF #1#2
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__dim_case:nnTF { \dim_eval:n {#1} } {#2} { }
}
\cs_new:Npn \dim_case:nn #1#2
{
- \tex_romannumeral:D
+ \exp:w
\exp_args:Nf \__dim_case:nnTF { \dim_eval:n {#1} } {#2} { } { }
}
\cs_new:Npn \__dim_case:nnTF #1#2#3#4
@@ -8831,8 +8979,8 @@
}
\cs_new_eq:NN \dim_show:N \__kernel_register_show:N
\cs_generate_variant:Nn \dim_show:N { c }
-\cs_new_protected:Npn \dim_show:n #1
- { \etex_showtokens:D \exp_after:wN { \dim_use:N \__dim_eval:w #1 } }
+\cs_new_protected_nopar:Npn \dim_show:n
+ { \__msg_show_wrap:Nn \dim_eval:n }
\dim_const:Nn \c_zero_dim { 0 pt }
\dim_const:Nn \c_max_dim { 16383.99999 pt }
\dim_new:N \l_tmpa_dim
@@ -8921,8 +9069,8 @@
\cs_generate_variant:Nn \skip_vertical:N { c }
\cs_new_eq:NN \skip_show:N \__kernel_register_show:N
\cs_generate_variant:Nn \skip_show:N { c }
-\cs_new_protected:Npn \skip_show:n #1
- { \etex_showtokens:D \exp_after:wN { \tex_the:D \etex_glueexpr:D #1 } }
+\cs_new_protected_nopar:Npn \skip_show:n
+ { \__msg_show_wrap:Nn \skip_eval:n }
\skip_const:Nn \c_zero_skip { \c_zero_dim }
\skip_const:Nn \c_max_skip { \c_max_dim }
\skip_new:N \l_tmpa_skip
@@ -8983,8 +9131,8 @@
\cs_generate_variant:Nn \muskip_use:N { c }
\cs_new_eq:NN \muskip_show:N \__kernel_register_show:N
\cs_generate_variant:Nn \muskip_show:N { c }
-\cs_new_protected:Npn \muskip_show:n #1
- { \etex_showtokens:D \exp_after:wN { \tex_the:D \etex_muexpr:D #1 } }
+\cs_new_protected_nopar:Npn \muskip_show:n
+ { \__msg_show_wrap:Nn \muskip_eval:n }
\muskip_const:Nn \c_zero_muskip { 0 mu }
\muskip_const:Nn \c_max_muskip { 16383.99999 mu }
\muskip_new:N \l_tmpa_muskip
@@ -9025,7 +9173,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3keys.dtx 5684 2015-07-26 07:23:48Z joseph $
+\GetIdInfo$Id: l3keys.dtx 5869 2015-08-20 01:19:17Z bruno $
{L3 Key-value interfaces}
\int_new:N \g__keyval_level_int
\tl_new:N \l__keyval_key_tl
@@ -9217,7 +9365,7 @@
}
\cs_if_exist:cF { \c__keys_code_root_tl #1 }
{
- \__chk_if_free_cs:c { \c__keys_code_root_tl #1 }
+ \__chk_log:x { Defining~key~#1~ \msg_line_context: }
\cs_set_protected:cpn { \c__keys_code_root_tl #1 } ##1 { }
}
}
@@ -9758,7 +9906,34 @@
{ \prg_return_false: }
}
\cs_new_protected:Npn \keys_show:nn #1#2
- { \cs_show:c { \c__keys_code_root_tl #1 / \tl_to_str:n {#2} } }
+ {
+ \keys_if_exist:nnTF {#1} {#2}
+ {
+ \__msg_show_pre:nnxxxx { LaTeX / kernel } { show-key }
+ { \tl_to_str:n { #1 / #2 } } { t } { } { }
+ \exp_args:Ncc \__keys_show:NN
+ { \c__keys_code_root_tl \tl_to_str:n { #1 / #2 } }
+ { \c__keys_info_root_tl \tl_to_str:n { #1 / #2 } }
+ }
+ {
+ \__msg_show_pre:nnxxxx { LaTeX / kernel } { show-key }
+ { \tl_to_str:n { #1 / #2 } } { f } { } { }
+ \__msg_show_wrap:n { }
+ }
+ }
+\cs_new_protected:Npn \__keys_show:NN #1#2
+ {
+ \use:x
+ {
+ \__msg_show_wrap:n
+ {
+ \exp_not:N \__msg_show_item_unbraced:nn { code }
+ { \token_get_replacement_spec:N #1 }
+ \exp_not:n
+ { \prop_map_function:NN #2 \__msg_show_item_unbraced:nn }
+ }
+ }
+ }
\__msg_kernel_new:nnnn { kernel } { boolean-values-only }
{ Key~'#1'~accepts~boolean~values~only. }
{ The~key~'#1'~only~accepts~the~values~'true'~and~'false'. }
@@ -9786,7 +9961,7 @@
\__msg_kernel_new:nnnn { kernel } { key-unknown }
{ The~key~'#1'~is~unknown~and~is~being~ignored. }
{
- The~module~'#2'~does~not~have~a~key~called~#1'.\\
+ The~module~'#2'~does~not~have~a~key~called~'#1'.\\
Check~that~you~have~spelled~the~key~name~correctly.
}
\__msg_kernel_new:nnnn { kernel } { nested-choice-key }
@@ -9816,10 +9991,10 @@
this~property~is~not~defined.
}
\__msg_kernel_new:nnnn { kernel } { value-forbidden }
- { The~key~'#1'~does~not~taken~a~value. }
+ { The~key~'#1'~does~not~take~a~value. }
{
The~key~'#1'~should~be~given~without~a~value.\\
- LaTeX~will~ignore~the~given~value~'#2'.
+ The~value~'#2'~was~present:~the~key~will~be~ignored.
}
\__msg_kernel_new:nnnn { kernel } { value-required }
{ The~key~'#1'~requires~a~value. }
@@ -9827,11 +10002,18 @@
The~key~'#1'~must~have~a~value.\\
No~value~was~present:~the~key~will~be~ignored.
}
+\__msg_kernel_new:nnn { kernel } { show-key }
+ {
+ The~key~#1~
+ \str_if_eq:nnTF {#2} { t }
+ { has~the~properties: }
+ { is~undefined. }
+ }
\cs_new_protected_nopar:cpn { \c__keys_props_root_tl .value_forbidden: }
{ \__keys_value_requirement:nn { forbidden } { true } }
\cs_new_protected_nopar:cpn { \c__keys_props_root_tl .value_required: }
{ \__keys_value_requirement:nn { required } { true } }
-%% File: l3fp.dtx Copyright (C) 2011-2014 The LaTeX3 Project
+%% File: l3fp.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -9864,7 +10046,7 @@
%%
%% -----------------------------------------------------------------------
%%
-\GetIdInfo$Id: l3fp.dtx 5652 2015-07-09 13:11:22Z joseph $
+\GetIdInfo$Id: l3fp.dtx 5890 2015-08-25 07:47:22Z joseph $
{L3 Floating points}
%% File: l3fp-aux.dtx Copyright(C) 2011-2014 The LaTeX3 Project
%%
@@ -9997,7 +10179,7 @@
\else:
\exp_after:wN \__fp_exp_after_special:nNNw
\fi:
- { \tex_romannumeral:D -`0 #1 }
+ { \exp:w \exp_end_continue_f:w #1 }
#2
}
\cs_new:Npn \__fp_exp_after_special:nNNw #1#2#3#4;
@@ -10055,7 +10237,7 @@
\if_int_compare:w \__int_eval:w #1 > \c_sixteen
tiny
\else:
- \tex_romannumeral:D \__int_eval:w #1
+ \__int_to_roman:w \__int_eval:w #1
\fi:
:Nnnnn
\cs_end:
@@ -10165,7 +10347,7 @@
}
\cs_new:Npn \__fp_expand_loop:nwnN #1#2 \s__fp_mark #3 #4
{
- \exp_after:wN #4 \tex_romannumeral:D -`0
+ \exp_after:wN #4 \exp:w \exp_end_continue_f:w
#2
\s__fp_mark { #3 #1 } #4
}
@@ -10390,7 +10572,7 @@
{ Invalid~operation~ #1 (#2) }
\__msg_kernel_new:nnn { kernel } { fp-invalid-ii }
{ Invalid~operation~ (#1) #3 (#2) }
-%% File: l3fp-round.dtx Copyright(C) 2011-2012,2014 The LaTeX3 Project
+%% File: l3fp-round.dtx Copyright(C) 2011-2012,2014,2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -10424,7 +10606,7 @@
%% -----------------------------------------------------------------------
%%
\cs_new:Npn \__fp_round_return_one:
- { \exp_after:wN \c_one \tex_romannumeral:D }
+ { \exp_after:wN \c_one \exp:w }
\cs_new:Npn \__fp_round_to_ninf:NNN #1 #2 #3
{
\if_meaning:w 2 #1
@@ -10457,6 +10639,39 @@
\fi:
\c_zero
}
+\cs_new:Npn \__fp_round_to_nearest_ninf:NNN #1 #2 #3
+ {
+ \if_int_compare:w #3 > \c_five
+ \__fp_round_return_one:
+ \else:
+ \if_meaning:w 5 #3
+ \if_meaning:w 2 #1
+ \__fp_round_return_one:
+ \fi:
+ \fi:
+ \fi:
+ \c_zero
+ }
+\cs_new:Npn \__fp_round_to_nearest_zero:NNN #1 #2 #3
+ {
+ \if_int_compare:w #3 > \c_five
+ \__fp_round_return_one:
+ \fi:
+ \c_zero
+ }
+\cs_new:Npn \__fp_round_to_nearest_pinf:NNN #1 #2 #3
+ {
+ \if_int_compare:w #3 > \c_five
+ \__fp_round_return_one:
+ \else:
+ \if_meaning:w 5 #3
+ \if_meaning:w 0 #1
+ \__fp_round_return_one:
+ \fi:
+ \fi:
+ \fi:
+ \c_zero
+ }
\cs_new_eq:NN \__fp_round:NNN \__fp_round_to_nearest:NNN
\cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4;
{
@@ -10485,15 +10700,7 @@
\fi:
#1
}
-\cs_new:Npn \__fp_round_to_ninf_neg:NNN #1 #2 #3
- {
- \if_meaning:w 0 #1
- \if_int_compare:w #3 > \c_zero
- \__fp_round_return_one:
- \fi:
- \fi:
- \c_zero
- }
+\cs_new_eq:NN \__fp_round_to_ninf_neg:NNN \__fp_round_to_pinf:NNN
\cs_new:Npn \__fp_round_to_zero_neg:NNN #1 #2 #3
{
\if_int_compare:w #3 > \c_zero
@@ -10501,29 +10708,53 @@
\fi:
\c_zero
}
-\cs_new:Npn \__fp_round_to_pinf_neg:NNN #1 #2 #3
+\cs_new_eq:NN \__fp_round_to_pinf_neg:NNN \__fp_round_to_ninf:NNN
+\cs_new_eq:NN \__fp_round_to_nearest_neg:NNN \__fp_round_to_nearest:NNN
+\cs_new_eq:NN \__fp_round_to_nearest_ninf_neg:NNN \__fp_round_to_nearest_pinf:NNN
+\cs_new:Npn \__fp_round_to_nearest_zero_neg:NNN #1 #2 #3
{
- \if_meaning:w 2 #1
- \if_int_compare:w #3 > \c_zero
- \__fp_round_return_one:
- \fi:
+ \if_int_compare:w #3 > \c_four
+ \__fp_round_return_one:
\fi:
\c_zero
}
-\cs_new_eq:NN \__fp_round_to_nearest_neg:NNN \__fp_round_to_nearest:NNN
+\cs_new_eq:NN \__fp_round_to_nearest_pinf_neg:NNN \__fp_round_to_nearest_ninf:NNN
\cs_new_eq:NN \__fp_round_neg:NNN \__fp_round_to_nearest_neg:NNN
\cs_new:Npn \__fp_round_o:Nw #1#2 @
{
\if_case:w
\__int_eval:w \__fp_array_count:n {#2} - \c_one \__int_eval_end:
- \__fp_round:Nwn #1 #2 {0} \tex_romannumeral:D
- \or: \__fp_round:Nww #1 #2 \tex_romannumeral:D
- \else:
- \__fp_error:nffn { num-args }
- { \__fp_round_name_from_cs:N #1 () } { 1 } { 2 }
- \exp_after:wN \c_nan_fp \tex_romannumeral:D
+ \__fp_round:Nwn #1 #2 {0} \exp:w
+ \or: \__fp_round:Nww #1 #2 \exp:w
+ \else: \__fp_round:Nwww #1 #2 @ \exp:w
\fi:
- -`0
+ \exp_end_continue_f:w
+ }
+\cs_new:Npn \__fp_round:Nwww #1#2 ; #3 ; \s__fp \__fp_chk:w #4#5#6 ; #7 @
+ {
+ \cs_if_eq:NNTF #1 \__fp_round_to_nearest:NNN
+ {
+ \tl_if_empty:nTF {#7}
+ {
+ \exp_args:Nc \__fp_round:Nww
+ {
+ __fp_round_to_nearest
+ \if_meaning:w 0 #4 _zero \else:
+ \if_case:w #5 \exp_stop_f: _pinf \or: \else: _ninf \fi: \fi:
+ :NNN
+ }
+ #2 ; #3 ;
+ }
+ {
+ \__fp_error:nnnn { num-args } { round () } { 1 } { 3 }
+ \exp_after:wN \c_nan_fp
+ }
+ }
+ {
+ \__fp_error:nffn { num-args }
+ { \__fp_round_name_from_cs:N #1 () } { 1 } { 2 }
+ \exp_after:wN \c_nan_fp
+ }
}
\cs_new:Npn \__fp_round_name_from_cs:N #1
{
@@ -10596,7 +10827,7 @@
}
\cs_new:Npn \__fp_round_normal_end:wwNnn #1;#2;#3#4#5
{
- \exp_after:wN \__fp_exp_after_o:w \tex_romannumeral:D -`0
+ \exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w
\__fp_sanitize:Nw #3 #4 ; #1 ;
}
\cs_new:Npn \__fp_round_special:NwwNnn #1#2;#3;#4#5#6
@@ -10614,10 +10845,10 @@
}
\cs_new:Npn \__fp_round_special_aux:Nw #1#2;
{
- \exp_after:wN \__fp_exp_after_o:w \tex_romannumeral:D -`0
+ \exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w
\__fp_sanitize:Nw #1#2; {1000}{0000}{0000}{0000};
}
-%% File: l3fp-parse.dtx Copyright (C) 2011-2014 The LaTeX3 Project
+%% File: l3fp-parse.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -10650,7 +10881,7 @@
%%
%% -----------------------------------------------------------------------
%%
-\cs_new:Npn \__fp_parse_expand:w #1 { -`0 #1 }
+\cs_new:Npn \__fp_parse_expand:w #1 { \exp_end_continue_f:w #1 }
\cs_new:Npn \__fp_parse_return_semicolon:w
#1 \fi: \__fp_parse_expand:w { \fi: ; #1 }
\group_begin:
@@ -10673,7 +10904,7 @@
\cs_new:cpn { __fp_parse_digits_ #1 :N } ##1
{
\if_int_compare:w \c_nine < 1 \token_to_str:N ##1 \exp_stop_f:
- \token_to_str:N ##1 \exp_after:wN #2 \tex_romannumeral:D
+ \token_to_str:N ##1 \exp_after:wN #2 \exp:w
\else:
\__fp_parse_return_semicolon:w #3 ##1
\fi:
@@ -10691,6 +10922,9 @@
\cs_new:Npn \__fp_parse_one:Nw #1 #2
{
\if_catcode:w \scan_stop: \exp_not:N #2
+ \exp_after:wN \if_meaning:w \exp_not:N #2 #2 \else:
+ \exp_after:wN \reverse_if:N
+ \fi:
\if_meaning:w \scan_stop: #2
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_parse_one_fp:NN
@@ -10714,30 +10948,46 @@
\cs:w __fp_exp_after \__fp_type_from_scan:N #2 _f:nw \cs_end:
{
\exp_after:wN \__fp_parse_infix:NN
- \exp_after:wN #1 \tex_romannumeral:D \__fp_parse_expand:w
+ \exp_after:wN #1 \exp:w \__fp_parse_expand:w
}
#2
}
\cs_new:Npn \__fp_exp_after_mark_f:nw #1
{
\__msg_kernel_expandable_error:nn { kernel } { fp-early-end }
- \exp_after:wN \c_nan_fp \tex_romannumeral:D -`0 #1
+ \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w #1
}
\cs_new:cpn { __fp_exp_after_?_f:nw } #1#2
{
\__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#2}
- \exp_after:wN \c_nan_fp \tex_romannumeral:D -`0 #1
+ \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w #1
}
+\group_begin:
+ \char_set_catcode_letter:N \@
+ \cs_if_exist:NT \@unexpandable@protect
+ {
+ \cs_gset:cpn { __fp_exp_after_?_f:nw } #1#2
+ {
+ \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w #1
+ \str_if_eq:nnTF {#2} { \protect }
+ {
+ \cs_if_eq:NNTF #2 \@unexpandable@protect { \use_i:nn } { \use:n }
+ { \__msg_kernel_expandable_error:nnn { kernel } { fp-robust-cmd } }
+ }
+ { \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#2} }
+ }
+ }
+\group_end:
\cs_new:Npn \__fp_parse_one_register:NN #1#2
{
\exp_after:wN \__fp_parse_infix_after_operand:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\exp_after:wN \__fp_parse_one_register_aux:Nw
\exp_after:wN #2
\__int_value:w
\exp_after:wN \__fp_parse_exponent:N
- \tex_romannumeral:D \__fp_parse_expand:w
+ \exp:w \__fp_parse_expand:w
}
\group_begin:
\char_set_catcode_other:N \P
@@ -10751,7 +11001,7 @@
{
\exp_after:wN \use:nn
\exp_after:wN \__fp_parse_one_register_auxii:wwwNw
- \exp_after:wN { \tex_the:D \exp_not:N #1 }
+ \exp_after:wN { \tex_the:D #1 }
; \__fp_parse_one_register_dim:ww
PT ; \__fp_parse_one_register_mu:www
. PT ; \__fp_parse_one_register_int:www
@@ -10774,7 +11024,7 @@
{
\exp_after:wN \__fp_parse_infix_after_operand:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\exp_after:wN \__fp_sanitize:wN
\int_use:N \__int_eval:w \c_zero \__fp_parse_trim_zeros:N
}
@@ -10787,8 +11037,8 @@
\exp_after:wN \__fp_parse_word:Nw
\exp_after:wN #1
\exp_after:wN #2
- \tex_romannumeral:D \exp_after:wN \__fp_parse_letters:N
- \tex_romannumeral:D
+ \exp:w \exp_after:wN \__fp_parse_letters:N
+ \exp:w
\else:
\exp_after:wN \__fp_parse_prefix:NNN
\exp_after:wN #1
@@ -10797,7 +11047,7 @@
__fp_parse_prefix_ \token_to_str:N #2 :Nw
\exp_after:wN
\cs_end:
- \tex_romannumeral:D
+ \exp:w
\fi:
\__fp_parse_expand:w
}
@@ -10807,14 +11057,14 @@
{
\__msg_kernel_expandable_error:nnn
{ kernel } { unknown-fp-word } {#2}
- \exp_after:wN \c_nan_fp \tex_romannumeral:D -`0
+ \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
\__fp_parse_infix:NN
}
#1
}
\cs_new:Npn \__fp_parse_letters:N #1
{
- -`0
+ \exp_end_continue_f:w
\if_int_compare:w
\if_catcode:w \scan_stop: \exp_not:N #1
\c_zero
@@ -10825,8 +11075,8 @@
\fi:
= \c_three
\exp_after:wN #1
- \tex_romannumeral:D \exp_after:wN \__fp_parse_letters:N
- \tex_romannumeral:D
+ \exp:w \exp_after:wN \__fp_parse_letters:N
+ \exp:w
\else:
\__fp_parse_return_semicolon:w #1
\fi:
@@ -10846,7 +11096,7 @@
{
\__msg_kernel_expandable_error:nnn
{ kernel } { fp-missing-number } {#1}
- \exp_after:wN \c_nan_fp \tex_romannumeral:D -`0
+ \exp_after:wN \c_nan_fp \exp:w \exp_end_continue_f:w
\__fp_parse_infix:NN #3 #1
}
{
@@ -10859,11 +11109,11 @@
{
\if:w 0 \exp_not:N #1
\exp_after:wN \__fp_parse_trim_zeros:N
- \tex_romannumeral:D
+ \exp:w
\else:
\if:w . \exp_not:N #1
\exp_after:wN \__fp_parse_strim_zeros:N
- \tex_romannumeral:D
+ \exp:w
\else:
\__fp_parse_trim_end:w #1
\fi:
@@ -10885,7 +11135,7 @@
{
\if:w 0 \exp_not:N #1
- \c_one
- \exp_after:wN \__fp_parse_strim_zeros:N \tex_romannumeral:D
+ \exp_after:wN \__fp_parse_strim_zeros:N \exp:w
\else:
\__fp_parse_strim_end:w #1
\fi:
@@ -10913,7 +11163,7 @@
\exp_after:wN \__fp_parse_small_leading:wwNN
\__int_value:w 1
\exp_after:wN \__fp_parse_digits_vii:N
- \tex_romannumeral:D \__fp_parse_expand:w
+ \exp:w \__fp_parse_expand:w
}
\cs_new:Npn \__fp_parse_small_leading:wwNN 1 #1 ; #2; #3 #4
{
@@ -10926,7 +11176,7 @@
\exp_after:wN \__fp_parse_small_trailing:wwNN
\__int_value:w 1
\exp_after:wN \__fp_parse_digits_vi:N
- \tex_romannumeral:D
+ \exp:w
\else:
0000 0000 \__fp_parse_exponent:Nw #4
\fi:
@@ -10939,7 +11189,7 @@
\token_to_str:N #4
\exp_after:wN \__fp_parse_small_round:NN
\exp_after:wN #4
- \tex_romannumeral:D
+ \exp:w
\else:
0 \__fp_parse_exponent:Nw #4
\fi:
@@ -10963,7 +11213,7 @@
\exp_after:wN \__fp_parse_large_leading:wwNN
\__int_value:w 1 \token_to_str:N #1
\exp_after:wN \__fp_parse_digits_vii:N
- \tex_romannumeral:D \__fp_parse_expand:w
+ \exp:w \__fp_parse_expand:w
}
\cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 ; #2; #3 #4
{
@@ -10974,17 +11224,17 @@
\exp_after:wN \__fp_parse_large_trailing:wwNN
\__int_value:w 1 \token_to_str:N #4
\exp_after:wN \__fp_parse_digits_vi:N
- \tex_romannumeral:D
+ \exp:w
\else:
\if:w . \exp_not:N #4
\exp_after:wN \__fp_parse_small_leading:wwNN
\__int_value:w 1
\cs:w
__fp_parse_digits_
- \tex_romannumeral:D #3
+ \__int_to_roman:w #3
:N \exp_after:wN
\cs_end:
- \tex_romannumeral:D
+ \exp:w
\else:
#2
\exp_after:wN \__fp_parse_pack_trailing:NNNNNNww
@@ -11003,7 +11253,7 @@
\int_use:N \__int_eval:w 1 #1 \token_to_str:N #4
\exp_after:wN \__fp_parse_large_round:NN
\exp_after:wN #4
- \tex_romannumeral:D
+ \exp:w
\else:
\exp_after:wN \__fp_parse_pack_trailing:NNNNNNww
\int_use:N \__int_eval:w \c_seven - #3 \exp_stop_f:
@@ -11013,10 +11263,10 @@
\__int_value:w 1
\cs:w
__fp_parse_digits_
- \tex_romannumeral:D #3
+ \__int_to_roman:w #3
:N \exp_after:wN
\cs_end:
- \tex_romannumeral:D
+ \exp:w
\else:
#2 0 \__fp_parse_exponent:Nw #4
\fi:
@@ -11029,10 +11279,10 @@
+ \c_one
\if:w 0 \token_to_str:N #1
\exp_after:wN \__fp_parse_round_loop:N
- \tex_romannumeral:D
+ \exp:w
\else:
\exp_after:wN \__fp_parse_round_up:N
- \tex_romannumeral:D
+ \exp:w
\fi:
\else:
\__fp_parse_return_semicolon:w \c_zero #1
@@ -11044,7 +11294,7 @@
\if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f:
+ \c_one
\exp_after:wN \__fp_parse_round_up:N
- \tex_romannumeral:D
+ \exp:w
\else:
\__fp_parse_return_semicolon:w \c_one #1
\fi:
@@ -11067,7 +11317,7 @@
\exp_after:wN \__fp_parse_round_after:wN
\int_use:N \__int_eval:w \c_zero * \__int_eval:w \c_zero
\exp_after:wN \__fp_parse_round_loop:N
- \tex_romannumeral:D
+ \exp:w
\else:
\__fp_parse_exponent:Nw #2
\fi:
@@ -11096,7 +11346,7 @@
\if:w . \exp_not:N #2
\exp_after:wN \__fp_parse_small_round:NN
\exp_after:wN #1
- \tex_romannumeral:D
+ \exp:w
\else:
\__fp_parse_exponent:Nw #2
\fi:
@@ -11110,7 +11360,7 @@
\if:w . \exp_not:N #3
+ \c_zero * \__int_eval:w \c_zero
\exp_after:wN \__fp_parse_round_loop:N
- \tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
+ \exp:w \exp_after:wN \__fp_parse_expand:w
\else:
\exp_after:wN ;
\exp_after:wN \c_zero
@@ -11126,7 +11376,7 @@
{
\if:w e \exp_not:N #1
\exp_after:wN \__fp_parse_exponent_aux:N
- \tex_romannumeral:D
+ \exp:w
\else:
0 \__fp_parse_return_semicolon:w #1
\fi:
@@ -11146,7 +11396,7 @@
{
\if:w + \if:w - \exp_not:N #1 + \fi: \token_to_str:N #1
\exp_after:wN \__fp_parse_exponent_sign:N
- \tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
+ \exp:w \exp_after:wN \__fp_parse_expand:w
\else:
\exp_after:wN \__fp_parse_exponent_body:N
\exp_after:wN #1
@@ -11157,13 +11407,13 @@
\if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f:
\token_to_str:N #1
\exp_after:wN \__fp_parse_exponent_digits:N
- \tex_romannumeral:D
+ \exp:w
\else:
\__fp_parse_exponent_keep:NTF #1
{ \__fp_parse_return_semicolon:w #1 }
{
\exp_after:wN ;
- \tex_romannumeral:D
+ \exp:w
}
\fi:
\__fp_parse_expand:w
@@ -11173,7 +11423,7 @@
\if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f:
\token_to_str:N #1
\exp_after:wN \__fp_parse_exponent_digits:N
- \tex_romannumeral:D
+ \exp:w
\else:
\__fp_parse_return_semicolon:w #1
\fi:
@@ -11218,7 +11468,7 @@
\cs_new:Npn \__fp_parse_apply_unary:NNNwN #1#2#3#4@#5
{
#3 #2 #4 @
- \tex_romannumeral:D -`0 #5 #1
+ \exp:w \exp_end_continue_f:w #5 #1
}
\cs_set_protected:Npn \__fp_tmp:w #1#2#3#4
{
@@ -11228,7 +11478,7 @@
\exp_after:wN ##1
\exp_after:wN #4
\exp_after:wN #3
- \tex_romannumeral:D
+ \exp:w
\if_int_compare:w #2 < ##1
\__fp_parse_operand:Nw ##1
\else:
@@ -11243,7 +11493,7 @@
{
\exp_after:wN \__fp_parse_infix_after_operand:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\exp_after:wN \__fp_sanitize:wN
\int_use:N \__int_eval:w \c_zero \__fp_parse_strim_zeros:N
}
@@ -11254,7 +11504,7 @@
{
\exp_after:wN \__fp_parse_lparen_after:NwN
\exp_after:wN #1
- \tex_romannumeral:D
+ \exp:w
\if_int_compare:w #1 = \c_sixteen
\__fp_parse_operand:Nw \c_one
\else:
@@ -11269,7 +11519,7 @@
\__fp_exp_after_array_f:w #2 \s__fp_stop
\exp_after:wN \__fp_parse_infix:NN
\exp_after:wN #1
- \tex_romannumeral:D \__fp_parse_expand:w
+ \exp:w \__fp_parse_expand:w
}
{
\__msg_kernel_expandable_error:nnn
@@ -11281,7 +11531,7 @@
\cs_set_protected:Npn \__fp_tmp:w #1 #2
{
\cs_new_nopar:cpn { __fp_parse_word_#1:N }
- { \exp_after:wN #2 \tex_romannumeral:D -`0 \__fp_parse_infix:NN }
+ { \exp_after:wN #2 \exp:w \exp_end_continue_f:w \__fp_parse_infix:NN }
}
\__fp_tmp:w { inf } \c_inf_fp
\__fp_tmp:w { nan } \c_nan_fp
@@ -11315,7 +11565,7 @@
\exp_after:wN \__fp_from_dim_test:ww
\exp_after:wN 0 \exp_after:wN ,
\__int_value:w \__dim_eval:w 1 #1 \exp_after:wN ;
- \tex_romannumeral:D -`0 \__fp_parse_infix:NN
+ \exp:w \exp_end_continue_f:w \__fp_parse_infix:NN
}
}
\cs_new:Npn \__fp_parse_unary_function:nNN #1#2#3
@@ -11324,7 +11574,7 @@
\exp_after:wN #3
\exp_after:wN #2
\cs:w __fp_#1_o:w \exp_after:wN \cs_end:
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_fifteen \__fp_parse_expand:w
}
\cs_new:Npn \__fp_parse_function:NNN #1#2#3
@@ -11333,7 +11583,7 @@
\exp_after:wN #3
\exp_after:wN #2
\exp_after:wN #1
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w
}
\cs_new_nopar:Npn \__fp_parse_word_acot:N
@@ -11394,9 +11644,9 @@
#1 #2 \__fp_round_to_nearest:NNN #3#4 { #2 #1 #3 }
\cs_new:Npn \__fp_parse:n #1
{
- \tex_romannumeral:D
+ \exp:w
\exp_after:wN \__fp_parse_after:ww
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_minus_one
\__fp_parse_expand:w #1
\s__fp_mark \__fp_parse_infix_end:N
@@ -11404,24 +11654,24 @@
}
\cs_new:Npn \__fp_parse_after:ww
#1@ \__fp_parse_infix_end:N \s__fp_stop
- { \c_zero #1 }
+ { \exp_end: #1 }
\cs_new:Npn \__fp_parse_operand:Nw #1
{
- -`0
+ \exp_end_continue_f:w
\exp_after:wN \__fp_parse_continue:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\exp_after:wN \__fp_parse_one:Nw
\exp_after:wN #1
- \tex_romannumeral:D
+ \exp:w
}
\cs_new:Npn \__fp_parse_continue:NwN #1 #2 @ #3 { #3 #1 #2 @ }
\cs_new:Npn \__fp_parse_apply_binary:NwNwN #1 #2@ #3 #4@ #5
{
\exp_after:wN \__fp_parse_continue:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0 \cs:w __fp_#3_o:ww \cs_end: #2 #4
- \tex_romannumeral:D -`0 #5 #1
+ \exp:w \exp_end_continue_f:w \cs:w __fp_#3_o:ww \cs_end: #2 #4
+ \exp:w \exp_end_continue_f:w #5 #1
}
\cs_new:Npn \__fp_parse_infix_after_operand:NwN #1 #2;
{
@@ -11472,7 +11722,7 @@
\else:
\exp_after:wN #1
\exp_after:wN #2
- \tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
+ \exp:w \exp_after:wN \__fp_parse_expand:w
\fi:
}
\group_end:
@@ -11487,7 +11737,7 @@
\__msg_kernel_expandable_error:nnn { kernel } { fp-extra } { ) }
\exp_after:wN \__fp_parse_infix:NN
\exp_after:wN #1
- \tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
+ \exp:w \exp_after:wN \__fp_parse_expand:w
\else:
\exp_after:wN @
\exp_after:wN \use_none:n
@@ -11506,10 +11756,10 @@
\else:
\if_int_compare:w #1 = \c_one
\exp_after:wN \__fp_parse_infix_comma:w
- \tex_romannumeral:D
+ \exp:w
\else:
\exp_after:wN \__fp_parse_infix_comma_gobble:w
- \tex_romannumeral:D
+ \exp:w
\fi:
\__fp_parse_operand:Nw \c_one
\exp_after:wN \__fp_parse_expand:w
@@ -11538,7 +11788,7 @@
\exp_after:wN @
\exp_after:wN \__fp_parse_apply_binary:NwNwN
\exp_after:wN #2
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw #4
\exp_after:wN \__fp_parse_expand:w
\else:
@@ -11563,7 +11813,7 @@
\if_int_compare:w #1 < \c_ten
\exp_after:wN @
\exp_after:wN \__fp_parse_apply_juxtapose:NwwN
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_ten
\exp_after:wN \__fp_parse_expand:w
\else:
@@ -11605,7 +11855,7 @@
\if:w | \exp_not:N #2
\exp_after:wN \__fp_parse_infix_|:N
\exp_after:wN #1
- \tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
+ \exp:w \exp_after:wN \__fp_parse_expand:w
\else:
\exp_after:wN \__fp_parse_infix_or:N
\exp_after:wN #1
@@ -11617,7 +11867,7 @@
\if:w & \exp_not:N #2
\exp_after:wN \__fp_parse_infix_&:N
\exp_after:wN #1
- \tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
+ \exp:w \exp_after:wN \__fp_parse_expand:w
\else:
\exp_after:wN \__fp_parse_infix_and:N
\exp_after:wN #1
@@ -11632,7 +11882,7 @@
\if_int_compare:w #1 < \c_three
\exp_after:wN @
\exp_after:wN \__fp_ternary:NwwN
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_three
\exp_after:wN \__fp_parse_expand:w
\else:
@@ -11648,7 +11898,7 @@
{ kernel } { fp-missing } { ? } { ~for~?: }
\exp_after:wN @
\exp_after:wN \__fp_ternary_auxii:NwwN
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_two
\exp_after:wN \__fp_parse_expand:w
\else:
@@ -11723,7 +11973,7 @@
\exp_after:wN #3
\exp_after:wN #4
\exp_after:wN #5
- \tex_romannumeral:D \exp_after:wN \__fp_parse_expand:w
+ \exp:w \exp_after:wN \__fp_parse_expand:w
}
\cs_new:Npn \__fp_parse_compare_end:NNNNw #1#2#3#4#5 \fi:
{
@@ -11735,7 +11985,7 @@
\exp_after:wN #2
\exp_after:wN #3
\exp_after:wN #4
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_seven \__fp_parse_expand:w #5
}
\cs_new:Npn \__fp_parse_apply_compare:NwNNNNNwN
@@ -11763,15 +12013,15 @@
\exp_after:wN \__fp_parse_continue_compare:NNwNN
\exp_after:wN #1
\exp_after:wN #2
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\__fp_exp_after_o:w #3;
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\else:
\exp_after:wN \__fp_parse_continue:NwN
\exp_after:wN #2
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\fi:
#4 #2
}
@@ -11781,7 +12031,7 @@
{
\exp_after:wN \__fp_function_apply:nw
\exp_after:wN #1
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w
}
\cs_new_protected:Npn \fp_new_function:Npn #1#2#
@@ -11801,7 +12051,7 @@
\exp_after:wN #2
\__int_value:w #3 \exp_after:wN ; \exp_after:wN
}
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w
}
\cs_new:Npn #2 #4 {#5}
@@ -11852,6 +12102,11 @@
{ Unexpected~comma:~extra~arguments~ignored. }
\__msg_kernel_new:nnn { kernel } { fp-num-args }
{ #1~expects~between~#2~and~#3~arguments. }
+\cs_if_exist:cT { @unexpandable@protect }
+ {
+ \__msg_kernel_new:nnn { kernel } { fp-robust-cmd }
+ { Robust~command~#1 invalid~in~fp~expression! }
+ }
%% File: l3fp-logic.dtx Copyright (C) 2011-2014 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
@@ -11890,7 +12145,7 @@
\prg_new_conditional:Npnn \fp_compare:n #1 { p , T , F , TF }
{
\exp_after:wN \__fp_compare_return:w
- \tex_romannumeral:D -`0 \__fp_parse:n {#1}
+ \exp:w \exp_end_continue_f:w \__fp_parse:n {#1}
}
\cs_new:Npn \__fp_compare_return:w \s__fp \__fp_chk:w #1#2;
{
@@ -11904,7 +12159,7 @@
{
\if_int_compare:w
\exp_after:wN \__fp_compare_aux:wn
- \tex_romannumeral:D -`0 \__fp_parse:n {#1} {#3}
+ \exp:w \exp_end_continue_f:w \__fp_parse:n {#1} {#3}
= \__int_eval:w `#2 - `= \__int_eval_end:
\prg_return_true:
\else:
@@ -11914,7 +12169,7 @@
\cs_new:Npn \__fp_compare_aux:wn #1; #2
{
\exp_after:wN \__fp_compare_back:ww
- \tex_romannumeral:D -`0 \__fp_parse:n {#2} #1;
+ \exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1;
}
\cs_new:Npn \__fp_compare_back:ww
\s__fp \__fp_chk:w #1 #2 #3;
@@ -12090,10 +12345,10 @@
\s__fp \__fp_chk:w { \__fp_ternary_loop_break:w } ;
\__fp_ternary_break_point:n { \exp_after:wN \__fp_ternary_auxi:NwwN }
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\__fp_exp_after_array_f:w #3 \s__fp_stop
\exp_after:wN @
- \tex_romannumeral:D
+ \exp:w
\__fp_parse_operand:Nw \c_two
\__fp_parse_expand:w
\else:
@@ -12101,7 +12356,7 @@
{ kernel } { fp-missing } { : } { ~for~?: }
\exp_after:wN \__fp_parse_continue:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\__fp_exp_after_array_f:w #3 \s__fp_stop
\exp_after:wN #4
\exp_after:wN #1
@@ -12125,7 +12380,7 @@
{
\exp_after:wN \__fp_parse_continue:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\__fp_exp_after_array_f:w #2 \s__fp_stop
#4 #1
}
@@ -12133,7 +12388,7 @@
{
\exp_after:wN \__fp_parse_continue:NwN
\exp_after:wN #1
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\__fp_exp_after_array_f:w #3 \s__fp_stop
#4 #1
}
@@ -13151,7 +13406,7 @@
{
\exp_after:wN \__fp_ep_to_fixed_auxi:www
\int_use:N \__int_eval:w 1 0000 0000 + #2 \exp_after:wN ;
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\prg_replicate:nn { \c_four - \int_max:nn {#1} { -32 } } { 0 } ;
}
\cs_new:Npn \__fp_ep_to_fixed_auxi:www 1#1; #2; #3#4#5#6#7;
@@ -13499,7 +13754,7 @@
\cs_new:Npn \__fp_ln_x_ii:wnnnn #1; #2#3#4#5
{
\exp_after:wN \__fp_ln_div_after:Nw
- \cs:w c__fp_ln_ \tex_romannumeral:D #1 _fixed_tl \exp_after:wN \cs_end:
+ \cs:w c__fp_ln_ \__int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end:
\__int_value:w
\exp_after:wN \__fp_ln_x_iv:wnnnnnnnn
\int_use:N \__int_eval:w
@@ -13708,11 +13963,11 @@
\exp_after:wN \__fp_add_big_i_o:wNww
\int_use:N \__int_eval:w \c_one - #4 ;
0 {1000}{0000}{0000}{0000} ; #5;
- \tex_romannumeral:D
+ \exp:w
\else:
\if_int_compare:w #4 > \c_five % cf \c__fp_max_exponent_int
\exp_after:wN \__fp_exp_overflow:
- \tex_romannumeral:D
+ \exp:w
\else:
\if_int_compare:w #4 < \c_zero
\exp_after:wN \use_i:nn
@@ -13731,7 +13986,7 @@
#5
{#4}
#1 #2 0
- \tex_romannumeral:D
+ \exp:w
\fi:
\fi:
\exp_after:wN \c_zero
@@ -13768,7 +14023,7 @@
\cs_new:Npn \__fp_exp_pos_large:NnnNwn #1#2#3 #4#5; #6
{
\exp_after:wN \exp_after:wN
- \cs:w __fp_exp_large_\tex_romannumeral:D #6:wN \exp_after:wN \cs_end:
+ \cs:w __fp_exp_large_ \__int_to_roman:w #6 :wN \exp_after:wN \cs_end:
\exp_after:wN \c__fp_one_fixed_tl
\exp_after:wN ;
\__int_value:w #3 #4 \exp_stop_f:
@@ -13889,7 +14144,7 @@
\__fp_case_return_o:Nw \c_nan_fp
\else:
\exp_after:wN \__fp_pow_neg:www
- \tex_romannumeral:D -`0 \exp_after:wN \use:nn
+ \exp:w \exp_end_continue_f:w \exp_after:wN \use:nn
\fi:
{
\if_meaning:w 1 #1
@@ -14059,7 +14314,7 @@
\or:
\if_int_compare:w \__int_eval:w #1 / \c_two = \c_one
\__fp_invalid_operation_o:Nww ^ #3; #4;
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_use_none_until_s:w
\fi:
@@ -14280,7 +14535,7 @@
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_trigd_large_auxi:nnnnwNNNN
\exp_after:wN ;
- \tex_romannumeral:D -`0
+ \exp:w \exp_end_continue_f:w
\prg_replicate:nn { \int_max:nn { 22 - #1 } { 0 } } { 0 }
#2#3#4#5#6#7 0000 0000 0000 !
}
@@ -14672,12 +14927,12 @@
\if_case:w
\__int_eval:w \__fp_array_count:n {#5} - \c_one \__int_eval_end:
\exp_after:wN #1 \exp_after:wN #4 \c_one_fp #5
- \tex_romannumeral:D
- \or: #2 #4 #5 \tex_romannumeral:D
+ \exp:w
+ \or: #2 #4 #5 \exp:w
\else:
\__msg_kernel_expandable_error:nnnnn
{ kernel } { fp-num-args } { #3() } { 1 } { 2 }
- \exp_after:wN \c_nan_fp \tex_romannumeral:D
+ \exp_after:wN \c_nan_fp \exp:w
\fi:
\exp_after:wN \c_zero
}
@@ -14976,7 +15231,7 @@
\cs_new_nopar:Npn \fp_to_scientific:n
{
\exp_after:wN \__fp_to_scientific_dispatch:w
- \tex_romannumeral:D -`0 \__fp_parse:n
+ \exp:w \exp_end_continue_f:w \__fp_parse:n
}
\group_begin:
\char_set_catcode_other:N E
@@ -14985,7 +15240,7 @@
\group_end:
\cs_new:Npn \__fp_to_scientific_dispatch:w \s__fp \__fp_chk:w #1#2
{
- \if_meaning:w 2 #2 \exp_after:wN - \tex_romannumeral:D -`0 \fi:
+ \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi:
\if_case:w #1 \exp_stop_f:
\__fp_case_return:nw { 0 }
\or: \exp_after:wN \__fp_to_scientific_normal:wnnnnn
@@ -15031,11 +15286,11 @@
\cs_new_nopar:Npn \fp_to_decimal:n
{
\exp_after:wN \__fp_to_decimal_dispatch:w
- \tex_romannumeral:D -`0 \__fp_parse:n
+ \exp:w \exp_end_continue_f:w \__fp_parse:n
}
\cs_new:Npn \__fp_to_decimal_dispatch:w \s__fp \__fp_chk:w #1#2
{
- \if_meaning:w 2 #2 \exp_after:wN - \tex_romannumeral:D -`0 \fi:
+ \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi:
\if_case:w #1 \exp_stop_f:
\__fp_case_return:nw { 0 }
\or: \exp_after:wN \__fp_to_decimal_normal:wnnnnn
@@ -15080,7 +15335,7 @@
\exp_after:wN \__fp_trim_zeros:w
\exp_after:wN 0
\exp_after:wN .
- \tex_romannumeral:D -`0 \prg_replicate:nn { - #2 } { 0 }
+ \exp:w \exp_end_continue_f:w \prg_replicate:nn { - #2 } { 0 }
#3#4#5#6 ;
}
}
@@ -15099,11 +15354,11 @@
\cs_new_nopar:Npn \fp_to_tl:n
{
\exp_after:wN \__fp_to_tl_dispatch:w
- \tex_romannumeral:D -`0 \__fp_parse:n
+ \exp:w \exp_end_continue_f:w \__fp_parse:n
}
\cs_new:Npn \__fp_to_tl_dispatch:w \s__fp \__fp_chk:w #1#2
{
- \if_meaning:w 2 #2 \exp_after:wN - \tex_romannumeral:D -`0 \fi:
+ \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi:
\if_case:w #1 \exp_stop_f:
\__fp_case_return:nw { 0 }
\or: \exp_after:wN \__fp_to_tl_normal:nnnnn
@@ -15136,11 +15391,11 @@
\cs_new_nopar:Npn \fp_to_int:n
{
\exp_after:wN \__fp_to_int_dispatch:w
- \tex_romannumeral:D -`0 \__fp_parse:n
+ \exp:w \exp_end_continue_f:w \__fp_parse:n
}
\cs_new:Npn \__fp_to_int_dispatch:w #1;
{
- \exp_after:wN \__fp_to_decimal_dispatch:w \tex_romannumeral:D -`0
+ \exp_after:wN \__fp_to_decimal_dispatch:w \exp:w \exp_end_continue_f:w
\__fp_round:Nwn \__fp_round_to_nearest:NNN #1; { 0 }
}
\cs_new:Npn \dim_to_fp:n #1
@@ -15206,13 +15461,14 @@
{
\exp_not:N \exp_after:wN ,
\exp_not:N \exp_after:wN \c_space_tl
- \exp_not:N \tex_romannumeral:D -`0
+ \exp_not:N \exp:w
+ \exp_not:N \exp_end_continue_f:w
\exp_not:N \__fp_to_tl_dispatch:w #1 #2 ;
}
\exp_not:N \__fp_array_to_clist_loop:Nw
}
%%
-%% File: l3fp-assign.dtx Copyright (C) 2011-2014 The LaTeX3 project
+%% File: l3fp-assign.dtx Copyright (C) 2011-2015 The LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -15283,15 +15539,11 @@
\cs_generate_variant:Nn \fp_gsub:Nn { c }
\cs_new_protected:Npn \fp_show:N #1
{
- \fp_if_exist:NTF #1
- { \__msg_show_variable:n { > ~ \fp_to_tl:N #1 } }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
+ \__msg_show_variable:NNNnn #1 \fp_if_exist:NTF ? { }
+ { > ~ \token_to_str:N #1 = \fp_to_tl:N #1 }
}
-\cs_new_protected:Npn \fp_show:n #1
- { \__msg_show_variable:n { > ~ \fp_to_tl:n {#1} } }
+\cs_new_protected_nopar:Npn \fp_show:n
+ { \__msg_show_wrap:Nn \fp_to_tl:n }
\cs_generate_variant:Nn \fp_show:N { c }
\fp_const:Nn \c_e_fp { 2.718 2818 2845 9045 }
\fp_const:Nn \c_one_fp { 1 }
@@ -15301,7 +15553,7 @@
\fp_new:N \l_tmpb_fp
\fp_new:N \g_tmpa_fp
\fp_new:N \g_tmpb_fp
-%% File: l3box.dtx Copyright (C) 2005-2014 The LaTeX3 Project
+%% File: l3box.dtx Copyright (C) 2005-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -15333,7 +15585,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3box.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3box.dtx 5822 2015-08-09 16:41:04Z joseph $
{L3 Experimental boxes}
\cs_new_protected:Npn \box_new:N #1
{
@@ -15455,6 +15707,7 @@
\int_set:Nn \tex_showboxbreadth:D {#3}
\int_set:Nn \tex_showboxdepth:D {#4}
\int_set_eq:NN \tex_tracingonline:D #1
+ \int_set_eq:NN \tex_errorcontextlines:D \c_minus_one
\box_if_exist:NTF #2
{ \tex_showbox:D \use:n {#2} }
{
@@ -15463,7 +15716,7 @@
}
\group_end:
}
-\cs_new_protected:Npn \hbox:n { \tex_hbox:D \scan_stop: }
+\cs_new_protected:Npn \hbox:n #1 { \tex_hbox:D \scan_stop: {#1} }
\cs_new_protected:Npn \hbox_set:Nn #1#2
{ \tex_setbox:D #1 \tex_hbox:D {#2} }
\cs_new_protected:Npn \hbox_gset:Nn { \tex_global:D \hbox_set:Nn }
@@ -15483,12 +15736,6 @@
\cs_generate_variant:Nn \hbox_gset:Nw { c }
\cs_new_eq:NN \hbox_set_end: \c_group_end_token
\cs_new_eq:NN \hbox_gset_end: \c_group_end_token
-\cs_new_eq:NN \hbox_set_inline_begin:N \hbox_set:Nw
-\cs_new_eq:NN \hbox_set_inline_begin:c \hbox_set:cw
-\cs_new_eq:NN \hbox_set_inline_end: \hbox_set_end:
-\cs_new_eq:NN \hbox_gset_inline_begin:N \hbox_gset:Nw
-\cs_new_eq:NN \hbox_gset_inline_begin:c \hbox_gset:cw
-\cs_new_eq:NN \hbox_gset_inline_end: \hbox_gset_end:
\cs_new_protected:Npn \hbox_to_wd:nn #1#2
{ \tex_hbox:D to \__dim_eval:w #1 \__dim_eval_end: {#2} }
\cs_new_protected:Npn \hbox_to_zero:n #1 { \tex_hbox:D to \c_zero_dim {#1} }
@@ -15538,19 +15785,13 @@
\c_group_end_token
}
\cs_new_eq:NN \vbox_gset_end: \vbox_set_end:
-\cs_new_eq:NN \vbox_set_inline_begin:N \vbox_set:Nw
-\cs_new_eq:NN \vbox_set_inline_begin:c \vbox_set:cw
-\cs_new_eq:NN \vbox_set_inline_end: \vbox_set_end:
-\cs_new_eq:NN \vbox_gset_inline_begin:N \vbox_gset:Nw
-\cs_new_eq:NN \vbox_gset_inline_begin:c \vbox_gset:cw
-\cs_new_eq:NN \vbox_gset_inline_end: \vbox_gset_end:
\cs_new_eq:NN \vbox_unpack:N \tex_unvcopy:D
\cs_new_eq:NN \vbox_unpack_clear:N \tex_unvbox:D
\cs_generate_variant:Nn \vbox_unpack:N { c }
\cs_generate_variant:Nn \vbox_unpack_clear:N { c }
\cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3
{ \tex_setbox:D #1 \tex_vsplit:D #2 to \__dim_eval:w #3 \__dim_eval_end: }
-%% File: l3coffins.dtx Copyright(C) 2010-2014 The LaTeX3 Project
+%% File: l3coffins.dtx Copyright(C) 2010-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -15583,7 +15824,7 @@
%%
%% -----------------------------------------------------------------------
%%
-\GetIdInfo$Id: l3coffins.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3coffins.dtx 5789 2015-08-06 02:32:11Z bruno $
{L3 Coffin code layer}
\box_new:N \l__coffin_internal_box
\dim_new:N \l__coffin_internal_dim
@@ -15651,12 +15892,14 @@
\cs_new_protected:Npn \coffin_new:N #1
{
\box_new:N #1
+ \__chk_suspend_log:
\prop_clear_new:c { l__coffin_corners_ \__int_value:w #1 _prop }
\prop_clear_new:c { l__coffin_poles_ \__int_value:w #1 _prop }
\prop_gset_eq:cN { l__coffin_corners_ \__int_value:w #1 _prop }
\c__coffin_corners_prop
\prop_gset_eq:cN { l__coffin_poles_ \__int_value:w #1 _prop }
\c__coffin_poles_prop
+ \__chk_resume_log:
}
\cs_generate_variant:Nn \coffin_new:N { c }
\cs_new_protected:Npn \hcoffin_set:Nn #1#2
@@ -16345,7 +16588,12 @@
{
\__coffin_if_exist:NT #1
{
- \__msg_show_variable:Nnn #1 { coffins }
+ \__msg_show_pre:nnxxxx { LaTeX / kernel } { show-coffin }
+ { \token_to_str:N #1 }
+ { \dim_eval:n { \coffin_ht:N #1 } }
+ { \dim_eval:n { \coffin_dp:N #1 } }
+ { \dim_eval:n { \coffin_wd:N #1 } }
+ \__msg_show_wrap:n
{
\prop_map_function:cN
{ l__coffin_poles_ \__int_value:w #1 _prop }
@@ -16372,13 +16620,13 @@
LaTeX~was~asked~to~find~a~typesetting~pole~for~a~coffin,~
but~either~the~coffin~does~not~exist~or~the~pole~name~is~wrong.
}
-\__msg_kernel_new:nnn { kernel } { show-coffins }
+\__msg_kernel_new:nnn { kernel } { show-coffin }
{
- Size~of~coffin~\token_to_str:N #1 : \\
- > ~ ht~=~\dim_use:N \box_ht:N #1 \\
- > ~ dp~=~\dim_use:N \box_dp:N #1 \\
- > ~ wd~=~\dim_use:N \box_wd:N #1 \\
- Poles~of~coffin~\token_to_str:N #1 :
+ Size~of~coffin~#1 : \\
+ > ~ ht~=~#2 \\
+ > ~ dp~=~#3 \\
+ > ~ wd~=~#4 \\
+ Poles~of~coffin~#1 :
}
%% File: l3color.dtx Copyright(C) 2011,2012,2014 The LaTeX3 Project
%%
@@ -16470,35 +16718,14 @@
%%
%% -----------------------------------------------------------------------
%%
-\GetIdInfo$Id: l3candidates.dtx 5677 2015-07-22 14:47:23Z joseph $
+\GetIdInfo$Id: l3candidates.dtx 5911 2015-09-03 08:24:00Z joseph $
{L3 Experimental additions to l3kernel}
-\group_begin:
- \tex_lccode:D `? = `: \scan_stop:
- \tex_catcode:D `? = 12 \scan_stop:
-\tex_lowercase:D
- {
- \group_end:
- \cs_new_protected:Npn \cs_log:N #1
- {
- \__msg_log_wrap:n
- {
- > ~ \token_to_str:N #1 =
- \exp_after:wN \__cs_show:www \cs_meaning:N #1
- \use_none:nn ? \prg_do_nothing:
- }
- }
- }
+\cs_new_protected_nopar:Npn \cs_log:N
+ { \__msg_log_next: \cs_show:N }
\cs_new_protected_nopar:Npn \cs_log:c
- { \group_begin: \exp_args:NNc \group_end: \cs_log:N }
-\cs_new_protected:Npn \__kernel_register_log:N #1
- {
- \cs_if_exist:NTF #1
- { \__msg_log_value:x { \token_to_str:N #1 = \tex_the:D #1 } }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
- }
+ { \__msg_log_next: \cs_show:c }
+\cs_new_protected_nopar:Npn \__kernel_register_log:N
+ { \__msg_log_next: \__kernel_register_show:N }
\cs_generate_variant:Nn \__kernel_register_log:N { c }
\fp_new:N \l__box_angle_fp
\fp_new:N \l__box_cos_fp
@@ -16886,16 +17113,10 @@
\box_set_eq:NN #1 \l__box_internal_box
}
\cs_generate_variant:Nn \box_viewport:Nnnnn { c }
-\cs_new_protected:Npn \clist_log:N #1
- {
- \__msg_log_variable:Nnn #1 { clist }
- { \clist_map_function:NN #1 \__msg_show_item:n }
- }
-\cs_new_protected:Npn \clist_log:n #1
- {
- \clist_set:Nn \l__clist_internal_clist {#1}
- \clist_log:N \l__clist_internal_clist
- }
+\cs_new_protected_nopar:Npn \clist_log:N
+ { \__msg_log_next: \clist_show:N }
+\cs_new_protected_nopar:Npn \clist_log:n
+ { \__msg_log_next: \clist_show:n }
\cs_generate_variant:Nn \clist_log:N { c }
\fp_new:N \l__coffin_sin_fp
\fp_new:N \l__coffin_cos_fp
@@ -17126,18 +17347,8 @@
{#5} {#6}
}
}
-\cs_new_protected:Npn \coffin_log_structure:N #1
- {
- \__coffin_if_exist:NT #1
- {
- \__msg_log_variable:Nnn #1 { coffins }
- {
- \prop_map_function:cN
- { l__coffin_poles_ \__int_value:w #1 _prop }
- \__msg_show_item_unbraced:nn
- }
- }
- }
+\cs_new_protected_nopar:Npn \coffin_log_structure:N
+ { \__msg_log_next: \coffin_show_structure:N }
\cs_generate_variant:Nn \coffin_log_structure:N { c }
\cs_new_protected:Npn \file_if_exist_input:n #1
{
@@ -17197,83 +17408,52 @@
}
\tl_new:N \l__ior_internal_tl
\cs_new_protected_nopar:Npn \ior_log_streams:
- { \__ior_log_streams:Nn \g__ior_streams_prop { input } }
-\cs_new_protected:Npn \__ior_log_streams:Nn #1#2
- {
- \__msg_log:nnn { LaTeX / kernel }
- { \prop_if_empty:NTF #1 { show-no-stream } { show-open-streams } }
- {#2}
- \__msg_log_wrap:n
- { \prop_map_function:NN #1 \__msg_show_item_unbraced:nn }
- }
+ { \__msg_log_next: \ior_list_streams: }
\cs_new_protected_nopar:Npn \iow_log_streams:
- { \__iow_log_streams:Nn \g__iow_streams_prop { output } }
-\cs_new_protected:Npn \__iow_log_streams:Nn #1#2
- {
- \__msg_log:nnn { LaTeX / kernel }
- { \prop_if_empty:NTF #1 { show-no-stream } { show-open-streams } }
- {#2}
- \__msg_log_wrap:n
- { \prop_map_function:NN #1 \__msg_show_item_unbraced:nn }
- }
-\cs_new_protected:Npn \fp_log:N #1
- {
- \fp_if_exist:NTF #1
- { \__msg_log_value:x { \token_to_str:N #1 = \fp_to_tl:N #1 } }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
- }
-\cs_new_protected:Npn \fp_log:n #1
- { \__msg_log_value:x { \fp_to_tl:n {#1} } }
+ { \__msg_log_next: \iow_list_streams: }
+\cs_new_protected_nopar:Npn \fp_log:N
+ { \__msg_log_next: \fp_show:N }
+\cs_new_protected_nopar:Npn \fp_log:n
+ { \__msg_log_next: \fp_show:n }
\cs_generate_variant:Nn \fp_log:N { c }
-\cs_new_eq:NN \int_log:N \__kernel_register_log:N
-\cs_new_eq:NN \int_log:c \__kernel_register_log:c
-\cs_new_protected:Npn \int_log:n #1
- { \__msg_log_value:x { \int_eval:n {#1} } }
-\cs_new_protected:Npn \keys_log:nn #1#2
- { \cs_log:c { \c__keys_code_root_tl #1 / \tl_to_str:n {#2} } }
-\cs_new_protected:Npn \__msg_log:nnn #1#2#3
- {
- \iow_wrap:nnnN
- { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} { } { } { } }
- { } { } \iow_log:n
- }
-\cs_new_protected:Npn \__msg_log_variable:Nnn #1#2#3
+\cs_new_protected_nopar:Npn \int_log:N
+ { \__msg_log_next: \int_show:N }
+\cs_generate_variant:Nn \int_log:N { c }
+\cs_new_protected_nopar:Npn \int_log:n
+ { \__msg_log_next: \int_show:n }
+\cs_new_protected_nopar:Npn \keys_log:nn
+ { \__msg_log_next: \keys_show:nn }
+\cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6
{
- \cs_if_exist:NTF #1
+ \exp_args:Nf \__msg_expandable_error_module:nn
{
- \__msg_log:nnn { LaTeX / kernel } { show- #2 } {#1}
- \__msg_log_wrap:n {#3}
- }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
+ \exp_args:Nf \tl_to_str:n
+ { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
}
+ {#1}
}
-\cs_new_protected:Npn \__msg_log_wrap:n #1
- { \iow_wrap:nnnN { #1 . } { } { } \__msg_log:n }
-\cs_new_protected:Npn \__msg_log:n #1
- { \iow_log:x { \tl_if_single:nT {#1} { > ~ } #1 } }
-\cs_new_protected:Npn \__msg_log_value:n #1
- { \iow_log:n { >~ #1 . } }
-\cs_generate_variant:Nn \__msg_log_value:n { x }
-\cs_new_protected:Npn \bool_log:N #1
+\cs_new:Npn \msg_expandable_error:nnnnn #1#2#3#4#5
+ { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} {#5} { } }
+\cs_new:Npn \msg_expandable_error:nnnn #1#2#3#4
+ { \msg_expandable_error:nnnnnn {#1} {#2} {#3} {#4} { } { } }
+\cs_new:Npn \msg_expandable_error:nnn #1#2#3
+ { \msg_expandable_error:nnnnnn {#1} {#2} {#3} { } { } { } }
+\cs_new:Npn \msg_expandable_error:nn #1#2
+ { \msg_expandable_error:nnnnnn {#1} {#2} { } { } { } { } }
+\cs_generate_variant:Nn \msg_expandable_error:nnnnnn { nnffff }
+\cs_generate_variant:Nn \msg_expandable_error:nnnnn { nnfff }
+\cs_generate_variant:Nn \msg_expandable_error:nnnn { nnff }
+\cs_generate_variant:Nn \msg_expandable_error:nnn { nnf }
+\cs_new:Npn \__msg_expandable_error_module:nn #1#2
{
- \bool_if_exist:NTF #1
- {
- \__msg_log_value:x
- { \token_to_str:N #1 = \__bool_to_word:n {#1} }
- }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \use_none_delimit_by_q_stop:w
+ \use:n { \::error ! ~ #2 : ~ #1 } \q_stop
}
-\cs_new_protected:Npn \bool_log:n #1
- { \__msg_log_value:x { \__bool_to_word:n {#1} } }
-\cs_new:Npn \__bool_to_word:n #1 { \bool_if:nTF {#1} { true } { false } }
+\cs_new_protected_nopar:Npn \bool_log:N
+ { \__msg_log_next: \bool_show:N }
+\cs_new_protected_nopar:Npn \bool_log:n
+ { \__msg_log_next: \bool_show:n }
\cs_generate_variant:Nn \bool_log:N { c }
\cs_new:Npn \prop_map_tokens:Nn #1#2
{
@@ -17290,11 +17470,8 @@
\__prop_map_tokens:nwwn {#1}
}
\cs_generate_variant:Nn \prop_map_tokens:Nn { c }
-\cs_new_protected:Npn \prop_log:N #1
- {
- \__msg_log_variable:Nnn #1 { prop }
- { \prop_map_function:NN #1 \__msg_show_item:nn }
- }
+\cs_new_protected_nopar:Npn \prop_log:N
+ { \__msg_log_next: \prop_show:N }
\cs_generate_variant:Nn \prop_log:N { c }
\cs_new:Npn \seq_mapthread_function:NNN #1#2#3
{ \exp_after:wN \__seq_mapthread_function:wNN #2 \q_stop #1 #3 }
@@ -17339,11 +17516,8 @@
#1 #2 { #3 }
\__seq_pop_item_def:
}
-\cs_new_protected:Npn \seq_log:N #1
- {
- \__msg_log_variable:Nnn #1 { seq }
- { \seq_map_function:NN #1 \__msg_show_item:n }
- }
+\cs_new_protected_nopar:Npn \seq_log:N
+ { \__msg_log_next: \seq_show:N }
\cs_generate_variant:Nn \seq_log:N { c }
\cs_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4
{
@@ -17360,16 +17534,16 @@
}
\cs_new_eq:NN \dim_log:N \__kernel_register_log:N
\cs_new_eq:NN \dim_log:c \__kernel_register_log:c
-\cs_new_protected:Npn \dim_log:n #1
- { \__msg_log_value:x { \dim_eval:n {#1} } }
+\cs_new_protected_nopar:Npn \dim_log:n
+ { \__msg_log_next: \dim_show:n }
\cs_new_eq:NN \skip_log:N \__kernel_register_log:N
\cs_new_eq:NN \skip_log:c \__kernel_register_log:c
-\cs_new_protected:Npn \skip_log:n #1
- { \__msg_log_value:x { \skip_eval:n {#1} } }
+\cs_new_protected_nopar:Npn \skip_log:n
+ { \__msg_log_next: \skip_show:n }
\cs_new_eq:NN \muskip_log:N \__kernel_register_log:N
\cs_new_eq:NN \muskip_log:c \__kernel_register_log:c
-\cs_new_protected:Npn \muskip_log:n #1
- { \__msg_log_value:x { \muskip_eval:n {#1} } }
+\cs_new_protected_nopar:Npn \muskip_log:n
+ { \__msg_log_next: \muskip_show:n }
\prg_new_conditional:Npnn \tl_if_single_token:n #1 { p , T , F , TF }
{
\tl_if_head_is_N_type:nTF {#1}
@@ -17377,14 +17551,14 @@
{
\tl_if_empty:nTF {#1}
{ \prg_return_false: }
- { \__tl_if_empty_return:o { \tex_romannumeral:D -`0 #1 } }
+ { \__tl_if_empty_return:o { \exp:w \exp_end_continue_f:w #1 } }
}
}
\cs_new:Npn \tl_reverse_tokens:n #1
{
\etex_unexpanded:D \exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_act:NNNnn
\__tl_reverse_normal:nN
\__tl_reverse_group:nn
@@ -17434,7 +17608,7 @@
{
\etex_unexpanded:D \exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_act_case_aux:nn { \c__tl_act_uppercase_tl } {#1}
}
}
@@ -17442,7 +17616,7 @@
{
\etex_unexpanded:D \exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_act_case_aux:nn { \c__tl_act_lowercase_tl } {#1}
}
}
@@ -17467,7 +17641,7 @@
\exp_after:wN \__tl_act_output:n \exp_after:wN
{
\exp_after:wN
- { \tex_romannumeral:D \__tl_act_case_aux:nn {#1} {#2} }
+ { \exp:w \__tl_act_case_aux:nn {#1} {#2} }
}
}
\cs_new_protected_nopar:Npn \tl_set_from_file:Nnn
@@ -17525,7 +17699,7 @@
{
\etex_unexpanded:D \exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_change_case_aux:nnn {#1} {#2} {#3}
}
}
@@ -17553,7 +17727,7 @@
\cs_new:Npn \__tl_change_case_end:wn #1 \__tl_change_case_result:n #2
{
\group_align_safe_end:
- \c_zero
+ \exp_end:
#2
}
\cs_new:Npn \__tl_change_case_group:nwnn #1#2 \q_recursion_stop #3#4
@@ -17562,7 +17736,7 @@
{
\exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_change_case_aux:nnn {#3} {#4} {#1}
}
}
@@ -17980,7 +18154,7 @@
{
\etex_unexpanded:D \exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_mixed_case_aux:nn {#1} {#2}
}
}
@@ -18008,7 +18182,7 @@
{
\exp_after:wN
{
- \tex_romannumeral:D
+ \exp:w
\__tl_mixed_case_aux:nn {#3} {#1}
}
}
@@ -18411,36 +18585,27 @@
\UHORN { \exp_stop_f: \uhorn }
}
\group_end:
-\cs_new_protected:Npn \tl_log:N #1
- {
- \tl_if_exist:NTF #1
- { \cs_log:N #1 }
- {
- \__msg_kernel_error:nnx { kernel } { variable-not-defined }
- { \token_to_str:N #1 }
- }
- }
+\cs_new_protected_nopar:Npn \tl_log:N
+ { \__msg_log_next: \tl_show:N }
\cs_generate_variant:Nn \tl_log:N { c }
-\cs_new_protected:Npn \tl_log:n #1
- { \__msg_log_wrap:n { > ~ \tl_to_str:n {#1} } }
+\cs_new_protected_nopar:Npn \tl_log:n
+ { \__msg_log_next: \tl_show:n }
\group_begin:
\char_set_catcode_active:N \^^@
- \cs_set:Npn \char_tmp:NN #1#2
+ \cs_set_protected:Npn \__char_tmp:nN #1#2
{
- \cs_new:Npn #1 ##1
+ \cs_new_protected:cpn { #1 :nN } ##1
{
- \char_set_catcode_active:n { `##1 }
\group_begin:
- \char_set_lccode:nn { `\^^@ } { `##1 }
- \tl_to_lowercase:n { \group_end: #2 ^^@ }
+ \char_set_catcode_active:n { ##1 }
+ \char_set_lccode:nn { `\^^@ } { ##1 }
+ \tex_lowercase:D { \group_end: #2 ^^@ }
}
+ \cs_new_protected:cpx { #1 :NN } ##1
+ { \exp_not:c { #1 : nN } { `##1 } }
}
- \char_tmp:NN \char_set_active:Npn \cs_set:Npn
- \char_tmp:NN \char_set_active:Npx \cs_set:Npx
- \char_tmp:NN \char_gset_active:Npn \cs_gset:Npn
- \char_tmp:NN \char_gset_active:Npx \cs_gset:Npx
- \char_tmp:NN \char_set_active_eq:NN \cs_set_eq:NN
- \char_tmp:NN \char_gset_active_eq:NN \cs_gset_eq:NN
+ \__char_tmp:nN { char_set_active_eq } \cs_set_eq:NN
+ \__char_tmp:nN { char_gset_active_eq } \cs_gset_eq:NN
\group_end:
\group_begin:
\char_set_catcode_other:N \O