summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/unravel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-12-28 21:32:14 +0000
committerKarl Berry <karl@freefriends.org>2018-12-28 21:32:14 +0000
commitc15aab665004d0395cdf322d9bcb64b36a9a3902 (patch)
treef8201611324eafb46e053256f94a0a8c0b9bd1cc /Master/texmf-dist/tex/latex/unravel
parentb93e30db8606f12389976318678d926f36a32f02 (diff)
unravel (28dec18)
git-svn-id: svn://tug.org/texlive/trunk@49515 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/unravel')
-rw-r--r--Master/texmf-dist/tex/latex/unravel/unravel.sty1002
1 files changed, 641 insertions, 361 deletions
diff --git a/Master/texmf-dist/tex/latex/unravel/unravel.sty b/Master/texmf-dist/tex/latex/unravel/unravel.sty
index 941ccfb4109..7051a79b324 100644
--- a/Master/texmf-dist/tex/latex/unravel/unravel.sty
+++ b/Master/texmf-dist/tex/latex/unravel/unravel.sty
@@ -9,7 +9,7 @@
%% Do not distribute a modified version of this file.
%%
%% Communicate any suggestions for changing this package
-%% to Bruno Le Floch (blflatex@gmail.com).
+%% to Bruno Le Floch (blflatex+unravel@gmail.com).
%%
%% File: unravel.dtx Copyright (C) 2013, 2015, 2018 Bruno Le Floch
%%
@@ -147,34 +147,35 @@
}
\expandafter \endgroup \__unravel_setup_latexe:
\RequirePackage{expl3,xparse}[2018/02/21]
-\RequirePackage{gtl}[2018/04/04]
+\RequirePackage{gtl}[2018/12/28]
\csname cs_if_exist:cF\endcsname{str_range:nnn}{\RequirePackage{l3str}}
\csname use:n\endcsname
{%
\csname __unravel_setup_restore:\endcsname
\ProvidesExplPackage
- {unravel} {2018/04/04} {0.2e} {Watching TeX digest tokens}%
+ {unravel} {2018/12/28} {0.2f} {Watching TeX digest tokens}%
\csname __unravel_setup_unravel:\endcsname
}%
-\cs_new_eq:NN \__unravel_currentgrouptype: \etex_currentgrouptype:D
-\cs_new_protected_nopar:Npn \__unravel_set_escapechar:n
+\cs_new_eq:NN \__unravel_currentgrouptype: \tex_currentgrouptype:D
+\cs_new_protected:Npn \__unravel_set_escapechar:n
{ \int_set:Nn \tex_escapechar:D }
-\cs_new_eq:NN \__unravel_everyeof:w \etex_everyeof:D
+\cs_new_eq:NN \__unravel_everyeof:w \tex_everyeof:D
\cs_new_eq:NN \__unravel_everypar:w \tex_everypar:D
\cs_new_eq:NN \__unravel_hbox:w \tex_hbox:D
\cs_new_eq:NN \__unravel_mag: \tex_mag:D
\cs_new_eq:NN \__unravel_nullfont: \tex_nullfont:D
\cs_new_eq:NN \__unravel_the:w \tex_the:D
\cs_new_eq:NN \__unravel_number:w \tex_number:D
-\cs_new_eq:NN \c__unravel_prompt_ior \c_sixteen
-\cs_new_eq:NN \c__unravel_noprompt_ior \c_minus_one
+\exp_after:wN \cs_new_eq:NN
+ \exp_after:wN \__unravel_special_relax:
+ \exp_not:N \__unravel_special_relax:
+\int_const:Nn \c__unravel_prompt_ior { 16 }
+\int_const:Nn \c__unravel_noprompt_ior { -1 }
\cs_generate_variant:Nn \seq_push:Nn { Nf }
\cs_generate_variant:Nn \str_head:n { f }
\cs_generate_variant:Nn \tl_to_str:n { o }
+\cs_generate_variant:Nn \tl_if_eq:nnTF { o }
\cs_generate_variant:Nn \tl_if_head_eq_meaning:nNT { V }
-\cs_generate_variant:Nn \tl_if_in:nnF { nV }
-\cs_generate_variant:Nn \tl_if_in:nnTF { nV }
-\cs_generate_variant:Nn \tl_if_in:NnTF { No , NV }
\cs_generate_variant:Nn \tl_if_single_token:nT { V }
\cs_generate_variant:Nn \gtl_gput_right:Nn { NV }
\cs_generate_variant:Nn \ior_str_get:NN { Nc }
@@ -186,6 +187,12 @@
\cs_generate_variant:Nn \gtl_gconcat:NNN { ccc , cNc }
\cs_generate_variant:Nn \gtl_gclear:N { c }
\cs_generate_variant:Nn \gtl_gclear_new:N { c }
+\cs_new_protected:Npn \__unravel_tl_if_in:ooTF #1#2#3#4
+ {
+ \group_begin:
+ \exp_args:Noo \tl_if_in:nnTF {#1} {#2}
+ { \group_end: #3 } { \group_end: #4 }
+ }
\tl_new:N \l__unravel_exp_tl
\cs_new_protected:Npn \__unravel_exp_args:Nx #1#2
{
@@ -197,7 +204,7 @@
\cs_set_nopar:Npx \l__unravel_exp_tl { \exp_not:N #1 \exp_not:N #2 {#3} }
\l__unravel_exp_tl
}
-\cs_new_protected_nopar:Npn \__unravel_tmp:w { }
+\cs_new_protected:Npn \__unravel_tmp:w { }
\cs_set_protected:Npn \__unravel_tmp:w #1
{
\cs_new_protected:Npn \__unravel_file_get:nN ##1##2
@@ -241,7 +248,7 @@
}
#1
}
-\cs_new_protected_nopar:Npn \__unravel_prepare_mag:
+\cs_new_protected:Npn \__unravel_prepare_mag:
{
\int_compare:nNnT { \g__unravel_mag_set_int } > { 0 }
{
@@ -258,15 +265,15 @@
}
\int_gset_eq:NN \g__unravel_mag_set_int \__unravel_mag:
}
-\cs_new_nopar:Npn \__unravel_strip_escape:w
+\cs_new:Npn \__unravel_strip_escape:w
{
\tex_romannumeral:D
\if_charcode:w \token_to_str:N \ \__unravel_strip_escape_aux:w \fi:
\__unravel_strip_escape_aux:N
}
-\cs_new:Npn \__unravel_strip_escape_aux:N #1 { \c_zero }
+\cs_new:Npn \__unravel_strip_escape_aux:N #1 { \c_zero_int }
\cs_new:Npn \__unravel_strip_escape_aux:w #1#2
- { - \__unravel_number:w #1 \c_zero }
+ { - \__unravel_number:w #1 \c_zero_int }
\cs_new:Npn \__unravel_to_str:n #1
{
\tl_if_head_eq_meaning:nNTF {#1} \scan_stop:
@@ -366,6 +373,20 @@
}
\group_begin:
\char_set_catcode_active:n { `Z }
+ \prg_new_protected_conditional:Npnn \__unravel_token_if_active_char:N #1
+ { TF }
+ {
+ \group_begin:
+ \__unravel_exp_args:Nx \char_set_lccode:nn
+ { ` \exp_args:No \str_head:n { \token_to_str:N #1 } }
+ { ` Z }
+ \tex_lowercase:D { \tl_if_eq:nnTF {#1} } { Z }
+ { \group_end: \prg_return_true: }
+ { \group_end: \prg_return_false: }
+ }
+\group_end:
+\group_begin:
+ \char_set_catcode_active:n { `Z }
\prg_new_protected_conditional:Npnn \__unravel_token_if_definable:N #1
{ TF }
{
@@ -375,9 +396,7 @@
{ \exp_args:No \str_tail:n { \token_to_str:N #1 } }
\tl_if_empty:NTF \l__unravel_tmpa_tl
{
- \exp_args:Nx \char_set_lccode:nn
- { ` \str_head:n {#1} } { `Z }
- \tex_lowercase:D { \tl_if_eq:nnTF {#1} } { Z }
+ \__unravel_token_if_active_char:NTF #1
{ \group_end: \prg_return_true: }
{ \group_end: \prg_return_false: }
}
@@ -399,7 +418,7 @@
}
{ \prg_return_false: }
}
-\cs_new_nopar:Npn \__unravel_prev_input_count:
+\cs_new:Npn \__unravel_prev_input_count:
{
\int_eval:n
{
@@ -410,19 +429,19 @@
}
\cs_new:Npn \__unravel_prev_input_count_aux:n #1
{ \tl_if_empty:nF {#1} { + 1 } }
-\cs_new_protected_nopar:Npn \__unravel_prev_input_get:N
+\cs_new_protected:Npn \__unravel_prev_input_get:N
{ \seq_get_right:NN \g__unravel_prev_input_seq }
-\cs_new_protected_nopar:Npn \__unravel_prev_input_gpush:
+\cs_new_protected:Npn \__unravel_prev_input_gpush:
{ \seq_gput_right:Nn \g__unravel_prev_input_seq { } }
-\cs_new_protected_nopar:Npn \__unravel_prev_input_gpush:N
+\cs_new_protected:Npn \__unravel_prev_input_gpush:N
{ \seq_gput_right:NV \g__unravel_prev_input_seq }
-\cs_new_protected_nopar:Npn \__unravel_prev_input_gpop:N
+\cs_new_protected:Npn \__unravel_prev_input_gpop:N
{ \seq_gpop_right:NN \g__unravel_prev_input_seq }
-\cs_new_protected_nopar:Npn \__unravel_prev_input_gpush_gtl:
+\cs_new_protected:Npn \__unravel_prev_input_gpush_gtl:
{ \seq_gput_right:NV \g__unravel_prev_input_seq \c_empty_gtl }
-\cs_new_protected_nopar:Npn \__unravel_prev_input_gpush_gtl:N
+\cs_new_protected:Npn \__unravel_prev_input_gpush_gtl:N
{ \seq_gput_right:NV \g__unravel_prev_input_seq }
-\cs_new_protected_nopar:Npn \__unravel_prev_input_gpop_gtl:N
+\cs_new_protected:Npn \__unravel_prev_input_gpop_gtl:N
{ \seq_gpop_right:NN \g__unravel_prev_input_seq }
\cs_new_protected:Npn \__unravel_prev_input_silent:n #1
{
@@ -451,8 +470,8 @@
{
\int_case:nnF {#1}
{
- { 2 } { \__unravel_join_get_aux:NNN \skip_eval:n \etex_glueexpr:D }
- { 3 } { \__unravel_join_get_aux:NNN \muskip_eval:n \etex_muexpr:D }
+ { 2 } { \__unravel_join_get_aux:NNN \skip_eval:n \tex_glueexpr:D }
+ { 3 } { \__unravel_join_get_aux:NNN \muskip_eval:n \tex_muexpr:D }
}
{
\__unravel_error:nnnnn { internal } { join-factor } { } { } { }
@@ -469,17 +488,27 @@
\tl_new:N \g__unravel_before_prompt_tl
\int_new:N \l__unravel_prompt_tmpa_int
\int_new:N \g__unravel_nonstop_int
-\int_new:N \g__unravel_noise_int
-\int_gset_eq:NN \g__unravel_noise_int \c_one
\bool_new:N \g__unravel_default_explicit_prompt_bool
\bool_new:N \g__unravel_default_internal_debug_bool
\bool_new:N \g__unravel_default_number_steps_bool
-\bool_gset_true:N \g__unravel_default_number_steps_bool
+\int_new:N \g__unravel_default_online_int
+\bool_new:N \g__unravel_default_trace_assigns_bool
+\bool_new:N \g__unravel_default_trace_expansion_bool
+\bool_new:N \g__unravel_default_trace_other_bool
\bool_new:N \g__unravel_default_welcome_message_bool
+\bool_gset_true:N \g__unravel_default_number_steps_bool
+\int_gset:Nn \g__unravel_default_online_int { 1 }
+\bool_gset_true:N \g__unravel_default_trace_assigns_bool
+\bool_gset_true:N \g__unravel_default_trace_expansion_bool
+\bool_gset_true:N \g__unravel_default_trace_other_bool
\bool_gset_true:N \g__unravel_default_welcome_message_bool
\bool_new:N \g__unravel_explicit_prompt_bool
\bool_new:N \g__unravel_internal_debug_bool
\bool_new:N \g__unravel_number_steps_bool
+\int_new:N \g__unravel_online_int
+\bool_new:N \g__unravel_trace_assigns_bool
+\bool_new:N \g__unravel_trace_expansion_bool
+\bool_new:N \g__unravel_trace_other_bool
\bool_new:N \g__unravel_welcome_message_bool
\int_new:N \g__unravel_step_int
\str_new:N \g__unravel_action_text_str
@@ -508,11 +537,14 @@
\int_new:N \l__unravel_head_cmd_int
\int_new:N \l__unravel_head_char_int
\tl_new:N \l__unravel_head_meaning_tl
+\tl_new:N \l__unravel_argi_tl
+\tl_new:N \l__unravel_argii_tl
\tl_new:N \l__unravel_tmpa_tl
\gtl_new:N \l__unravel_unused_gtl
\gtl_new:N \l__unravel_tmpb_gtl
\tl_new:N \g__unravel_tmpc_tl
\seq_new:N \l__unravel_tmpa_seq
+\cs_new_eq:NN \l__unravel_tmpb_token ?
\tl_new:N \l__unravel_defined_tl
\tl_new:N \l__unravel_defining_tl
\cs_new_eq:NN \__unravel_inaccessible:w ?
@@ -557,7 +589,7 @@
}
\cs_new_protected:Npn \__unravel_new_tex_cmd:nn #1#2
{
- \cs_new_protected_nopar:cpn
+ \cs_new_protected:cpn
{ __unravel_cmd_ \__unravel_tex_use:n {#1} : } {#2}
}
\cs_new_protected:Npn \__unravel_new_eq_tex_cmd:nn #1#2
@@ -568,7 +600,7 @@
}
\cs_new_protected:Npn \__unravel_new_tex_expandable:nn #1#2
{
- \cs_new_protected_nopar:cpn
+ \cs_new_protected:cpn
{ __unravel_expandable_ \__unravel_tex_use:n {#1} : } {#2}
}
\__unravel_tex_const:nn { relax } { 0 }
@@ -692,6 +724,12 @@
\__unravel_tex_const:nn { top_bot_mark } { 112 }
\__unravel_tex_const:nn { call } { 113 }
\__unravel_tex_const:nn { end_template } { 117 }
+\sys_if_engine_luatex:T
+ {
+ \__unravel_tex_primitive:nnn
+ { \exp_after:wN \use_none:n \token_to_meaning:N \__unravel_special_relax: }
+ { relax } { 1 }
+ }
\__unravel_tex_primitive:nnn { relax } { relax } { 256 }
\__unravel_tex_primitive:nnn { span } { tab_mark } { 256 }
\__unravel_tex_primitive:nnn { cr } { car_ret } { 257 }
@@ -1200,7 +1238,8 @@
\__unravel_tex_primitive:nnn { pdfescapename } { convert } { 14 }
\__unravel_tex_primitive:nnn { leftmarginkern } { convert } { 15 }
\__unravel_tex_primitive:nnn { rightmarginkern } { convert } { 16 }
-\__unravel_tex_primitive:nnn { pdfstrcmp } { convert } { 17 }
+\__unravel_tex_primitive:nnn
+ { \sys_if_engine_xetex:F { pdf } strcmp } { convert } { 17 }
\__unravel_tex_primitive:nnn { pdfcolorstackinit } { convert } { 18 }
\__unravel_tex_primitive:nnn { pdfescapehex } { convert } { 19 }
\__unravel_tex_primitive:nnn { pdfunescapehex } { convert } { 20 }
@@ -1216,6 +1255,16 @@
\__unravel_tex_primitive:nnn { pdfinsertht } { convert } { 30 }
\__unravel_tex_primitive:nnn { pdfximagebbox } { convert } { 31 }
\__unravel_tex_primitive:nnn { jobname } { convert } { 32 }
+\sys_if_engine_luatex:T
+ {
+ \__unravel_tex_primitive:nnn { directlua } { convert } { 33 }
+ \__unravel_tex_primitive:nnn { expanded } { convert } { 34 }
+ \__unravel_tex_primitive:nnn { luaescapestring } { convert } { 35 }
+ }
+\sys_if_engine_xetex:T
+ {
+ \__unravel_tex_primitive:nnn { Ucharcat } { convert } { 40 }
+ }
\__unravel_tex_primitive:nnn { the } { the } { 0 }
\__unravel_tex_primitive:nnn { unexpanded } { the } { 1 }
\__unravel_tex_primitive:nnn { detokenize } { the } { 5 }
@@ -1229,7 +1278,7 @@
\__unravel_tex_primitive:nnn { botmarks } { top_bot_mark } { 7 }
\__unravel_tex_primitive:nnn { splitfirstmarks } { top_bot_mark } { 8 }
\__unravel_tex_primitive:nnn { splitbotmarks } { top_bot_mark } { 9 }
-\cs_new_protected_nopar:Npn \__unravel_get_next:
+\cs_new_protected:Npn \__unravel_get_next:
{
\__unravel_input_if_empty:TF
{ \__unravel_exit:w }
@@ -1240,18 +1289,81 @@
{
\tl_set:Nx \l__unravel_head_tl
{ \gtl_head:N \l__unravel_head_gtl }
+ \token_if_eq_meaning:NNT
+ \l__unravel_head_token \__unravel_special_relax:
+ \__unravel_get_next_notexpanded:
}
{ \tl_clear:N \l__unravel_head_tl }
}
}
-\cs_new_protected_nopar:Npn \__unravel_get_next_aux:w
+\cs_new_protected:Npn \__unravel_get_next_aux:w
{ \cs_set_eq:NN \l__unravel_head_token }
-\cs_new_protected_nopar:Npn \__unravel_get_token:
+\cs_set_protected:Npn \__unravel_tmp:w #1
+ {
+ \cs_new_protected:Npn \__unravel_get_next_notexpanded:
+ {
+ \tl_if_eq:onTF { \l__unravel_head_tl } { \__unravel_unravel_marker: }
+ { \__unravel_get_next_marker: }
+ {
+ \__unravel_exp_args:NNx \use:nn \__unravel_notexpanded_test:w
+ { \scan_stop: \exp_after:wN \cs_to_str:N \l__unravel_head_tl Z }
+ \q_mark \__unravel_notexpanded_expand:n
+ #1 Z \q_mark \use_none:n
+ \q_stop
+ }
+ }
+ \cs_new_protected:Npn \__unravel_notexpanded_test:w
+ ##1 #1 ##2 Z \q_mark ##3##4 \q_stop
+ { ##3 {##2} }
+ }
+\exp_args:Nx \__unravel_tmp:w { \scan_stop: \tl_to_str:n { notexpanded: } }
+\group_begin:
+ \char_set_catcode_active:n { 0 }
+ \cs_new_protected:Npn \__unravel_notexpanded_expand:n #1
+ {
+ \__unravel_exp_args:Nx \tl_if_empty:nTF { \str_tail:n {#1} }
+ {
+ \group_begin:
+ \char_set_lccode:nn { 0 } { `#1 }
+ \tex_lowercase:D
+ {
+ \group_end:
+ \__unravel_notexpanded_expand:N ^^@
+ }
+ }
+ {
+ \group_begin: \exp_args:NNc \group_end:
+ \__unravel_notexpanded_expand:N { \use_none:n #1 }
+ }
+ }
+\group_end:
+\cs_new_protected:Npn \__unravel_notexpanded_expand:N #1
+ {
+ \gtl_set:Nn \l__unravel_head_gtl {#1}
+ \tl_set:Nn \l__unravel_head_tl {#1}
+ \cs_set_eq:NN \l__unravel_head_token \__unravel_special_relax:
+ }
+\cs_new_protected:Npn \__unravel_get_next_marker:
+ {
+ \__unravel_get_next:
+ \tl_if_eq:onTF \l__unravel_head_tl { \__unravel:nn }
+ { \__unravel_error:nxxxx { nested-unravel } { } { } { } { } }
+ { \__unravel_error:nxxxx { internal } { marker~unknown } { } { } { } }
+ \__unravel_input_gpop_item:NF \l__unravel_argi_tl
+ { \__unravel_error:nxxxx { internal } { marker~1 } { } { } { } }
+ \__unravel_input_gpop_item:NF \l__unravel_argii_tl
+ { \__unravel_error:nxxxx { internal } { marker~2 } { } { } { } }
+ \exp_args:Nno \keys_set:nn { unravel } \l__unravel_argi_tl
+ \__unravel_exp_args:Nx \__unravel_back_input:n
+ { \exp_not:N \exp_not:n { \exp_not:o \l__unravel_argii_tl } }
+ \__unravel_get_next:
+ }
+\cs_new_protected:Npn \__unravel_get_token:
{
\__unravel_get_next:
\__unravel_set_cmd:
}
-\cs_new_protected_nopar:Npn \__unravel_set_cmd:
+\cs_new_protected:Npn \__unravel_set_cmd:
{
\__unravel_set_cmd_aux_meaning:
\__unravel_set_cmd_aux_primitive:oTF { \l__unravel_head_meaning_tl }
@@ -1270,7 +1382,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_set_cmd_aux_meaning:
+\cs_new_protected:Npn \__unravel_set_cmd_aux_meaning:
{
\tl_set:Nx \l__unravel_head_meaning_tl
{
@@ -1304,21 +1416,21 @@
\int_set:Nn \l__unravel_head_cmd_int {#1}
\int_set:Nn \l__unravel_head_char_int {#2}
}
-\cs_new_protected_nopar:Npn \__unravel_set_cmd_aux_macro:
+\cs_new_protected:Npn \__unravel_set_cmd_aux_macro:
{
\int_set:Nn \l__unravel_head_cmd_int { \__unravel_tex_use:n { call } }
\int_zero:N \l__unravel_head_char_int
}
-\cs_new_protected_nopar:Npn \__unravel_set_cmd_aux_unknown:
+\cs_new_protected:Npn \__unravel_set_cmd_aux_unknown:
{
\exp_last_unbraced:NV \__unravel_set_cmd_aux_primitive:nn
\c__unravel_tex_relax_tl
\__unravel_error:nxxxx { unknown-primitive }
{ \l__unravel_head_meaning_tl } { } { } { }
}
-\cs_new_protected_nopar:Npn \__unravel_set_cmd_aux_cs:
+\cs_new_protected:Npn \__unravel_set_cmd_aux_cs:
{
- \tl_if_in:NoTF \l__unravel_head_meaning_tl
+ \__unravel_tl_if_in:ooTF \l__unravel_head_meaning_tl
{ \tl_to_str:n { elect~font } }
{
\exp_last_unbraced:NV \__unravel_set_cmd_aux_primitive:nn
@@ -1326,7 +1438,7 @@
}
{ \__unravel_set_cmd_aux_numeric: }
}
-\cs_new_protected_nopar:Npn \__unravel_set_cmd_aux_numeric:
+\cs_new_protected:Npn \__unravel_set_cmd_aux_numeric:
{
\tl_set:Nx \l__unravel_tmpa_tl
{
@@ -1349,6 +1461,7 @@
\str_case:nnF {#1}
{
{ char } { \__unravel_set_cmd_aux_given:n { char_given } }
+ { kchar } { \__unravel_set_cmd_aux_given:n { char_given } }
{ mathchar } { \__unravel_set_cmd_aux_given:n { math_given } }
}
{
@@ -1364,7 +1477,7 @@
\int_set:Nn \l__unravel_head_cmd_int { \__unravel_tex_use:n {#1} }
\int_zero:N \l__unravel_head_char_int
}
-\cs_new_protected_nopar:Npn \__unravel_set_cmd_aux_char:
+\cs_new_protected:Npn \__unravel_set_cmd_aux_char:
{
\tl_set:Nx \l__unravel_head_meaning_tl
{ \token_to_meaning:N \l__unravel_head_token }
@@ -1380,7 +1493,7 @@
\int_set:Nn \l__unravel_head_cmd_int
{ \__unravel_tex_use:n { #1_char } }
}
-\cs_new_nopar:Npn \__unravel_input_to_str:
+\cs_new:Npn \__unravel_input_to_str:
{
\int_step_function:nnnN \g__unravel_input_int { -1 } { 1 }
\__unravel_input_to_str_aux:n
@@ -1389,7 +1502,7 @@
{ \gtl_to_str:c { g__unravel_input_#1_gtl } }
\cs_new_protected:Npn \__unravel_input_if_empty:TF
{
- \int_compare:nNnTF \g__unravel_input_int = \c_zero
+ \int_compare:nNnTF \g__unravel_input_int = 0
{ \use_i:nn }
{
\gtl_if_empty:cTF
@@ -1404,9 +1517,9 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_input_split:
+\cs_new_protected:Npn \__unravel_input_split:
{
- \int_compare:nNnT \g__unravel_input_int = \c_one
+ \int_compare:nNnT \g__unravel_input_int = 1
{
\exp_args:Nc \__unravel_input_split_aux:N
{ g__unravel_input_1_gtl }
@@ -1441,7 +1554,7 @@
\l__unravel_input_tmpa_tl \__unravel_input_split_end:
}
}
-\cs_new_nopar:Npn \__unravel_input_split_end: { }
+\cs_new:Npn \__unravel_input_split_end: { }
\cs_new_protected:Npn \__unravel_input_split_auxiii:w
#1 \__unravel_input_split_end:
{
@@ -1451,7 +1564,7 @@
{ g__unravel_input_ \int_use:N \g__unravel_input_tmpa_int _gtl } {#1}
\int_gdecr:N \g__unravel_input_tmpa_int
}
-\cs_new_protected_nopar:Npn \__unravel_input_gset:n
+\cs_new_protected:Npn \__unravel_input_gset:n
{
\int_gzero:N \g__unravel_input_int
\__unravel_back_input:n
@@ -1474,7 +1587,7 @@
{ g__unravel_input_ \int_use:N \g__unravel_input_int _gtl } #1
}
}
-\cs_new_protected_nopar:Npn \__unravel_input_merge:
+\cs_new_protected:Npn \__unravel_input_merge:
{
\int_gdecr:N \g__unravel_input_int
\gtl_gconcat:ccc
@@ -1486,7 +1599,7 @@
}
\prg_new_protected_conditional:Npnn \__unravel_input_gpop_item:N #1 { F }
{
- \int_compare:nNnTF \g__unravel_input_int = \c_zero
+ \int_compare:nNnTF \g__unravel_input_int = 0
{ \prg_return_false: }
{
\exp_args:Nc \__unravel_input_gpop_item_aux:NN
@@ -1498,10 +1611,10 @@
\gtl_gpop_left_item:NNTF #1#2
{ \prg_return_true: }
{
- \int_compare:nNnTF { \gtl_extra_end:N #1 } > \c_zero
+ \int_compare:nNnTF { \gtl_extra_end:N #1 } > 0
{ \prg_return_false: }
{
- \int_compare:nNnTF \g__unravel_input_int = \c_one
+ \int_compare:nNnTF \g__unravel_input_int = 1
{ \prg_return_false: }
{
\__unravel_input_merge:
@@ -1519,7 +1632,7 @@
{ \tl_clear:N #1 \__unravel_input_gpop_tl_aux:N #1 }
\cs_new_protected:Npn \__unravel_input_gpop_tl_aux:N #1
{
- \int_compare:nNnF \g__unravel_input_int = \c_zero
+ \int_compare:nNnF \g__unravel_input_int = 0
{
\exp_args:Nc \__unravel_input_gpop_tl_aux:NN
{ g__unravel_input_ \int_use:N \g__unravel_input_int _gtl } #1
@@ -1535,8 +1648,8 @@
\__unravel_input_gpop_tl_aux:N #2
}
{
- \int_compare:nNnTF \g__unravel_input_int > \c_one
- { \int_compare:nNnTF { \gtl_extra_end:N #1 } > \c_zero }
+ \int_compare:nNnTF \g__unravel_input_int > 1
+ { \int_compare:nNnTF { \gtl_extra_end:N #1 } > 0 }
{ \use_i:nn }
{
\tl_put_right:Nx #2 { \gtl_left_tl:N #1 }
@@ -1548,7 +1661,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_back_input:n
+\cs_new_protected:Npn \__unravel_back_input:n
{
\int_gincr:N \g__unravel_input_int
\gtl_gclear_new:c { g__unravel_input_ \int_use:N \g__unravel_input_int _gtl }
@@ -1568,24 +1681,24 @@
{ g__unravel_input_ \int_use:N \g__unravel_input_int _gtl }
}
}
-\cs_new_protected_nopar:Npn \__unravel_back_input:
+\cs_new_protected:Npn \__unravel_back_input:
{ \__unravel_back_input_gtl:N \l__unravel_head_gtl }
-\cs_new_protected_nopar:Npn \__unravel_back_input_tl_o:
+\cs_new_protected:Npn \__unravel_back_input_tl_o:
{
\tl_set:Nx \l__unravel_tmpa_tl
{ \exp_args:NV \exp_not:o \l__unravel_head_tl }
\__unravel_back_input:V \l__unravel_tmpa_tl
- \__unravel_print_done:x
+ \__unravel_print_expansion:x
{ \tl_to_str:N \l__unravel_head_tl = \tl_to_str:N \l__unravel_tmpa_tl }
}
-\cs_new_protected_nopar:Npn \__unravel_insert_relax:
+\cs_new_protected:Npn \__unravel_insert_relax:
{
\__unravel_back_input:
\gtl_set_eq:NN \l__unravel_head_gtl \c__unravel_frozen_relax_gtl
\__unravel_back_input:
\__unravel_print_action:
}
-\cs_new_protected_nopar:Npn \__unravel_insert_group_begin_error:
+\cs_new_protected:Npn \__unravel_insert_group_begin_error:
{
\tl_set_eq:NN \l__unravel_tmpa_tl \l__unravel_head_tl
\__unravel_back_input:
@@ -1594,7 +1707,7 @@
\__unravel_tex_error:nV { missing-lbrace } \l__unravel_tmpa_tl
\__unravel_print_action:
}
-\cs_new_protected_nopar:Npn \__unravel_insert_dollar_error:
+\cs_new_protected:Npn \__unravel_insert_dollar_error:
{
\__unravel_back_input:
\__unravel_back_input:n { $ } % $
@@ -1621,25 +1734,25 @@
{ \__unravel_macro_split_do:NN #1 \use_ii:nnn }
\cs_new:Npn \__unravel_macro_replacement:N #1
{ \__unravel_macro_split_do:NN #1 \use_iii:nnn }
-\cs_new_protected_nopar:Npn \__unravel_macro_call:
+\cs_new_protected:Npn \__unravel_macro_call:
{
\bool_if:NTF \g__unravel_speedup_macros_bool
{
\tl_set:Nx \l__unravel_tmpa_tl
{^ \exp_after:wN \__unravel_macro_parameter:N \l__unravel_head_tl }
- \tl_if_in:NVTF \c__unravel_parameters_tl \l__unravel_tmpa_tl
+ \__unravel_tl_if_in:ooTF \c__unravel_parameters_tl \l__unravel_tmpa_tl
{ \__unravel_macro_call_quick: } { \__unravel_macro_call_safe: }
}
{ \__unravel_macro_call_safe: }
\exp_args:NV \__unravel_back_input:o \l__unravel_head_tl
- \__unravel_print_done:x { \g__unravel_action_text_str }
+ \__unravel_print_expansion:
}
-\cs_new_protected_nopar:Npn \__unravel_macro_call_safe:
+\cs_new_protected:Npn \__unravel_macro_call_safe:
{
\__unravel_input_gpop_tl:N \l__unravel_tmpa_tl
\tl_put_right:NV \l__unravel_head_tl \l__unravel_tmpa_tl
}
-\cs_new_protected_nopar:Npn \__unravel_macro_call_quick:
+\cs_new_protected:Npn \__unravel_macro_call_quick:
{
\exp_after:wN \__unravel_macro_call_quick_loop:NNN \l__unravel_tmpa_tl
{ ? \use_none_delimit_by_q_stop:w } \q_stop
@@ -1659,7 +1772,7 @@
\__unravel_error:nxxxx { runaway-macro-parameter }
{ \tl_to_str:N \l__unravel_head_tl } { \tl_to_str:n {#1} } { } { }
}
-\cs_new_protected_nopar:Npn \__unravel_expand:
+\cs_new_protected:Npn \__unravel_expand_do:N
{
\__unravel_set_action_text:
\bool_if:NT \g__unravel_internal_debug_bool
@@ -1671,7 +1784,7 @@
{ \__unravel_macro_call: }
{ \__unravel_expand_nonmacro: }
}
-\cs_new_protected_nopar:Npn \__unravel_expand_nonmacro:
+\cs_new_protected:Npn \__unravel_expand_nonmacro:
{
\__unravel_set_cmd_aux_meaning:
\__unravel_set_cmd_aux_primitive:oTF { \l__unravel_head_meaning_tl }
@@ -1683,51 +1796,63 @@
{
\__unravel_error:nxxxx { unknown-primitive }
{ \l__unravel_head_meaning_tl } { } { } { }
- \gtl_gput_right:NV \g__unravel_output_gtl \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_input_gpop_tl:N \l__unravel_tmpa_tl
+ \tl_put_right:NV \l__unravel_head_tl \l__unravel_tmpa_tl
+ \exp_args:NV \__unravel_back_input:o \l__unravel_head_tl
+ \__unravel_print_expansion:
}
}
-\cs_new_protected_nopar:Npn \__unravel_get_x_next:
+\cs_new_protected:Npn \__unravel_get_x_next:
{
\__unravel_get_next:
\__unravel_token_if_expandable:NT \l__unravel_head_token
- {
- \__unravel_expand:
- \__unravel_get_x_next:
- }
+ { \__unravel_expand_do:N \__unravel_get_x_next: }
}
-\cs_new_protected_nopar:Npn \__unravel_get_x_or_protected:
+\cs_new_protected:Npn \__unravel_get_x_or_protected:
{
\__unravel_get_next:
\__unravel_token_if_protected:NF \l__unravel_head_token
- {
- \__unravel_expand:
- \__unravel_get_x_or_protected:
- }
+ { \__unravel_expand_do:N \__unravel_get_x_or_protected: }
+ }
+\cs_new_protected:Npn \__unravel_get_token_xdef:
+ {
+ \__unravel_get_next:
+ \__unravel_token_if_protected:NF \l__unravel_head_token
+ { \__unravel_expand_do:N \__unravel_get_token_xdef: }
+ }
+\cs_new_protected:Npn \__unravel_get_token_x:
+ {
+ \__unravel_get_next:
+ \__unravel_token_if_protected:NF \l__unravel_head_token
+ { \__unravel_expand_do:N \__unravel_get_token_x: }
}
-\cs_new_protected_nopar:Npn \__unravel_get_x_non_blank:
+\cs_new_protected:Npn \__unravel_get_x_non_blank:
{
\__unravel_get_x_next:
\token_if_eq_catcode:NNT \l__unravel_head_token \c_space_token
{ \__unravel_get_x_non_blank: }
}
-\cs_new_protected_nopar:Npn \__unravel_get_x_non_relax:
+\cs_new_protected:Npn \__unravel_get_x_non_relax:
{
\__unravel_get_x_next:
- \token_if_eq_meaning:NNT \l__unravel_head_token \scan_stop:
+ \token_if_eq_meaning:NNTF \l__unravel_head_token \scan_stop:
{ \__unravel_get_x_non_relax: }
{
- \token_if_eq_catcode:NNT \l__unravel_head_token \c_space_token
+ \token_if_eq_meaning:NNTF \l__unravel_head_token \__unravel_special_relax:
{ \__unravel_get_x_non_relax: }
+ {
+ \token_if_eq_catcode:NNT \l__unravel_head_token \c_space_token
+ { \__unravel_get_x_non_relax: }
+ }
}
}
-\cs_new_protected_nopar:Npn \__unravel_skip_optional_space:
+\cs_new_protected:Npn \__unravel_skip_optional_space:
{
\__unravel_get_x_next:
\token_if_eq_catcode:NNF \l__unravel_head_token \c_space_token
{ \__unravel_back_input: }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_optional_equals:
+\cs_new_protected:Npn \__unravel_scan_optional_equals:
{
\__unravel_get_x_non_blank:
\tl_if_eq:NNTF \l__unravel_head_tl \c__unravel_eq_tl
@@ -1737,7 +1862,7 @@
\__unravel_back_input:
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_left_brace:
+\cs_new_protected:Npn \__unravel_scan_left_brace:
{
\__unravel_get_x_non_relax:
\token_if_eq_catcode:NNF \l__unravel_head_token \c_group_begin_token
@@ -1781,24 +1906,24 @@
\__unravel_gtl_if_head_is_definable:NTF \l__unravel_head_gtl
{ \prg_return_false: }
{
- \str_if_eq_x:nnTF
+ \str_if_eq:eeTF
{ \str_head:f { \gtl_to_str:N \l__unravel_head_gtl } } {#1}
{ \prg_return_true: }
{
- \str_if_eq_x:nnTF
+ \str_if_eq:eeTF
{ \str_head:f { \gtl_to_str:N \l__unravel_head_gtl } } {#2}
{ \prg_return_true: }
{ \prg_return_false: }
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_keyword_true:
+\cs_new_protected:Npn \__unravel_scan_keyword_true:
{
\__unravel_prev_input_gpop_gtl:N \l__unravel_tmpb_gtl
\__unravel_prev_input:x { \gtl_to_str:N \l__unravel_tmpb_gtl }
\prg_return_true:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_keyword_false:w
+\cs_new_protected:Npn \__unravel_scan_keyword_false:w
#1 \q_recursion_stop
{
\__unravel_back_input:
@@ -1806,7 +1931,7 @@
\__unravel_back_input_gtl:N \l__unravel_tmpb_gtl
\prg_return_false:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_to:
+\cs_new_protected:Npn \__unravel_scan_to:
{
\__unravel_scan_keyword:nF { tToO }
{
@@ -1814,7 +1939,7 @@
\__unravel_prev_input:n { to }
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_font_ident:
+\cs_new_protected:Npn \__unravel_scan_font_ident:
{
\__unravel_get_x_non_blank:
\__unravel_set_cmd:
@@ -1840,7 +1965,7 @@
\__unravel_prev_input:n { \__unravel_nullfont: }
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_font_int:
+\cs_new_protected:Npn \__unravel_scan_font_int:
{
\int_case:nnF \l__unravel_head_char_int
{
@@ -1850,7 +1975,7 @@
}
{ \__unravel_scan_font_ident: \__unravel_scan_int: }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_font_dimen:
+\cs_new_protected:Npn \__unravel_scan_font_dimen:
{
\__unravel_scan_int:
\__unravel_scan_font_ident:
@@ -1876,7 +2001,7 @@
\int_compare:nNnT {#1} = { 8 }
{
\__unravel_tex_error:nV { the-cannot } \l__unravel_head_tl
- \__unravel_scan_something_internal_auxii:Vn \c_zero { 0 }
+ \__unravel_scan_something_internal_auxii:nn 0 { 0 }
\__unravel_break:w
}
\tl_if_empty:nF {#2}
@@ -1902,7 +2027,7 @@
\int_gset:Nn \g__unravel_val_level_int {#2}
}
\cs_generate_variant:Nn \__unravel_scan_something_internal_auxii:nn { V }
-\cs_new_nopar:Npn \__unravel_thing_case:
+\cs_new:Npn \__unravel_thing_case:
{
\int_case:nnF \l__unravel_head_cmd_int
{
@@ -1933,9 +2058,9 @@
}
{ 8 }
}
-\cs_new_nopar:Npn \__unravel_thing_set_aux:
+\cs_new:Npn \__unravel_thing_set_aux:
{ \int_compare:nNnTF \l__unravel_head_char_int = { 1 } { 1 } { 0 } }
-\cs_new_nopar:Npn \__unravel_thing_last_item:
+\cs_new:Npn \__unravel_thing_last_item:
{
\int_compare:nNnTF \l__unravel_head_char_int < { 26 }
{
@@ -1978,15 +2103,15 @@
{ }
}
}
-\cs_new_nopar:Npn \__unravel_thing_register:
+\cs_new:Npn \__unravel_thing_register:
{
\int_eval:n { \l__unravel_head_char_int / 1 000 000 - 1 }
- \int_compare:nNnT { \tl_tail:V \l__unravel_head_char_int } = \c_zero
+ \int_compare:nNnT { \tl_tail:V \l__unravel_head_char_int } = 0
{ \__unravel_scan_int: }
}
\cs_new_protected:Npn \__unravel_scan_toks_register:
{
- \int_compare:nNnT \l__unravel_head_char_int = \c_zero
+ \int_compare:nNnT \l__unravel_head_char_int = 0
{ \__unravel_scan_int: }
}
\cs_new_protected:Npn \__unravel_thing_use_get:nnNN #1#2#3#4
@@ -2003,7 +2128,7 @@
{ 1 } \dim_eval:n
{ 2 } \skip_eval:n
}
- { \int_compare:nNnT {#1} = { 3 } \etex_mutoglue:D #3 }
+ { \int_compare:nNnT {#1} = { 3 } \tex_mutoglue:D #3 }
}
}
{
@@ -2014,7 +2139,7 @@
}
{
\__unravel_tex_error:nV { incompatible-units } #3
- \tl_set:Nx #4 { \muskip_eval:n { \etex_gluetomu:D #3 } }
+ \tl_set:Nx #4 { \muskip_eval:n { \tex_gluetomu:D #3 } }
}
}
}
@@ -2087,7 +2212,7 @@
#1
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_signs:
+\cs_new_protected:Npn \__unravel_scan_signs:
{
\__unravel_get_x_non_blank:
\tl_if_eq:NNTF \l__unravel_head_tl \c__unravel_plus_tl
@@ -2103,7 +2228,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_int:
+\cs_new_protected:Npn \__unravel_scan_int:
{
\__unravel_scan_signs:
\__unravel_set_cmd:
@@ -2111,7 +2236,7 @@
{ \__unravel_scan_something_internal:n { 0 } }
{ \__unravel_scan_int_char: }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_int_char:
+\cs_new_protected:Npn \__unravel_scan_int_char:
{
\tl_case:NnF \l__unravel_head_tl
{
@@ -2131,7 +2256,7 @@
}
{ \__unravel_scan_int_explicit:Nn \c_false_bool { } }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_int_lq:
+\cs_new_protected:Npn \__unravel_scan_int_lq:
{
\__unravel_get_next:
\__unravel_gtl_if_head_is_definable:NF \l__unravel_head_gtl
@@ -2148,7 +2273,7 @@
}
\cs_new_protected:Npn \__unravel_scan_int_explicit:Nn #1#2
{
- \if_int_compare:w \c_one
+ \if_int_compare:w 1
< #2 1 \exp_after:wN \exp_not:N \l__unravel_head_tl \exp_stop_f:
\exp_after:wN \use_i:nn
\else:
@@ -2169,7 +2294,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_normal_dimen:
+\cs_new_protected:Npn \__unravel_scan_normal_dimen:
{ \__unravel_scan_dimen:nN { 2 } \c_false_bool }
\cs_new_protected:Npn \__unravel_scan_dimen:nN #1#2
{
@@ -2198,7 +2323,7 @@
\__unravel_scan_decimal_loop:
}
{
- \tl_if_in:nVTF { 0123456789 } \l__unravel_head_tl
+ \__unravel_tl_if_in:ooTF { 0123456789 } \l__unravel_head_tl
{
\__unravel_back_input:
\__unravel_scan_int:
@@ -2266,14 +2391,14 @@
\__unravel_prev_input:n { pt }
\__unravel_break_point:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_inf_unit_loop:
+\cs_new_protected:Npn \__unravel_scan_inf_unit_loop:
{ \__unravel_scan_keyword:nT { lL } { \__unravel_scan_inf_unit_loop: } }
-\cs_new_protected_nopar:Npn \__unravel_scan_decimal_loop:
+\cs_new_protected:Npn \__unravel_scan_decimal_loop:
{
\__unravel_get_x_next:
\tl_if_empty:NTF \l__unravel_head_tl
{ \use_ii:nn }
- { \tl_if_in:nVTF { 0123456789 } \l__unravel_head_tl }
+ { \__unravel_tl_if_in:ooTF { 0123456789 } \l__unravel_head_tl }
{
\__unravel_prev_input:V \l__unravel_head_tl
\__unravel_scan_decimal_loop:
@@ -2284,9 +2409,9 @@
\__unravel_prev_input_silent:n { ~ }
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_normal_glue:
+\cs_new_protected:Npn \__unravel_scan_normal_glue:
{ \__unravel_scan_glue:n { 2 } }
-\cs_new_protected_nopar:Npn \__unravel_scan_mu_glue:
+\cs_new_protected:Npn \__unravel_scan_mu_glue:
{ \__unravel_scan_glue:n { 3 } }
\cs_new_protected:Npn \__unravel_scan_glue:n #1
{
@@ -2316,7 +2441,7 @@
\__unravel_prev_input_join_get:nN {#1} \l__unravel_tmpa_tl
\__unravel_prev_input_silent:V \l__unravel_tmpa_tl
}
-\cs_new_protected_nopar:Npn \__unravel_scan_file_name:
+\cs_new_protected:Npn \__unravel_scan_file_name:
{
\bool_gset_true:N \g__unravel_name_in_progress_bool
\__unravel_get_x_non_blank:
@@ -2324,7 +2449,7 @@
\bool_gset_false:N \g__unravel_name_in_progress_bool
\__unravel_prev_input_silent:n { ~ }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_file_name_loop:
+\cs_new_protected:Npn \__unravel_scan_file_name_loop:
{
\__unravel_gtl_if_head_is_definable:NTF \l__unravel_head_gtl
{ \__unravel_back_input: }
@@ -2339,7 +2464,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_r_token:
+\cs_new_protected:Npn \__unravel_scan_r_token:
{
\bool_do_while:nn
{ \tl_if_eq_p:NN \l__unravel_head_tl \c_space_tl }
@@ -2361,6 +2486,14 @@
\__unravel_prev_input_silent:x
{ { \exp_after:wN \tl_to_str:n \l__unravel_tmpa_tl } }
}
+\cs_new_protected:Npn \__unravel_scan_pdf_ext_toks:
+ {
+ \__unravel_prev_input_gpush:
+ \__unravel_scan_toks:NN \c_false_bool \c_true_bool
+ \__unravel_prev_input_gpop:N \l__unravel_tmpa_tl
+ \__unravel_prev_input_silent:x
+ { { \exp_not:N \exp_not:n \exp_not:V \l__unravel_tmpa_tl } }
+ }
\cs_new_protected:Npn \__unravel_scan_toks:NN #1#2
{
\bool_if:NT #1 { \__unravel_scan_param: }
@@ -2369,14 +2502,14 @@
{ \__unravel_scan_group_x:N #1 }
{ \__unravel_scan_group_n:N #1 }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_param:
+\cs_new_protected:Npn \__unravel_scan_param:
{
\tl_clear:N \l__unravel_tmpa_tl
\__unravel_scan_param_aux:
\tl_put_right:NV \l__unravel_defining_tl \l__unravel_tmpa_tl
\__unravel_prev_input_silent:V \l__unravel_tmpa_tl
}
-\cs_new_protected_nopar:Npn \__unravel_scan_param_aux:
+\cs_new_protected:Npn \__unravel_scan_param_aux:
{
\__unravel_get_next:
\tl_concat:NNN \l__unravel_tmpa_tl
@@ -2386,6 +2519,7 @@
}
\cs_new_protected:Npn \__unravel_scan_group_n:N #1
{
+ \gtl_set_eq:NN \l__unravel_head_gtl \c_group_begin_gtl
\__unravel_back_input:
\__unravel_input_gpop_item:NF \l__unravel_head_tl
{
@@ -2418,7 +2552,7 @@
}
\cs_new_protected:Npn \__unravel_scan_group_xdef:n #1
{
- \__unravel_get_token_x:N \c_true_bool
+ \__unravel_get_token_xdef:
\tl_if_empty:NTF \l__unravel_head_tl
{
\gtl_if_head_is_group_begin:NTF \l__unravel_head_gtl
@@ -2430,7 +2564,7 @@
{
\__unravel_prev_input_silent:V \c_right_brace_str
\tl_put_right:Nn \l__unravel_defining_tl { \if_false: { \fi: } }
- \int_compare:nNnF {#1} = \c_one
+ \int_compare:nNnF {#1} = 1
{ \__unravel_scan_group_xdef:f { \int_eval:n { #1 - 1 } } }
}
}
@@ -2444,46 +2578,21 @@
\cs_generate_variant:Nn \__unravel_scan_group_xdef:n { f }
\cs_new_protected:Npn \__unravel_scan_group_x:n #1
{
- \__unravel_get_token_x:N \c_false_bool
+ \__unravel_get_token_x:
\__unravel_prev_input_gtl:N \l__unravel_head_gtl
\tl_if_empty:NTF \l__unravel_head_tl
{
\gtl_if_head_is_group_begin:NTF \l__unravel_head_gtl
{ \__unravel_scan_group_x:f { \int_eval:n { #1 + 1 } } }
{
- \int_compare:nNnF {#1} = \c_one
+ \int_compare:nNnF {#1} = 1
{ \__unravel_scan_group_x:f { \int_eval:n { #1 - 1 } } }
}
}
{ \__unravel_scan_group_x:n {#1} }
}
\cs_generate_variant:Nn \__unravel_scan_group_x:n { f }
-\cs_new_protected:Npn \__unravel_get_token_x:N #1
- {
- \__unravel_get_next:
- \__unravel_token_if_protected:NF \l__unravel_head_token
- {
- \__unravel_set_cmd:
- \int_compare:nNnTF
- \l__unravel_head_cmd_int = { \__unravel_tex_use:n { the } }
- {
- \__unravel_get_the:
- \bool_if:NTF #1
- {
- \tl_put_right:NV \l__unravel_defining_tl \l__unravel_head_tl
- \__unravel_prev_input:V \l__unravel_head_tl
- }
- {
- \__unravel_exp_args:NNx \gtl_set:Nn \l__unravel_tmpb_gtl { \l__unravel_head_tl }
- \__unravel_prev_input_gtl:N \l__unravel_tmpb_gtl
- \__unravel_print_action:
- }
- }
- { \__unravel_expand: }
- \__unravel_get_token_x:N #1
- }
- }
-\cs_new_protected_nopar:Npn \__unravel_scan_alt_rule:
+\cs_new_protected:Npn \__unravel_scan_alt_rule:
{
\__unravel_scan_keyword:nTF { wWiIdDtThH }
{
@@ -2505,7 +2614,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_spec:
+\cs_new_protected:Npn \__unravel_scan_spec:
{
\__unravel_scan_keyword:nTF { tToO } { \__unravel_scan_normal_dimen: }
{
@@ -2535,7 +2644,7 @@
{ \__unravel_do_box_error: }
}
}
-\cs_new_protected_nopar:Npn \__unravel_do_box_error:
+\cs_new_protected:Npn \__unravel_do_box_error:
{
\__unravel_back_input:
\__unravel_error:nnnnn { missing-box } { } { } { } { }
@@ -2572,7 +2681,7 @@
\__unravel_print_action:x { \tl_to_str:N \l__unravel_head_tl }
}
}
-\cs_new_protected_nopar:Npn \__unravel_do_leaders_fetch_skip:
+\cs_new_protected:Npn \__unravel_do_leaders_fetch_skip:
{
\__unravel_get_x_non_relax:
\__unravel_set_cmd:
@@ -2611,7 +2720,7 @@
\cs_new_protected:Npn \__unravel_box_hook:N #1
{
\tl_set:NV \l__unravel_tmpa_tl #1
- \str_if_eq_x:nnF
+ \str_if_eq:eeF
{ \tl_head:N \l__unravel_tmpa_tl } { \exp_not:N \__unravel_box_hook:w }
{
\__unravel_exp_args:Nx #1
@@ -2634,7 +2743,7 @@
}
\cs_new_eq:NN \__unravel_box_hook:w \prg_do_nothing:
\cs_new_eq:NN \__unravel_box_hook_end: \prg_do_nothing:
-\cs_new_protected_nopar:Npn \__unravel_do_leaders_rule:
+\cs_new_protected:Npn \__unravel_do_leaders_rule:
{
\__unravel_prev_input:V \l__unravel_head_tl
\__unravel_scan_alt_rule:
@@ -2703,18 +2812,18 @@
\token_to_str:N \everypar = { \tl_to_str:N \l__unravel_tmpa_tl }
}
}
-\cs_new_protected_nopar:Npn \__unravel_end_graf:
+\cs_new_protected:Npn \__unravel_end_graf:
{ \mode_if_horizontal:T { \__unravel_normal_paragraph: } }
-\cs_new_protected_nopar:Npn \__unravel_normal_paragraph:
+\cs_new_protected:Npn \__unravel_normal_paragraph:
{
\tex_par:D
\gtl_gput_right:Nn \g__unravel_output_gtl { \par }
\__unravel_print_action:x { Paragraph~end. }
}
-\cs_new_protected_nopar:Npn \__unravel_build_page:
+\cs_new_protected:Npn \__unravel_build_page:
{
}
-\cs_new_protected_nopar:Npn \__unravel_handle_right_brace:
+\cs_new_protected:Npn \__unravel_handle_right_brace:
{
\int_compare:nTF { 1 <= \__unravel_currentgrouptype: <= 13 }
{
@@ -2743,19 +2852,19 @@
\__unravel_print_action:
}
}
-\cs_new_protected_nopar:Npn \__unravel_end_simple_group:
+\cs_new_protected:Npn \__unravel_end_simple_group:
{
\l__unravel_head_token
\__unravel_print_action:
}
-\cs_new_protected_nopar:Npn \__unravel_end_box_group:
+\cs_new_protected:Npn \__unravel_end_box_group:
{
\seq_pop:NN \l__unravel_leaders_box_seq \l__unravel_tmpa_tl
\exp_args:No \__unravel_end_box_group_aux:n { \l__unravel_tmpa_tl }
}
\cs_new_protected:Npn \__unravel_end_box_group_aux:n #1
{
- \str_if_eq_x:nnTF {#1} { Z }
+ \str_if_eq:eeTF {#1} { Z }
{ \__unravel_end_simple_group: }
{
\__unravel_get_x_non_relax:
@@ -2773,7 +2882,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_off_save:
+\cs_new_protected:Npn \__unravel_off_save:
{
\int_compare:nNnTF \__unravel_currentgrouptype: = { 0 }
{ % bottom-level
@@ -2813,7 +2922,7 @@
{ \__unravel_back_input: \__unravel_new_graf:N \c_true_bool }
{#1}
}
-\cs_new_protected_nopar:Npn \__unravel_head_for_vmode:
+\cs_new_protected:Npn \__unravel_head_for_vmode:
{
\mode_if_inner:TF
{
@@ -2830,19 +2939,19 @@
\__unravel_back_input:
}
}
-\cs_new_protected_nopar:Npn \__unravel_goto_inner_math:
+\cs_new_protected:Npn \__unravel_goto_inner_math:
{
\__unravel_box_hook:N \tex_everymath:D
$ % $
\__unravel_box_hook_end:
}
-\cs_new_protected_nopar:Npn \__unravel_goto_display_math:
+\cs_new_protected:Npn \__unravel_goto_display_math:
{
\__unravel_box_hook:N \tex_everydisplay:D
$ $
\__unravel_box_hook_end:
}
-\cs_new_protected_nopar:Npn \__unravel_after_math:
+\cs_new_protected:Npn \__unravel_after_math:
{
\mode_if_inner:TF
{
@@ -2866,7 +2975,7 @@
}
\__unravel_print_action:
}
-\cs_new_protected_nopar:Npn \__unravel_do_step:
+\cs_new_protected:Npn \__unravel_do_step:
{
\__unravel_set_action_text:
\bool_if:NT \g__unravel_internal_debug_bool
@@ -2876,7 +2985,18 @@
{ \__unravel_error:nxxxx { internal } { unknown-command } { } { } { } }
}
\__unravel_new_tex_cmd:nn { relax } % 0
- { \__unravel_print_action: }
+ {
+ \token_if_eq_meaning:NNT \l__unravel_head_token \__unravel_special_relax:
+ {
+ \exp_after:wN \__unravel_token_if_expandable:NTF \l__unravel_head_tl
+ {
+ \__unravel_set_action_text:x
+ { \iow_char:N \\notexpanded: \g__unravel_action_text_str }
+ }
+ { }
+ }
+ \__unravel_print_action:
+ }
\__unravel_new_tex_cmd:nn { begin-group_char } % 1
{
\gtl_gconcat:NNN \g__unravel_output_gtl
@@ -2926,7 +3046,7 @@
{ \__unravel_mode_math:n { \__unravel_sub_sup: } }
\__unravel_new_tex_cmd:nn { subscript_char } % 8
{ \__unravel_mode_math:n { \__unravel_sub_sup: } }
-\cs_new_protected_nopar:Npn \__unravel_sub_sup:
+\cs_new_protected:Npn \__unravel_sub_sup:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3017,7 +3137,7 @@
{
% ^^A todo: unless its_all_over
\int_gdecr:N \g__unravel_ends_int
- \int_compare:nNnTF \g__unravel_ends_int > \c_zero
+ \int_compare:nNnTF \g__unravel_ends_int > 0
{
\__unravel_back_input:
\__unravel_back_input:n
@@ -3076,7 +3196,7 @@
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
- \int_compare:nNnF \l__unravel_head_char_int = \c_zero
+ \int_compare:nNnF \l__unravel_head_char_int = 0
{ \__unravel_scan_int: }
\__unravel_prev_input_gpush:
\__unravel_scan_toks:NN \c_false_bool \c_true_bool
@@ -3098,7 +3218,13 @@
{ % show
\__unravel_get_next:
\__unravel_prev_input_gpop:N \l__unravel_tmpa_tl
- \gtl_head_do:NN \l__unravel_head_gtl \l__unravel_tmpa_tl
+ \token_if_eq_meaning:NNTF
+ \l__unravel_head_token \__unravel_special_relax:
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN \l__unravel_tmpa_tl
+ \exp_after:wN \exp_not:N \l__unravel_head_tl
+ }
+ { \gtl_head_do:NN \l__unravel_head_gtl \l__unravel_tmpa_tl }
}
{ 2 }
{ % showthe
@@ -3106,13 +3232,13 @@
\__unravel_scan_something_internal:n { 5 }
\__unravel_prev_input_gpop:N \l__unravel_head_tl
\__unravel_exp_args:Nx \use:n
- { \etex_showtokens:D { \tl_tail:N \l__unravel_head_tl } }
+ { \tex_showtokens:D { \tl_tail:N \l__unravel_head_tl } }
}
}
{ % no operand for showlists, showgroups, showifs
- \int_compare:nNnT \l__unravel_head_char_int = \c_one % showbox
+ \int_compare:nNnT \l__unravel_head_char_int = 1 % showbox
{ \__unravel_scan_int: }
- \int_compare:nNnT \l__unravel_head_char_int = \c_five % showtokens
+ \int_compare:nNnT \l__unravel_head_char_int = 5 % showtokens
{ \__unravel_scan_toks:NN \c_false_bool \c_false_bool }
\__unravel_prev_input_gpop:N \l__unravel_head_tl
\tl_use:N \l__unravel_head_tl \scan_stop:
@@ -3124,7 +3250,7 @@
\__unravel_back_input:
\__unravel_do_box:N \c_false_bool
}
-\cs_new_protected_nopar:Npn \__unravel_do_move:
+\cs_new_protected:Npn \__unravel_do_move:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3141,7 +3267,7 @@
\mode_if_vertical:TF
{ \__unravel_forbidden_case: } { \__unravel_do_move: }
}
-\cs_new_protected_nopar:Npn \__unravel_do_unpackage:
+\cs_new_protected:Npn \__unravel_do_unpackage:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3163,7 +3289,7 @@
}
\__unravel_new_tex_cmd:nn { remove_item } % 25
{ \l__unravel_head_token \__unravel_print_action: }
-\cs_new_protected_nopar:Npn \__unravel_do_append_glue:
+\cs_new_protected:Npn \__unravel_do_append_glue:
{
\int_compare:nNnTF \l__unravel_head_char_int < { 4 }
{ \tl_use:N \l__unravel_head_tl \__unravel_print_action: }
@@ -3183,7 +3309,7 @@
{ \__unravel_mode_vertical:n { \__unravel_do_append_glue: } }
\__unravel_new_tex_cmd:nn { mskip } % 28
{ \__unravel_mode_math:n { \__unravel_do_append_glue: } }
-\cs_new_protected_nopar:Npn \__unravel_do_append_kern:
+\cs_new_protected:Npn \__unravel_do_append_kern:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3214,7 +3340,7 @@
{ \__unravel_mode_non_vertical:n { \__unravel_do_rule: } }
\__unravel_new_tex_cmd:nn { hrule } % 36
{ \__unravel_mode_vertical:n { \__unravel_do_rule: } }
-\cs_new_protected_nopar:Npn \__unravel_do_rule:
+\cs_new_protected:Npn \__unravel_do_rule:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3256,7 +3382,7 @@
{
\tl_set_eq:NN \l__unravel_tmpa_tl \l__unravel_head_tl
\__unravel_get_next:
- \int_compare:nNnTF \__unravel_currentgrouptype: = \c_zero
+ \int_compare:nNnTF \__unravel_currentgrouptype: = 0
{
\__unravel_print_action:x
{
@@ -3306,7 +3432,7 @@
\mode_if_vertical:TF { \__unravel_forbidden_case: }
{ \l__unravel_head_token \__unravel_print_action: }
}
-\cs_new_protected_nopar:Npn \__unravel_do_accent:
+\cs_new_protected:Npn \__unravel_do_accent:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3338,7 +3464,7 @@
\__unravel_print_action:x { \tl_to_str:N \l__unravel_head_tl }
\__unravel_break_point:
}
-\cs_new_protected_nopar:Npn \__unravel_do_math_accent:
+\cs_new_protected:Npn \__unravel_do_math_accent:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3486,7 +3612,7 @@
}
\__unravel_new_tex_cmd:nn { last_item } % 70
{ \__unravel_forbidden_case: }
-\cs_new_protected_nopar:Npn \__unravel_scan_extension_operands:
+\cs_new_protected:Npn \__unravel_scan_extension_operands:
{
\int_case:nnF \l__unravel_head_char_int
{
@@ -3661,7 +3787,7 @@
}
{ } % no other cases.
}
-\cs_new_protected_nopar:Npn \__unravel_scan_pdfcolorstack_operands:
+\cs_new_protected:Npn \__unravel_scan_pdfcolorstack_operands:
{
\__unravel_scan_int:
\__unravel_scan_keyword:nF { sSeEtT }
@@ -3679,13 +3805,13 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_rule_attr:
+\cs_new_protected:Npn \__unravel_scan_rule_attr:
{
\__unravel_scan_alt_rule:
\__unravel_scan_keyword:nT { aAtTtTrR }
{ \__unravel_scan_pdf_ext_toks: }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_action:
+\cs_new_protected:Npn \__unravel_scan_action:
{
\__unravel_scan_keyword:nTF { uUsSeErR }
{ \__unravel_scan_pdf_ext_toks: }
@@ -3719,7 +3845,7 @@
{ \__unravel_skip_optional_space: }
}
}
-\cs_new_protected_nopar:Npn \__unravel_scan_image:
+\cs_new_protected:Npn \__unravel_scan_image:
{
\__unravel_scan_rule_attr:
\__unravel_scan_keyword:nTF { nNaAmMeEdD }
@@ -3732,7 +3858,7 @@
{ \__unravel_scan_int: }
\__unravel_scan_pdf_ext_toks:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_immediate_operands:
+\cs_new_protected:Npn \__unravel_scan_immediate_operands:
{
\__unravel_get_x_next:
\__unravel_set_cmd:
@@ -3754,12 +3880,12 @@
}
{ \__unravel_scan_immediate_operands_bad: }
}
-\cs_new_protected_nopar:Npn \__unravel_scan_immediate_operands_aux:
+\cs_new_protected:Npn \__unravel_scan_immediate_operands_aux:
{
\__unravel_prev_input:V \l__unravel_head_tl
\__unravel_scan_extension_operands:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_immediate_operands_bad:
+\cs_new_protected:Npn \__unravel_scan_immediate_operands_bad:
{
\__unravel_back_input:
\__unravel_prev_input_gpop:N \l__unravel_head_tl
@@ -3767,7 +3893,7 @@
\__unravel_prev_input_gpush:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_pdfdest_operands:
+\cs_new_protected:Npn \__unravel_scan_pdfdest_operands:
{
\__unravel_scan_keyword:nTF { nNuUmM }
{ \__unravel_scan_int: }
@@ -3815,7 +3941,7 @@
}
\__unravel_skip_optional_space:
}
-\cs_set_protected_nopar:Npn \__unravel_tmp:w
+\cs_set_protected:Npn \__unravel_tmp:w
{
\__unravel_prev_input_gpush:
\__unravel_prefixed_command:
@@ -3825,7 +3951,7 @@
{ 1 }
{ \__unravel_tex_use:n { max_command } }
{ \cs_new_eq:cN { __unravel_cmd_#1: } \__unravel_tmp:w }
-\cs_new_protected_nopar:Npn \__unravel_prefixed_command:
+\cs_new_protected:Npn \__unravel_prefixed_command:
{
\int_while_do:nNnn
\l__unravel_head_cmd_int = { \__unravel_tex_use:n { prefix } }
@@ -3855,16 +3981,16 @@
}
\__unravel_after_assignment:
}
-\cs_new_protected_nopar:Npn \__unravel_after_assignment:
+\cs_new_protected:Npn \__unravel_after_assignment:
{
\__unravel_back_input_gtl:N \g__unravel_after_assignment_gtl
\gtl_gclear:N \g__unravel_after_assignment_gtl
}
-\cs_new_protected_nopar:Npn \__unravel_omit_after_assignment:w
+\cs_new_protected:Npn \__unravel_omit_after_assignment:w
#1 \__unravel_after_assignment: { }
\cs_new_protected:Npn \__unravel_prefixed_new:nn #1#2
{
- \cs_new_protected_nopar:cpn
+ \cs_new_protected:cpn
{ __unravel_prefixed_ \__unravel_tex_use:n {#1} : } {#2}
}
\cs_new_protected:Npn \__unravel_assign_token:n #1
@@ -3874,7 +4000,7 @@
\tl_use:N \l__unravel_head_tl \scan_stop:
\__unravel_print_assigned_token:
}
-\cs_new_protected_nopar:Npn \__unravel_assign_register:
+\cs_new_protected:Npn \__unravel_assign_register:
{
\__unravel_prev_input_gpop:N \l__unravel_head_tl
\tl_use:N \l__unravel_head_tl \scan_stop:
@@ -3897,7 +4023,7 @@
}
\__unravel_prefixed_new:nn { toks_register } % 71
{
- \int_compare:nNnT \l__unravel_head_char_int = \c_zero
+ \int_compare:nNnT \l__unravel_head_char_int = 0
{ % \toks
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_print_action:
@@ -3908,7 +4034,7 @@
}
\__unravel_prefixed_new:nn { assign_toks } % 72
{ \__unravel_assign_toks: }
-\cs_new_protected_nopar:Npn \__unravel_assign_toks:
+\cs_new_protected:Npn \__unravel_assign_toks:
{
\__unravel_prev_input_silent:V \l__unravel_head_tl
\__unravel_print_action:
@@ -3920,7 +4046,7 @@
\l__unravel_head_cmd_int = { \__unravel_tex_use:n { toks_register } }
{
\__unravel_prev_input:V \l__unravel_head_tl
- \int_compare:nNnT \l__unravel_head_char_int = \c_zero
+ \int_compare:nNnT \l__unravel_head_char_int = 0
{ \__unravel_scan_int: }
}
{
@@ -3955,7 +4081,7 @@
}
\__unravel_prefixed_new:nn { set_aux } % 79
{ % prevdepth = 1, spacefactor = 102
- \int_compare:nNnTF \l__unravel_head_char_int = \c_one
+ \int_compare:nNnTF \l__unravel_head_char_int = 1
{ \__unravel_assign_value:nn { } { \__unravel_scan_normal_dimen: } }
{ \__unravel_assign_value:nn { } { \__unravel_scan_int: } }
}
@@ -3977,7 +4103,7 @@
\prg_replicate:nn
{
\tl_if_head_eq_meaning:VNT
- \l__unravel_defined_tl \tex_parshape:D { \c_two * }
+ \l__unravel_defined_tl \tex_parshape:D { 2 * }
\tl_tail:N \l__unravel_defined_tl
}
{ \__unravel_scan_int: }
@@ -4089,7 +4215,7 @@
}
\prg_new_conditional:Npnn \__unravel_read_to_cs_safe:n #1 { TF }
{
- \int_compare:nNnTF { \etex_interactionmode:D } > { 1 }
+ \int_compare:nNnTF { \tex_interactionmode:D } > { 1 }
{ \prg_return_true: }
{
\int_compare:nNnTF {#1} < { 0 }
@@ -4114,7 +4240,7 @@
\tl_set:NV \l__unravel_defining_tl \l__unravel_tmpa_tl
\tl_put_right:NV \l__unravel_defining_tl \l__unravel_head_tl
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \int_compare:nNnTF \l__unravel_head_char_int < \c_two
+ \int_compare:nNnTF \l__unravel_head_char_int < 2
{ % def/gdef
\__unravel_scan_r_token:
\tl_put_right:NV \l__unravel_defining_tl \l__unravel_defined_tl
@@ -4154,7 +4280,7 @@
\__unravel_prev_input_gpop:N \l__unravel_tmpa_tl
\tl_put_left:NV \l__unravel_head_tl \l__unravel_tmpa_tl
\tl_use:N \l__unravel_head_tl \scan_stop:
- \__unravel_print_action:x { \tl_to_str:N \l__unravel_head_tl }
+ \__unravel_print_assignment:x { \tl_to_str:N \l__unravel_head_tl }
}
\__unravel_prefixed_new:nn { letterspace_font } % 101
{
@@ -4182,13 +4308,13 @@
\__unravel_assign_token:n { }
}
\__unravel_prefixed_new:nn { register } % 89
- { \__unravel_do_register:N \c_zero }
+ { \__unravel_do_register:N 0 }
\__unravel_prefixed_new:nn { advance } % 90
- { \__unravel_do_operation:N \c_one }
+ { \__unravel_do_operation:N 1 }
\__unravel_prefixed_new:nn { multiply } % 91
- { \__unravel_do_operation:N \c_two }
+ { \__unravel_do_operation:N 2 }
\__unravel_prefixed_new:nn { divide } % 92
- { \__unravel_do_operation:N \c_three }
+ { \__unravel_do_operation:N 3 }
\cs_new_protected:Npn \__unravel_do_operation:N #1
{
\__unravel_prev_input_silent:V \l__unravel_head_tl
@@ -4220,7 +4346,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_do_operation_fail:w
+\cs_new_protected:Npn \__unravel_do_operation_fail:w
{
\__unravel_error:nnnnn { after-advance } { } { } { } { }
\__unravel_prev_input_gpop:N \l__unravel_tmpa_tl
@@ -4233,17 +4359,17 @@
}
\cs_new_protected:Npn \__unravel_do_register_aux:Nn #1#2
{
- \int_compare:nNnTF { \tl_tail:n {#2} } = \c_zero
+ \int_compare:nNnTF { \tl_tail:n {#2} } = 0
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_assignment:
\__unravel_scan_int:
\__unravel_prev_input_gpop:N \l__unravel_head_tl
\__unravel_prev_input_silent:V \l__unravel_head_tl
}
{
\__unravel_prev_input_silent:V \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_assignment:
}
\tl_set_eq:NN \l__unravel_defined_tl \l__unravel_head_tl
\exp_args:NNf \__unravel_do_register_set:Nn #1
@@ -4251,7 +4377,7 @@
}
\cs_new_protected:Npn \__unravel_do_register_set:Nn #1#2
{
- \int_compare:nNnTF {#1} = \c_zero
+ \int_compare:nNnTF {#1} = 0
{ % truly register command
\__unravel_scan_optional_equals:
}
@@ -4259,7 +4385,7 @@
\__unravel_scan_keyword:nF { bByY }
{ \__unravel_prev_input_silent:n { by } }
}
- \int_compare:nNnTF {#1} < \c_two
+ \int_compare:nNnTF {#1} < 2
{
\int_case:nnF {#2}
{
@@ -4273,7 +4399,7 @@
{ \__unravel_scan_int: }
\__unravel_assign_register:
}
-\cs_new_protected_nopar:Npn \__unravel_do_assignments:
+\cs_new_protected:Npn \__unravel_do_assignments:
{
\__unravel_get_x_non_relax:
\__unravel_set_cmd:
@@ -4289,32 +4415,32 @@
}
}
\__unravel_new_tex_expandable:nn { undefined_cs } % 103
- { \tl_use:N \l__unravel_head_tl \__unravel_print_action: }
+ { \tl_use:N \l__unravel_head_tl \__unravel_print_expansion: }
\__unravel_new_tex_expandable:nn { expand_after } % 104
{
\token_if_eq_meaning:NNTF \l__unravel_head_token \tex_expandafter:D
{ \__unravel_expandafter: } { \__unravel_unless: }
}
-\cs_new_protected_nopar:Npn \__unravel_expandafter:
+\cs_new_protected:Npn \__unravel_expandafter:
{
\gtl_set_eq:NN \l__unravel_tmpb_gtl \l__unravel_head_gtl
\__unravel_get_next:
\gtl_concat:NNN \l__unravel_head_gtl
\l__unravel_tmpb_gtl \l__unravel_head_gtl
\__unravel_prev_input_gpush_gtl:N \l__unravel_head_gtl
- \__unravel_print_action:x { \gtl_to_str:N \l__unravel_head_gtl }
+ \__unravel_print_expansion:x { \gtl_to_str:N \l__unravel_head_gtl }
\__unravel_get_next:
\__unravel_token_if_expandable:NTF \l__unravel_head_token
- { \__unravel_expand: }
+ { \__unravel_expand_do:N \prg_do_nothing: }
{ \__unravel_back_input: }
\__unravel_prev_input_gpop:N \l__unravel_head_gtl
\__unravel_set_action_text:x
{ back_input: ~ \gtl_to_str:N \l__unravel_head_gtl }
\gtl_pop_left:N \l__unravel_head_gtl
\__unravel_back_input:
- \__unravel_print_action:
+ \__unravel_print_expansion:
}
-\cs_new_protected_nopar:Npn \__unravel_unless:
+\cs_new_protected:Npn \__unravel_unless:
{
\__unravel_get_token:
\int_compare:nNnTF
@@ -4330,7 +4456,7 @@
}
{ \__unravel_unless_bad: }
}
-\cs_new_protected_nopar:Npn \__unravel_unless_bad:
+\cs_new_protected:Npn \__unravel_unless_bad:
{
\__unravel_error:nnnnn { bad-unless } { } { } { } { }
\__unravel_back_input:
@@ -4338,25 +4464,44 @@
\__unravel_new_tex_expandable:nn { no_expand } % 105
{
\token_if_eq_meaning:NNTF \l__unravel_head_token \tex_noexpand:D
- { \__unravel_noexpand: }
+ { \__unravel_noexpand:N }
{ \__unravel_pdfprimitive: }
}
-\cs_new_protected_nopar:Npn \__unravel_noexpand:
+\cs_new_protected:Npn \__unravel_noexpand:N #1
{
\__unravel_get_token:
- \__unravel_back_input:
- \__unravel_token_if_expandable:NT \l__unravel_head_token
+ \cs_if_eq:NNTF #1 \prg_do_nothing:
{
- \cs_gset_protected_nopar:Npx \__unravel_get_next:
+ \tl_if_empty:NTF \l__unravel_head_tl
+ { \__unravel_back_input: }
{
- \cs_gset_protected_nopar:Npn \__unravel_get_next:
- { \exp_not:o { \__unravel_get_next: } }
- \exp_not:o { \__unravel_get_next: }
- \exp_not:n { \cs_set_eq:NN \l__unravel_head_token \tex_relax:D }
+ \exp_after:wN \__unravel_token_if_definable:NTF \l__unravel_head_tl
+ { \__unravel_noexpand_after: }
+ { \__unravel_back_input: }
}
}
+ {
+ \__unravel_back_input:
+ \__unravel_get_next:
+ \__unravel_token_if_expandable:NT \l__unravel_head_token
+ { \cs_set_eq:NN \l__unravel_head_token \__unravel_special_relax: }
+ }
}
-\cs_new_protected_nopar:Npn \__unravel_pdfprimitive:
+\cs_new_protected:Npn \__unravel_noexpand_after:
+ {
+ \group_begin:
+ \__unravel_set_escapechar:n { 92 }
+ \exp_args:NNc
+ \group_end:
+ \__unravel_noexpand_after:N
+ { notexpanded: \exp_after:wN \token_to_str:N \l__unravel_head_tl }
+ }
+\cs_new_protected:Npn \__unravel_noexpand_after:N #1
+ {
+ \cs_gset_eq:NN #1 \__unravel_special_relax:
+ \__unravel_back_input:n {#1}
+ }
+\cs_new_protected:Npn \__unravel_pdfprimitive:
{ \__unravel_not_implemented:n { pdfprimitive } }
\__unravel_new_tex_expandable:nn { input } % 106
{
@@ -4370,23 +4515,23 @@
{ \__unravel_insert_relax: } { \__unravel_input: }
}
}
-\cs_new_protected_nopar:Npn \__unravel_endinput:
+\cs_new_protected:Npn \__unravel_endinput:
{
\group_begin:
\msg_warning:nn { unravel } { endinput-ignored }
\group_end:
- \__unravel_print_action:
+ \__unravel_print_expansion:
}
-\cs_new_protected_nopar:Npn \__unravel_scantokens:
+\cs_new_protected:Npn \__unravel_scantokens:
{
\__unravel_prev_input_gpush:
\__unravel_scan_toks:NN \c_false_bool \c_false_bool
\__unravel_prev_input_gpop:N \l__unravel_tmpa_tl
\tl_set_rescan:Nno \l__unravel_head_tl { } \l__unravel_tmpa_tl
\__unravel_back_input:V \l__unravel_head_tl
- \__unravel_print_action:x { \tl_to_str:N \l__unravel_tmpa_tl }
+ \__unravel_print_expansion:x { \tl_to_str:N \l__unravel_tmpa_tl }
}
-\cs_new_protected_nopar:Npn \__unravel_input:
+\cs_new_protected:Npn \__unravel_input:
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
\__unravel_scan_file_name:
@@ -4394,18 +4539,18 @@
\tl_set:Nx \l__unravel_tmpa_tl { \tl_tail:N \l__unravel_head_tl }
\__unravel_file_get:nN \l__unravel_tmpa_tl \l__unravel_tmpa_tl
\__unravel_back_input:V \l__unravel_tmpa_tl
- \__unravel_print_action:x { \tl_to_str:N \l__unravel_head_tl }
+ \__unravel_print_expansion:x { \tl_to_str:N \l__unravel_head_tl }
}
\__unravel_new_tex_expandable:nn { cs_name } % 109
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_expansion:
\__unravel_csname_loop:
\__unravel_prev_input_silent:V \l__unravel_head_tl
\__unravel_prev_input_gpop:N \l__unravel_head_tl
\__unravel_back_input_tl_o:
}
-\cs_new_protected_nopar:Npn \__unravel_csname_loop:
+\cs_new_protected:Npn \__unravel_csname_loop:
{
\__unravel_get_x_next:
\__unravel_gtl_if_head_is_definable:NTF \l__unravel_head_gtl
@@ -4426,13 +4571,13 @@
\__unravel_new_tex_expandable:nn { convert } % 110
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_expansion:
\int_case:nn \l__unravel_head_char_int
{
0 \__unravel_scan_int:
1 \__unravel_scan_int:
- 2 { \__unravel_get_next: \__unravel_prev_input:V \l__unravel_head_tl }
- 3 { \__unravel_get_next: \__unravel_prev_input:V \l__unravel_head_tl }
+ 2 \__unravel_convert_string:
+ 3 \__unravel_convert_meaning:
4 \__unravel_scan_font_ident:
8 \__unravel_scan_font_ident:
9 \__unravel_scan_font_ident:
@@ -4460,18 +4605,41 @@
{ 28 } \__unravel_scan_int:
{ 30 } \__unravel_scan_int:
{ 31 } \__unravel_scan_pdfximagebbox:
+ { 33 } \__unravel_scan_directlua:
+ { 34 } \__unravel_scan_pdf_ext_toks:
+ { 35 } \__unravel_scan_pdf_ext_toks:
+ { 40 }
+ {
+ \__unravel_scan_int:
+ \__unravel_prev_input_silent:n { ~ }
+ \__unravel_scan_int:
+ }
}
\__unravel_prev_input_gpop:N \l__unravel_head_tl
\__unravel_back_input_tl_o:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_pdfstrcmp:
+\cs_new_protected:Npn \__unravel_convert_string:
+ {
+ \__unravel_get_next:
+ \tl_if_empty:NTF \l__unravel_head_tl
+ { \__unravel_prev_input:x { \gtl_to_str:N \l__unravel_head_gtl } }
+ { \__unravel_prev_input:V \l__unravel_head_tl }
+ }
+\cs_new_protected:Npn \__unravel_convert_meaning:
+ {
+ \__unravel_get_next:
+ \tl_if_empty:NTF \l__unravel_head_tl
+ { \__unravel_prev_input:n { \l__unravel_head_token } }
+ { \__unravel_prev_input:V \l__unravel_head_tl }
+ }
+\cs_new_protected:Npn \__unravel_scan_pdfstrcmp:
{
\__unravel_scan_toks_to_str:
\__unravel_scan_toks_to_str:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_pdfximagebbox:
+\cs_new_protected:Npn \__unravel_scan_pdfximagebbox:
{ \__unravel_scan_int: \__unravel_scan_int: }
-\cs_new_protected_nopar:Npn \__unravel_scan_pdfcolorstackinit:
+\cs_new_protected:Npn \__unravel_scan_pdfcolorstackinit:
{
\__unravel_scan_keyword:nTF { pPaAgGeE }
{ \bool_set_true:N \l__unravel_tmpa_bool }
@@ -4480,13 +4648,13 @@
{ \__unravel_scan_keyword:n { pPaAgGeE } }
\__unravel_scan_toks_to_str:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_pdffiledump:
+\cs_new_protected:Npn \__unravel_scan_pdffiledump:
{
\__unravel_scan_keyword:nT { oOfFfFsSeEtT } \__unravel_scan_int:
\__unravel_scan_keyword:nT { lLeEnNgGtThH } \__unravel_scan_int:
\__unravel_scan_pdf_ext_toks:
}
-\cs_new_protected_nopar:Npn \__unravel_scan_pdfmatch:
+\cs_new_protected:Npn \__unravel_scan_pdfmatch:
{
\__unravel_scan_keyword:n { iIcCaAsSeE }
\__unravel_scan_keyword:nT { sSuUbBcCoOuUnNtT }
@@ -4494,17 +4662,26 @@
\__unravel_scan_pdf_ext_toks:
\__unravel_scan_pdf_ext_toks:
}
-\__unravel_new_tex_expandable:nn { the } % 111
+\sys_if_engine_luatex:T
{
- \__unravel_get_the:
- \tl_set:Nx \l__unravel_tmpa_tl { \exp_args:NV \exp_not:o \l__unravel_head_tl }
- \__unravel_back_input:V \l__unravel_tmpa_tl
- \__unravel_print_action:
+ \cs_new_protected:Npn \__unravel_scan_directlua:
+ {
+ \__unravel_get_x_non_relax:
+ \token_if_eq_catcode:NNTF \l__unravel_head_token \c_group_begin_token
+ { \__unravel_back_input: }
+ {
+ \__unravel_scan_int:
+ \__unravel_get_x_non_relax:
+ }
+ \__unravel_scan_pdf_ext_toks:
+ }
}
-\cs_new_protected_nopar:Npn \__unravel_get_the:
+\__unravel_new_tex_expandable:nn { the } % 111
+ { \__unravel_get_the:N }
+\cs_new_protected:Npn \__unravel_get_the:N #1
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_expansion:
\int_if_odd:nTF \l__unravel_head_char_int
{ % \unexpanded, \detokenize
\__unravel_scan_toks:NN \c_false_bool \c_false_bool
@@ -4523,6 +4700,24 @@
\tl_set:Nx \l__unravel_head_tl
{ \exp_not:N \exp_not:n { \tl_tail:N \l__unravel_head_tl } }
}
+ \cs_if_eq:NNTF #1 \__unravel_get_token_xdef:
+ {
+ \tl_put_right:NV \l__unravel_defining_tl \l__unravel_head_tl
+ \__unravel_prev_input:V \l__unravel_head_tl
+ }
+ {
+ \cs_if_eq:NNTF #1 \__unravel_get_token_x:
+ {
+ \__unravel_exp_args:NNx \gtl_set:Nn \l__unravel_tmpb_gtl { \l__unravel_head_tl }
+ \__unravel_prev_input_gtl:N \l__unravel_tmpb_gtl
+ }
+ {
+ \tl_set:Nx \l__unravel_tmpa_tl { \exp_args:NV \exp_not:o \l__unravel_head_tl }
+ \__unravel_back_input:V \l__unravel_tmpa_tl
+ }
+ \__unravel_print_expansion:
+ }
+ #1
}
\__unravel_new_tex_expandable:nn { top_bot_mark } % 112
{ \__unravel_back_input_tl_o: }
@@ -4531,33 +4726,33 @@
\__unravel_not_implemented:n { end-template } { } { } { }
\__unravel_back_input_tl_o:
}
-\cs_new_protected_nopar:Npn \__unravel_pass_text:
+\cs_new_protected:Npn \__unravel_pass_text:
{
\__unravel_input_if_empty:TF
{ \__unravel_pass_text_empty: }
{
\__unravel_input_get:N \l__unravel_tmpb_gtl
\if_true:
- \if_case:w \gtl_head_do:NN \l__unravel_tmpb_gtl \c_one
+ \if_case:w \gtl_head_do:NN \l__unravel_tmpb_gtl \c_one_int
\exp_after:wN \__unravel_pass_text_done:w
\fi:
\__unravel_input_gpop:N \l__unravel_tmpb_gtl
\exp_after:wN \__unravel_pass_text:
\else:
\use:c { fi: }
- \int_set_eq:NN \l__unravel_if_nesting_int \c_one
+ \int_set:Nn \l__unravel_if_nesting_int { 1 }
\__unravel_input_gpop:N \l__unravel_tmpb_gtl
\exp_after:wN \__unravel_pass_text_nested:
\fi:
}
}
-\cs_new_protected_nopar:Npn \__unravel_pass_text_done:w
+\cs_new_protected:Npn \__unravel_pass_text_done:w
{
\__unravel_get_next:
\token_if_eq_meaning:NNT \l__unravel_head_token \fi: { \if_true: }
\else:
}
-\cs_new_protected_nopar:Npn \__unravel_pass_text_nested:
+\cs_new_protected:Npn \__unravel_pass_text_nested:
{
\__unravel_input_if_empty:TF
{ \__unravel_pass_text_empty: }
@@ -4574,12 +4769,12 @@
\int_incr:N \l__unravel_if_nesting_int
\fi:
\__unravel_input_gpop:N \l__unravel_unused_gtl
- \int_compare:nNnTF \l__unravel_if_nesting_int = \c_zero
+ \int_compare:nNnTF \l__unravel_if_nesting_int = 0
{ \__unravel_pass_text: }
{ \__unravel_pass_text_nested: }
}
}
-\cs_new_protected_nopar:Npn \__unravel_pass_text_empty:
+\cs_new_protected:Npn \__unravel_pass_text_empty:
{
\__unravel_error:nnnnn { runaway-if } { } { } { } { }
\__unravel_exit:w
@@ -4591,7 +4786,7 @@
\int_gincr:N \g__unravel_if_depth_int
\int_gzero:N \g__unravel_if_limit_int
}
-\cs_new_protected_nopar:Npn \__unravel_cond_pop:
+\cs_new_protected:Npn \__unravel_cond_pop:
{
\int_gset:Nn \g__unravel_if_limit_int
{ \tl_head:N \g__unravel_if_limit_tl }
@@ -4605,7 +4800,7 @@
{ \int_gset:Nn \g__unravel_if_limit_int {#1} }
{
\tl_clear:N \l__unravel_tmpa_tl
- \prg_replicate:nn { \g__unravel_if_depth_int - #2 - \c_one }
+ \prg_replicate:nn { \g__unravel_if_depth_int - #2 - 1 }
{
\tl_put_right:Nx \l__unravel_tmpa_tl
{ { \tl_head:N \g__unravel_if_limit_tl } }
@@ -4631,7 +4826,7 @@
}
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_expansion:
\int_case:nn \l__unravel_head_char_int
{
{ 0 } { \__unravel_test_two_chars: } % if
@@ -4674,13 +4869,17 @@
\cs_new_protected:Npn \__unravel_cond_true:n #1
{
\__unravel_change_if_limit:nn { 3 } {#1} % wait for else/fi
- \__unravel_print_action:x { \g__unravel_action_text_str = true }
+ \__unravel_print_expansion:x { \g__unravel_action_text_str = true }
}
\cs_new_protected:Npn \__unravel_cond_false:n #1
{
\__unravel_cond_false_loop:n {#1}
\__unravel_cond_false_common:
- \__unravel_print_action:x { \g__unravel_action_text_str = false }
+ \__unravel_print_expansion:x
+ {
+ \g__unravel_action_text_str = false ~
+ => ~ skipped ~ to ~ \iow_char:N\\fi
+ }
}
\cs_new_protected:Npn \__unravel_cond_false_loop:n #1
{
@@ -4699,7 +4898,7 @@
\__unravel_cond_false_loop:n {#1}
}
}
-\cs_new_protected_nopar:Npn \__unravel_cond_false_common:
+\cs_new_protected:Npn \__unravel_cond_false_common:
{
\token_if_eq_meaning:NNTF \l__unravel_head_token \fi:
{ \__unravel_cond_pop: }
@@ -4709,7 +4908,7 @@
{
#1
\__unravel_get_x_non_blank:
- \tl_if_in:nVF { < = > } \l__unravel_head_tl
+ \__unravel_tl_if_in:ooTF { < = > } \l__unravel_head_tl { }
{
\__unravel_error:nnnnn { missing-equals } { } { } { } { }
\__unravel_back_input:
@@ -4718,14 +4917,14 @@
\__unravel_prev_input:V \l__unravel_head_tl
#1
}
-\cs_new_protected_nopar:Npn \__unravel_test_two_chars:
+\cs_new_protected:Npn \__unravel_test_two_chars:
{
\__unravel_test_two_chars_aux:
\__unravel_prev_input:V \l__unravel_head_tl
\__unravel_test_two_chars_aux:
\__unravel_prev_input:V \l__unravel_head_tl
}
-\cs_new_protected_nopar:Npn \__unravel_test_two_chars_aux:
+\cs_new_protected:Npn \__unravel_test_two_chars_aux:
{
\__unravel_get_x_next:
\gtl_if_tl:NF \l__unravel_head_gtl
@@ -4741,30 +4940,50 @@
\cs_new_protected:Npn \__unravel_test_ifx:n #1
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_expansion:
\__unravel_get_next:
\gtl_set_eq:NN \l__unravel_tmpb_gtl \l__unravel_head_gtl
+ \cs_set_eq:NN \l__unravel_tmpb_token \l__unravel_head_token
\__unravel_get_next:
\__unravel_prev_input_gpop:N \l__unravel_tmpa_tl
\__unravel_set_action_text:x
{
Compare:~ \tl_to_str:N \l__unravel_tmpa_tl
- \gtl_to_str:N \l__unravel_tmpb_gtl
- \gtl_to_str:N \l__unravel_head_gtl
+ \__unravel_test_ifx_str:NN \l__unravel_tmpb_token \l__unravel_tmpb_gtl
+ \__unravel_test_ifx_str:NN \l__unravel_head_token \l__unravel_head_gtl
}
- \gtl_head_do:NN \l__unravel_tmpb_gtl \__unravel_test_ifx_aux:w
+ \__unravel_test_ifx_aux:NNN \l__unravel_tmpb_token \l__unravel_tmpb_gtl
+ \__unravel_test_ifx_aux:w
\exp_after:wN \__unravel_cond_true:n
\else:
\exp_after:wN \__unravel_cond_false:n
\fi:
{#1}
}
-\cs_new_nopar:Npn \__unravel_test_ifx_aux:w
- { \gtl_head_do:NN \l__unravel_head_gtl \l__unravel_tmpa_tl }
+\cs_new:Npn \__unravel_test_ifx_str:NN #1#2
+ {
+ \token_if_eq_meaning:NNT #1 \__unravel_special_relax:
+ { \iow_char:N \\notexpanded: }
+ \gtl_to_str:N #2
+ }
+\cs_new_protected:Npn \__unravel_test_ifx_aux:NNN #1#2#3
+ {
+ \token_if_eq_meaning:NNTF #1 \__unravel_special_relax:
+ {
+ \gtl_head_do:NN #2 \__unravel_token_if_expandable:NTF
+ { #3 #1 } { \gtl_head_do:NN #2 #3 }
+ }
+ { \gtl_head_do:NN #2 #3 }
+ }
+\cs_new:Npn \__unravel_test_ifx_aux:w
+ {
+ \__unravel_test_ifx_aux:NNN \l__unravel_head_token \l__unravel_head_gtl
+ \l__unravel_tmpa_tl
+ }
\cs_new_protected:Npn \__unravel_test_case:n #1
{
\__unravel_prev_input_gpush:N \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_print_expansion:
\bool_if:NT \g__unravel_internal_debug_bool { \iow_term:n { {\ifcase level~#1} } }
\__unravel_scan_int:
\__unravel_prev_input_get:N \l__unravel_head_tl
@@ -4772,11 +4991,11 @@
% ^^A does text_case_aux use prev_input_seq?
\exp_args:No \__unravel_test_case_aux:nn { \l__unravel_head_tl } {#1}
\__unravel_prev_input_gpop:N \l__unravel_head_tl
- \__unravel_print_action:x { \tl_to_str:N \l__unravel_head_tl }
+ \__unravel_print_expansion:x { \tl_to_str:N \l__unravel_head_tl }
}
\cs_new_protected:Npn \__unravel_test_case_aux:nn #1#2
{
- \int_compare:nNnTF {#1} = \c_zero
+ \int_compare:nNnTF {#1} = 0
{ \__unravel_change_if_limit:nn { 4 } {#2} }
{
\__unravel_pass_text:
@@ -4796,7 +5015,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_test_ifdefined:
+\cs_new_protected:Npn \__unravel_test_ifdefined:
{
\__unravel_input_if_empty:TF
{ \__unravel_pass_text_empty: }
@@ -4815,7 +5034,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_test_ifcsname:
+\cs_new_protected:Npn \__unravel_test_ifcsname:
{
\__unravel_csname_loop:
\__unravel_prev_input:V \l__unravel_head_tl
@@ -4824,9 +5043,9 @@
{
\int_compare:nNnTF \l__unravel_head_char_int > \g__unravel_if_limit_int
{
- \int_compare:nNnTF \g__unravel_if_limit_int = \c_zero
+ \int_compare:nNnTF \g__unravel_if_limit_int = 0
{
- \int_compare:nNnTF \g__unravel_if_depth_int = \c_zero
+ \int_compare:nNnTF \g__unravel_if_depth_int = 0
{ \__unravel_error:nnnnn { extra-fi-or-else } { } { } { } { } }
{ \__unravel_insert_relax: }
}
@@ -4834,7 +5053,7 @@
}
{
\__unravel_set_action_text:
- \int_compare:nNnF \l__unravel_head_char_int = \c_two
+ \int_compare:nNnF \l__unravel_head_char_int = 2
{
\__unravel_fi_or_else_loop:
\__unravel_set_action_text:x
@@ -4843,14 +5062,14 @@
=> ~ skipped ~ to ~ \tl_to_str:N \l__unravel_head_tl
}
}
- % ^^A todo: in this print_action the token itself is missing.
- \__unravel_print_action:
+ % ^^A todo: in the terminal output the token itself is missing.
+ \__unravel_print_expansion:
\__unravel_cond_pop:
}
}
-\cs_new_protected_nopar:Npn \__unravel_fi_or_else_loop:
+\cs_new_protected:Npn \__unravel_fi_or_else_loop:
{
- \int_compare:nNnF \l__unravel_head_char_int = \c_two
+ \int_compare:nNnF \l__unravel_head_char_int = 2
{
\__unravel_pass_text:
\__unravel_set_cmd:
@@ -4876,8 +5095,21 @@
}
\cs_new_protected:Npn \__unravel_print:x
{ \__unravel_exp_args:Nx \__unravel_print:n }
+\cs_new_protected:Npn \__unravel_log:n #1
+ {
+ \tl_set:Nn \l__unravel_print_tl {#1}
+ \__unravel_print_normalize_null:
+ \__unravel_exp_args:Nx \iow_log:n { \l__unravel_print_tl }
+ }
\cs_new_protected:Npn \__unravel_print_message:nn #1 #2
- { \iow_wrap:nnnN { #1 #2 } { #1 } { } \__unravel_print:n }
+ {
+ \int_compare:nNnF \g__unravel_online_int < 0
+ {
+ \int_compare:nNnTF \g__unravel_online_int = 0
+ { \iow_wrap:nnnN { #1 #2 } { #1 } { } \__unravel_log:n }
+ { \iow_wrap:nnnN { #1 #2 } { #1 } { } \__unravel_print:n }
+ }
+ }
\cs_new_protected:Npn \__unravel_set_action_text:x #1
{
\group_begin:
@@ -4885,13 +5117,13 @@
\str_gset:Nx \g__unravel_action_text_str {#1}
\group_end:
}
-\cs_new_protected_nopar:Npn \__unravel_set_action_text:
+\cs_new_protected:Npn \__unravel_set_action_text:
{
\__unravel_set_action_text:x
{
\tl_to_str:N \l__unravel_head_tl
\tl_if_single_token:VT \l__unravel_head_tl
- { = ~ \exp_after:wN \token_to_meaning:N \l__unravel_head_tl }
+ { = ~ \token_to_meaning:N \l__unravel_head_token }
}
}
\cs_new_protected:Npn \__unravel_print_state:
@@ -4899,16 +5131,15 @@
\group_begin:
\__unravel_set_escapechar:n { 92 }
\tl_use:N \g__unravel_before_print_state_tl
- \int_compare:nNnT \g__unravel_noise_int > \c_zero
+ \int_compare:nNnT \g__unravel_online_int > 0
{
\__unravel_print_state_output:
\__unravel_print_state_prev:
\__unravel_print_state_input:
}
\group_end:
- \__unravel_prompt:
}
-\cs_new_protected_nopar:Npn \__unravel_print_state_output:
+\cs_new_protected:Npn \__unravel_print_state_output:
{
\__unravel_exp_args:Nx \__unravel_print_state_output:n
{ \gtl_to_str:N \g__unravel_output_gtl }
@@ -4921,7 +5152,7 @@
{ \__unravel_str_truncate_left:nn {#1} { \g__unravel_max_output_int } }
}
}
-\cs_new_protected_nopar:Npn \__unravel_print_state_prev:
+\cs_new_protected:Npn \__unravel_print_state_prev:
{
\seq_set_map:NNn \l__unravel_tmpa_seq \g__unravel_prev_input_seq
{ \__unravel_to_str:n {##1} }
@@ -4935,7 +5166,7 @@
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_print_state_input:
+\cs_new_protected:Npn \__unravel_print_state_input:
{
\__unravel_exp_args:Nx \__unravel_print_state_input:n
{ \__unravel_input_to_str: }
@@ -4959,49 +5190,65 @@
}
}
\cs_new_protected:Npn \__unravel_print_action:
- {
- \int_gincr:N \g__unravel_step_int
- \__unravel_print:x
- {
- [=====
- \bool_if:NT \g__unravel_number_steps_bool
- { ~ Step ~ \int_to_arabic:n { \g__unravel_step_int } ~ }
- =====]~
- \int_compare:nNnTF
- { \str_count:N \g__unravel_action_text_str }
- > { \g__unravel_max_action_int }
- {
- \str_range:Nnn \g__unravel_action_text_str
- { 1 } { \g__unravel_max_action_int - 3 } ...
- }
- { \g__unravel_action_text_str }
- }
- \__unravel_print_state:
- }
+ { \__unravel_print_action_aux:N \g__unravel_trace_other_bool }
\cs_new_protected:Npn \__unravel_print_action:x #1
{
\__unravel_set_action_text:x {#1}
\__unravel_print_action:
}
-\cs_new_protected:Npn \__unravel_print_gtl_action:N #1
+\cs_new_protected:Npn \__unravel_print_assignment:
+ { \__unravel_print_action_aux:N \g__unravel_trace_assigns_bool }
+\cs_new_protected:Npn \__unravel_print_assignment:x #1
+ {
+ \__unravel_set_action_text:x {#1}
+ \__unravel_print_assignment:
+ }
+\cs_new_protected:Npn \__unravel_print_expansion:
+ { \__unravel_print_action_aux:N \g__unravel_trace_expansion_bool }
+\cs_new_protected:Npn \__unravel_print_expansion:x #1
+ {
+ \__unravel_set_action_text:x {#1}
+ \__unravel_print_expansion:
+ }
+\cs_new_protected:Npn \__unravel_print_action_aux:N #1
{
- \__unravel_print_action:x { \gtl_to_str:N #1 }
+ \int_gdecr:N \g__unravel_nonstop_int
+ \int_gincr:N \g__unravel_step_int
+ \bool_if:NT #1
+ {
+ \__unravel_print:x
+ {
+ [=====
+ \bool_if:NT \g__unravel_number_steps_bool
+ { ~ Step ~ \int_to_arabic:n { \g__unravel_step_int } ~ }
+ =====]~
+ \int_compare:nNnTF
+ { \str_count:N \g__unravel_action_text_str }
+ > { \g__unravel_max_action_int }
+ {
+ \str_range:Nnn \g__unravel_action_text_str
+ { 1 } { \g__unravel_max_action_int - 3 } ...
+ }
+ { \g__unravel_action_text_str }
+ }
+ \__unravel_print_state:
+ \__unravel_prompt:
+ }
}
-\cs_new_eq:NN \__unravel_print_done:x \__unravel_print_action:x
-\cs_new_protected_nopar:Npn \__unravel_print_assigned_token:
+\cs_new_protected:Npn \__unravel_print_assigned_token:
{
\__unravel_after_assignment: % ^^A todo: simplify
- \__unravel_print_action:x
+ \__unravel_print_assignment:x
{
Set~ \exp_after:wN \token_to_str:N \l__unravel_defined_tl
= \exp_after:wN \token_to_meaning:N \l__unravel_defined_tl
}
\__unravel_omit_after_assignment:w
}
-\cs_new_protected_nopar:Npn \__unravel_print_assigned_register:
+\cs_new_protected:Npn \__unravel_print_assigned_register:
{
\__unravel_after_assignment: % ^^A todo: simplify
- \__unravel_exp_args:Nx \__unravel_print_action:x
+ \__unravel_exp_args:Nx \__unravel_print_assignment:x
{
\exp_not:n
{
@@ -5013,7 +5260,7 @@
}
\__unravel_omit_after_assignment:w
}
-\cs_new_protected_nopar:Npn \__unravel_print_welcome:
+\cs_new_protected:Npn \__unravel_print_welcome:
{
\__unravel_print_message:nn { }
{
@@ -5032,25 +5279,25 @@
{ [=====~Start~=====] }
}
\__unravel_print_state:
+ \__unravel_prompt:
}
-\cs_new_protected_nopar:Npn \__unravel_print_outcome:
- { \__unravel_print:n { [=====~End~=====] } }
-\cs_new_protected_nopar:Npn \__unravel_prompt:
+\cs_new_protected:Npn \__unravel_print_outcome:
+ { \__unravel_print_message:nn { } { [=====~End~=====] } }
+\cs_new_protected:Npn \__unravel_prompt:
{
- \int_gdecr:N \g__unravel_nonstop_int
- \int_compare:nNnF \g__unravel_nonstop_int > \c_zero
+ \int_compare:nNnF \g__unravel_nonstop_int > 0
{
\group_begin:
\__unravel_set_escapechar:n { -1 }
- \int_set_eq:NN \tex_endlinechar:D \c_minus_one
+ \int_set:Nn \tex_endlinechar:D { -1 }
\tl_use:N \g__unravel_before_prompt_tl
\__unravel_prompt_aux:
\group_end:
}
}
-\cs_new_protected_nopar:Npn \__unravel_prompt_aux:
+\cs_new_protected:Npn \__unravel_prompt_aux:
{
- \int_compare:nNnT { \etex_interactionmode:D } = { 3 }
+ \int_compare:nNnT { \tex_interactionmode:D } = { 3 }
{
\bool_if:NTF \g__unravel_explicit_prompt_bool
{ \ior_str_get:Nc \c__unravel_prompt_ior }
@@ -5068,7 +5315,7 @@
{ m } { \__unravel_print_meaning: \__unravel_prompt_aux: }
{ q }
{
- \int_gset_eq:NN \g__unravel_noise_int \c_minus_one
+ \int_gset:Nn \g__unravel_online_int { -1 }
\int_gzero:N \g__unravel_nonstop_int
}
{ x }
@@ -5080,7 +5327,7 @@
{ s } { \__unravel_prompt_scan_int:nn {#1}
\__unravel_prompt_silent_steps:n }
{ o } { \__unravel_prompt_scan_int:nn {#1}
- { \int_gset:Nn \g__unravel_noise_int } }
+ { \int_gset:Nn \g__unravel_online_int } }
{ C }
{
\__unravel_exp_args:Nx \use:n
@@ -5114,7 +5361,7 @@
\cs_new_protected:Npn \__unravel_prompt_help:
{
\__unravel_print:n { "m":~meaning~of~first~token }
- \__unravel_print:n { "q":~semi-quiet~(same~as~"o1") }
+ \__unravel_print:n { "q":~semi-quiet~(same~as~"o-1") }
\__unravel_print:n { "x"/"X":~exit~this~instance~of~unravel/TeX }
\__unravel_print:n { "s<num>":~do~<num>~steps~silently }
\__unravel_print:n
@@ -5126,12 +5373,12 @@
}
\cs_new_protected:Npn \__unravel_prompt_silent_steps:n #1
{
- \int_compare:nNnF {#1} < \c_zero
+ \int_compare:nNnF {#1} < 0
{
- \int_gset_eq:NN \g__unravel_noise_int \c_minus_one
+ \int_gset:Nn \g__unravel_online_int { -1 }
\tl_gset:Nn \g__unravel_before_prompt_tl
{
- \int_gset_eq:NN \g__unravel_noise_int \c_one
+ \int_gset:Nn \g__unravel_online_int { 1 }
\tl_gclear:N \g__unravel_before_prompt_tl
}
\int_gset:Nn \g__unravel_nonstop_int {#1}
@@ -5145,7 +5392,7 @@
}
\cs_new_protected:Npn \__unravel_prompt_vert:Nn #1#2
{
- \int_gset_eq:NN \g__unravel_noise_int \c_minus_one
+ \int_gset:Nn \g__unravel_online_int { -1 }
\tl_gset:Nf \g__unravel_before_print_state_tl
{
\exp_args:NNf \exp_stop_f: \int_compare:nNnTF
@@ -5156,12 +5403,12 @@
{ \int_max:nn { \g__unravel_nonstop_int } { 2 } }
}
{
- \int_gset_eq:NN \g__unravel_noise_int \c_one
+ \int_gset:Nn \g__unravel_online_int { 1 }
\tl_gclear:N \g__unravel_before_print_state_tl
}
}
}
-\cs_new_protected_nopar:Npn \__unravel_prompt_all:
+\cs_new_protected:Npn \__unravel_prompt_all:
{
\tl_gset:Nx \g__unravel_tmpc_tl
{
@@ -5171,6 +5418,8 @@
\int_gset_eq:NN \g__unravel_max_output_int \c_max_int
\int_gset_eq:NN \g__unravel_max_input_int \c_max_int
\__unravel_print_state:
+ \int_gdecr:N \g__unravel_nonstop_int
+ \__unravel_prompt:
}
\__unravel_prompt_all_aux:N \g__unravel_max_output_int
\__unravel_prompt_all_aux:N \g__unravel_max_input_int
@@ -5195,8 +5444,8 @@
}
\cs_new_protected:Npn \__unravel_tex_msg_new:nnn #1#2#3
{
- \cs_new_nopar:cpn { __unravel_tex_msg_error_#1: } {#2}
- \cs_new_nopar:cpn { __unravel_tex_msg_help_#1: } {#3}
+ \cs_new:cpn { __unravel_tex_msg_error_#1: } {#2}
+ \cs_new:cpn { __unravel_tex_msg_help_#1: } {#3}
}
\cs_new_protected:Npn \__unravel_tex_error:nn #1#2
{
@@ -5225,6 +5474,10 @@
max-output .int_gset:N = \g__unravel_default_max_output_int ,
max-input .int_gset:N = \g__unravel_default_max_input_int ,
number-steps .bool_gset:N = \g__unravel_default_number_steps_bool ,
+ online .int_gset:N = \g__unravel_default_online_int ,
+ trace-assigns .bool_gset:N = \g__unravel_default_trace_assign_bool ,
+ trace-expansion .bool_gset:N = \g__unravel_default_trace_expansion_bool ,
+ trace-other .bool_gset:N = \g__unravel_default_trace_other_bool ,
welcome-message .bool_gset:N = \g__unravel_default_welcome_message_bool ,
}
\keys_define:nn { unravel }
@@ -5235,6 +5488,10 @@
max-output .int_gset:N = \g__unravel_max_output_int ,
max-input .int_gset:N = \g__unravel_max_input_int ,
number-steps .bool_gset:N = \g__unravel_number_steps_bool ,
+ online .int_gset:N = \g__unravel_online_int ,
+ trace-assigns .bool_gset:N = \g__unravel_trace_assigns_bool ,
+ trace-expansion .bool_gset:N = \g__unravel_trace_expansion_bool ,
+ trace-other .bool_gset:N = \g__unravel_trace_other_bool ,
welcome-message .bool_gset:N = \g__unravel_welcome_message_bool ,
}
\tl_map_inline:nn { { /defaults } { } }
@@ -5252,16 +5509,27 @@
number-steps = false ,
welcome-message = false ,
} ,
+ mute .meta:nn =
+ { unravel #1 }
+ {
+ trace-assigns = false ,
+ trace-expansion = false ,
+ trace-other = false ,
+ welcome-message = false ,
+ online = -1 ,
+ }
}
}
-\NewDocumentCommand \unravel { O { } m } { \unravel:nn {#1} {#2} }
+\NewDocumentCommand \unravel { O { } +m } { \unravel:nn {#1} {#2} }
\NewDocumentCommand \unravelsetup { m } { \unravel_setup:n {#1} }
\cs_new_protected:Npn \unravel_setup:n #1
{
\keys_set:nn { unravel/defaults } {#1}
\keys_set:nn { unravel } {#1}
}
-\cs_new_protected:Npn \unravel:nn #1#2
+\cs_new_protected:Npn \unravel:nn { \__unravel_unravel_marker: \__unravel:nn }
+\cs_new_eq:NN \__unravel_unravel_marker: \__unravel_special_relax:
+\cs_new_protected:Npn \__unravel:nn #1#2
{
\__unravel_init_key_vars:
\keys_set:nn { unravel } {#1}
@@ -5274,17 +5542,27 @@
\__unravel_final_test:
\__unravel_exit_point:
}
-\cs_new_protected_nopar:Npn \__unravel_init_key_vars:
+\cs_new_protected:Npn \unravel_get:nnN #1#2#3
+ {
+ \unravel:nn {#1} {#2}
+ \tl_set:Nx #3 { \gtl_left_tl:N \g__unravel_output_gtl }
+ }
+\cs_new_protected:Npn \__unravel_init_key_vars:
{
\bool_gset_eq:NN \g__unravel_explicit_prompt_bool \g__unravel_default_explicit_prompt_bool
\bool_gset_eq:NN \g__unravel_internal_debug_bool \g__unravel_default_internal_debug_bool
\bool_gset_eq:NN \g__unravel_number_steps_bool \g__unravel_default_number_steps_bool
+ \int_gset_eq:NN \g__unravel_online_int \g__unravel_default_online_int
+ \bool_gset_eq:NN \g__unravel_trace_assigns_bool \g__unravel_default_trace_assigns_bool
+ \bool_gset_eq:NN \g__unravel_trace_expansion_bool \g__unravel_default_trace_expansion_bool
+ \bool_gset_eq:NN \g__unravel_trace_other_bool \g__unravel_default_trace_other_bool
\bool_gset_eq:NN \g__unravel_welcome_message_bool \g__unravel_default_welcome_message_bool
\int_gset_eq:NN \g__unravel_max_action_int \g__unravel_default_max_action_int
\int_gset_eq:NN \g__unravel_max_output_int \g__unravel_default_max_output_int
\int_gset_eq:NN \g__unravel_max_input_int \g__unravel_default_max_input_int
+ \int_gzero:N \g__unravel_nonstop_int
}
-\cs_new_protected_nopar:Npn \__unravel_init_vars:
+\cs_new_protected:Npn \__unravel_init_vars:
{
\seq_gclear:N \g__unravel_prev_input_seq
\gtl_gclear:N \g__unravel_output_gtl
@@ -5297,26 +5575,26 @@
\bool_gset_false:N \g__unravel_name_in_progress_bool
\gtl_clear:N \l__unravel_after_group_gtl
}
-\cs_new_protected_nopar:Npn \__unravel_main_loop:
+\cs_new_protected:Npn \__unravel_main_loop:
{
\__unravel_get_x_next:
\__unravel_set_cmd:
\__unravel_do_step:
\__unravel_main_loop:
}
-\cs_new_protected_nopar:Npn \__unravel_final_test:
+\cs_new_protected:Npn \__unravel_final_test:
{
\bool_if:nTF
{
\tl_if_empty_p:N \g__unravel_if_limit_tl
- && \int_compare_p:nNn \g__unravel_if_limit_int = \c_zero
- && \int_compare_p:nNn \g__unravel_if_depth_int = \c_zero
+ && \int_compare_p:nNn \g__unravel_if_limit_int = 0
+ && \int_compare_p:nNn \g__unravel_if_depth_int = 0
&& \seq_if_empty_p:N \g__unravel_prev_input_seq
}
{ \__unravel_input_if_empty:TF { } { \__unravel_final_bad: } }
{ \__unravel_final_bad: }
}
-\cs_new_protected_nopar:Npn \__unravel_final_bad:
+\cs_new_protected:Npn \__unravel_final_bad:
{
\__unravel_error:nnnnn { internal }
{ the-last-unravel-finished-badly } { } { } { }
@@ -5387,6 +5665,8 @@
{ The~primitive~\iow_char:N\\endinput~was~ignored. }
\msg_new:nnn { unravel } { missing-something }
{ Something~is~missing,~sorry! }
+\msg_new:nnn { unravel } { nested-unravel }
+ { The~\iow_char:N\\unravel~command~may~not~be~nested. }
\msg_new:nnnn { unravel } { tex-error }
{ TeX~sees~"#1"~and~throws~an~error:\\\\ \iow_indent:n {#2} }
{