summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/mult-aux.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/mult-aux.mkiv')
-rw-r--r--tex/context/base/mkiv/mult-aux.mkiv251
1 files changed, 135 insertions, 116 deletions
diff --git a/tex/context/base/mkiv/mult-aux.mkiv b/tex/context/base/mkiv/mult-aux.mkiv
index 5e7de2270..a599f1673 100644
--- a/tex/context/base/mkiv/mult-aux.mkiv
+++ b/tex/context/base/mkiv/mult-aux.mkiv
@@ -101,7 +101,7 @@
\fi#2}
\def\mult_interfaces_get_parameters_indeed#1]% namespace already set
- {\mult_interfaces_get_parameters_item#1,],\_e_o_p_}
+ {\mult_interfaces_get_parameters_item#1,],\_e_o_t_}
\def\mult_interfaces_get_parameters_item#1,#2% #2 takes space before ,
{\if,#1,% dirty trick for testing #1=empty
@@ -109,7 +109,7 @@
\else\if]#1%
\doubleexpandafter\gobbleoneargument
\else
- \mult_interfaces_get_parameters_assign#1==\empty\_e_o_p_
+ \mult_interfaces_get_parameters_assign#1==\empty\_e_o_t_
% \doubleexpandafter\mult_interfaces_get_parameters_item % saves skipping when at end
\fi\fi#2}
@@ -120,7 +120,7 @@
\def\mult_interfaces_get_parameters_error_indeed#1#2%
{\showassignerror{#2}{\the\inputlineno\space(#1)}}
-\def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_p_
+\def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_t_
{\ifx\empty#1\empty
\expandafter\mult_interfaces_get_parameters_error
\else\ifx#3\empty
@@ -143,7 +143,7 @@
\def\mult_interfaces_get_parameters_error_two#1\csname#2#3\endcsname#4%
{\mult_interfaces_get_parameters_error_indeed{#2}{#3}}
- \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_p_
+ \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_t_
{\ifx\empty#1\empty
\mult_interfaces_get_parameters_error_one
\else\ifx#3\empty
@@ -161,7 +161,7 @@
% \def\mult_interfaces_get_parameters_error_two#1\m_mult_interfaces_namespace#2\fi\fi%
% {\mult_interfaces_get_parameters_error_indeed\m_mult_interfaces_namespace{#2}\m_mult_interfaces_namespace\s!dummy\fi\fi}
%
- % \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_p_
+ % \def\mult_interfaces_get_parameters_assign#1=#2=#3#4\_e_o_t_
% {\expandafter\def\csname
% \ifx\empty#1\empty
% \mult_interfaces_get_parameters_error_one
@@ -177,15 +177,14 @@
\newif\ifassignment
-\def\mult_check_for_assignment_indeed#1=#2#3\_end_
- {\if#2@\assignmentfalse\else\assignmenttrue\fi}
-
-\def\mult_check_for_assignment_indeed_begin_#1=#2#3\_end_
- {\if#2@}
+\def\mult_check_for_assignment_indeed#1=#2#3\_e_o_t_
+ {\if#2\_e_t_x_\assignmentfalse\else\assignmenttrue\fi}
+\def\mult_check_for_assignment_indeed_begin_#1=#2#3\_e_o_t_
+ {\if#2\_e_t_x_}
\def\mult_check_for_assignment#1%
- {\expandafter\mult_check_for_assignment_indeed\detokenize{#1}=@@\_end_}
+ {\expandafter\mult_check_for_assignment_indeed\detokenize{#1}=\_e_t_x_\_e_t_x_\_e_o_t_}
% End of experimental code.
@@ -357,44 +356,6 @@
\def\getparentchain #1#2{\begincsname#1#2:\s!chain\endcsname}
\def\getcurrentparentchain#1#2{\begincsname#1#2:\s!chain\endcsname}
-\unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% why is \expanded still needed in clones
- {\ifx#4\relax\let#4\empty\fi % see \defineregister
- \unexpanded\def#2{\dotripleempty#5}%
- \newtoks#6%
- \newtoks#7%
- \unexpanded\def#5[##1][##2][##3]% [child][parent][settings] | [child][settings] | [child][parent] | [child]
- {\let#9#4%
- \edef#4{##1}%
- \ifthirdargument
- \the#6% predefine
- \edef#8{##2}%
- \mult_check_for_parent{#1}{#3}#4#8%
- \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
- \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}%
- \mult_interfaces_get_parameters{#1#4:}[##3]%
- \else\ifsecondargument
- \the#6% predefine
- \expandafter\mult_check_for_assignment_indeed\detokenize{##2}=@@\_end_
- \ifassignment
- \let#8\empty
- \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}%
- \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}%
- \mult_interfaces_get_parameters{#1#4:}[##2]%
- \else
- \edef#8{##2}%
- \mult_check_for_parent{#1}{#3}#4#8%
- \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
- \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}%
- \fi
- \else
- \the#6% predefine
- \let#8\empty
- \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}%
- \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}%
- \fi\fi
- \the#7%
- \let#4#9}}
-
% \unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% why is \expanded still needed in clones
% {\ifx#4\relax\let#4\empty\fi % see \defineregister
% \unexpanded\def#2{\dotripleempty#5}%
@@ -412,16 +373,17 @@
% \mult_interfaces_get_parameters{#1#4:}[##3]%
% \else\ifsecondargument
% \the#6% predefine
-% \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##2}=@@\_end_
-% \edef#8{##2}%
-% \mult_check_for_parent{#1}{#3}#4#8%
-% \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
-% \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}%
-% \else
+% \expandafter\mult_check_for_assignment_indeed\detokenize{##2}=\_e_t_x_\_e_t_x_\_e_o_t_
+% \ifassignment
% \let#8\empty
% \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}%
% \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}%
% \mult_interfaces_get_parameters{#1#4:}[##2]%
+% \else
+% \edef#8{##2}%
+% \mult_check_for_parent{#1}{#3}#4#8%
+% \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
+% \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}%
% \fi
% \else
% \the#6% predefine
@@ -432,6 +394,43 @@
% \the#7%
% \let#4#9}}
+\unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% why is \expanded still needed in clones
+ {\ifx#4\relax\let#4\empty\fi % see \defineregister
+ \unexpanded\def#2{\dotripleempty#5}%
+ \newtoks#6%
+ \newtoks#7%
+ \unexpanded\def#5[##1][##2][##3]% [child][parent][settings] | [child][settings] | [child][parent] | [child]
+ {\let#9#4%
+ \edef#4{##1}%
+ \ifthirdargument
+ \the#6% predefine
+ \edef#8{##2}%
+ \mult_check_for_parent{#1}{#3}#4#8%
+ \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
+ \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}%
+ \mult_interfaces_get_parameters{#1#4:}[##3]%
+ \else\ifsecondargument
+ \the#6% predefine
+ \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##2}=\_e_t_x_\_e_t_x_\_e_o_t_
+ \edef#8{##2}%
+ \mult_check_for_parent{#1}{#3}#4#8%
+ \expandafter\edef\csname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
+ \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}%
+ \else
+ \let#8\empty
+ \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}%
+ \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}%
+ \mult_interfaces_get_parameters{#1#4:}[##2]%
+ \fi
+ \else
+ \the#6% predefine
+ \let#8\empty
+ \expandafter\edef\csname#1#4:\s!chain\endcsname{##1}%
+ \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}%
+ \fi\fi
+ \the#7%
+ \let#4#9}}
+
\unexpanded\def\installdefinehandler#1#2#3%
{\normalexpanded
{\mult_interfaces_install_define_handler
@@ -490,55 +489,6 @@
\unexpanded\def#2{\dodoubleempty#4}%
\unexpanded\def#5{\mult_interfaces_get_parameters{#1#3:}}}
-\unexpanded\def\mult_interfaces_install_switch_setup_handler_b#1#2#3#4#5#6#7#8#9%
- {\newtoks#5%
- \newconstant#2%
- \newtoks#8%
- \newtoks#9%
- \ifx#6\relax\let#6\empty\fi
- \unexpanded\def#4[##1][##2]% maybe helper
- {\ifsecondargument % no commalist here
- % \setuplayout[whatever][key=value]
- \let#7#3%
- \let#6#3%
- \edef#3{##1}%
- #2\doingrootsetupnamed
- \mult_interfaces_get_parameters{#1#3:}[##2]%
- \the#5%
- \ifx#3#6\the#8\fi % only switchsetups if previous == current
- \let#3#7%
- \else\iffirstargument
- % \mult_check_for_assignment{##1}%
- \expandafter\mult_check_for_assignment_indeed\detokenize{##1}=@@\_end_
- \ifassignment
- % \setuplayout[key=value]
- \let#7#3%
- \let#6#3%
- \let#3\empty
- #2\doingrootsetuproot
- \mult_interfaces_get_parameters{#1:}[##1]%
- \the#5%
- \the#8% switchsetups
- \let#3#7%
- \else
- % \setuplayout[whatever]
- \let#6#3% % previous becomes current
- \edef#3{##1}% this will catch reset so one needs to test for it
- #2\doingrootsetnamed
- \the#5% % we can check for previous vs current
- \the#8% switchsetups
- \fi
- \else
- % \setuplayout
- \let#6#3% % previous becomes current
- \let#3\empty % current becomes empty
- #2\doingrootsetroot
- \the#5%
- \the#8% switchsetups
- \fi\fi
- #2\zerocount % mode is always zero at the end
- \the#9}}
-
% \unexpanded\def\mult_interfaces_install_switch_setup_handler_b#1#2#3#4#5#6#7#8#9%
% {\newtoks#5%
% \newconstant#2%
@@ -558,14 +508,8 @@
% \let#3#7%
% \else\iffirstargument
% % \mult_check_for_assignment{##1}%
-% \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##1}=@@\_end_
-% % \setuplayout[whatever]
-% \let#6#3% % previous becomes current
-% \edef#3{##1}% this will catch reset so one needs to test for it
-% #2\doingrootsetnamed
-% \the#5% % we can check for previous vs current
-% \the#8% switchsetups
-% \else
+% \expandafter\mult_check_for_assignment_indeed\detokenize{##1}=\_e_t_x_\_e_t_x_\_e_o_t_
+% \ifassignment
% % \setuplayout[key=value]
% \let#7#3%
% \let#6#3%
@@ -575,6 +519,13 @@
% \the#5%
% \the#8% switchsetups
% \let#3#7%
+% \else
+% % \setuplayout[whatever]
+% \let#6#3% % previous becomes current
+% \edef#3{##1}% this will catch reset so one needs to test for it
+% #2\doingrootsetnamed
+% \the#5% % we can check for previous vs current
+% \the#8% switchsetups
% \fi
% \else
% % \setuplayout
@@ -587,6 +538,54 @@
% #2\zerocount % mode is always zero at the end
% \the#9}}
+\unexpanded\def\mult_interfaces_install_switch_setup_handler_b#1#2#3#4#5#6#7#8#9%
+ {\newtoks#5%
+ \newconstant#2%
+ \newtoks#8%
+ \newtoks#9%
+ \ifx#6\relax\let#6\empty\fi
+ \unexpanded\def#4[##1][##2]% maybe helper
+ {\ifsecondargument % no commalist here
+ % \setuplayout[whatever][key=value]
+ \let#7#3%
+ \let#6#3%
+ \edef#3{##1}%
+ #2\doingrootsetupnamed
+ \mult_interfaces_get_parameters{#1#3:}[##2]%
+ \the#5%
+ \ifx#3#6\the#8\fi % only switchsetups if previous == current
+ \let#3#7%
+ \else\iffirstargument
+ % \mult_check_for_assignment{##1}%
+ \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##1}=\_e_t_x_\_e_t_x_\_e_o_t_
+ % \setuplayout[whatever]
+ \let#6#3% % previous becomes current
+ \edef#3{##1}% this will catch reset so one needs to test for it
+ #2\doingrootsetnamed
+ \the#5% % we can check for previous vs current
+ \the#8% switchsetups
+ \else
+ % \setuplayout[key=value]
+ \let#7#3%
+ \let#6#3%
+ \let#3\empty
+ #2\doingrootsetuproot
+ \mult_interfaces_get_parameters{#1:}[##1]%
+ \the#5%
+ \the#8% switchsetups
+ \let#3#7%
+ \fi
+ \else
+ % \setuplayout
+ \let#6#3% % previous becomes current
+ \let#3\empty % current becomes empty
+ #2\doingrootsetroot
+ \the#5%
+ \the#8% switchsetups
+ \fi\fi
+ #2\zerocount % mode is always zero at the end
+ \the#9}}
+
\unexpanded\def\installswitchsetuphandler#1#2%
{\normalexpanded
{\mult_interfaces_install_switch_setup_handler_a
@@ -804,6 +803,24 @@
\expandafter\noexpand\csname setupcurrent#1\endcsname
\expandafter\noexpand\csname #1_action\endcsname}}
+% \unexpanded\def\mult_interfaces_install_action_handler#1#2#3#4%
+% {\unexpanded\expandafter\def\csname#1\endcsname{\dodoubleempty#4}%
+% \unexpanded\def#4[##1][##2]%
+% {\begingroup
+% \ifsecondargument
+% \edef#2{##1}%
+% #3[##2]%
+% \else\iffirstargument
+% \doifelseassignment{##1}
+% {\let#2\empty
+% #3[##1]}%
+% {\edef#2{##1}}%
+% \else
+% \let#2\empty
+% \fi\fi
+% \directsetup{handler:action:#1}%
+% \endgroup}}
+
\unexpanded\def\mult_interfaces_install_action_handler#1#2#3#4%
{\unexpanded\expandafter\def\csname#1\endcsname{\dodoubleempty#4}%
\unexpanded\def#4[##1][##2]%
@@ -812,10 +829,12 @@
\edef#2{##1}%
#3[##2]%
\else\iffirstargument
- \doifelseassignment{##1}
- {\let#2\empty
- #3[##1]}%
- {\edef#2{##1}}%
+ \ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##1}=\_e_t_x_\_e_t_x_\_e_o_t_
+ \edef#2{##1}%
+ \else
+ \let#2\empty
+ #3[##1]%
+ \fi
\else
\let#2\empty
\fi\fi