diff options
28 files changed, 858 insertions, 728 deletions
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index d0f9866f6..1f6c6d8a3 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2012.07.04 15:55} +\newcontextversion{2012.07.04 23:48} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index bf8b6cade..d262e6821 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2012.07.04 15:55} +\newcontextversion{2012.07.04 23:48} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex 188e91821..7a28f0951 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png Binary files differindex 088c7307e..962970781 100644 --- a/tex/context/base/context-version.png +++ b/tex/context/base/context-version.png diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index a04ed8510..af378d0ba 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2012.07.04 15:55} +\edef\contextversion{2012.07.04 23:48} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 1fe443acd..29a2432db 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2012.07.04 15:55} +\edef\contextversion{2012.07.04 23:48} %D For those who want to use this: diff --git a/tex/context/base/math-ali.mkiv b/tex/context/base/math-ali.mkiv index 57727b03a..ef82e9adb 100644 --- a/tex/context/base/math-ali.mkiv +++ b/tex/context/base/math-ali.mkiv @@ -33,7 +33,7 @@ \def\math_build_eqalign {\scratchtoks\emptytoks - \dorecurse{\mathalignmentparameter\c!m}\def\math_build_eqalign + \dorecurse{\mathalignmentparameter\c!m}\math_build_eqalign_step \normalexpanded{\scratchtoks{\the\scratchtoks\the\c_math_align_c}}} \def\math_build_eqalign_step @@ -153,7 +153,7 @@ \newtoks \everymathalignment \def\math_alignment_NR_indeed[#1][#2]% - {\donestedformulanumber{#1}{#2}% to be tagged (better an attribute) + {\strc_formulas_place_number_nested{#1}{#2}% to be tagged (better an attribute) \crcr \dostoptagged % finish row \noalign{\glet\math_alignment_NC\math_alignment_NC_first}} % noalign used for change state, conditional does not work here @@ -260,7 +260,7 @@ \letvalue{\??mathalignmentvariant\v!middle}\plusthree \def\math_align_NR_generic[#1][#2]% - {\donestedformulanumber{#1}{#2}\crcr} + {\strc_formulas_place_number_nested{#1}{#2}\crcr} %D \starttyping %D \placeformula[eqn0]\startformula \startalign[n=1] a\NR \stopalign \stopformula See \in[eqn0] @@ -882,10 +882,10 @@ \expandafter\mathbin \else\ifdim\wd\scratchbox>\zeropoint \endgroup - \expandafter\expandafter\expandafter\mathrel + \doubleexpandafter\mathrel \else \endgroup - \expandafter\expandafter\expandafter\firstofoneargument + \doubleexpandafter\firstofoneargument \fi\fi} \unexpanded\def\overset#1#2% diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv index ec773f994..81b9b84c8 100644 --- a/tex/context/base/mult-aux.mkiv +++ b/tex/context/base/mult-aux.mkiv @@ -130,7 +130,7 @@ % End of experimental code. \unexpanded\def\mult_interfaces_install_parameter_handler#1#2#3#4#5#6#7#8#9% inlining \csname*\endcsname is more efficient (#3 and #6 only) - {\ifx#2\relax\let#2\empty\fi % it is hardly faster but produces less expansion tracing + {\ifx#2\relax\let#2\empty\fi % it is hardly faster but produces less expansion tracing %\def#3##1{\csname#4{#1#2}{##1}\endcsname}% \def#3##1{\csname\ifcsname#1#2:##1\endcsname#1#2:##1\else\expandafter#5\csname#1#2:\s!parent\endcsname{##1}\fi\endcsname}% \def#4##1##2{\ifcsname##1:##2\endcsname##1:##2\else\expandafter#5\csname##1:\s!parent\endcsname{##2}\fi}% @@ -248,65 +248,34 @@ \let\definehandlerparent\empty -% \unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% -% {\ifx#4\relax\let#4\empty\fi -% \unexpanded\def#2{\dotripleempty#5}% -% \newtoks#6% -% \newtoks#7% -% \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_interfaces_get_parameters{#1#4:}[\s!parent=#1##2,##3]% -% \else\ifsecondargument -% \the#6% predefine -% % \mult_check_for_assignment{##2}% -% \expandafter\mult_check_for_assignment_indeed\detokenize{##2}=@@\_end_ -% \ifassignment -% \let#8\empty -% \mult_interfaces_get_parameters{#1#4:}[\s!parent=#3,##2]% -% \else -% \edef#8{##2}% -% \mult_interfaces_get_parameters{#1#4:}[\s!parent=#1##2]% -% \fi -% \else -% \the#6% predefine -% \let#8\empty -% \mult_interfaces_get_parameters{#1#4:}[\s!parent=#3]% -% \fi\fi -% \the#7% -% \let#4#9}} - \unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% {\ifx#4\relax\let#4\empty\fi \unexpanded\def#2{\dotripleempty#5}% \newtoks#6% \newtoks#7% - \def#5[##1][##2][##3]% [child][parent][settings] | [child][settings] | [child][parent] | [child] + \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}% - \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% was \def + \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\def\csname#1#4:\s!parent\endcsname{#3}% maybe \edef is more efficient + \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}% \mult_interfaces_get_parameters{#1#4:}[##2]% \else \edef#8{##2}% - \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% was \def + \expandafter\edef\csname#1#4:\s!parent\endcsname{#1##2}% \fi \else \the#6% predefine \let#8\empty - \expandafter\def\csname#1#4:\s!parent\endcsname{#3}% maybe \edef is more efficient + \expandafter\edef\csname#1#4:\s!parent\endcsname{#3}% \fi\fi \the#7% \let#4#9}} @@ -330,7 +299,7 @@ \unexpanded\def#6{\mult_interfaces_get_parameters{#1#3:}}% no every ! don't change it \newtoks#5% \newtoks#8% - \def#4[##1][##2]% maybe helper + \unexpanded\def#4[##1][##2]% maybe helper {\let#7#3% \ifsecondargument \def\mult_interfaces_with_comma_list_element####1% we will have a simple one as well @@ -374,7 +343,7 @@ \newtoks#8% \newtoks#9% \ifx#6\relax\let#6\empty\fi - \def#4[##1][##2]% maybe helper + \unexpanded\def#4[##1][##2]% maybe helper {\ifsecondargument % no commalist here % \setuplayout[whatever][key=value] \let#7#3% @@ -386,8 +355,8 @@ \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_ + % \mult_check_for_assignment{##1}% + \expandafter\mult_check_for_assignment_indeed\detokenize{##1}=@@\_end_ \ifassignment % \setuplayout[key=value] \let#7#3% @@ -436,33 +405,6 @@ \expandafter\noexpand\csname everyswitch#2\endcsname \expandafter\noexpand\csname everysetup#2root\endcsname}} -% \unexpanded\def\mult_interfaces_install_auto_setup_handler#1#2#3#4#5#6#7#8% -% {\ifx#3\relax\let#3\empty\fi -% \unexpanded\def#2{\dotripleempty#4}% -% \unexpanded\def#6{\mult_interfaces_get_parameters{#1#3:}}% -% \newtoks#5% -% \def#4[##1][##2][##3]% -% {\let#8#3% -% \ifthirdargument -% \def\mult_interfaces_with_comma_list_element####1% -% {\edef#3{####1}% -% \mult_interfaces_get_parameters{#1#3:}[\s!parent=#1##2,##3]% always sets parent -% \the#5}% -% \processcommalist[##1]\mult_interfaces_with_comma_list_element -% \else\ifsecondargument -% \def\mult_interfaces_with_comma_list_element####1% -% {\edef#3{####1}% -% #7% checks parent and sets if needed -% \mult_interfaces_get_parameters{#1#3:}[##2]% -% \the#5}% -% \processcommalist[##1]\mult_interfaces_with_comma_list_element -% \else -% \let#3\empty -% \mult_interfaces_get_parameters{#1:}[##1]% -% \the#5% -% \fi\fi -% \let#3#8}} - \unexpanded\def\mult_interfaces_install_auto_setup_handler#1#2#3#4#5#6#7#8% {\ifx#3\relax\let#3\empty\fi \unexpanded\def#2{\dotripleempty#4}% diff --git a/tex/context/base/mult-sys.mkiv b/tex/context/base/mult-sys.mkiv index 46d321632..fdeff699d 100644 --- a/tex/context/base/mult-sys.mkiv +++ b/tex/context/base/mult-sys.mkiv @@ -11,20 +11,19 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -%D In boring module we define a lot of obscure but useful -%D system constants. By doing so we save lots of memory while -%D at the same time we prevent ourself from typing errors. +%D In boring module we define a lot of obscure but useful system constants. +%D By doing so we save lots of memory while at the same time we prevent +%D ourself making typing errors. \writestatus{loading}{ConTeXt Multilingual Macros / System} \unprotect -%D This file is mostly the same as the \MKII\ variant but we -%D keep extending \MKIV, so it was bout time to have a dedicated -%D variant. +%D This file is mostly the same as the \MKII\ variant but we keep extending +%D \MKIV, so it was bout time to have a dedicated variant. %D -%D The constants are grouped in such a way that there is a -%D minimal change of conflicts. +%D The constants are grouped in such a way that there is a minimal change of +%D conflicts. %D %D \starttyping %D \definesystemconstants {word} @@ -36,8 +35,8 @@ \definesystemconstant {hans} \definesystemconstant {taco} -%D First we define some system constants used for both the -%D multi||lingual interface and multi||linguag typesetting. +%D First we define some system constants used for both the multi||lingual +%D interface and multi||linguag typesetting. \definesystemconstant {afrikaans} \definesystemconstant {af} \definesystemconstant {arabic} \definesystemconstant {ar} @@ -83,8 +82,7 @@ \definesystemconstant {japanese} \definesystemconstant {ja} \definesystemconstant {korean} \definesystemconstant {kr} -%D For proper \UNICODE\ support we need a few font related -%D constants. +%D For proper \UNICODE\ support we need a few font related constants. \definesystemconstant {BoldItalic} \definesystemconstant {BoldSlanted} @@ -115,7 +113,7 @@ \definesystemconstant {SerifSlanted} \definesystemconstant {SerifBoldSlanted} \definesystemconstant {SerifCaps} -% \definesystemconstant {SerifCapsSlanted} +%definesystemconstant {SerifCapsSlanted} \definesystemconstant {Sans} \definesystemconstant {SansBold} @@ -220,174 +218,173 @@ \definesystemconstant {second} \definesystemconstant {third} -%D Net come some \CONTEXT\ constants, used in the definition -%D of private commands: - -\definesystemconstant {tex} -\definesystemconstant {xml} -\definesystemconstant {lua} - -\definesystemconstant {next} -\definesystemconstant {pickup} -\definesystemconstant {ascii} -\definesystemconstant {default} -\definesystemconstant {unknown} -\definesystemconstant {action} -\definesystemconstant {compare} -\definesystemconstant {do} -\definesystemconstant {dodo} -\definesystemconstant {complex} -\definesystemconstant {simple} -\definesystemconstant {start} -\definesystemconstant {stop} -\definesystemconstant {dummy} -\definesystemconstant {local} -\definesystemconstant {global} -\definesystemconstant {done} -\definesystemconstant {font} -\definesystemconstant {link} -\definesystemconstant {parent} -\definesystemconstant {child} -\definesystemconstant {clone} -\definesystemconstant {section} -\definesystemconstant {handler} -\definesystemconstant {counter} -\definesystemconstant {single} -\definesystemconstant {multi} -\definesystemconstant {indeed} - -\definesystemconstant {hasnumber} -\definesystemconstant {hastitle} -\definesystemconstant {hascaption} -\definesystemconstant {haslevel} - -\definesystemconstant {mkiv} -\definesystemconstant {mkii} - -\definesystemconstant {normal} -\definesystemconstant {bold} -\definesystemconstant {italic} -\definesystemconstant {slanted} - -\definesystemconstant {default} -\definesystemconstant {smallcaps} - -\definesystemconstant {run} - -\definesystemconstant {mode} -\definesystemconstant {setup} -\definesystemconstant {environment} -\definesystemconstant {document} - -%definesystemconstant {fam} -\definesystemconstant {text} -\definesystemconstant {script} -\definesystemconstant {scriptscript} - -\definesystemconstant {lefthyphenmin} -\definesystemconstant {righthyphenmin} -\definesystemconstant {lefthyphenchar} -\definesystemconstant {righthyphenchar} - -%definesystemconstant {skewchar} -%definesystemconstant {hyphenchar} -\definesystemconstant {catcodes} -%definesystemconstant {encoding} -%definesystemconstant {entities} -%definesystemconstant {resource} -%definesystemconstant {mapping} -\definesystemconstant {language} -\definesystemconstant {patterns} -\definesystemconstant {rname} -\definesystemconstant {rscale} -%definesystemconstant {handling} -\definesystemconstant {features} -\definesystemconstant {direction} -\definesystemconstant {fallbacks} -\definesystemconstant {goodies} -\definesystemconstant {designsize} -%definesystemconstant {background} -%definesystemconstant {ucmap} - -%definesystemconstant {property} -%definesystemconstant {overprint} -%definesystemconstant {layer} -\definesystemconstant {effect} % todo s -%definesystemconstant {negative} -%definesystemconstant {color} -%definesystemconstant {transparency} - -\definesystemconstant {black} -\definesystemconstant {white} - -\definesystemconstant {system} % not yet interfaces messages -\definesystemconstant {user} -\definesystemconstant {check} -\definesystemconstant {reset} -\definesystemconstant {set} -\definesystemconstant {empty} - -\definesystemconstant {realpage} -\definesystemconstant {userpage} -\definesystemconstant {subpage} - -\definesystemconstant {page} -\definesystemconstant {subpage} -\definesystemconstant {leftpage} -\definesystemconstant {rightpage} -\definesystemconstant {somewhere} - -\definesystemconstant {userdata} -\definesystemconstant {command} -\definesystemconstant {simple} - -\definesystemconstant {full} -\definesystemconstant {text} -\definesystemconstant {paragraph} -\definesystemconstant {margintext} -\definesystemconstant {line} - -\definesystemconstant {number} -\definesystemconstant {symbol} -\definesystemconstant {format} -\definesystemconstant {data} -\definesystemconstant {float} -\definesystemconstant {extensions} -\definesystemconstant {initializations} - -\definesystemconstant {rgb} -\definesystemconstant {cmyk} -\definesystemconstant {gray} -\definesystemconstant {spot} -\definesystemconstant {all} -\definesystemconstant {dtp} -\definesystemconstant {none} - -\definesystemconstant {map} -\definesystemconstant {special} -\definesystemconstant {size} - -\definesystemconstant {depth} -\definesystemconstant {nodepth} +%D Next come some \CONTEXT\ constants, used in the definition of private commands: + +\definesystemconstant {tex} +\definesystemconstant {xml} +\definesystemconstant {lua} + +\definesystemconstant {next} +\definesystemconstant {pickup} +\definesystemconstant {ascii} +\definesystemconstant {default} +\definesystemconstant {unknown} +\definesystemconstant {action} +\definesystemconstant {compare} +\definesystemconstant {do} +\definesystemconstant {dodo} +\definesystemconstant {complex} +\definesystemconstant {simple} +\definesystemconstant {start} +\definesystemconstant {stop} +\definesystemconstant {dummy} +\definesystemconstant {local} +\definesystemconstant {global} +\definesystemconstant {done} +\definesystemconstant {font} +\definesystemconstant {link} +\definesystemconstant {parent} +\definesystemconstant {child} +\definesystemconstant {clone} +\definesystemconstant {section} +\definesystemconstant {handler} +\definesystemconstant {counter} +\definesystemconstant {single} +\definesystemconstant {multi} +\definesystemconstant {indeed} + +\definesystemconstant {hasnumber} +\definesystemconstant {hastitle} +\definesystemconstant {hascaption} +\definesystemconstant {haslevel} + +\definesystemconstant {mkiv} +\definesystemconstant {mkii} + +\definesystemconstant {normal} +\definesystemconstant {bold} +\definesystemconstant {italic} +\definesystemconstant {slanted} + +\definesystemconstant {default} +\definesystemconstant {smallcaps} + +\definesystemconstant {run} + +\definesystemconstant {mode} +\definesystemconstant {setup} +\definesystemconstant {environment} +\definesystemconstant {document} + +%definesystemconstant {fam} +\definesystemconstant {text} +\definesystemconstant {script} +\definesystemconstant {scriptscript} + +\definesystemconstant {lefthyphenmin} +\definesystemconstant {righthyphenmin} +\definesystemconstant {lefthyphenchar} +\definesystemconstant {righthyphenchar} + +%definesystemconstant {skewchar} +%definesystemconstant {hyphenchar} +\definesystemconstant {catcodes} +%definesystemconstant {encoding} +%definesystemconstant {entities} +%definesystemconstant {resource} +%definesystemconstant {mapping} +\definesystemconstant {language} +\definesystemconstant {patterns} +\definesystemconstant {rname} +\definesystemconstant {rscale} +%definesystemconstant {handling} +\definesystemconstant {features} +\definesystemconstant {direction} +\definesystemconstant {fallbacks} +\definesystemconstant {goodies} +\definesystemconstant {designsize} +%definesystemconstant {background} +%definesystemconstant {ucmap} + +%definesystemconstant {property} +%definesystemconstant {overprint} +%definesystemconstant {layer} +\definesystemconstant {effect} % todo s +%definesystemconstant {negative} +%definesystemconstant {color} +%definesystemconstant {transparency} + +\definesystemconstant {black} +\definesystemconstant {white} + +\definesystemconstant {system} % not yet interfaces messages +\definesystemconstant {user} +\definesystemconstant {check} +\definesystemconstant {reset} +\definesystemconstant {set} +\definesystemconstant {empty} + +\definesystemconstant {realpage} +\definesystemconstant {userpage} +\definesystemconstant {subpage} + +\definesystemconstant {page} +\definesystemconstant {subpage} +\definesystemconstant {leftpage} +\definesystemconstant {rightpage} +\definesystemconstant {somewhere} + +\definesystemconstant {userdata} +\definesystemconstant {command} +\definesystemconstant {simple} + +\definesystemconstant {full} +\definesystemconstant {text} +\definesystemconstant {paragraph} +\definesystemconstant {margintext} +\definesystemconstant {line} + +\definesystemconstant {number} +\definesystemconstant {symbol} +\definesystemconstant {format} +\definesystemconstant {data} +\definesystemconstant {float} +\definesystemconstant {extensions} +\definesystemconstant {initializations} + +\definesystemconstant {rgb} +\definesystemconstant {cmyk} +\definesystemconstant {gray} +\definesystemconstant {spot} +\definesystemconstant {all} +\definesystemconstant {dtp} +\definesystemconstant {none} + +\definesystemconstant {map} +\definesystemconstant {special} +\definesystemconstant {size} + +\definesystemconstant {depth} +\definesystemconstant {nodepth} %D Just to be complete we define the standard \TEX\ units. -\definesystemconstant {cm} -\definesystemconstant {em} -\definesystemconstant {ex} -\definesystemconstant {mm} -\definesystemconstant {pt} -\definesystemconstant {sp} -\definesystemconstant {bp} -\definesystemconstant {in} -\definesystemconstant {pc} -\definesystemconstant {dd} -\definesystemconstant {cc} -\definesystemconstant {nd} -\definesystemconstant {nc} - -%D As the name of their define command states, the next set of -%D constants is used in the message macro's. +\definesystemconstant {cm} +\definesystemconstant {em} +\definesystemconstant {ex} +\definesystemconstant {mm} +\definesystemconstant {pt} +\definesystemconstant {sp} +\definesystemconstant {bp} +\definesystemconstant {in} +\definesystemconstant {pc} +\definesystemconstant {dd} +\definesystemconstant {cc} +\definesystemconstant {nd} +\definesystemconstant {nc} + +%D As the name of their define command states, the next set of constants is used in +%D the message macro's. \definemessageconstant {check} \definemessageconstant {colors} @@ -415,9 +412,8 @@ \definemessageconstant {chemicals} \definemessageconstant {publications} -%D When we use numbers and dimensions the same applies as -%D with the keywords like \type{width} and \type{plus} -%D mentioned earlier. +%D When we use numbers and dimensions the same applies as with the keywords like +%D \type {width} and \type {plus} mentioned earlier. \def\!!ten {10} \def\!!twelve {12} @@ -447,31 +443,12 @@ \def\__unknown__ {\string\\//} % unlikely value -%D Variables are composed of a command specific tag and a user -%D supplied variable (system constant). The first tag \type{ag} -%D for instance is available as \type{\??ag} and expands to -%D \type{@@ag} in composed variables. +%D Variables are composed of a command specific tag and a user supplied variable +%D (system constant). The tag \type {du} for instance is available as \type {\??du} +%D and expands to \type {@@du} in composed variables. \definesystemvariable {du} % dummy, will stay -% these will be replaced by namespaces / commandhandlers - -\definesystemvariable {db} % Labels -\definesystemvariable {dd} % DoorDefinieren -\definesystemvariable {id} % Index - -\definesystemvariable {kl} % KoLommen -\definesystemvariable {ks} % KolomSpan -\definesystemvariable {mc} % MultiColumn -\definesystemvariable {mt} % MulTicolumn - -\definesystemvariable {fc} % FramedContent -\definesystemvariable {od} % Omlijnd Defaults (simple) -\definesystemvariable {oi} % OmlijndInstellingen -\definesystemvariable {ol} % OmLijnd - -\definesystemvariable {le} % LinetablE - % bibl: \definesystemvariable {pv} % PublicationVariable @@ -495,17 +472,8 @@ \definesystemvariable {fo} % xml FO (xtag) \definesystemvariable {fx} % FoXet -% still used but defined locally - -\definesystemvariable {ts} % TypeScript - -% obsolete but kept for a while (core-obs) - -\definesystemvariable {fr} % Division - -%D Next we define some language independant one letter -%D variables and keywords. We can actually make these -%D system variables. +%D Next we define some language independant one letter variables and keywords. We can +%D actually make these system variables. \defineinterfaceconstant {x} {x} \defineinterfaceconstant {y} {y} @@ -555,10 +523,9 @@ \def\v!oddeven#1{\ifodd#1\v!odd\else\v!even\fi} -%D The names of files and their extensions are fixed. -%D \CONTEXT\ uses as less files as possible. Utility files can -%D be recognized by the first two characters of the extension: -%D \type{tu}. +%D The names of files and their extensions are fixed. \CONTEXT\ uses as less +%D files as possible. Utility files can be recognized by the first two +%D characters of the extension: \type {tu}. %definefileconstant {utilityfilename} {texutil} %definefileconstant {blockextension} {tub} @@ -572,10 +539,9 @@ %definefileconstant {fontmapextension} {map} \definefileconstant {bibextension} {bbl} -%D These files are loaded at start||up. They may contain system -%D specific setups (or calls to other files), old macro's, to -%D garantee compatibility and new macro's noy yet present in -%D the format. +%D These files are loaded at start||up. They may contain system specific setups (or +%D calls to other files), old macro's, to garantee compatibility and new macro's noy +%D yet present in the format. \definefileconstant {errfilename} {cont-err} \definefileconstant {sysfilename} {cont-sys} @@ -583,9 +549,8 @@ \definefileconstant {locfilename} {cont-loc} \definefileconstant {expfilename} {cont-exp} -%D The setup files for the language, font, color and special -%D subsystems have a common prefix. This means that we have at -%D most three characters for unique filenames. +%D The setup files for the language, font, color and special subsystems have a common +%D prefix. This means that we have at most three characters for unique filenames. \definefileconstant {colorprefix} {colo-} %definefileconstant {encodingprefix} {enco-} @@ -644,20 +609,16 @@ %defineinterfaceconstant {tmp} {tmp} %defineinterfaceconstant {cld} {cld} -%D A careful reader will have noticed that in the module -%D \type{mult-ini} we defined \type{\selectinterface}. We were -%D not yet able to actually select an interface, because we -%D still had to define the constants and variables. Now we've -%D done so, selection is permitted. +%D A careful reader will have noticed that in the module \type {mult-ini} we defined +%D \type {\selectinterface}. We were not yet able to actually select an interface, +%D because we still had to define the constants and variables. Now we've done so, +%D selection is permitted. \selectinterface -%D Ok, here are some more, because we've got ouselves some -%D extensions to \CONTEXT. +%D Ok, here are some more, because we've got ouselves some extensions to \CONTEXT. \definemessageconstant {addresses} \definemessageconstant {documents} -\protect - -\endinput +\protect \endinput diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv index e0be2db13..2803cd518 100644 --- a/tex/context/base/pack-rul.mkiv +++ b/tex/context/base/pack-rul.mkiv @@ -26,6 +26,10 @@ \unprotect +\definesystemvariable {fc} % FramedContent +\definesystemvariable {od} % Omlijnd Defaults (simple) -> check page-bck too +\definesystemvariable {ol} % OmLijnd -> check scrn-fld too + %D \macros %D {linewidth, setuplinewidth} %D diff --git a/tex/context/base/page-mul.mkiv b/tex/context/base/page-mul.mkiv index e22ecd0a3..2d0593884 100644 --- a/tex/context/base/page-mul.mkiv +++ b/tex/context/base/page-mul.mkiv @@ -25,6 +25,9 @@ \unprotect +\definesystemvariable {kl} % KoLommen +\definesystemvariable {ks} % KolomSpan + \unexpanded\def\page_mul_command_side_float_output {\page_otr_construct_and_shipout\unvbox\normalpagebox} diff --git a/tex/context/base/page-set.mkiv b/tex/context/base/page-set.mkiv index 79a2fb211..c74c397e8 100644 --- a/tex/context/base/page-set.mkiv +++ b/tex/context/base/page-set.mkiv @@ -29,6 +29,9 @@ \unprotect +\definesystemvariable {mc} % MultiColumn +\definesystemvariable {mt} % MulTicolumn + \newcount\tofcolumns % total \newcount\lofcolumns % left \newcount\rofcolumns % right diff --git a/tex/context/base/spac-par.mkiv b/tex/context/base/spac-par.mkiv index af032a145..6b7ed4f7d 100644 --- a/tex/context/base/spac-par.mkiv +++ b/tex/context/base/spac-par.mkiv @@ -203,4 +203,11 @@ \fi \glet\flushpostponednodedata\relax} +\unexpanded\def\doflushatpar + {\ifvmode + \expandafter\flushatnextpar + \else + \expandafter\firstofoneargument + \fi} + \protect \endinput diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex ccdffb40f..9108cfcaf 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf Binary files differindex 4c6aa1ef2..f2ba08cc9 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/status-mkiv.lua b/tex/context/base/status-mkiv.lua index d5c2f72eb..9f50a7745 100644 --- a/tex/context/base/status-mkiv.lua +++ b/tex/context/base/status-mkiv.lua @@ -463,8 +463,8 @@ return { { filename = "pack-rul", marktype = "mkiv", - status = "okay", - comment = "namespace to be done", + status = "todo", + comment = "only namespace to be done", }, { filename = "pack-mrl", @@ -673,7 +673,8 @@ return { { filename = "strc-lab", marktype = "mkiv", - status = "todo", + status = "okay", + comment = "needs to be adapted when strc-con/des/enu changes", }, { filename = "core-sys", diff --git a/tex/context/base/strc-con.mkvi b/tex/context/base/strc-con.mkvi index a795b429c..16cc16bbb 100644 --- a/tex/context/base/strc-con.mkvi +++ b/tex/context/base/strc-con.mkvi @@ -68,9 +68,9 @@ % \c!alternative=\v!left, \c!display=\v!yes, - \c!width=7em, - \c!distance=1em, - \c!titledistance=0.5em, + \c!width=7\emwidth, + \c!distance=\emwidth, + \c!titledistance=.5\emwidth, %c!hang=, %c!sample=, \c!margin=\v!no, @@ -152,7 +152,7 @@ \unexpanded\def\strc_constructions_initialize#1% class instance {\edef\currentconstruction{#1}% -\let\currentconstructionlistentry\!!zerocount + \let\currentconstructionlistentry\!!zerocount \expandafter\let\expandafter\currentconstructionmain \csname\??constructionmain \currentconstruction\endcsname \expandafter\let\expandafter\currentconstructionlevel \csname\??constructionlevel\currentconstruction\endcsname \expandafter\let\expandafter\currentconstructionhandler\csname\??constructionclass\currentconstruction\endcsname @@ -165,11 +165,11 @@ \newconditional\c_strc_constructions_number_state \newconditional\c_strc_constructions_title_state -\setvalue{\??constructioninitializer\v!construction}% +\unexpanded\setvalue{\??constructioninitializer\v!construction}% {\setfalse\c_strc_constructions_number_state \setfalse\c_strc_constructions_title_state} -\setvalue{\??constructionfinalizer\v!construction}% +\unexpanded\setvalue{\??constructionfinalizer\v!construction}% {} % We keep the command variant around but rather would move to the @@ -188,10 +188,10 @@ \unexpanded\def\currentconstructionsample {\begstrut \constructionparameter\c!text - \constructionparameter\c!sample + \p_strc_constructions_sample \endstrut} -\setvalue{\??constructionmainhandler\v!construction}#1% +\unexpanded\setvalue{\??constructionmainhandler\v!construction}#1% {\iftrialtypesetting \else \begingroup \currentconstructionsynchronize % reinstated @@ -200,7 +200,7 @@ \endgroup \fi#1} -\setvalue{\??constructiontexthandler\v!construction}% +\unexpanded\setvalue{\??constructiontexthandler\v!construction}% {\begingroup \useconstructionstyleandcolor\c!headstyle\c!headcolor % move to \currentconstructiontext \the\everyconstruction @@ -222,36 +222,54 @@ \def\resetconstructions % to be used in e.g. footnotes {\c_strc_constructions_nested_state\zerocount} -\setvalue{\??constructioncommandhandler\v!construction}% +\unexpanded\setvalue{\??constructioncommandhandler\v!construction}% {\endgroup} -\setvalue{\??constructionstarthandler\v!construction}% this will be redone (reorganized) .. too much boxing +\let\p_strc_constructions_sample \empty +\let\p_strc_constructions_align \empty +\let\p_strc_constructions_indenting \empty +\let\p_strc_constructions_width \empty +\let\p_strc_constructions_aligntitle \empty +\let\p_strc_constructions_renderingsetup\empty +\let\p_strc_constructions_headalign \empty +\let\p_strc_constructions_hang \empty +\let\p_strc_constructions_inbetween \empty +\let\p_strc_constructions_closesymbol \empty + +\unexpanded\setvalue{\??constructionstarthandler\v!construction}% this will be redone (reorganized) .. too much boxing {\dostarttagged\t!construction\currentconstruction \dotagsetconstruction \constructionparameter\c!before \begingroup \edef\currentconstructionalternative{\constructionparameter\c!alternative}% % \checkconstructionalternativeparent % this catches an unknown alternative - \doifnotsetups{\constructionalternativeparameter\c!renderingsetup} + \edef\p_strc_constructions_renderingsetup{\constructionalternativeparameter\c!renderingsetup}% + \doifnotsetups\p_strc_constructions_renderingsetup {\letconstructionparameter\c!alternative\v!left \let\currentconstructionalternative\v!left}% \doadaptleftskip{\constructionparameter\c!margin}% \setlocalhsize % so we can use \localhsize in width assignments \constructionsheaddistance\constructionalternativeparameter\c!distance\relax + \edef\p_strc_constructions_width{\constructionalternativeparameter\c!width}% \ifdim\constructionsheaddistance=\zeropoint - \doif{\constructionalternativeparameter\c!width}\v!broad{\constructionsheaddistance\emwidth}% + \ifx\p_strc_constructions_width\v!broad + \constructionsheaddistance\emwidth + \fi \fi % inefficient and not always needed, for instance not with margins so we will make checkers - % per alternative + % per alternative some day (especially in labels this is unwanted overhead) \setbox\constructionheadbox\hbox {\forgetall \dontcomplain \settrialtypesetting - \doifelsenothing{\constructionparameter\c!sample} - {\csname\??constructionmainhandler\currentconstructionhandler\endcsname\currentconstructiontext}% - {\csname\??constructionmainhandler\currentconstructionhandler\endcsname\currentconstructionsample}}% + \edef\p_strc_constructions_sample{\constructionparameter\c!sample}% + \ifx\p_strc_constructions_sample\empty + \csname\??constructionmainhandler\currentconstructionhandler\endcsname\currentconstructiontext + \else + \csname\??constructionmainhandler\currentconstructionhandler\endcsname\currentconstructionsample + \fi}% \assignwidth - {\constructionalternativeparameter\c!width} + \p_strc_constructions_width \constructionsheadwidth {\unhcopy\constructionheadbox} \constructionsheaddistance @@ -264,15 +282,24 @@ \else \csname\??constructionmainhandler\currentconstructionhandler\endcsname{\boxedconstructionhead\currentconstructiontext}% \fi}% - \doifelse{\constructionparameter\c!aligntitle}\v!no - {\leftconstructionskip \leftskip - \rightconstructionskip\rightskip} - {\ifcase\c_strc_constructions_nested_state - \leftconstructionskip \leftskip - \rightconstructionskip\rightskip - \fi}% - \doifsomething{\constructionparameter\c!align}{\setupalign[\constructionparameter\c!align]}% \use... - \indenting[\constructionparameter\c!indenting]% \use... + \edef\p_strc_constructions_aligntitle{\constructionparameter\c!aligntitle}% + \ifx\p_strc_constructions_aligntitle\v!no + \leftconstructionskip \leftskip + \rightconstructionskip\rightskip + \else + \ifcase\c_strc_constructions_nested_state + \leftconstructionskip \leftskip + \rightconstructionskip\rightskip + \fi + \fi + \edef\p_strc_constructions_align{\constructionparameter\c!align}% + \ifx\p_strc_constructions_align\empty \else + \setupalign[\p_strc_constructions_align]% \use... + \fi + \edef\p_strc_constructions_indenting{\constructionparameter\c!indenting}% + \ifx\p_strc_constructions_indenting\empty \else + \indenting[\p_strc_constructions_indenting]% \use... + \fi \ifcase\c_strc_constructions_nested_state \c_strc_constructions_nested_state\plusone \or @@ -280,15 +307,15 @@ \fi \strc_constructions_close_symbol_reset % - % \doifnotsetups {\constructionalternativeparameter\c!renderingsetup} - % {\let\currentconstructionalternative\v!left}% - \directsetup{\constructionalternativeparameter\c!renderingsetup}\relax + \edef\p_strc_constructions_headalign{\constructionparameter\c!headalign}% + % + \directsetup\p_strc_constructions_renderingsetup\relax % \dostoptagged % tag \dostarttagged\t!constructioncontent\empty \ignorespaces} % args not needed -\setvalue{\??constructionstophandler\v!construction}% +\unexpanded\setvalue{\??constructionstophandler\v!construction}% {\strc_constructions_close_symbol_place \doifnot{\constructionparameter\c!display}\v!no\par \dostoptagged % content @@ -300,10 +327,12 @@ % \endgroup \dorechecknextindentation} -\def\boxedconstructionhead#1% +\unexpanded\def\boxedconstructionhead#1% {\vtop {\hsize\constructionsheadwidth - \doifsomething{\constructionparameter\c!headalign}{\setupalign[\constructionparameter\c!headalign]}% + \ifx\p_strc_constructions_headalign\empty \else + \setupalign[\p_strc_constructions_headalign]% \use... + \fi #1}} \installcorenamespace{constructionalternative} @@ -390,15 +419,14 @@ {\forgetall \dontcomplain \hsize\constructionsheadwidth - \edef\p_headalign{\constructionparameter\c!headalign}% - \ifx\p_headalign\empty + \ifx\p_strc_constructions_headalign\empty \setupalign[#1]% use fast one \else - \setupalign[\p_headalign]% use fast one + \setupalign[\p_strc_constructions_headalign]% use fast one \fi \advance\ifx#1\v!flushleft\rightskip\else\leftskip\fi\constructionsheaddistance % only difference and wrong anyway \ifhbox\constructionheadbox\unhcopy\else\copy\fi\constructionheadbox}% -\setbox\constructionheadbox\hbox{\box\constructionheadbox}% needed in case of e.g. a real big head font, see descriptions-006.tex + \setbox\constructionheadbox\hbox{\box\constructionheadbox}% needed in case of e.g. a real big head font, see descriptions-006.tex \ht\constructionheadbox\strutht \dp\constructionheadbox\strutdp} @@ -407,11 +435,10 @@ {\forgetall \dontcomplain \hsize\constructionsheadwidth - \edef\p_headalign{\constructionparameter\c!headalign}% - \ifx\p_headalign\empty + \ifx\p_strc_constructions_headalign\empty \setupalign[#1]% use fast one \else - \setupalign[\p_headalign]% use fast one + \setupalign[\p_strc_constructions_headalign]% use fast one \fi \ifhbox\constructionheadbox\unhcopy\else\copy\fi\constructionheadbox}% \setbox\constructionheadbox\hbox{\box\constructionheadbox}% needed in case of e.g. a real big head font, see descriptions-006.tex @@ -419,18 +446,18 @@ \dp\constructionheadbox\strutdp} \def\strc_constructions_set_hang#1% - {\edef\p_hang{\constructionparameter\c!hang}% - \ifx\p_hang\empty - \else\ifx\p_hang\v!fit + {\ifx\p_strc_constructions_hang\empty + % nothing + \else\ifx\p_strc_constructions_hang\v!fit \scratchdimen\htdp\constructionheadbox \getnoflines\scratchdimen \hangafter-\noflines - \else\ifx\p_hang\v!broad + \else\ifx\p_strc_constructions_hang\v!broad \scratchdimen\dimexpr\htdp\constructionheadbox+.5\strutht\relax \getnoflines\scratchdimen \hangafter-\noflines \else - \hangafter-\p_hang + \hangafter-\p_strc_constructions_hang \fi\fi\fi \relax \hangindent\ifx#1\v!right-\fi\constructionsheadwidth} @@ -439,18 +466,18 @@ % environment. The wrapping happens elsewhere. \startsetups[\??constructionrenderings:\v!left] - \edef\p_hang{\constructionparameter\c!hang} - \doifsetupselse{\??constructionrenderings:\v!left:\p_hang} { - \directsetup{\??constructionrenderings:\v!left:\p_hang} + \edef\p_strc_constructions_hang{\constructionparameter\c!hang}% + \doifsetupselse{\??constructionrenderings:\v!left:\p_strc_constructions_hang} { + \directsetup{\??constructionrenderings:\v!left:\p_strc_constructions_hang} } { \directsetup{\??constructionrenderings:\v!left:\v!hanging} } \stopsetups \startsetups[\??constructionrenderings:\v!right] - \edef\p_hang{\constructionparameter\c!hang} - \doifsetupselse{\??constructionrenderings:\v!right:\p_hang} { - \directsetup{\??constructionrenderings:\v!right:\p_hang} + \edef\p_strc_constructions_hang{\constructionparameter\c!hang} + \doifsetupselse{\??constructionrenderings:\v!right:\p_strc_constructions_hang} { + \directsetup{\??constructionrenderings:\v!right:\p_strc_constructions_hang} } { \directsetup{\??constructionrenderings:\v!right:\v!hanging} } @@ -460,9 +487,8 @@ \let\\=\crlf \noindent \strc_constructions_set_pure_box\v!flushleft - \leftskip\dimexpr\leftconstructionskip+\constructionsheadwidth\relax - \rightskip\rightconstructionskip - \advance\leftskip\constructionsheaddistance + \leftskip\dimexpr\leftconstructionskip+\constructionsheadwidth+\constructionsheaddistance\relax + \rightskip\rightconstructionskip\relax \llap { \hbox to \leftskip { \hskip\leftconstructionskip @@ -574,10 +600,15 @@ \dohandlepagebreakX\plusone \let\\=\space \noindent - \copy\constructionheadbox\par % copy ? - \nobreak - \doifelsenothing{\constructionparameter\c!inbetween}{\blank}{\constructionparameter\c!inbetween}% + \copy\constructionheadbox % why copy ? + \par \nobreak + \edef\p_strc_constructions_inbetween{\constructionparameter\c!inbetween}% + \ifx\p_strc_constructions_inbetween\empty \else + \p_strc_constructions_inbetween + \par + \nobreak + \fi \useconstructionstyleandcolor\c!style\c!color \ignorespaces \stopsetups @@ -637,9 +668,9 @@ \stopsetups \startsetups[\??constructionrenderings:\v!serried] - \edef\p_width{\constructionparameter\c!width}% CHECK ! ! ! wrong parameter namespace - \doifsetupselse{\??constructionrenderings:\v!serried:\p_width} { - \directsetup{\??constructionrenderings:\v!serried:\p_width} + \edef\p_strc_constructions_width{\constructionparameter\c!width}% CHECK ! ! ! wrong parameter namespace + \doifsetupselse{\??constructionrenderings:\v!serried:\p_strc_constructions_width} { + \directsetup{\??constructionrenderings:\v!serried:\p_strc_constructions_width} } { \directsetup{\??constructionrenderings:\v!serried:\v!wide} } @@ -685,7 +716,7 @@ \noindent \advance\leftskip-\leftskipadaption\relax \ifdim\leftskipadaption=\zeropoint - \leftskipadaption1.5em\relax % just some default + \leftskipadaption1.5\emwidth\relax % just some default \ifnum\c_strc_constructions_nested_state=\plusone \ifdim\leftskip>\zeropoint \relax \leftskipadaption\leftskip @@ -697,7 +728,7 @@ \fi \hskip-\leftskipadaption\relax \ifhbox\constructionheadbox\unhcopy\else\copy\fi\constructionheadbox - \kern\ifdim\constructionsheaddistance=\zeropoint .75em\else\constructionsheaddistance\fi + \kern\ifdim\constructionsheaddistance=\zeropoint .75\emwidth\else\constructionsheaddistance\fi \useconstructionstyleandcolor\c!style\c!color \ignorespaces \stopsetups @@ -729,9 +760,9 @@ \unexpanded\def\strc_constructions_close_symbol_place {\ifconditional\csname\??constructionclosesymbol\currentconstruction\endcsname \global\expandafter\setfalse\csname\??constructionclosesymbol\currentconstruction\endcsname - \edef\p_closesymbol{\constructionparameter\c!closesymbol}% - \ifx\p_closesymbol\empty \else - \constructionparameter\c!closecommand{\p_closesymbol}% hm why {} maybe because box expected + \edef\p_strc_constructions_closesymbol{\constructionparameter\c!closesymbol}% + \ifx\p_strc_constructions_closesymbol\empty \else + \constructionparameter\c!closecommand{\p_strc_constructions_closesymbol}% hm why {} maybe because box expected \fi \fi} diff --git a/tex/context/base/strc-des.mkii b/tex/context/base/strc-des.mkii index 587ef13e7..e699df9ea 100644 --- a/tex/context/base/strc-des.mkii +++ b/tex/context/base/strc-des.mkii @@ -47,7 +47,7 @@ % Op die manier is meer mogelijk en worden \par's geskipt. % % De macro \??dd#1\s!do\c!commando levert de koppeling tussen -% \doornumberen en \doordefinieren. Deze constructie is nodig +% \doornummeren en \doordefinieren. Deze constructie is nodig % omdat doornummeren geen argument heeft en omdat subnummers % niet worden genest binnen het hogere niveau. % diff --git a/tex/context/base/strc-des.mkvi b/tex/context/base/strc-des.mkvi index 129370771..816a89316 100644 --- a/tex/context/base/strc-des.mkvi +++ b/tex/context/base/strc-des.mkvi @@ -33,9 +33,9 @@ %\c!color=, %\c!headcolor=, %\c!titlecolor=, - \c!width=7em, - \c!distance=1em, - \c!titledistance=0.5em, + \c!width=7\emwidth, + \c!distance=\emwidth, + \c!titledistance=.5\emwidth, %\c!hang=, %\c!sample=, %\c!align=, @@ -71,15 +71,17 @@ \setuevalue{\e!stop \currentdescription}{\strc_descriptions_stop}% \to \everydefinedescription -\setvalue{\??constructioninitializer\v!description}% +\let\p_strc_constructions_title \empty + +\unexpanded\setvalue{\??constructioninitializer\v!description}% {\let\currentdescription \currentconstruction \let\constructionparameter \descriptionparameter \let\detokenizedconstructionparameter\detokenizeddescriptionparameter \let\letconstructionparameter \letdescriptionparameter \let\useconstructionstyleandcolor \usedescriptionstyleandcolor \let\setupcurrentconstruction \setupcurrentdescription - \edef\p_title{\constructionparameter\c!title}% - \ifx\p_title\v!yes + \edef\p_strc_constructions_title{\constructionparameter\c!title}% + \ifx\p_strc_constructions_title\v!yes \settrue\c_strc_constructions_title_state \else \setfalse\c_strc_constructions_title_state @@ -227,16 +229,16 @@ \expandafter\let\csname\??constructioncommandhandler\v!description\expandafter\endcsname\csname\??constructioncommandhandler\v!construction\endcsname \expandafter\let\csname\??constructiontexthandler \v!description\expandafter\endcsname\csname\??constructiontexthandler \v!construction\endcsname -\setvalue{\??constructioncommandhandler\v!description}% +\unexpanded\setvalue{\??constructioncommandhandler\v!description}% {\dowithpar {\csname\??constructionstarthandler\v!construction\endcsname}% {\csname\??constructionstophandler \v!construction\endcsname\endgroup}} -\setvalue{\??constructionstarthandler\v!description}% +\unexpanded\setvalue{\??constructionstarthandler\v!description}% {\BeforePar{\csname\??constructionstarthandler\v!construction\endcsname}% \GotoPar} -\setvalue{\??constructionstophandler\v!description}% +\unexpanded\setvalue{\??constructionstophandler\v!description}% {\csname\??constructionstophandler\v!construction\endcsname \endgroup} diff --git a/tex/context/base/strc-enu.mkvi b/tex/context/base/strc-enu.mkvi index e3261fa35..ea5cc0d19 100644 --- a/tex/context/base/strc-enu.mkvi +++ b/tex/context/base/strc-enu.mkvi @@ -85,10 +85,10 @@ %\c!color=, %\c!headcolor=, %\c!titlecolor=, - \c!width=8em, - \c!distance=0pt, -\c!distance=1em, - \c!titledistance=0.5em, + \c!width=8\emwidth, + \c!distance=\zeropoint, + \c!distance=\emwidth, + \c!titledistance=.5\emwidth, %\c!hang=, %\c!sample=, %\c!align=, @@ -175,15 +175,18 @@ \strc_enumerations_setup_counter\currentenumeration \to \everydefineenumeration -\setvalue{\??constructioninitializer\v!enumeration}% +\let\p_strc_constructions_title \empty +\let\p_strc_constructions_number\empty + +\unexpanded\setvalue{\??constructioninitializer\v!enumeration}% {\let\currentenumeration \currentconstruction \let\constructionparameter \enumerationparameter \let\detokenizedconstructionparameter\detokenizedenumerationparameter \let\letconstructionparameter \letenumerationparameter \let\useconstructionstyleandcolor \useenumerationstyleandcolor \let\setupcurrentconstruction \setupcurrentenumeration - \edef\p_number{\constructionparameter\c!number}% - \ifx\p_number\v!yes + \edef\p_strc_constructions_number{\constructionparameter\c!number}% + \ifx\p_strc_constructions_number\v!yes \settrue\c_strc_constructions_number_state \iftrialtypesetting \strc_counters_save\currentconstructionnumber @@ -192,14 +195,14 @@ \else \setfalse\c_strc_constructions_number_state \fi - \edef\p_title{\constructionparameter\c!title}% - \ifx\p_title\v!yes + \edef\p_strc_constructions_title{\constructionparameter\c!title}% + \ifx\p_strc_constructions_title\v!yes \settrue\c_strc_constructions_title_state \else \setfalse\c_strc_constructions_title_state \fi} -\setvalue{\??constructionfinalizer\v!enumeration}% +\unexpanded\setvalue{\??constructionfinalizer\v!enumeration}% {\ifconditional\c_strc_constructions_number_state \iftrialtypesetting \strc_counters_restore\currentconstructionnumber @@ -263,7 +266,7 @@ \expandafter\let\csname\??constructionstarthandler \v!enumeration\expandafter\endcsname\csname\??constructionstarthandler \v!description\endcsname \expandafter\let\csname\??constructionstophandler \v!enumeration\expandafter\endcsname\csname\??constructionstophandler \v!description\endcsname -\setvalue{\??constructiontexthandler\v!enumeration}% +\unexpanded\setvalue{\??constructiontexthandler\v!enumeration}% {\begingroup \useconstructionstyleandcolor\c!headstyle\c!headcolor \strc_enumerations_text diff --git a/tex/context/base/strc-lab.mkiv b/tex/context/base/strc-lab.mkiv index 483791462..0bf65608f 100644 --- a/tex/context/base/strc-lab.mkiv +++ b/tex/context/base/strc-lab.mkiv @@ -15,82 +15,173 @@ \unprotect -% labels, we could share with enumerations and forget about the text; anyhow, figure -% labels etc can use enumerations; we keep labels for compatibility reasons; we need -% the slightly different namespace; we can still define structure counters directly -% (multiple levels) and use an enumeration without following text - -% unfinished ... no longer okay - -\unexpanded\def\setuplabels - {\getparameters[\??db]} - -\unexpanded\def\definelabel - {\dotripleargumentwithset\dodefinelabel} - -\def\dodefinelabel[#1][#2][#3]% #2 or #3 assignment - {\doenumerationinit{#1}{1}\empty - \getparameters[\??dd#1][\c!command=,\c!state=\v!start,\c!location=,\c!text=#1]% - \ifsecondargument\doifassignmentelse{#2}\donetrue\donefalse\else\donetrue\fi - \ifdone - % an independent one - \getparameters[\??dd#1][\s!counter=#1,\s!parent=\??db,#2]% - \dodefinelabelcommands{#1}{\??db}% - \dodefineenumerationcounter{#1}% +%D Labels are implemented somewhat inefficient but have the advantage that they +%D can be controlled like other constructions. Who knows when that comes in +%D handy? + +\installcorenamespace{labels} + +\installcommandhandler \??labels {label} \??labels % plural hash, else clash with label (or rename that one) + +\let\setuplabels\setuplabel + +\setuplabel + [\c!alternative=\v!intext, + \c!headstyle=\v!bold, + \c!titlestyle=\v!bold, + \c!distance=\zeropoint, + \c!width=\v!fit, + \c!titledistance=.5\emwidth, + \c!margin=\v!no, + \c!titleleft=(, + \c!titleright=), + \c!display=\v!no, + \c!titlecommand=, + \c!expansion=\v!no, + \c!way=\v!by\v!text, + \c!prefix=\v!no, + \c!prefixconnector=., + \c!text=\currentlabel, + \c!number=\v!yes, % else description + \c!start=0, + \c!state=\v!start, + \c!levels=3] + +\unexpanded\def\strc_define_commands_label#1#2#3% current level parent + {\doifelsenothing{#3} + {\normalexpanded{\defineconstruction[#1][\s!handler=\v!label,\c!level=#2]}% + \setevalue{\??label#1:\s!parent}{\??label}}% + {\normalexpanded{\defineconstruction[#1][#3][\s!handler=\v!label,\c!level=#2]}% + \setevalue{\??label#1:\s!parent}{\??label#3}}% + \setuevalue{\e!next #1}{\strc_labels_next }% + \setuevalue{\c!reset#1}{\strc_labels_reset }% + %setuevalue{\c!set #1}{\strc_labels_set }% + \setuevalue {#1}{\strc_labels_command{#1}}} + +\appendtoks + \ifx\currentlabelparent\empty + % clone => parent | subclone => clone | subsubclone => subclone + \let\currentlabelsub\empty + \strc_define_commands_label + {\currentlabelsub\currentlabel}% + \plusone + \empty + \edef\p_levels{\labelparameter\c!levels}% + \dostepwiserecurse\plustwo\p_levels\plusone + {\strc_define_commands_label + {\v!sub\currentlabelsub\currentlabel}% + \recurselevel + {\currentlabelsub\currentlabel}% + \edef\currentlabelsub{\v!sub\currentlabelsub}}% \else - \getparameters[\??dd#1][\s!counter=#1,\s!parent=\??dd#2,#3]% - \dodefinelabelcommands{#1}{\??dd#2}% + % clone => parent | subclone => subparent | subsubclone => subsubparent + \let\currentlabelsub\empty + \edef\p_levels{\labelparameter\c!levels}% + \dorecurse\p_levels + {\strc_define_commands_label + {\currentlabelsub\currentlabel}% + \recurselevel + {\currentlabelsub\currentlabelparent}% + \edef\currentlabelsub{\v!sub\currentlabelsub}}% + \fi + \edef\p_counter{\labelparameter\s!counter}% can inherit from parent + \ifx\p_counter\empty % + \let\p_counter\currentlabel + \fi + \doifcounterelse\p_counter\donothing{\strc_labels_define_counter\p_counter}% + \letlabelparameter\s!counter\p_counter + \strc_labels_setup_counter\currentlabel +\to \everydefinelabel + +\let\p_strc_constructions_title \empty +\let\p_strc_constructions_number\empty + +\setvalue{\??constructioninitializer\v!label}% + {\let\currentlabel \currentconstruction + \let\constructionparameter \labelparameter + \let\detokenizedconstructionparameter\detokenizedlabelparameter + \let\letconstructionparameter \letlabelparameter + \let\useconstructionstyleandcolor \uselabelstyleandcolor + \let\setupcurrentconstruction \setupcurrentlabel + % shared with enumerations + \edef\p_strc_constructions_number{\constructionparameter\c!number}% + \ifx\p_strc_constructions_number\v!yes + \settrue\c_strc_constructions_number_state + \iftrialtypesetting + \strc_counters_save\currentconstructionnumber + \fi + \strc_counters_increment_sub\currentconstructionnumber\currentconstructionlevel + \else + \setfalse\c_strc_constructions_number_state + \fi + \edef\p_strc_constructions_title{\constructionparameter\c!title}% + \ifx\p_strc_constructions_title\v!yes + \settrue\c_strc_constructions_title_state + \else + \setfalse\c_strc_constructions_title_state \fi} -\def\dodefinelabelcommands#1#2% - {\setuevalue {#1}{\noexpand\dolabelnumbercommand {#1}}% - \setuevalue{\c!reset #1}{\noexpand\doresetlabelnumber {#1}}% - %\setuevalue{\c!set #1}{\noexpand\dosetlabelnumber {#1}}% [#2] or {#2} ? - \setuevalue{\e!next #1}{\noexpand\donextlabelnumber {#1}}% - \setuevalue{\e!increment#1}{\noexpand\doincrementlabelnumber{#1}}% - \setuevalue{\c!current #1}{\noexpand\docurrentlabelnumber {#1}}} - -% this is just for downward compatibility, we might drop it - -\setvalue{\??db:\c!location:\v!inmargin}{\inmargin} -\setvalue{\??db:\c!location:\v!inleft }{\inleft} -\setvalue{\??db:\c!location:\v!inright }{\inright} -\setvalue{\??db:\c!location:\v!margin }{\inmargin} - -\def\dolabelinit#1% - {\def\currentdescriptionmain{#1}% - \def\currentdescription {#1}% - \def\currentdescriptionlevel{1}} - -\def\docurrentlabelnumber #1{\dolabelinit{#1}\dosingleempty\dodocurrentlabelnumber} -\def\donextlabelnumber #1{\dolabelinit{#1}\dosingleempty\dodonextlabelnumber} -\def\dolabelnumbercommand #1{\dolabelinit{#1}\dosingleempty\dodolabelnumbercommand} - -\def\doresetlabelnumber #1{\dolabelinit{#1}\strc_counters_reset_sub \currentdescriptionnumber\currentdescriptionlevel} -\def\dosetlabelnumber #1#2{\dolabelinit{#1}\strc_counters_set_sub \currentdescriptionnumber\currentdescriptionlevel{#2}} -\def\doincrementlabelnumber #1{\dolabelinit{#1}\strc_counters_increment_sub\currentdescriptionnumber\currentdescriptionlevel} - -\def\dodocurrentlabelnumber[#1]% - {\dontleavehmode - \writestatus{!!!}{todo: reference of label}% - \dotextprefix{\descriptionparameter\c!text}% - \convertedsubcounter[\currentdescriptionnumber][\currentdescriptionlevel]} - -\def\dodonextlabelnumber[#1]% todo: ref - {\strc_counters_increment_sub\currentdescriptionnumber\currentdescriptionlevel - \dodocurrentlabelnumber[\currentdescriptionnumber]} - -\def\dodolabelnumbercommand[#1]% todo: ref - {\dontleavehmode - \descriptionparameter\c!before - \begingroup - \strc_counters_increment_sub\currentdescriptionnumber\currentdescriptionlevel - \usedescriptionstyleandcolor\c!headstyle\c!headcolor - \executeifdefined{\??db:\c!location:\descriptionparameter\c!location}{\descriptionparameter\c!command}{\dodocurrentlabelnumber[#1]}% - \endgroup - \descriptionparameter\c!after} - -\setuplabels - [\s!parent=\??dn] +\setvalue{\??constructionfinalizer\v!label}% + {\ifconditional\c_strc_constructions_number_state + \iftrialtypesetting + \strc_counters_restore\currentconstructionnumber + \fi + \fi} + +%D Interfaces: + +\let\strc_labels_command\strc_descriptions_command +\let\strc_labels_next \strc_enumerations_next +\let\strc_labels_reset \strc_enumerations_reset +%let\strc_labels_set \strc_enumerations_set + +% similar to enumerations + +\newtoks\everysetuplabelcounter + +\let\v_strc_labels_counter_name\empty + +\def\strc_labels_setup_counter#1% + {\edef\v_strc_labels_counter_name{#1}% + \the\everysetuplabelcounter} + +\def\strc_labels_define_counter#1% + {\definecounter[#1]% + \strc_labels_setup_counter{#1}} + +\appendtoks + \strc_counter_setup_using_parameter\v_strc_labels_counter_name\labelparameter +\to \everysetuplabelcounter + +\appendtoks + \strc_labels_setup_counter\currentlabel +\to \everysetuplabel + +% no start stop here + +\expandafter\let\csname\??constructionmainhandler\v!label\expandafter\endcsname\csname\??constructionmainhandler\v!description\endcsname + +\unexpanded\setevalue{\??constructioncommandhandler\v!label}% + {\csname\??constructionstarthandler\v!construction\endcsname + \csname\??constructionstophandler \v!construction\endcsname + \endgroup} + +\unexpanded\setvalue{\??constructiontexthandler\v!label}% + {\begingroup + \useconstructionstyleandcolor\c!headstyle\c!headcolor + \strc_labels_text + \endgroup} + +\let\strc_labels_text\strc_enumerations_text + +% inline variant + +\defineconstructionalternative + [\v!intext] + [\c!renderingsetup=\??constructionrenderings:\v!intext] + +\startsetups[\??constructionrenderings:\v!intext] + \dontleavehmode\box\constructionheadbox +\stopsetups \protect \endinput diff --git a/tex/context/base/strc-not.mkvi b/tex/context/base/strc-not.mkvi index 5ee432761..b5e81fee1 100644 --- a/tex/context/base/strc-not.mkvi +++ b/tex/context/base/strc-not.mkvi @@ -175,23 +175,24 @@ \ifx\p_counter\empty % \let\p_counter\currentnotation \fi -% \doifcounterelse\p_counter\donothing{\strc_enumerations_define_counter\p_counter}% -% \letnotationparameter\s!counter\p_counter -% \strc_enumerations_setup_counter\currentnotation \doifcounterelse\p_counter\donothing{\strc_notes_define_counter\p_counter}% \letnotationparameter\s!counter\p_counter \strc_notes_setup_counter\currentnotation \to \everydefinenotation -\setvalue{\??constructioninitializer\v!notation}% + +\let\p_strc_constructions_title \empty +\let\p_strc_constructions_number\empty + +\unexpanded\setvalue{\??constructioninitializer\v!notation}% {\let\currentnotation \currentconstruction \let\constructionparameter \notationparameter \let\detokenizedconstructionparameter\detokenizednotationparameter \let\letconstructionparameter \letnotationparameter \let\useconstructionstyleandcolor \usenotationstyleandcolor \let\setupcurrentconstruction \setupcurrentnotation - \edef\p_number{\constructionparameter\c!number}% - \ifx\p_number\v!yes + \edef\p_strc_constructions_number{\constructionparameter\c!number}% + \ifx\p_strc_constructions_number\v!yes \settrue\c_strc_constructions_number_state \iftrialtypesetting \strc_counters_save\currentconstructionnumber @@ -200,14 +201,14 @@ \else \setfalse\c_strc_constructions_number_state \fi - \edef\p_title{\constructionparameter\c!title}% - \ifx\p_title\v!yes + \edef\p_strc_constructions_title{\constructionparameter\c!title}% + \ifx\p_strc_constructions_title\v!yes \settrue\c_strc_constructions_title_state \else \setfalse\c_strc_constructions_title_state \fi} -\setvalue{\??constructionfinalizer\v!notation}% +\unexpanded\setvalue{\??constructionfinalizer\v!notation}% {\ifconditional\c_strc_constructions_number_state \iftrialtypesetting \strc_counters_restore\currentconstructionnumber @@ -292,10 +293,10 @@ %D level of indirectness. This way notations don't bark on undefined %D macros when used in combination. -\setvalue{\??constructionnotehandler\v!notation}% +\unexpanded\setvalue{\??constructionnotehandler\v!notation}% {\csname\??constructionnotehandler\currentconstructionhandler:\constructionparameter\c!type\endcsname} -\setvalue{\??constructionnotehandler\v!notation:}% empty case +\unexpanded\setvalue{\??constructionnotehandler\v!notation:}% empty case {[\currentconstructionhandler:\currentconstruction]} %D Here is a simple renderer for notes @@ -419,7 +420,7 @@ \expandafter\let\csname\??constructioncommandhandler\v!notation\expandafter\endcsname\csname\??constructioncommandhandler\v!enumeration \endcsname \expandafter\let\csname\??constructiontexthandler \v!notation\expandafter\endcsname\csname\??constructiontexthandler \v!enumeration \endcsname -\setvalue{\??constructionmainhandler\v!notation}#1% +\unexpanded\setvalue{\??constructionmainhandler\v!notation}#1% {\iftrialtypesetting \else \begingroup \currentconstructionsynchronize @@ -428,7 +429,7 @@ \endgroup \fi#1} -\setvalue{\??constructionnotehandler\v!notation:\v!note}% in the running text +\unexpanded\setvalue{\??constructionnotehandler\v!notation:\v!note}% in the running text {\ifnotesenabled \let\currentnote\currentconstructionmain % do be done elsewhere \iftrialtypesetting @@ -1421,15 +1422,21 @@ {\processcommacommand[\localnoteslist]\strc_notes_local_stop_step \setfalse\inlocalnotes} +\let\p_strc_notes_continue\empty + \def\strc_notes_local_start_step#1% - {\doifnot{\noteparameter\c!continue}\v!yes - {\strc_counters_save{#1}% - \strc_counters_reset{#1}}% + {\p_strc_notes_continue{\noteparameter\c!continue}% + \ifx\p_strc_notes_continue\v!yes \else + \strc_counters_save{#1}% + \strc_counters_reset{#1}% + \fi \ctxlua{structures.notes.save("#1","store")}} \def\strc_notes_local_stop_step#1% - {\doifnot{\noteparameter\c!continue}\v!yes - {\strc_counters_restore{#1}}% + {\p_strc_notes_continue{\noteparameter\c!continue}% + \ifx\p_strc_notes_continue\v!yes \else + \strc_counters_restore{#1}% + \fi \ctxlua{structures.notes.restore("#1")}} \unexpanded\def\placelocalnotes diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv index 7ac21761d..e90de80ec 100644 --- a/tex/context/base/strc-reg.mkiv +++ b/tex/context/base/strc-reg.mkiv @@ -19,12 +19,7 @@ % todo: tag:: becomes rendering % todo: language, character, linked, location - -%D Helper: - -% \def\doflushatpar{\ifvmode\expandafter\dogotopar\else\expandafter\firstofoneargument\fi} - -\def\doflushatpar{\ifvmode\expandafter\flushatnextpar\else\expandafter\firstofoneargument\fi} +% todo: fonts etc at sublevels (already defined) % \starttext % \placeregister[index] @@ -34,9 +29,6 @@ % test \index{aa} test \setregisterentry[index][label=y] test \page test \page test \page test \finishregisterentry[index][label=y,entries=yy] % \stoptext -% In plaats van + kan een & worden gebruikt. Ook kan als -% eerste karakter worden opgegeven wat de scheider is. -% % \index {entry} % \index[key] {entry} % \index[pageclass::] {entry} @@ -46,52 +38,34 @@ % \index[pageclass::] {textclass::entry} % \index[pageclass::key]{textclass::entry} -%D Parameters ... we set up levels so we need a slightly different command handler here .. okay, we -%D can use the childs for that ... but then we need to tweak the name in order to distinguish: -%D register -> register:1 (i.e. prefix) - -\let\currentregister\empty - -% \def\registerparameter#1{\csname\??id\currentregister#1\endcsname} +% tzt variant with n entries, parameters and userdata (altnum) -\def\detokenizedregisterparameter#1{\detokenize\expandafter\expandafter\expandafter{\csname\??id#1\endcsname}} % always root +\installcorenamespace{register} -\def\registerparameter #1{\csname\doregisterparameter{\??id\currentregister}{#1}\endcsname} -\def\registerparameterhash#1{\doregisterparameterhash {\??id\currentregister}#1} +\installcommandhandler\??register {register} \??register -\def\doregisterparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\doregisterparentparameter \csname#1\s!parent\endcsname{#2}\fi} -\def\doregisterparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\doregisterparentparameterhash\csname#1\s!parent\endcsname{#2}\fi} +\let\strc_registers_setup_saved\setupregister -\def\doregisterparentparameter #1#2{\ifx#1\relax\s!empty\else\doregisterparameter #1{#2}\fi} -\def\doregisterparentparameterhash#1#2{\ifx#1\relax \else\doregisterparameterhash#1{#2}\fi} +\unexpanded\def\setupregister + {\dotripleempty\strc_registers_setup} -\def\useregisterstyleandcolor#1#2% style color - {\edef\currentstyleparameter{\registerparameter#1}% - \edef\currentcolorparameter{\registerparameter#2}% - \ifx\currentstyleparameter\empty\else\dousestyleparameter\currentstyleparameter\fi - \ifx\currentcolorparameter\empty\else\dousecolorparameter\currentcolorparameter\fi} - -%D Setup: - -\newtoks\everysetupregister - -\unexpanded\def\setupregisters - {\dotripleempty\dosetupregisters} - -\def\dosetupregisters[#1][#2][#3]% +\def\strc_registers_setup[#1][#2][#3]% {\ifthirdargument - \def\dodosetupregister##1{\getparameters[\??id##1#2][#3]}% - \processcommalist[#1]\dodosetupregister + \def\strc_registers_setup_step##1{\strc_registers_setup_saved[#1:##1][#3]}% + \processcommalist[#2]\strc_registers_setup_step \else\ifsecondargument - \def\dodosetupregister##1{\edef\currentregister{##1}\getparameters[\??id##1][#2]\the\everysetupregister}% - \processcommalist[#1]\dodosetupregister + \strc_registers_setup_saved[#1][#2]% \else - \getparameters[\??id][#1]% + \strc_registers_setup_saved[#1]% \fi\fi} -\let\setupregister\setupregisters +\unexpanded\def\setupregisters + {\dosingleempty\strc_registers_setup_root} + +\def\strc_registers_setup_root[#1]% + {\strc_registers_setup_saved[#1]\relax} -\setupregisters +\setupregister [\c!n=2, \c!balance=\v!yes, % \v!no komt niet zo vaak voor \c!align=\v!flushleft, @@ -102,7 +76,7 @@ \c!compress=\v!no, \c!interaction=\v!pagenumber, \c!alternative=\v!a, - \c!distance=1em, + \c!distance=\emwidth, \c!style=\v!bold, \c!pagestyle=\v!slanted, \c!indicator=\v!yes, @@ -115,7 +89,7 @@ \c!unknownreference=\v!empty, \c!prefix=\v!both, %\c!expansion=, -%\c!xmlsetup=, + %\c!xmlsetup=, \c!pagenumber=\v!yes, \c!pageprefixconnector=\endash, \c!pagesegments=2:2, @@ -125,48 +99,64 @@ \c!numberorder=\v!numbers, % \v!characters \s!language=\currentmainlanguage]% -%D Definition: +% yes or no shared ? -\unexpanded\def\defineregister - {\dodoubleargument\dodefineregister} +\setupregister + [\c!label=, + \c!entries=, + \c!entries:1=, + \c!entries:2=, + \c!entries:3=, + \c!keys:1=, + \c!keys:2=, + \c!keys:3=, + \c!alternative=] -\def\dodefineregister[#1][#2]% #2? - {\setupregister[#1][\s!parent=\??id]% - \ctxlua{structures.registers.define('#1')}% - \presetheadtext[#1=\Word{#1}]% - \setuvalue{#1}{\dodoubleempty\doregister[#1]}% - \setuvalue{\e!see#1}{\dodoubleempty\doseeregister[#1]}% -% \setuvalue{\e!coupled#1}{\dolinkedregister{#1}}% - \setvalue{\e!place#1}{\placeregister[#1]}% - \setvalue{\e!complete#1}{\completeregister[#1]}% - \setvalue{\e!setup#1\e!endsetup}[##1]{\getparameters[\??id#1][##1]}} +%D \starttyping +%D \setupregister[index][1][textcolor=darkred] +%D \setupregister[index][2][textcolor=darkgreen,textstyle=bold] +%D +%D \placeregister[index][n=1] \blank[3*big] +%D +%D test \index{test+one} test \index{test+two} more \index{more} +%D \stoptyping -%D Registering: +\newconditional\c_strc_registers_defining -\newif\ifwritetoregister \writetoregistertrue +\ifdefined\Word \else \unexpanded\def\Word#1{#1} \fi -% tzt variant met n entries, parameters en userdata (altnum) +\appendtoks + \ifconditional\c_strc_registers_defining \else + \settrue\c_strc_registers_defining + \ctxlua{structures.registers.define('\currentregister')}% + \normalexpanded{\presetheadtext[\currentregister=\Word{\currentregister}]}% + \setuevalue{\currentregister}{\dodoubleempty\strc_registers_insert_entry[\currentregister]}% + \setuevalue{\e!see\currentregister}{\dodoubleempty\strc_registers_insert_see[\currentregister]}% + %setuevalue{\e!coupled\currentregister}{\dolinkedregister{\currentregister}}% + \setuevalue{\e!place\currentregister}{\placeregister[\currentregister]}% % historic ballast + \setuevalue{\e!complete\currentregister}{\completeregister[\currentregister]}% % historic ballast + \setuevalue{\e!setup\currentregister\e!endsetup}{\setupregister[\currentregister}% % historic ballast + \normalexpanded{\defineregister[\currentregister:1][\currentregister]}% expansion should not be needed + \normalexpanded{\defineregister[\currentregister:2][\currentregister]}% expansion should not be needed + \normalexpanded{\defineregister[\currentregister:3][\currentregister]}% expansion should not be needed + \setfalse\c_strc_registers_defining + \fi +\to \everydefineregister -\getparameters - [\??id] - [\c!label=, - \c!entries=, - \c!entries:1=,\c!entries:2=,\c!entries:3=, - \c!keys:1=,\c!keys:2=,\c!keys:3=, - \c!alternative=] +%D Registering: -\def\doregisterstructurepageregister +\def\strc_registers_register_page_entry {\iftrialtypesetting \expandafter\gobblethreearguments \else - \expandafter\dodoregisterstructurepageregister + \expandafter\strc_registers_register_page_entry_indeed \fi} -\def\dodoregisterstructurepageregister#1#2#3% register data userdata +\def\strc_registers_register_page_entry_indeed#1#2#3% register data userdata {\begingroup \edef\currentregister{#1}% - %getparameters[\??id][\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]% - \getparameters[\??id][#2]% + %\setupcurrentregister[\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]% + \setupcurrentregister[#2]% \edef\currentregisterlabel {\registerparameter\c!label}% \edef\currentregisterexpansion{\registerparameter\c!expansion}% \edef\currentregisterownnumber{\registerparameter\c!ownnumber}% @@ -245,7 +235,7 @@ section = structures.sections.currentid(), % hm, why then not also lastsection the same way label = "\currentregisterlabel", }, -% \ifx\currentregisterentries\empty \else + % \ifx\currentregisterentries\empty \else entries = { % we need a special one for xml, this is just a single one \ifx\currentregisterentries\empty @@ -259,10 +249,10 @@ \!!bs\currentregisterkeys\!!es, \fi }, -% \fi + % \fi userdata = structures.helpers.touserdata(\!!bs\detokenize{#3}\!!es) } - } }% + }}% \ctxlua{structures.references.setinternalreference(nil,nil,\nextinternalreference)}% \ifx\currentregisterownnumber\v!yes \glet\currentregistersynchronize\relax @@ -275,45 +265,51 @@ \attribute\destinationattribute\lastdestinationattribute \signalcharacter % no \strut as it will be removed during cleanup \endgroup} -\def\doregister[#1][#2]% +\unexpanded\def\strc_registers_insert_entry[#1][#2]% {\def\currentregister{#1}% - \doifelse{\registerparameter\c!ownnumber}\v!yes\dodoregister\donoregister{#1}{#2}} + \doifelse{\registerparameter\c!ownnumber}\v!yes + \strc_registers_insert_entry_yes + \strc_registers_insert_entry_nop + {#2}} -\def\donoregister #1#2#3{\doflushatpar{\doregisterstructurepageregister{#1}{\c!keys={#2},\c!entries={#3}}{}}} -\def\dodoregister#1#2#3#4{\doflushatpar{\doregisterstructurepageregister{#1}{\c!keys={#2},\c!alternative=#3,\c!entries={#4}}{}}} +\def\strc_registers_insert_entry_nop#1#2% + {\doflushatpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!entries={#2}}{}}} -\unexpanded\def\startregister{\doquadrupleempty\dostartregister} -\unexpanded\def\stopregister {\dodoubleargument\dostopregister} +\def\strc_registers_insert_entry_yes#1#2#3% + {\doflushatpar{\strc_registers_register_page_entry\currentregister{\c!keys={#1},\c!alternative=#2,\c!entries={#3}}{}}} + +\unexpanded\def\startregister{\doquadrupleempty\strc_registers_start_entry} +\unexpanded\def\stopregister {\dodoubleargument\strc_registers_stop_entry} % a synonym, so that we can nest with overlap without syntax check problems \let\openregisterrange \startregister \let\closeregisterrange\stopregister -\def\dostartregister[#1][#2][#3][#4]#5% +\def\strc_registers_start_entry[#1][#2][#3][#4]#5% {\iffourthargument % #1=register #2=tag #3=own #4=sortkey #5=entry - \doflushatpar{\doregisterstructurepageregister{#1}{\c!label=#2,\c!alternative=#3,\c!keys={#4},\c!entries={#5}}{}}% + \doflushatpar{\strc_registers_register_page_entry{#1}{\c!label=#2,\c!alternative=#3,\c!keys={#4},\c!entries={#5}}{}}% \else % #1=register #2=tag #3=sortkey #5=entry - \doflushatpar{\doregisterstructurepageregister{#1}{\c!label=#2,\c!keys={#3},\c!entries={#5}}{}}% + \doflushatpar{\strc_registers_register_page_entry{#1}{\c!label=#2,\c!keys={#3},\c!entries={#5}}{}}% \fi} -\def\dostopregister[#1][#2]% +\def\strc_registers_stop_entry[#1][#2]% {\normalexpanded{\ctxlatelua{structures.registers.extend("#1","#2")}}} -\def\setregisterentry {\dotripleempty\dosetregisterentry} -\def\finishregisterentry{\dotripleempty\dofinishregisterentry} +\def\setregisterentry {\dotripleempty\strc_registers_set_entry} +\def\finishregisterentry{\dotripleempty\strc_registers_finish_entry} % not yet document, not sure if this will stay: -\def\dosetregisterentry [#1][#2][#3]{\doflushatpar{\doregisterstructurepageregister{#1}{#2}{#3}}} -\def\dofinishregisterentry[#1][#2][#3]{\dofinishregisterstructurepageregister{#1}{#2}{#3}} +\def\strc_registers_set_entry [#1][#2][#3]{\doflushatpar{\strc_registers_register_page_entry{#1}{#2}{#3}}} +\def\strc_registers_finish_entry[#1][#2][#3]{\strc_registers_finish_entry_indeed{#1}{#2}{#3}} -\def\dofinishregisterstructurepageregister#1#2#3% register data userdata +\def\strc_registers_finish_entry_indeed#1#2#3% register data userdata {\begingroup \edef\currentregister{#1}% - \getparameters[\??id][\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]% + \setupcurrentregister[\c!entries=,\c!label=,\c!keys=,\c!alternative=,#2]% \edef\currentregisterlabel {\registerparameter\c!label}% \edef\currentregisterexpansion{\registerparameter\c!expansion}% \edef\currentregisterownnumber{\registerparameter\c!ownnumber}% @@ -377,29 +373,32 @@ % \placeregister[index][n=1] % \stoptext -\def\setstructurepageregister{\dotripleempty\dosetstructurepageregister} +% some overlap wit previous + +\unexpanded\def\setstructurepageregister + {\dotripleempty\strc_registers_set} -\def\dosetstructurepageregister[#1][#2][#3]% [register][settings][userdata] - {\doflushatpar{\doregisterstructurepageregister{#1}{#2}{#3}}} +\def\strc_registers_set[#1][#2][#3]% [register][settings][userdata] + {\doflushatpar{\strc_registers_register_page_entry{#1}{#2}{#3}}} -\unexpanded\def\startstructurepageregister{\doquadrupleempty\dostartstructurepageregister} -\unexpanded\def\stopstructurepageregister {\dodoubleargument\dostopstructurepageregister} +\unexpanded\def\startstructurepageregister{\doquadrupleempty\strc_registers_start} +\unexpanded\def\stopstructurepageregister {\dodoubleargument\strc_registers_stop} \let\openstructurepageregisterrange \startstructurepageregister \let\closestructurepageregisterrange\stopstructurepageregister -\def\dostartstructurepageregister[#1][#2][#3][#4]% [register][tag][settings][userdata] - {\doflushatpar{\doregisterstructurepageregister{#1}{\c!label=#2,#3}{#4}}} +\def\strc_registers_start[#1][#2][#3][#4]% [register][tag][settings][userdata] + {\doflushatpar{\strc_registers_register_page_entry{#1}{\c!label=#2,#3}{#4}}} -\def\dostopstructurepageregister[#1][#2]% +\def\strc_registers_stop[#1][#2]% {\normalexpanded{\ctxlatelua{structures.registers.extend("#1","#2")}}} % So far. -\def\doseeregister[#1][#2]#3#4% - {\doflushatpar{\doprocessseeregister{#1}{#2}{#3}{#4}}} +\unexpanded\def\strc_registers_insert_see[#1][#2]#3#4% + {\doflushatpar{\strc_registers_insert_see_indeed{#1}{#2}{#3}{#4}}} -\def\doprocessseeregister#1#2#3#4% register key entry seeword +\def\strc_registers_insert_see_indeed#1#2#3#4% register key entry seeword {\begingroup \edef\currentregister{#1}% \edef\currentregisterexpansion{\registerparameter\c!expansion}% @@ -450,9 +449,9 @@ \let\utilityregisterlength\!!zerocount \def\determineregistercharacteristics - {\dodoubleempty\dodetermineregistercharacteristics} + {\dodoubleempty\strc_registers_determine_characteristics} -\def\dodetermineregistercharacteristics[#1][#2]% +\def\strc_registers_determine_characteristics[#1][#2]% {\begingroup \edef\currentregister{#1}% \setupregister[\currentregister][#2]% @@ -476,67 +475,85 @@ \to \everyplaceregister \unexpanded\def\placeregister - {\dodoubleempty\doplaceregister} + {\dodoubleempty\strc_registers_place} -\def\doplaceregister[#1][#2]% +\def\strc_registers_place[#1][#2]% {\iffirstargument \begingroup -% \forgetall + %\forgetall \edef\currentregister{#1}% \setupregister[\currentregister][#2]% \the\everyplaceregister - \startcolumns - [\c!n=\registerparameter\c!n, - \c!balance=\registerparameter\c!balance, - \c!align=\registerparameter\c!align, - \c!tolerance=\registerparameter\c!tolerance]% - \startpacked[\v!blank]% - \ctxlua{structures.registers.process('\currentregister',{ - language = "\registerparameter\s!language", - method = "\registerparameter\c!method", - numberorder = "\registerparameter\c!numberorder", - compress = "\registerparameter\c!compress", - criterium = "\registerparameter\c!criterium", - }, - { -% prefix = "\registerparameter\c!pageprefix", - separatorset = "\registerparameter\c!pageprefixseparatorset", - conversionset = "\registerparameter\c!pageprefixconversionset", - starter = \!!bs\registerparameter\c!pageprefixstarter\!!es, - stopper = \!!bs\registerparameter\c!pageprefixstopper\!!es, - set = "\registerparameter\c!pageprefixset", - segments = "\registerparameter\c!pageprefixsegments", - connector = \!!bs\registerparameter\c!pageprefixconnector\!!es, - }, - { - prefix = "\registerparameter\c!pageprefix", - separatorset = "\registerparameter\c!pageseparatorset", - conversionset = "\registerparameter\c!pageconversionset", - starter = \!!bs\registerparameter\c!pagestarter\!!es, - stopper = \!!bs\registerparameter\c!pagestopper\!!es, - segments = "\registerparameter\c!pagesegments", - } - )}% - \stoppacked - \stopcolumns + \ifnum\registerparameter\c!n>\plusone + \startcolumns + [\c!n=\registerparameter\c!n, + \c!balance=\registerparameter\c!balance, + \c!align=\registerparameter\c!align, + \c!tolerance=\registerparameter\c!tolerance]% + \strc_registers_place_indeed + \stopcolumns + \else + \strc_registers_place_indeed + \fi \endgroup \fi} -\def\dolimitedregisterentry#1{\limitatetext{#1}\currentregistermaxwidth\unknown}% +\def\strc_registers_place_columns + {\startcolumns + [\c!n=\registerparameter\c!n, + \c!balance=\registerparameter\c!balance, + \c!align=\registerparameter\c!align, + \c!tolerance=\registerparameter\c!tolerance]% + \startpacked[\v!blank]% + \strc_registers_place_indeed + \stoppacked + \stopcolumns} + +\def\strc_registers_place_normal + {\startpacked[\v!blank]% + \strc_registers_place_indeed + \stoppacked} + +\def\strc_registers_place_indeed + {\ctxlua{structures.registers.process('\currentregister',{ + language = "\registerparameter\s!language", + method = "\registerparameter\c!method", + numberorder = "\registerparameter\c!numberorder", + compress = "\registerparameter\c!compress", + criterium = "\registerparameter\c!criterium", + },{ + separatorset = "\registerparameter\c!pageprefixseparatorset", + conversionset = "\registerparameter\c!pageprefixconversionset", + starter = \!!bs\registerparameter\c!pageprefixstarter\!!es, + stopper = \!!bs\registerparameter\c!pageprefixstopper\!!es, + set = "\registerparameter\c!pageprefixset", + segments = "\registerparameter\c!pageprefixsegments", + connector = \!!bs\registerparameter\c!pageprefixconnector\!!es, + },{ + prefix = "\registerparameter\c!pageprefix", + separatorset = "\registerparameter\c!pageseparatorset", + conversionset = "\registerparameter\c!pageconversionset", + starter = \!!bs\registerparameter\c!pagestarter\!!es, + stopper = \!!bs\registerparameter\c!pagestopper\!!es, + segments = "\registerparameter\c!pagesegments", + })}} + +\def\strc_registers_limited_entry#1% + {\limitatetext{#1}\currentregistermaxwidth\unknown}% \appendtoks \edef\currentregistermaxwidth{\registerparameter\c!maxwidth}% \ifx\currentregistermaxwidth\empty \let\limitedregisterentry\firstofoneargument \else - \let\limitedregisterentry\dolimitedregisterentry + \let\limitedregisterentry\strc_registers_limited_entry \fi \to \everyplaceregister -\def\completeregister - {\dodoubleempty\docompleteregister} +\unexpanded\def\completeregister + {\dodoubleempty\strc_registers_complete} -\def\docompleteregister[#1][#2]% +\def\strc_registers_complete[#1][#2]% {\iffirstargument \begingroup \edef\currentregister{#1}% @@ -546,7 +563,7 @@ \stopnamedsection \endgroup \fi} - + % test case for collapsing (experimental, for Steffen Wolfrum) % % \starttext @@ -565,37 +582,36 @@ % xxxx \index{xxxx} % todo \index{todo} % \stoptext - + %D Character rendering (sections): +\installcorenamespace{registerindicator} + \def\defaultregistercharacter#1% - {\doifsomething{#1} - {\doifnot{#1}\s!unknown - {\doifelse{\registerparameter\c!indicator}\v!yes - {\doregistercharacter{#1}} - {\noregistercharacter{#1}}}}} - -% \def\doregistercharacter#1% -% {\expandcheckedcsname % why no \executeifdefined -% {\??id:\c!indicator:}% -% {\registerparameter\c!alternative}% -% {a}% -% {#1}} - -\def\doregistercharacter#1% - {\expandcheckedcsname % why no \executeifdefined - {\??id:\c!indicator:}% - {\registerparameter\c!alternative}% - {a}% - {#1}} - -\def\noregistercharacter#1% + {\edef\currentregistercharacter{#1}% + \ifx\currentregistercharacter\empty + % skip + \else\ifx\currentregistercharacter\s!unknown + % skip + \else + \edef\p_indicator{\registerparameter\c!indicator}% + \ifx\p_indicator\v!yes + \strc_registers_place_character_yes + \else + \strc_registers_place_character_nop + \fi + \fi\fi} + +\def\strc_registers_place_character_yes + {\expandcheckedcsname\??registerindicator{\registerparameter\c!alternative}\v!a{\currentregistercharacter}} + +\def\strc_registers_place_character_nop {\registerparameter\c!before \goodbreak} % a = <before> <goodbreak> <character> <par> <after> <nobreak> -\setvalue{\??id:\c!indicator:a}#1% +\setvalue{\??registerindicator a}#1% {\registerparameter\c!before % bugged, why does leftskip gets set: \vskip\lineheight\goodbreak\vskip-\lineheight \begingroup @@ -613,7 +629,7 @@ % b = <goodbreak> <before> <character> <after> <nobreak> -\setvalue{\??id:\c!indicator:b}#1% will be shared with a +\setvalue{\??registerindicator b}#1% will be shared with a {\registerparameter\c!before \begingroup \useregisterstyleandcolor\c!style\c!color @@ -627,9 +643,9 @@ \registerparameter\c!after \nobreak} -\setvalue{\??id:\c!indicator:A}#1{\getvalue{\??id:\c!indicator:a}{\WORD{#1}}} -\setvalue{\??id:\c!indicator:B}#1{\getvalue{\??id:\c!indicator:b}{\WORD{#1}}} - +\setvalue{\??registerindicator A}#1{\getvalue{\??registerindicator a}{\WORD{#1}}} +\setvalue{\??registerindicator B}#1{\getvalue{\??registerindicator b}{\WORD{#1}}} + %D The following macros are the interface to the rendering. These are %D generated by \LUA. This might change. @@ -637,9 +653,13 @@ %D placeindex as then flushing takes place inside the index. Took me hours %D to notice that. +\newconditional\c_strc_registers_page_done +\newdimen \d_strc_registers_distance + \unexpanded\def\startregisteroutput {\endgraf \begingroup + \d_strc_registers_distance\registerparameter\c!distance\relax \dostarttagged\t!register\currentregister \forgeteverypar \forgetparindent @@ -654,9 +674,13 @@ {\endgraf \begingroup \dostarttagged\t!registerentries\empty + \let\savedcurrentregister\currentregister + \edef\currentregister{\currentregister:#1}% \useregisterstyleandcolor\c!textstyle\c!textcolor - \advance\leftskip\numexpr#1-1\relax\dimexpr\registerparameter\c!distance\relax - \hangindent\registerparameter\c!distance\hangafter\plusone} + \advance\leftskip\numexpr#1-\plusone\relax\dimexpr\d_strc_registers_distance\relax + \hangindent\registerparameter\c!distance\relax + \hangafter\plusone + \let\currentregister\savedcurrentregister} \unexpanded\def\stopregisterentries {\endgraf @@ -673,12 +697,10 @@ {\dostoptagged \endgraf} -\newconditional\registerpagedone - \unexpanded\def\startregisterpages {\begingroup \dostarttagged\t!registerpages\empty - \setfalse\registerpagedone + \setfalse\c_strc_registers_page_done \useregisterstyleandcolor\c!pagestyle\c!pagecolor} \unexpanded\def\stopregisterpages @@ -688,7 +710,7 @@ \unexpanded\def\startregisterseewords {\ifhmode\crlf\fi \begingroup - \setfalse\registerpagedone + \setfalse\c_strc_registers_page_done \dostarttagged\t!registerpage\empty \useregisterstyleandcolor\c!pagestyle\c!pagecolor} @@ -696,15 +718,16 @@ {\dostoptagged \endgroup} -\def\registerpageseparator% todo: , configurable - {\ifconditional\registerpagedone +\unexpanded\def\registerpageseparator% todo: , configurable + {\ifconditional\c_strc_registers_page_done \registerpageseparatorsymbol \else - \hskip\registerparameter\c!distance\relax - \settrue\registerpagedone + \hskip\d_strc_registers_distance\relax + \settrue\c_strc_registers_page_done \fi} -\def\registeronepagerangeseparator{|\endash|} +\unexpanded\def\registeronepagerangeseparator + {|\endash|} \def\withregisterpagecommand#1#2#3#4% {\def\currentregisterpageindex{#2}% @@ -714,13 +737,13 @@ \applyprocessor{#1}{\registerparameter\c!pagecommand{#4}}% \fi} -\def\registeronepage#1#2#3#4% #1:processor content +\unexpanded\def\registeronepage#1#2#3#4% #1:processor content {\registerpageseparator \dostarttagged\t!registerpage\empty \withregisterpagecommand{#1}{#2}{#3}{#4}% \dostoptagged} -\def\registerpagerange#1#2#3#4#5#6#7% #1:processor content, content todo: -- configurable +\unexpanded\def\registerpagerange#1#2#3#4#5#6#7% #1:processor content, content todo: -- configurable {\registerpageseparator \dostarttagged\t!registerpagerange\empty \dostarttagged\t!registerfrompage\empty @@ -732,7 +755,7 @@ \dostoptagged \dostoptagged} -\def\doapplyregisterentrycommand#1#2% processor text +\unexpanded\def\doapplyregisterentrycommand#1#2% processor text {\dostarttagged\t!registerentry\empty \ifx\currentregisterseeindex\empty \else \dontleavehmode @@ -741,7 +764,7 @@ \applyprocessor{#1}{\registerparameter\c!textcommand{\limitedregisterentry{\registerparameter\c!deeptextcommand{#2}}}}% \dostoptagged} -\def\defaultregisterentry#1#2#3#4% #1:processor #2:internal #3:seeindex #4:word +\unexpanded\def\defaultregisterentry#1#2#3#4% #1:processor #2:internal #3:seeindex #4:word {\def\currentregisterpageindex{#2}% \iflocation \def\currentregisterseeindex{#3}% @@ -761,11 +784,11 @@ \goto{\applyprocessor{#1}{#2}}[seeindex:\currentregisterseeindex]% \fi} -\def\defaultregisterseeword#1#2#3#4#5#6% i n #3:processor #4:internal #5:seeindex #6:word +\unexpanded\def\defaultregisterseeword#1#2#3#4#5#6% i n #3:processor #4:internal #5:seeindex #6:word {%\registerpageseparator \def\currentregisterpageindex{#4}% \dostarttagged\t!registersee\empty - \settrue\registerpagedone + \settrue\c_strc_registers_page_done \iflocation \def\currentregisterseeindex{#5}% \else @@ -805,41 +828,44 @@ % not yet ok : new internal handler names -\def\registerpagebuttonsymbol{\vrule\!!width1em\!!height1ex\!!depth\zeropoint\relax} +\unexpanded\def\registerpagebuttonsymbol + {\vrule\!!width1em\!!height1ex\!!depth\zeropoint\relax} + +\installcorenamespace{registersymbol} -\setvalue{\??id:\c!symbol:\c!n}% +\setvalue{\??registersymbol n}% {\def\registerpageseparatorsymbol{, }} -\setvalue{\??id:\c!symbol:\c!a}% +\setvalue{\??registersymbol a}% {\def\registerpageseparatorsymbol{, }} % now done via conversion -\setvalue{\??id:\c!symbol:\v!none}% +\setvalue{\??registersymbol\v!none}% {\let\registerpageseparatorsymbol\empty \let\registeronepage \gobblefourarguments \let\registerpagerange \gobblesevenarguments} -\setvalue{\??id:\c!symbol:1}% +\setvalue{\??registersymbol 1}% {\let\registerpageseparatorsymbol\space - \def\registeronepage {\symbol[1]\gobblefourarguments}% - \def\registerpagerange {\symbol[1]\gobblesevenarguments}} + \def\registeronepage {\symbol[1]\gobblefourarguments}% + \def\registerpagerange{\symbol[1]\gobblesevenarguments}} -\setvalue{\??id:\c!symbol:2}% +\setvalue{\??registersymbol 2}% {\let\registerpageseparatorsymbol\space - \def\registeronepage {\registerpagebuttonsymbol\gobblefourarguments}% - \def\registerpagerange {\registerpagebuttonsymbol\gobblesevenarguments}} + \def\registeronepage {\registerpagebuttonsymbol\gobblefourarguments}% + \def\registerpagerange{\registerpagebuttonsymbol\gobblesevenarguments}} \def\setregisterpagerendering {\doifelse{\registerparameter\c!pagenumber}\v!no {\let \currentregisterpagesymbol\v!none} {\edef\currentregisterpagesymbol{\registerparameter\c!symbol}}% \ifx\currentregisterpagesymbol\empty - \csname\??id:\c!symbol:\c!n\endcsname - \else\ifcsname\??id:\c!symbol:\currentregisterpagesymbol\endcsname - \csname\??id:\c!symbol:\currentregisterpagesymbol\endcsname + \csname\??registersymbol n\endcsname + \else\ifcsname\??registersymbol\currentregisterpagesymbol\endcsname + \csname\??registersymbol\currentregisterpagesymbol\endcsname \else \let\registerpageseparatorsymbol\space - \def\registeronepage {\registerparameter\c!symbol\gobblefourarguments}% - \def\registerpagerange {\registerparameter\c!symbol\gobblesevenarguments}% + \def\registeronepage{\registerparameter\c!symbol\gobblefourarguments}% + \def\registerpagerange{\registerparameter\c!symbol\gobblesevenarguments}% \fi\fi} \appendtoks @@ -853,6 +879,6 @@ \defineregister [\v!index] - [\v!indices] +% [\v!indices] \protect \endinput diff --git a/tex/context/base/supp-mat.mkiv b/tex/context/base/supp-mat.mkiv index 0c2402671..d07560d9c 100644 --- a/tex/context/base/supp-mat.mkiv +++ b/tex/context/base/supp-mat.mkiv @@ -192,25 +192,47 @@ % \ht\scratchbox-\scratchdimen % \box\scratchbox} -\def\math_cramped#1#2% +% mkii: +% +% \def\math_cramped#1#2% +% {\begingroup % added HH, made even more cramped +% \setbox\scratchbox\hbox +% {\nulldelimiterspace\zeropoint +% \normalstartimath\mathsurround\zeropoint#1\radical\zerocount{#2}\normalstopimath}% +% \ht\scratchbox-\dimexpr +% \ifx#1\displaystyle +% \fontdimen\pluseight\textfont\plusthree +% +.25\fontdimen\plusfive\textfont\plustwo +% \else +% 1.25\fontdimen\pluseight +% \ifx#1\textstyle +% \textfont +% \else\ifx#1\scriptstyle +% \scriptfont +% \else +% \scriptscriptfont +% \fi \fi +% \plusthree +% \fi +% -\ht\scratchbox +% \relax +% \box\scratchbox +% \endgroup} + +\def\math_cramped#1#2% we have all in one family {\begingroup % added HH, made even more cramped \setbox\scratchbox\hbox {\nulldelimiterspace\zeropoint \normalstartimath\mathsurround\zeropoint#1\radical\zerocount{#2}\normalstopimath}% \ht\scratchbox-\dimexpr \ifx#1\displaystyle - \fontdimen8\textfont3 - +.25\fontdimen5\textfont2 + \fontdimen\pluseight\textfont\plusone + + .25\fontdimen\plusfive \textfont\plusone \else - 1.25\fontdimen8 - \ifx#1\textstyle - \textfont - \else\ifx#1\scriptstyle - \scriptfont - \else - \scriptscriptfont - \fi \fi - \plusthree + 1.25\fontdimen\pluseight + \ifx#1\textstyle \textfont \else + \ifx#1\scriptstyle\scriptfont \else + \scriptscriptfont\fi\fi \plusone \fi -\ht\scratchbox \relax diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index 0de742bd3..fb8d68d17 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -2446,7 +2446,7 @@ {\syst_helpers_seventuple_empty_four_yes#1{#2}{#3}{#4}}% {\syst_helpers_seventuple_empty_four_nop#1{#2}{#3}{#4}}} -\def\syst_helpers_seventupleempty_four_yes#1#2#3#4[#5]% +\def\syst_helpers_seventuple_empty_four_yes#1#2#3#4[#5]% {\fourthargumenttrue \doifnextoptionalelse {\syst_helpers_seventuple_empty_five_yes#1{#2}{#3}{#4}{#5}}% @@ -3332,7 +3332,8 @@ {\csname\??recurseaction\recursedepth\endcsname} \unexpanded\def\syst_helpers_stepwise_recurse_yes - {\syst_helpers_recurse_content\syst_helpers_stepwise_recurse} + {\syst_helpers_recurse_content + \syst_helpers_stepwise_recurse} \unexpanded\def\syst_helpers_stepwise_reverse#1#2#3% from to step {\ifnum#1<#2\relax @@ -3345,7 +3346,8 @@ \fi\expandafter{\the\innerrecurse}{#2}{#3}} \unexpanded\def\syst_helpers_stepwise_reverse_yes - {\syst_helpers_recurse_content\syst_helpers_stepwise_reverse} + {\syst_helpers_recurse_content + \syst_helpers_stepwise_reverse} \unexpanded\def\syst_helpers_stepwise_exit {\syst_helpers_stepwise_recurse_nop\relax} @@ -3354,14 +3356,14 @@ {\expandafter\let\expandafter\recurselevel\csname\??recurseindex\recursedepth\endcsname \global\advance\outerrecurse\minusone} -\unexpanded\def\nonostepwiserecurse#1#2#3% - {\expandafter\let\expandafter\recurselevel\csname\??recurseindex\recursedepth\endcsname - \global\advance\outerrecurse\minusone} +% \unexpanded\def\nonostepwiserecurse#1#2#3% +% {\expandafter\let\expandafter\recurselevel\csname\??recurseindex\recursedepth\endcsname +% \global\advance\outerrecurse\minusone} \unexpanded\def\dorecurse#1% {\dostepwiserecurse\plusone{#1}\plusone} -\def\doexpandedrecurse#1#2% +\def\doexpandedrecurse#1#2% user macro {\ifnum#1>\zerocount #2\expandafter\doexpandedrecurse\expandafter{\the\numexpr#1-1\relax}{#2}% \fi} @@ -3426,7 +3428,8 @@ \fi\expandafter{\the\innerrecurse}{#2}} \unexpanded\def\syst_helpers_recurse_indeed_yes - {\syst_helpers_recurse_content\syst_helpers_recurse_indeed} + {\syst_helpers_recurse_content + \syst_helpers_recurse_indeed} \unexpanded\def\syst_helpers_recurse_indeed_nop#1#2#3% {\expandafter\let\expandafter\recurselevel\csname\??recurseindex\recursedepth\endcsname @@ -3464,7 +3467,8 @@ \expandafter\syst_helpers_loop_yes\expandafter{\the\numexpr\recurselevel+\plusone\relax}} \unexpanded\def\syst_helpers_loop_yes - {\syst_helpers_recurse_content\endofloop} + {\syst_helpers_recurse_content + \endofloop} \unexpanded\def\syst_helpers_loop_nop#1% {\let\endofloop\syst_helpers_loop % new, permits nested \doloop's @@ -3565,21 +3569,40 @@ % faster +% \unexpanded\def\dostepwiserecurse#1#2#3#4% can be made faster by postponing #4 +% {\global\advance\outerrecurse \plusone +% \global\expandafter\def\csname\??recurseaction\recursedepth\endcsname##1##2{#4}% +% \global\expandafter\let\csname\??recurseindex\recursedepth\endcsname\recurselevel +% \csname @swr% +% \ifnum#3>\zerocount +% \ifnum#2<#1\else d\fi +% \else\ifnum#3<\zerocount +% \ifnum#1<#2\else r\fi +% \fi\fi +% \expandafter\endcsname\normalexpanded{{\number#1}{\number#2}{\number#3}}} + +% \let\@swr \syst_helpers_stepwise_exit +% \let\@swrd\syst_helpers_stepwise_recurse +% \let\@swrr\syst_helpers_stepwise_reverse + +\installsystemnamespace{recursestepwise} + \unexpanded\def\dostepwiserecurse#1#2#3#4% can be made faster by postponing #4 {\global\advance\outerrecurse \plusone \global\expandafter\def\csname\??recurseaction\recursedepth\endcsname##1##2{#4}% \global\expandafter\let\csname\??recurseindex\recursedepth\endcsname\recurselevel - \csname @swr% + \csname\??recursestepwise \ifnum#3>\zerocount \ifnum#2<#1\else d\fi \else\ifnum#3<\zerocount \ifnum#1<#2\else r\fi \fi\fi \expandafter\endcsname\normalexpanded{{\number#1}{\number#2}{\number#3}}} + % \expandafter\endcsname\expandafter{\number#1\expandafter}\expandafter{\number#2\expandafter}\expandafter{\number#3}} -\let\@swr \syst_helpers_stepwise_exit -\let\@swrd\syst_helpers_stepwise_recurse -\let\@swrr\syst_helpers_stepwise_reverse +\letvalue{\??recursestepwise }\syst_helpers_stepwise_exit +\letvalue{\??recursestepwise d}\syst_helpers_stepwise_recurse +\letvalue{\??recursestepwise r}\syst_helpers_stepwise_reverse % quite okay too, but untested % diff --git a/tex/context/base/tabl-ltb.mkiv b/tex/context/base/tabl-ltb.mkiv index 542d256f2..b126883c6 100644 --- a/tex/context/base/tabl-ltb.mkiv +++ b/tex/context/base/tabl-ltb.mkiv @@ -63,6 +63,8 @@ \newconstant\linetableheadstate \newconstant\linetablemode +\definesystemvariable {le} % LinetablE + \edef\??ler{\??le:r:} \edef\??lec{\??le:c:} \edef\??lew{\??le:w:} diff --git a/tex/context/base/type-ini.mkvi b/tex/context/base/type-ini.mkvi index 8ca42854f..f41c392d1 100644 --- a/tex/context/base/type-ini.mkvi +++ b/tex/context/base/type-ini.mkvi @@ -27,6 +27,8 @@ \unprotect +\definesystemvariable {ts} % TypeScript / for the moment we keep this one + \newcount \c_font_typescripts_n_of_preloaded \newconditional\c_font_typescripts_quit \newtoks \c_font_typescripts_document diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 27df15a41..f90596a98 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 07/04/12 15:55:06 +-- merge date : 07/04/12 23:48:37 do -- begin closure to overcome local limits and interference |