summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/unravel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-09-30 21:17:21 +0000
committerKarl Berry <karl@freefriends.org>2015-09-30 21:17:21 +0000
commitb9f09946a8fe2f81468fb7bf624e3f8ce2d26888 (patch)
tree0c5e5d740d31c1239d420feb4b7b64f3e707e85f /Master/texmf-dist/tex/latex/unravel
parent2f667f4d777c2ce38eb648f49ae5fde2c644dcfc (diff)
unravel (30sep15)
git-svn-id: svn://tug.org/texlive/trunk@38506 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/unravel')
-rw-r--r--Master/texmf-dist/tex/latex/unravel/unravel.sty627
1 files changed, 465 insertions, 162 deletions
diff --git a/Master/texmf-dist/tex/latex/unravel/unravel.sty b/Master/texmf-dist/tex/latex/unravel/unravel.sty
index 630584380a7..9d051e10e64 100644
--- a/Master/texmf-dist/tex/latex/unravel/unravel.sty
+++ b/Master/texmf-dist/tex/latex/unravel/unravel.sty
@@ -21,39 +21,161 @@
%% http://www.latex-project.org/lppl.txt
%%
%% -----------------------------------------------------------------------
+\begingroup\let\c\catcode\fam32\c\fam10\advance\fam5\c\fam14\c45 12 %
+\c54 12\c55 12\c56 12\c57 12\c58 11\c95 11\c104 11\c106 11\c107 11 %
+\c113 11\c115 11\c119 11\c120 11\c121 11\c122 11\endlinechar-1 %
+\expandafter\ifx\csname unravel\endcsname\relax
+\else\endinput\expandafter\endgroup\fi
+\c84 11\c88 11\c35 6\c123 1\c125 2\c62 12\c61 12\c43 12 %
+\expandafter\ifx\csname numexpr\endcsname\relax
+\errmessage{unravel requires \numexpr from eTeX}
+\endinput\expandafter\endgroup\fi
+\expandafter\ifx\csname protected\endcsname\relax
+\errmessage{unravel requires \protected from eTeX}
+\endinput\expandafter\endgroup\fi
+\expandafter\ifx\csname currentgrouplevel\endcsname\relax\else
+\ifnum\currentgrouplevel>1 \errmessage{unravel loaded in a group}
+\endinput\expandafter\expandafter\expandafter\endgroup\fi\fi
+\catcode 32 = 9 \relax
+\catcode 126 = 10 \relax
+\gdef \l__unravel_setup_restore_tl { }
+\protected \gdef \__unravel_setup_restore:
+ {
+ \l__unravel_setup_restore_tl
+ \def \l__unravel_setup_restore_tl { }
+ }
+\protected \gdef \__unravel_setup_save:
+ {
+ \edef \l__unravel_setup_restore_tl
+ {
+ \__unravel_setup_save_aux:w 0 =
+ \endlinechar = \the \endlinechar
+ \escapechar = \the \escapechar
+ \newlinechar = \the \newlinechar
+ \relax
+ }
+ }
+\long \gdef \__unravel_setup_save_aux:w #1 =
+ {
+ \catcode #1 = \the \catcode #1 ~
+ \ifnum 255 > #1 ~
+ \expandafter \__unravel_setup_save_aux:w
+ \the \numexpr #1 + 1 \expandafter =
+ \fi
+ }
+\protected \long \gdef \__unravel_setup_catcodes:nnn #1 #2 #3
+ {
+ \ifnum #1 > #2 ~ \else
+ \catcode #1 = #3 ~
+ \expandafter \__unravel_setup_catcodes:nnn \expandafter
+ { \the \numexpr #1 + 1 } {#2} {#3}
+ \fi
+ }
+\protected \gdef \__unravel_setup_latexe:
+ {
+ \__unravel_setup_save:
+ \__unravel_setup_catcodes:nnn {0} {8} {15}
+ \catcode 9 = 10 ~
+ \catcode 10 = 12 ~
+ \catcode 11 = 15 ~
+ \catcode 12 = 13 ~
+ \catcode 13 = 5 ~
+ \__unravel_setup_catcodes:nnn {14} {31} {15}
+ \catcode 32 = 10 ~
+ \catcode 33 = 12 ~
+ \catcode 34 = 12 ~
+ \catcode 35 = 6 ~
+ \catcode 36 = 3 ~
+ \catcode 37 = 14 ~
+ \catcode 38 = 4 ~
+ \__unravel_setup_catcodes:nnn {39} {63} {12}
+ \__unravel_setup_catcodes:nnn {64} {90} {11}
+ \catcode 91 = 12 ~
+ \catcode 92 = 0 ~
+ \catcode 93 = 12 ~
+ \catcode 94 = 7 ~
+ \catcode 95 = 8 ~
+ \catcode 96 = 12 ~
+ \__unravel_setup_catcodes:nnn {97} {122} {11}
+ \catcode 123 = 1 ~
+ \catcode 124 = 12 ~
+ \catcode 125 = 2 ~
+ \catcode 126 = 13 ~
+ \catcode 127 = 15 ~
+ \__unravel_setup_catcodes:nnn {128} {255} {12}
+ \endlinechar = 13 ~
+ \escapechar = 92 ~
+ \newlinechar = 10 ~
+ }
+\protected \gdef \__unravel_setup_unravel:
+ {
+ \__unravel_setup_save:
+ \__unravel_setup_catcodes:nnn {0} {8} {15}
+ \catcode 9 = 9 ~
+ \catcode 10 = 12 ~
+ \catcode 11 = 15 ~
+ \catcode 12 = 13 ~
+ \catcode 13 = 5 ~
+ \__unravel_setup_catcodes:nnn {14} {31} {15}
+ \catcode 32 = 9 ~
+ \catcode 33 = 12 ~
+ \catcode 34 = 12 ~
+ \catcode 35 = 6 ~
+ \catcode 36 = 3 ~
+ \catcode 37 = 14 ~
+ \catcode 38 = 4 ~
+ \__unravel_setup_catcodes:nnn {39} {57} {12}
+ \catcode 58 = 11 ~
+ \__unravel_setup_catcodes:nnn {59} {64} {12}
+ \__unravel_setup_catcodes:nnn {65} {90} {11}
+ \catcode 91 = 12 ~
+ \catcode 92 = 0 ~
+ \catcode 93 = 12 ~
+ \catcode 94 = 7 ~
+ \catcode 95 = 11 ~
+ \catcode 96 = 12 ~
+ \__unravel_setup_catcodes:nnn {97} {122} {11}
+ \catcode 123 = 1 ~
+ \catcode 124 = 12 ~
+ \catcode 125 = 2 ~
+ \catcode 126 = 10 ~
+ \catcode 127 = 15 ~
+ \__unravel_setup_catcodes:nnn {128} {255} {12}
+ \escapechar = 92 ~
+ \endlinechar = 32 ~
+ \newlinechar = 10 ~
+ }
+\expandafter \endgroup \__unravel_setup_latexe:
\RequirePackage{expl3,xparse}[2015/09/11]
\RequirePackage{gtl}[2015/09/21]
-\ProvidesExplPackage
- {unravel} {2015/09/22} {0.1} {Watching TeX digest tokens}
-\cs_if_exist:NF \str_range:nnn { \RequirePackage{l3str} }
+\csname cs_if_exist:cF\endcsname{str_range:nnn}{\RequirePackage{l3str}}
+\csname use:n\endcsname
+ {%
+ \csname __unravel_setup_restore:\endcsname
+ \ProvidesExplPackage
+ {unravel} {2015/09/30} {0.2} {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
{ \int_set:Nn \tex_escapechar:D }
\cs_new_eq:NN \__unravel_everyeof:w \etex_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 \c__unravel_prompt_ior \c_sixteen
\cs_new_eq:NN \c__unravel_noprompt_ior \c_minus_one
-\cs_if_exist:NF \exp_last_unbraced:NNn
- { \cs_new_eq:NN \exp_last_unbraced:NNn \use:nnn }
-\cs_generate_variant:Nn \exp_last_unbraced:NNn { NNv }
\cs_generate_variant:Nn \str_head:n { f }
\cs_generate_variant:Nn \tl_to_str:n { o }
\cs_generate_variant:Nn \tl_if_head_eq_meaning:nNT { V }
-\cs_generate_variant:Nn \tl_if_head_is_space:nTF { o }
-\cs_generate_variant:Nn \tl_if_head_is_space:nT { V }
-\cs_generate_variant:Nn \tl_if_head_is_N_type:nTF { o }
\cs_generate_variant:Nn \tl_if_in:nnF { nV }
\cs_generate_variant:Nn \tl_if_in:nnTF { nV }
-\cs_generate_variant:Nn \tl_if_eq:nnT { V }
\cs_generate_variant:Nn \tl_if_in:NnTF { No , NV }
\cs_generate_variant:Nn \tl_if_single_token:nT { V }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nnx }
-\cs_generate_variant:Nn \gtl_gput_left:Nn { Nx , NV , No }
-\cs_generate_variant:Nn \gtl_gput_right:Nn { Nx , NV }
-\cs_generate_variant:Nn \gtl_put_right:Nn { NV }
+\cs_generate_variant:Nn \gtl_gput_right:Nn { NV }
\cs_generate_variant:Nn \ior_get_str:NN { Nc }
\cs_generate_variant:Nn \gtl_if_empty:NTF { c }
\cs_generate_variant:Nn \gtl_to_str:N { c }
@@ -64,24 +186,66 @@
\cs_generate_variant:Nn \gtl_gclear:N { c }
\cs_generate_variant:Nn \gtl_gclear_new:N { c }
\cs_new_protected_nopar:Npn \__unravel_tmp:w { }
-\cs_new_protected:Npn \__unravel_tl_gset_input:Nnn #1#2#3
+\cs_set_protected:Npn \__unravel_tmp:w #1
{
- \group_begin:
- \__unravel_everyeof:w \exp_after:wN { \token_to_str:N @ @ #1 }
- #2
- \tl_gclear:N #1
- \exp_after:wN \__unravel_tl_gset_input_aux:wN
- \exp_after:wN \prg_do_nothing:
- \tex_input:D \tl_to_str:n {#3} \scan_stop:
- \group_end:
- \tl_gput_right:NV #1 \__unravel_everyeof:w
+ \cs_new_protected:Npn \__unravel_file_get:nN ##1##2
+ {
+ \group_begin:
+ \__unravel_everyeof:w { #1 ##2 }
+ \exp_after:wN \__unravel_file_get_aux:wN
+ \exp_after:wN \prg_do_nothing:
+ \tex_input:D ##1 \scan_stop:
+ }
+ \cs_new_protected:Npn \__unravel_file_get_aux:wN ##1 #1 ##2
+ {
+ \group_end:
+ \tl_set:Nx ##2
+ { \exp_not:o {##1} \exp_not:V \__unravel_everyeof:w }
+ }
}
-\cs_generate_variant:Nn \__unravel_tl_gset_input:Nnn { Nno }
-\use:x
+\exp_args:No \__unravel_tmp:w { \token_to_str:N : : }
+\cs_new:Npn \__unravel_tl_first_int:N #1
+ {
+ \int_eval:n
+ {
+ \exp_after:wN \__unravel_tl_first_int_aux:Nn
+ \exp_after:wN \__unravel_tl_first_int_aux:Nn
+ #1 ? 0 ? \q_stop
+ }
+ }
+\cs_new:Npn \__unravel_tl_first_int_aux:Nn #1#2
+ {
+ \tl_if_single:nT {#2}
+ {
+ \token_if_eq_catcode:NNT + #2
+ {
+ \if_int_compare:w 1 < 1 #2 \exp_stop_f:
+ #2
+ \exp_after:wN \use_i_ii:nnn
+ \exp_after:wN \__unravel_tl_first_int_aux:Nn
+ \exp_after:wN \use_none_delimit_by_q_stop:w
+ \fi:
+ }
+ }
+ #1
+ }
+\cs_new_protected_nopar:Npn \__unravel_prepare_mag:
{
- \cs_new_protected:Npn \exp_not:N \__unravel_tl_gset_input_aux:wN
- ##1 \token_to_str:N @ @ ##2
- } { \tl_gset:No #2 {#1} }
+ \int_compare:nNnT { \g__unravel_mag_set_int } > { 0 }
+ {
+ \int_compare:nNnF { \__unravel_mag: } = { \g__unravel_mag_set_int }
+ {
+ \__unravel_tex_error:nn { incompatible-mag } { }
+ \int_gset_eq:NN \__unravel_mag: \g__unravel_mag_set_int
+ }
+ }
+ \int_compare:nF { 1 <= \__unravel_mag: <= 32768 }
+ {
+ \__unravel_tex_error:nV { illegal-mag } \l__unravel_head_tl
+ \int_gset:Nn \__unravel_mag: { 1000 }
+ }
+ \int_gset_eq:NN \g__unravel_mag_set_int \__unravel_mag:
+ }
\cs_new_nopar:Npn \__unravel_strip_escape:w
{
\tex_romannumeral:D
@@ -315,6 +479,7 @@
\gtl_new:N \g__unravel_after_assignment_gtl
\bool_new:N \g__unravel_set_box_allowed_bool
\bool_new:N \g__unravel_name_in_progress_bool
+\gtl_new:N \l__unravel_after_group_gtl
\group_begin:
\cs_set:Npx \__unravel_tmp:w #1 { \c_hash_str #1 }
\tl_const:Nx \c__unravel_parameters_tl
@@ -341,6 +506,7 @@
\tl_const:Nn \c__unravel_comma_tl { , }
\tl_const:Nn \c__unravel_point_tl { . }
\gtl_const:Nx \c__unravel_frozen_relax_gtl { \if_int_compare:w 0 = 0 \fi: }
+\int_new:N \g__unravel_mag_set_int
\cs_new_protected:Npn \__unravel_tex_const:nn #1#2
{ \int_const:cn { c__unravel_tex_#1_int } {#2} }
\cs_new:Npn \__unravel_tex_use:n #1 { \int_use:c { c__unravel_tex_#1_int } }
@@ -1455,7 +1621,7 @@
\bool_if:NT \g__unravel_internal_debug_bool
{
\__unravel_set_cmd:
- \iow_term:x { Exp:~\int_use:N \l__unravel_head_cmd_int }
+ \iow_term:x { Exp:~\int_to_arabic:n { \l__unravel_head_cmd_int } }
}
\token_if_macro:NTF \l__unravel_head_token
{ \__unravel_macro_call: }
@@ -1593,6 +1759,14 @@
\__unravel_back_input_gtl:N \l__unravel_tmpb_gtl
\prg_return_false:
}
+\cs_new_protected_nopar:Npn \__unravel_scan_to:
+ {
+ \__unravel_scan_keyword:nF { tToO }
+ {
+ \msg_error:nn { unravel } { missing-to }
+ \__unravel_prev_input:n { to }
+ }
+ }
\cs_new_protected_nopar:Npn \__unravel_scan_font_ident:
{
\__unravel_get_x_non_blank:
@@ -1615,8 +1789,8 @@
}
{
\msg_error:nn { unravel } { missing-font-id }
+ \__unravel_back_input:
\__unravel_prev_input:n { \__unravel_nullfont: }
- \__unravel_back_error:
}
}
\cs_new_protected_nopar:Npn \__unravel_scan_font_int:
@@ -1646,7 +1820,11 @@
{
\int_compare:nNnTF
{ ( #1 + \c_two ) / \c_four } > { ( #3 + \c_two ) / \c_four }
- { \__unravel_back_input: }
+ {
+ \__unravel_back_input:
+ \msg_error:nn { unravel } { missing-something }
+ \tl_clear:N \l__unravel_tmpa_tl
+ }
{
\tl_if_empty:nF {#2}
{
@@ -1655,9 +1833,8 @@
#2
\seq_gpop_right:NN \g__unravel_prev_input_seq \l__unravel_head_tl
}
+ \__unravel_thing_use_get:nnNN {#1} {#3} \l__unravel_head_tl \l__unravel_tmpa_tl
}
- \tl_set:Nx \l__unravel_tmpa_tl
- { \__unravel_thing_use:nnN {#1} {#3} \l__unravel_head_tl }
\__unravel_prev_input_silent:V \l__unravel_tmpa_tl
\__unravel_set_action_text:
\__unravel_set_action_text:x
@@ -1687,9 +1864,9 @@
{ 83 } { 1 \__unravel_scan_int: } % set_box_dimen
{ 84 } { 0 \__unravel_scan_int: } % set_shape
{ 85 } { 0 \__unravel_scan_int: } % def_code
- { 86 } { 4 \__unravel_scan_font_ident: } % def_family
- { 87 } { 4 \__unravel_scan_font_ident: } % set_font
- { 88 } { 4 \__unravel_scan_font_ident: } % def_font
+ { 86 } { 4 \__unravel_scan_int: } % def_family
+ { 87 } { 4 } % set_font
+ { 88 } { 4 } % def_font
{ 89 } { \__unravel_thing_register: } % register
}
{ 8 }
@@ -1750,16 +1927,38 @@
\int_compare:nNnT \l__unravel_head_char_int = \c_zero
{ \__unravel_scan_int: }
}
-\cs_new:Npn \__unravel_thing_use:nnN #1#2
+\cs_new_protected:Npn \__unravel_thing_use_get:nnNN #1#2#3#4
{
- \int_case:nnF { \int_min:nn {#1} {#2} }
+ \int_compare:nNnTF {#2} < { 3 }
+ {
+ \int_compare:nNnT {#1} = { 3 }
+ { \__unravel_tex_error:nV { incompatible-units } #3 }
+ \tl_set:Nx #4
+ {
+ \int_case:nn { \int_min:nn {#1} {#2} }
+ {
+ { 0 } \int_eval:n
+ { 1 } \dim_eval:n
+ { 2 } \skip_eval:n
+ }
+ { \int_compare:nNnT {#1} = { 3 } \etex_mutoglue:D #3 }
+ }
+ }
{
- { 0 } \int_eval:n
- { 1 } \dim_eval:n
- { 2 } \skip_eval:n
- { 3 } \muskip_eval:n
+ \int_compare:nNnTF {#2} = { 3 }
+ {
+ \int_case:nnF {#1}
+ {
+ { 0 } { \tl_set:Nx #4 { \int_eval:n {#3} } }
+ { 3 } { \tl_set:Nx #4 { \muskip_eval:n {#3} } }
+ }
+ {
+ \__unravel_tex_error:nV { incompatible-units } #3
+ \tl_set:Nx #4 { \muskip_eval:n { \etex_gluetomu:D #3 } }
+ }
+ }
+ { \tl_set:Nx #4 { \__unravel_the:w #3 } }
}
- { \__unravel_the:w }
}
\cs_new_protected:Npn \__unravel_scan_expr:N #1
{ \__unravel_scan_expr_aux:NN #1 \c_false_bool }
@@ -1917,28 +2116,10 @@
\__unravel_cmd_if_internal:TF
{
\int_compare:nNnTF {#1} = { 3 }
- {
- \__unravel_scan_something_internal:n { 3 }
- \int_case:nnF \g__unravel_val_level_int
- {
- { 0 } { \__unravel_scan_dim_unit:nN {#1} #2 }
- { 3 } { }
- }
- {
- \msg_error:nn { unravel } { incompatible-units }
- % ^^A todo: error recovery
- }
- }
- {
- \__unravel_scan_something_internal:n { 1 }
- \int_case:nnF \g__unravel_val_level_int
- {
- { 0 } { \__unravel_scan_dim_unit:nN {#1} #2 }
- { 3 } % ^^A todo: error recovery
- { \msg_error:nn { unravel } { incompatible-units } }
- }
- { }
- }
+ { \__unravel_scan_something_internal:n { 3 } }
+ { \__unravel_scan_something_internal:n { 1 } }
+ \int_compare:nNnT \g__unravel_val_level_int = { 0 }
+ { \__unravel_scan_dim_unit:nN {#1} #2 }
}
{ \__unravel_scan_dimen_char:nN {#1} #2 }
\seq_gpop_right:NN \g__unravel_prev_input_seq \l__unravel_head_tl
@@ -1978,7 +2159,7 @@
{
\bool_if:NT #2
{
- \__unravel_scan_keyword:nT { fF iI lL }
+ \__unravel_scan_keyword:nT { fFiIlL }
{
\__unravel_scan_inf_unit_loop:
\__unravel_break:w
@@ -1997,25 +2178,26 @@
{ \__unravel_back_input: }
\int_compare:nNnT {#1} = { 3 }
{
- \__unravel_scan_keyword:nT { mM uU } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { mMuU } { \__unravel_break:w }
\msg_error:nn { unravel } { missing-mudim }
\__unravel_break:w
}
- \__unravel_scan_keyword:nT { eE mM } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { eE xX } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { pP xX } { \__unravel_break:w }
- \__unravel_scan_keyword:n { tT rR uU eE }
- \__unravel_scan_keyword:nT { pP tT } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { iI nN } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { pP cC } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { cC mM } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { mM mM } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { bB pP } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { dD dD } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { cC cC } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { nN dD } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { nN cC } { \__unravel_break:w }
- \__unravel_scan_keyword:nT { sS pP } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { eEmM } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { eExX } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { pPxX } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { tTrRuUeE }
+ { \__unravel_prepare_mag: }
+ \__unravel_scan_keyword:nT { pPtT } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { iInN } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { pPcC } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { cCmM } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { mMmM } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { bBpP } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { dDdD } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { cCcC } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { nNdD } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { nNcC } { \__unravel_break:w }
+ \__unravel_scan_keyword:nT { sSpP } { \__unravel_break:w }
\__unravel_break_point:
}
\cs_new_protected_nopar:Npn \__unravel_scan_inf_unit_loop:
@@ -2052,20 +2234,17 @@
\int_case:nnF \g__unravel_val_level_int
{
{ 0 } { \__unravel_scan_dimen:nN {#1} \c_false_bool }
- {#1} { \__unravel_break:w }
- }
- {
- \int_compare:nNnF { \g__unravel_val_level_int + #1 } = 3
- { \msg_error:nn { unravel } { incompatible-units } }
+ { 1 } { }
}
+ { \__unravel_break:w }
}
{ \__unravel_back_input: \__unravel_scan_dimen:nN {#1} \c_false_bool }
\__unravel_prev_input_join_get:nN {#1} \l__unravel_tmpa_tl
\seq_gput_right:Nn \g__unravel_prev_input_seq { }
\seq_gput_right:NV \g__unravel_prev_input_seq \l__unravel_tmpa_tl
- \__unravel_scan_keyword:nT { pP lL uU sS }
+ \__unravel_scan_keyword:nT { pPlLuUsS }
{ \__unravel_scan_dimen:nN {#1} \c_true_bool }
- \__unravel_scan_keyword:nT { mM iI nN uU sS }
+ \__unravel_scan_keyword:nT { mMiInNuUsS }
{ \__unravel_scan_dimen:nN {#1} \c_true_bool }
\__unravel_break_point:
\__unravel_prev_input_join_get:nN {#1} \l__unravel_tmpa_tl
@@ -2262,9 +2441,9 @@
}
\cs_new_protected_nopar:Npn \__unravel_scan_spec:
{
- \__unravel_scan_keyword:nTF { tT oO } { \__unravel_scan_normal_dimen: }
+ \__unravel_scan_keyword:nTF { tToO } { \__unravel_scan_normal_dimen: }
{
- \__unravel_scan_keyword:nT { sS pP rR eE aA dD }
+ \__unravel_scan_keyword:nT { sSpPrReEaAdD }
{ \__unravel_scan_normal_dimen: }
}
\__unravel_scan_left_brace:
@@ -2308,11 +2487,7 @@
{ 3 } % vsplit
{
\__unravel_scan_int:
- \__unravel_scan_keyword:nF { tT oO }
- {
- \msg_error:nn { unravel } { missing-to }
- \__unravel_prev_input:n { to }
- }
+ \__unravel_scan_to:
\__unravel_scan_normal_dimen:
}
}
@@ -2324,8 +2499,10 @@
\bool_if:NTF #1 { \__unravel_do_leaders_fetch_skip: }
{
\seq_gpop_right:NN \g__unravel_prev_input_seq \l__unravel_head_tl
+ \tl_if_head_eq_meaning:VNT \l__unravel_head_tl \tex_shipout:D
+ { \__unravel_prepare_mag: }
\tl_use:N \l__unravel_head_tl \scan_stop:
- \gtl_put_right:NV \g__unravel_output_gtl \l__unravel_head_tl
+ \gtl_gput_right:NV \g__unravel_output_gtl \l__unravel_head_tl
\__unravel_print_action:x { \tl_to_str:N \l__unravel_head_tl }
}
}
@@ -2381,6 +2558,7 @@
{
\exp_args:No #1 {##1}
\cs_gset_eq:NN \__unravel_box_hook:w \prg_do_nothing:
+ \gtl_clear:N \l__unravel_after_group_gtl
\__unravel_print_action:
\__unravel_back_input:o {##1}
\__unravel_set_action_text:x
@@ -2465,26 +2643,31 @@
\cs_new_protected_nopar:Npn \__unravel_build_page:
{
}
-\cs_new_protected_nopar:Npn \__unravel_handle_left_brace:
+\cs_new_protected_nopar:Npn \__unravel_handle_right_brace:
{
- \int_case:nnF \__unravel_currentgrouptype:
+ \int_compare:nTF { 1 <= \__unravel_currentgrouptype: <= 13 }
{
- { 1 } { \__unravel_end_simple_group: } % simple
- { 2 } { \__unravel_end_box_group: } % hbox
- { 3 } { \__unravel_end_box_group: } % adjusted_hbox
- { 4 } { \__unravel_end_graf: \__unravel_end_box_group: } % vbox
- { 5 } { \__unravel_end_graf: \__unravel_end_box_group: } % vtop
- { 6 } { \__unravel_end_align_group: } % align
- { 7 } { \__unravel_end_no_align_group: } % no_align
- { 8 } { \__unravel_end_output_group: } % output
- { 9 } { \__unravel_end_simple_group: } % math
- { 10 } { \__unravel_end_disc_group: } % disc
- { 11 } { \__unravel_end_graf: \__unravel_end_simple_group: } % insert
- { 12 } { \__unravel_end_graf: \__unravel_end_simple_group: } % vcenter
- { 13 } { \__unravel_end_math_choice_group: } % math_choice
+ \gtl_gconcat:NNN \g__unravel_output_gtl
+ \g__unravel_output_gtl \c_group_end_gtl
+ \__unravel_back_input_gtl:N \l__unravel_after_group_gtl
+ \int_case:nn \__unravel_currentgrouptype:
+ {
+ { 1 } { \__unravel_end_simple_group: } % simple
+ { 2 } { \__unravel_end_box_group: } % hbox
+ { 3 } { \__unravel_end_box_group: } % adjusted_hbox
+ { 4 } { \__unravel_end_graf: \__unravel_end_box_group: } % vbox
+ { 5 } { \__unravel_end_graf: \__unravel_end_box_group: } % vtop
+ { 6 } { \__unravel_end_align_group: } % align
+ { 7 } { \__unravel_end_no_align_group: } % no_align
+ { 8 } { \__unravel_end_output_group: } % output
+ { 9 } { \__unravel_end_simple_group: } % math
+ { 10 } { \__unravel_end_disc_group: } % disc
+ { 11 } { \__unravel_end_graf: \__unravel_end_simple_group: } % insert
+ { 12 } { \__unravel_end_graf: \__unravel_end_simple_group: } % vcenter
+ { 13 } { \__unravel_end_math_choice_group: } % math_choice
+ }
}
{ % bottom_level, semi_simple, math_shift, math_left
- \__unravel_back_input:
\l__unravel_head_token
\__unravel_print_action:
}
@@ -2492,20 +2675,22 @@
\cs_new_protected_nopar:Npn \__unravel_end_simple_group:
{
\l__unravel_head_token
- \gtl_gconcat:NNN \g__unravel_output_gtl
- \g__unravel_output_gtl \c_group_end_gtl
\__unravel_print_action:
}
\cs_new_protected_nopar:Npn \__unravel_end_box_group:
{
\seq_pop:NN \l__unravel_leaders_box_seq \l__unravel_tmpa_tl
- \str_if_eq_x:nnTF \l__unravel_tmpa_tl { Z }
+ \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 }
{ \__unravel_end_simple_group: }
{
\__unravel_get_x_non_relax:
\__unravel_set_cmd:
\int_compare:nNnTF \l__unravel_head_cmd_int
- = { \__unravel_tex_use:n { \l__unravel_tmpa_tl skip } }
+ = { \__unravel_tex_use:n { #1 skip } }
{
\tl_put_left:Nn \l__unravel_head_tl { \c_group_end_token }
\__unravel_do_append_glue:
@@ -2591,6 +2776,7 @@
\mode_if_inner:TF
{
\gtl_gput_right:NV \g__unravel_output_gtl \l__unravel_head_tl
+ \__unravel_back_input_gtl:N \l__unravel_after_group_gtl
$ % $
}
{
@@ -2604,6 +2790,7 @@
\msg_error:nn { unravel } { missing-dollar }
}
\gtl_gput_right:NV \g__unravel_output_gtl \l__unravel_head_tl
+ \__unravel_back_input_gtl:N \l__unravel_after_group_gtl
$ $
}
\__unravel_print_action:
@@ -2612,7 +2799,7 @@
{
\__unravel_set_action_text:
\bool_if:NT \g__unravel_internal_debug_bool
- { \iow_term:x { Cmd:~\int_use:N \l__unravel_head_cmd_int } }
+ { \iow_term:x { Cmd:~\int_to_arabic:n { \l__unravel_head_cmd_int } } }
\cs_if_exist_use:cF
{ __unravel_cmd_ \int_use:N \l__unravel_head_cmd_int : }
{ \msg_error:nnx { unravel } { internal } { unknown-command } }
@@ -2625,9 +2812,10 @@
\g__unravel_output_gtl \c_group_begin_gtl
\__unravel_print_action:
\l__unravel_head_token
+ \gtl_clear:N \l__unravel_after_group_gtl
}
\__unravel_new_tex_cmd:nn { end-group_char } % 2
- { \__unravel_handle_left_brace: }
+ { \__unravel_handle_right_brace: }
\__unravel_new_tex_cmd:nn { math_char } % 3
{
\__unravel_mode_non_vertical:n
@@ -2993,7 +3181,28 @@
}
}
\__unravel_new_tex_cmd:nn { after_group } % 41
- { \msg_error:nnx { unravel } { not-implemented } { aftergroup } }
+ {
+ \tl_set_eq:NN \l__unravel_tmpa_tl \l__unravel_head_tl
+ \__unravel_get_next:
+ \int_compare:nNnTF \__unravel_currentgrouptype: = \c_zero
+ {
+ \__unravel_print_action:x
+ {
+ Aftergroup~(level~0~=>~dropped):~
+ \tl_to_str:N \l__unravel_tmpa_tl
+ \gtl_to_str:N \l__unravel_head_gtl
+ }
+ }
+ {
+ \gtl_concat:NNN \l__unravel_after_group_gtl
+ \l__unravel_after_group_gtl \l__unravel_head_gtl
+ \__unravel_print_action:x
+ {
+ Aftergroup:~\tl_to_str:N \l__unravel_tmpa_tl
+ \gtl_to_str:N \l__unravel_head_gtl
+ }
+ }
+ }
\__unravel_new_tex_cmd:nn { break_penalty } % 42
{
\seq_gput_right:NV \g__unravel_prev_input_seq \l__unravel_head_tl
@@ -3147,14 +3356,16 @@
\__unravel_new_tex_cmd:nn { begin_group } % 61
{
\gtl_gput_right:NV \g__unravel_output_gtl \l__unravel_head_tl
- \__unravel_print_action:
\l__unravel_head_token
+ \gtl_clear:N \l__unravel_after_group_gtl
+ \__unravel_print_action:
}
\__unravel_new_tex_cmd:nn { end_group } % 62
{
\gtl_gput_right:NV \g__unravel_output_gtl \l__unravel_head_tl
- \__unravel_print_action:
+ \__unravel_back_input_gtl:N \l__unravel_after_group_gtl
\l__unravel_head_token
+ \__unravel_print_action:
}
\__unravel_new_tex_cmd:nn { omit } % 63
{ \msg_error:nn { unravel } { not-implemented } { omit } }
@@ -3229,24 +3440,24 @@
}
{ 6 } % pdfliteral
{
- \__unravel_scan_keyword:nF { dD iI rR eE cC tT }
- { \__unravel_scan_keyword:n { pP aA gG eE } }
+ \__unravel_scan_keyword:nF { dDiIrReEcCtT }
+ { \__unravel_scan_keyword:n { pPaAgGeE } }
\__unravel_scan_pdf_ext_toks:
}
{ 7 } % pdfobj
{
\__unravel_scan_keyword:nTF
- { rR eE sS eE rR vV eE oO bB jJ nN uU mM }
+ { rReEsSeErRvVeEoObBjJnNuUmM }
{ \__unravel_skip_optional_space: }
{
- \__unravel_scan_keyword:nF { uU sS eE oO bB jJ nN uU mM }
+ \__unravel_scan_keyword:nF { uUsSeEoObBjJnNuUmM }
{ \__unravel_scan_int: }
- \__unravel_scan_keyword:nT { sS tT rR eE aA mM }
+ \__unravel_scan_keyword:nT { sStTrReEaAmM }
{
- \__unravel_scan_keyword:nT { aA tT tT rR }
+ \__unravel_scan_keyword:nT { aAtTtTrR }
{ \__unravel_scan_pdf_ext_toks: }
}
- \__unravel_scan_keyword:n { fF iI lL eE }
+ \__unravel_scan_keyword:n { fFiIlLeE }
\__unravel_scan_pdf_ext_toks:
}
}
@@ -3254,9 +3465,9 @@
{ \__unravel_scan_int: }
{ 9 } % pdfxform
{
- \__unravel_scan_keyword:nT { aA tT tT rR }
+ \__unravel_scan_keyword:nT { aAtTtTrR }
{ \__unravel_scan_pdf_ext_toks: }
- \__unravel_scan_keyword:nTF { rR eE sS oO uU rR cC eE sS }
+ \__unravel_scan_keyword:nTF { rReEsSoOuUrRcCeEsS }
{ \__unravel_scan_pdf_ext_toks: }
\__unravel_scan_int:
}
@@ -3269,10 +3480,10 @@
{ 13 } % pdfannot
{
\__unravel_scan_keyword:nTF
- { rR eE sS eE rR vV eE oO bB jJ nN uU mM }
+ { rReEsSeErRvVeEoObBjJnNuUmM }
{ \__unravel_scan_optional_space: }
{
- \__unravel_scan_keyword:nT { uU sS eE oO bB jJ nN uU mM }
+ \__unravel_scan_keyword:nT { uUsSeEoObBjJnNuUmM }
{ \__unravel_scan_int: }
\__unravel_scan_alt_rule:
\__unravel_scan_pdf_ext_toks:
@@ -3294,10 +3505,10 @@
}
{ 16 } % pdfoutline
{
- \__unravel_scan_keyword:nT { aA tT tT rR }
+ \__unravel_scan_keyword:nT { aAtTtTrR }
{ \__unravel_scan_pdf_ext_toks: }
\__unravel_scan_action:
- \__unravel_scan_keyword:nT { cC oO uU nN tT }
+ \__unravel_scan_keyword:nT { cCoOuUnNtT }
{ \__unravel_scan_int: }
\__unravel_scan_pdf_ext_toks:
}
@@ -3316,7 +3527,7 @@
{ 23 } % pdfcatalog
{
\__unravel_scan_pdf_ext_toks:
- \__unravel_scan_keyword:n { oO pP eE nN aA cC tT iI oO nN }
+ \__unravel_scan_keyword:n { oOpPeEnNaAcCtTiIoOnN }
{ \__unravel_scan_action: }
}
{ 24 } % pdfnames
@@ -3396,7 +3607,7 @@
\cs_new_protected_nopar:Npn \__unravel_scan_rule_attr:
{
\__unravel_scan_alt_rule:
- \__unravel_scan_keyword:nT { aA tT tT rR }
+ \__unravel_scan_keyword:nT { aAtTtTrR }
{ \__unravel_scan_pdf_ext_toks: }
}
\cs_new_protected_nopar:Npn \__unravel_scan_action:
@@ -3729,7 +3940,7 @@
\__unravel_scan_keyword:nTF { aAtT }
{ \__unravel_scan_normal_dimen: }
{
- \__unravel_scan_keyword:nT { sS cC aA lL eE dD }
+ \__unravel_scan_keyword:nT { sScCaAlLeEdD }
{ \__unravel_scan_int: }
}
\bool_gset_false:N \g__unravel_name_in_progress_bool
@@ -3788,17 +3999,41 @@
}
\__unravel_prefixed_new:nn { read_to_cs } % 96
{
- \__unravel_prev_input:V \l__unravel_head_tl
+ \__unravel_prev_input_silent:V \l__unravel_head_tl
\__unravel_print_action:x { \tl_to_str:N \l__unravel_head_tl }
\__unravel_scan_int:
- \__unravel_scan_keyword:nF { tToO }
+ \__unravel_scan_to:
+ \__unravel_scan_r_token:
+ \seq_get_right:NN \g__unravel_prev_input_seq \l__unravel_tmpa_tl
+ \__unravel_read_to_cs_safe:fTF
+ { \__unravel_tl_first_int:N \l__unravel_tmpa_tl }
+ { \__unravel_assign_token:n { } }
{
- \msg_error:nn { unravel } { missing-to }
- \__unravel_prev_input:n { to }
+ \seq_gpop_right:NN \g__unravel_prev_input_seq \l__unravel_head_tl
+ \__unravel_tex_fatal_error:nV { cannot-read } \l__unravel_head_tl
+ }
+ }
+\prg_new_conditional:Npnn \__unravel_read_to_cs_safe:n #1 { TF }
+ {
+ \int_compare:nNnTF { \etex_interactionmode:D } > { 1 }
+ { \prg_return_true: }
+ {
+ \int_compare:nNnTF {#1} < { 0 }
+ { \prg_return_false: }
+ {
+ \int_compare:nNnTF {#1} > { 15 }
+ { \prg_return_false: }
+ {
+ \tex_ifeof:D #1 \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \prg_return_true:
+ \fi:
+ }
+ }
}
- \__unravel_scan_r_token:
- \__unravel_assign_token:n { }
}
+\cs_generate_variant:Nn \__unravel_read_to_cs_safe:nTF { f }
\__unravel_prefixed_new:nn { def } % 97
{
\seq_get_right:NN \g__unravel_prev_input_seq \l__unravel_tmpa_tl
@@ -4081,8 +4316,8 @@
\__unravel_scan_file_name:
\seq_gpop_right:NN \g__unravel_prev_input_seq \l__unravel_head_tl
\tl_set:Nx \l__unravel_tmpa_tl { \tl_tail:N \l__unravel_head_tl }
- \__unravel_tl_gset_input:Nno \g__unravel_tmpc_tl { } \l__unravel_tmpa_tl
- \__unravel_back_input:V \g__unravel_tmpc_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_new_tex_expandable:nn { cs_name } % 109
@@ -4140,7 +4375,7 @@
{ 23 } \__unravel_scan_pdf_ext_toks:
{ 24 }
{
- \__unravel_scan_keyword:n { fF iI lL eE }
+ \__unravel_scan_keyword:n { fFiIlLeE }
\__unravel_scan_pdf_ext_toks:
}
{ 25 } \__unravel_scan_pdffiledump:
@@ -4162,23 +4397,23 @@
{ \__unravel_scan_int: \__unravel_scan_int: }
\cs_new_protected_nopar:Npn \__unravel_scan_pdfcolorstackinit:
{
- \__unravel_scan_keyword:nTF { pP aA gG eE }
+ \__unravel_scan_keyword:nTF { pPaAgGeE }
{ \bool_set_true:N \l__unravel_tmpa_bool }
{ \bool_set_false:N \l__unravel_tmpb_bool }
- \__unravel_scan_keyword:nF { dD iI rR eE cC tT }
- { \__unravel_scan_keyword:n { pP aA gG eE } }
+ \__unravel_scan_keyword:nF { dDiIrReEcCtT }
+ { \__unravel_scan_keyword:n { pPaAgGeE } }
\__unravel_scan_toks_to_str:
}
\cs_new_protected_nopar:Npn \__unravel_scan_pdffiledump:
{
- \__unravel_scan_keyword:nT { oO fF fF sS eE tT } \__unravel_scan_int:
- \__unravel_scan_keyword:nT { lL eE nN gG tT hH } \__unravel_scan_int:
+ \__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:
{
- \__unravel_scan_keyword:n { iI cC aA sS eE }
- \__unravel_scan_keyword:nT { sS uU bB cC oO uU nN tT }
+ \__unravel_scan_keyword:n { iIcCaAsSeE }
+ \__unravel_scan_keyword:nT { sSuUbBcCoOuUnNtT }
{ \__unravel_scan_int: }
\__unravel_scan_pdf_ext_toks:
\__unravel_scan_pdf_ext_toks:
@@ -4621,7 +4856,7 @@
{
[=====
\bool_if:NT \g__unravel_number_steps_bool
- { ~ Step ~ \int_use:N \g__unravel_step_int \ }
+ { ~ Step ~ \int_to_arabic:n { \g__unravel_step_int } ~ }
=====]~
\int_compare:nNnTF
{ \str_count:N \g__unravel_action_text_str }
@@ -4657,12 +4892,15 @@
\cs_new_protected_nopar:Npn \__unravel_print_assigned_register:
{
\__unravel_after_assignment: % ^^A todo: simplify
- \__unravel_print_action:x
+ \exp_args:Nx \__unravel_print_action:x
{
- Set~ \exp_after:wN \token_to_str:N \l__unravel_defined_tl
- \tl_if_single:NT \l__unravel_defined_tl
- { ( \exp_after:wN \token_to_meaning:N \l__unravel_defined_tl ) }
- = \exp_after:wN \__unravel_the:w \l__unravel_defined_tl
+ \exp_not:n
+ {
+ Set~ \exp_after:wN \token_to_str:N \l__unravel_defined_tl
+ \tl_if_single:NT \l__unravel_defined_tl
+ { ( \exp_after:wN \token_to_meaning:N \l__unravel_defined_tl ) }
+ }
+ = \exp_not:N \tl_to_str:n { \__unravel_the:w \l__unravel_defined_tl }
}
\__unravel_omit_after_assignment:w
}
@@ -4829,6 +5067,27 @@
}
\cs_new:Npn \__unravel_prompt_all_aux:N #1
{ \exp_not:n { \int_gset:Nn #1 } { \int_use:N #1 } }
+\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_protected:Npn \__unravel_tex_error:nn #1#2
+ {
+ \msg_error:nnxxx { unravel } { tex-error }
+ { \tl_to_str:n {#2} }
+ { \use:c { __unravel_tex_msg_error_#1: } }
+ { \use:c { __unravel_tex_msg_help_#1: } }
+ }
+\cs_generate_variant:Nn \__unravel_tex_error:nn { nV }
+\cs_new_protected:Npn \__unravel_tex_fatal_error:nn #1#2
+ {
+ \msg_error:nnxxx { unravel } { tex-fatal }
+ { \tl_to_str:n {#2} }
+ { \use:c { __unravel_tex_msg_error_#1: } }
+ { \use:c { __unravel_tex_msg_help_#1: } }
+ }
+\cs_generate_variant:Nn \__unravel_tex_fatal_error:nn { nV }
\keys_define:nn { unravel/defaults }
{
explicit-prompt .bool_gset:N = \g__unravel_default_explicit_prompt_bool ,
@@ -4907,6 +5166,7 @@
\gtl_gclear:N \g__unravel_after_assignment_gtl
\bool_gset_true:N \g__unravel_set_box_allowed_bool
\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:
{
@@ -4946,8 +5206,6 @@
{ Missing~font~identifier.~\iow_char:N\\nullfont~inserted. }
\msg_new:nnn { unravel } { missing-rparen }
{ Missing~right~parenthesis~inserted~for~expression. }
-\msg_new:nnn { unravel } { incompatible-units }
- { Mu~glue/dimen~used~as~a~normal~glue/dimen~or~vice-versa. }
\msg_new:nnn { unravel } { missing-mudim }
{ Missing~mu~unit. }
\msg_new:nnn { unravel } { missing-cs }
@@ -5004,6 +5262,51 @@
{ The~following~feature~is~not~implemented:~'#1'. }
\msg_new:nnn { unravel } { endinput-ignored }
{ The~primitive~\iow_char:N\\endinput~was~ignored. }
+\msg_new:nnn { unravel } { missing-something }
+ { Something~is~missing,~sorry! }
+\msg_new:nnnn { unravel } { tex-error }
+ { TeX~sees~"#1"~and~throws~an~error:\\\\ \iow_indent:n {#2} }
+ {
+ \tl_if_empty:nTF {#3}
+ { TeX~provides~no~further~help~for~this~error. }
+ { TeX's~advice~is:\\\\ \iow_indent:n {#3} }
+ }
+\msg_new:nnnn { unravel } { tex-fatal }
+ { TeX~sees~"#1"~and~throws~a~fatal~error:\\\\ \iow_indent:n {#2} }
+ {
+ \tl_if_empty:nTF {#3}
+ { TeX~provides~no~further~help~for~this~error. }
+ { TeX's~advice~is:\\\\ \iow_indent:n {#3} }
+ }
+\__unravel_tex_msg_new:nnn { incompatible-mag }
+ {
+ Incompatible~magnification~
+ ( \int_to_arabic:n { \__unravel_mag: } ); \\
+ \ the~previous~value~will~be~retained
+ }
+ {
+ I~can~handle~only~one~magnification~ratio~per~job.~So~I've\\
+ reverted~to~the~magnification~you~used~earlier~on~this~run.
+ }
+\__unravel_tex_msg_new:nnn { illegal-mag }
+ {
+ Illegal~magnification~has~been~changed~to~1000~
+ ( \int_to_arabic:n { \__unravel_mag: } )
+ }
+ { The~magnification~ratio~must~be~between~1~and~32768. }
+\__unravel_tex_msg_new:nnn { incompatible-units }
+ { Incompatible~glue~units }
+ { I'm~going~to~assume~that~1mu=1pt~when~they're~mixed. }
+\__unravel_tex_msg_new:nnn { cannot-read }
+ { ***~(cannot~\iow_char:N\\read~from~terminal~in~nonstop~modes) }
+ { }
+\__unravel_tex_msg_new:nnn { file-error }
+ { ***~(job~aborted,~file~error~in~nonstop~mode) }
+ { }
+\__unravel_tex_msg_new:nnn { interwoven-preambles }
+ { (interwoven~alignment~preambles~are~not~allowed) }
+ { }
+\__unravel_setup_restore:
%%
%%
%% End of file `unravel.sty'.