diff options
28 files changed, 205 insertions, 241 deletions
diff --git a/tex/context/base/bibl-tra.mkiv b/tex/context/base/bibl-tra.mkiv index 7cef23d88..d4cb71166 100644 --- a/tex/context/base/bibl-tra.mkiv +++ b/tex/context/base/bibl-tra.mkiv @@ -1244,7 +1244,7 @@ %D \type{\ixbibauthoryearref} stores the data in the macros %D \type{\currentbibauthor} and \type{\currentbibyear}. -\def\ifbibinteractionelse +\def\doifbibinteractionelse {\iflocation \edef\test{\bibalternative\c!interaction}% \ifx\test\v!stop @@ -1256,20 +1256,11 @@ \@EA\secondoftwoarguments \fi} -\def\ifbibinteractionelse - {\iflocation - \doifelse{\bibalternative\c!interaction}\v!stop - {\@EA\secondoftwoarguments} - {\@EA\firstoftwoarguments}% - \else - \@EA\secondoftwoarguments - \fi} - \def\bibmaybeinteractive#1#2% {\ifbibcitecompress #2% \else - \ifbibinteractionelse{\gotobiblink{#2}[#1]}{#2}% + \doifbibinteractionelse{\gotobiblink{#2}[#1]}{#2}% \fi} \def\bibauthoryearref[#1]% @@ -1360,7 +1351,7 @@ \gotobiblink{#1}[#1]} \def\bibgotoDOI#1#2% - {\ifbibinteractionelse + {\doifbibinteractionelse {\useURL[bibfooDoi#1][#2]% \useURL[bibfoo#1][http://dx.doi.org/#2]% \goto{\url[bibfooDoi#1]}[url(bibfoo#1)]} @@ -1383,7 +1374,7 @@ \bibalternative\v!right} \def\bibgotoURL#1#2% - {\ifbibinteractionelse + {\doifbibinteractionelse {\useURL[bibfoo#1][#2]\goto{\url[bibfoo#1]}[url(bibfoo#1)]} {\hyphenatedurl{#2}}} @@ -1411,7 +1402,7 @@ \def\dobibpageref#1% {\bibinsertrefsep - \ifbibinteractionelse + \doifbibinteractionelse {\atbiblink[#1]} {{\referencingfalse\at[#1]}}} @@ -1500,4 +1491,6 @@ % \appendtoks \preloadbiblist \to \everysetuppublications % \appendtoks \preloadbiblist \to \everystarttext +\let\ifbibinteractionelse\doifbibinteractionelse + \protect \endinput diff --git a/tex/context/base/buff-ver.mkiv b/tex/context/base/buff-ver.mkiv index 0e6a5e215..d1385ebd2 100644 --- a/tex/context/base/buff-ver.mkiv +++ b/tex/context/base/buff-ver.mkiv @@ -73,7 +73,7 @@ \let\buff_verbatim_set_line_margin\relax \def\buff_verbatim_set_line_margin_indeed - {\hskip\doifoddpageelse\typingparameter\c!oddmargin\else\typingparameter\c!evenmargin\fi\relax} + {\hskip\doifoddpageelse{\typingparameter\c!oddmargin}{\typingparameter\c!evenmargin}\relax} \def\buff_verbatim_check_margins {\scratchskip\typingparameter\c!oddmargin\relax diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index 28568dd86..30a3c8e89 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.06 22:37} +\newcontextversion{2012.07.07 15:04} %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 632277752..21e02edbc 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.06 22:37} +\newcontextversion{2012.07.07 15:04} %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 145d5f6e0..3af0ed139 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 28cc385d7..dbedf4088 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 b9ded1ad0..f1593a6fa 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.06 22:37} +\edef\contextversion{2012.07.07 15:04} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index b30482616..5a5d889ad 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.06 22:37} +\edef\contextversion{2012.07.07 15:04} %D For those who want to use this: diff --git a/tex/context/base/math-def.mkiv b/tex/context/base/math-def.mkiv index 1c602187f..3dac9a96b 100644 --- a/tex/context/base/math-def.mkiv +++ b/tex/context/base/math-def.mkiv @@ -167,7 +167,8 @@ \unexpanded\def\implies {\mathrel{\;\Longrightarrow\;}} \unexpanded\def\impliedby{\mathrel{\;\Longleftarrow\;}} \unexpanded\def\And {\mathrel{\;\internalAnd\;}} -\unexpanded\def\iff {\;\Longleftrightarrow\;} +%unexpanded\def\iff {\;\Longleftrightarrow\;} +\setuvalue {iff}{\;\Longleftrightarrow\;} % nicer for if checker % todo: virtual in math-vfu diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv index ecc55d565..33b3c0ce9 100644 --- a/tex/context/base/pack-rul.mkiv +++ b/tex/context/base/pack-rul.mkiv @@ -283,11 +283,9 @@ {\edef\p_framed_frameradius{\framedparameter\c!frameradius}% \ifzeropt\dimexpr\p_framed_frameradius\relax % just in case of .x\bodyfontsize \pack_framed_stroked_box_normal - \else - \ifx\p_framed_frame\v!on - \pack_framed_stroked_box_round - \fi - \fi} + \else\ifx\p_framed_frame\v!on + \pack_framed_stroked_box_round + \fi\fi} % \pack_framed_stroked_box_normal % later @@ -863,8 +861,7 @@ \d_framed_linewidth\p_framed_rulethickness\relax \fi \pack_framed_add_outline % real or invisible frame - \fi \fi - \fi + \fi\fi \ifx\p_framed_background\empty \else \edef\p_framed_backgroundoffset{\framedparameter\c!backgroundoffset}% \d_framed_backgroundoffset @@ -901,7 +898,7 @@ \d_framed_linewidth\p_framed_rulethickness\relax \fi \pack_framed_add_outline % real or invisible frame - \fi \fi + \fi\fi \ifx\p_framed_background\empty \else \edef\p_framed_backgroundoffset{\framedparameter\c!backgroundoffset}% \d_framed_backgroundoffset diff --git a/tex/context/base/page-bck.mkiv b/tex/context/base/page-bck.mkiv index 2320e4e0a..cc4db92fb 100644 --- a/tex/context/base/page-bck.mkiv +++ b/tex/context/base/page-bck.mkiv @@ -19,6 +19,8 @@ \unprotect +% maybe use \currentframedhash here + %D For special purposes, users can question the \type {*background} mode. This mode %D is only available when typesetting the pagebody. %D @@ -138,9 +140,6 @@ {\edef\currentotrbackground{\??layoutbackgrounds#1}% \page_backgrounds_check_background} -\def\ifsomebackgroundfound#1% - {\ifcsname\??layoutbackgrounds#1\endcsname} - \def\doifsomebackgroundelse#1% {\ifcsname\??layoutbackgrounds#1\endcsname \expandafter\firstoftwoarguments diff --git a/tex/context/base/page-plg.mkiv b/tex/context/base/page-plg.mkiv index ec61da1d2..b59a05a94 100644 --- a/tex/context/base/page-plg.mkiv +++ b/tex/context/base/page-plg.mkiv @@ -179,21 +179,22 @@ \def\page_area_indeed#1#2#3% {\setbox\b_page_area\vbox{\getspecificlayouttext{#1}{#2}{#3}}% - \ifsomebackgroundfound{#1#2}% - \iftrialtypesetting - \fakebox\b_page_area - \else - % todo: \localbackgroundframed{\??layoutbackgrounds#1#2}{#1:#2} - \localframed % todo: - [\??layoutbackgrounds#1#2] - [\c!width=\wd\b_page_area, - \c!height=\ht\b_page_area, - \c!offset=\v!overlay] - {\box\b_page_area}% - \fi + \iftrialtypesetting + \fakebox\b_page_area + \else\ifcsname\??layoutbackgrounds#1#2\endcsname + \page_area_indeed_yes{#1}{#2}% \else \box\b_page_area - \fi} + \fi\fi} + +\def\page_area_indeed_yes#1#2% + {% todo: \localbackgroundframed{\??layoutbackgrounds#1#2}{#1:#2} + \localframed % todo: + [\??layoutbackgrounds#1#2] + [\c!width=\wd\b_page_area, + \c!height=\ht\b_page_area, + \c!offset=\v!overlay] + {\box\b_page_area}} % to be done nicely (proper namespacing) diff --git a/tex/context/base/page-sel.mkvi b/tex/context/base/page-sel.mkvi index 3d0771b48..da96bbb0f 100644 --- a/tex/context/base/page-sel.mkvi +++ b/tex/context/base/page-sel.mkvi @@ -104,7 +104,7 @@ \def\page_selectors_filter_step#step% {\dowithrange{#step}\page_selectors_filter_step_indeed}% \processcommacommand[\p_selection]\page_selectors_filter_step - \fi + \fi\fi \egroup} \def\page_selectors_filter_a_page#filename#page% diff --git a/tex/context/base/page-sid.mkiv b/tex/context/base/page-sid.mkiv index b84857601..029824597 100644 --- a/tex/context/base/page-sid.mkiv +++ b/tex/context/base/page-sid.mkiv @@ -631,9 +631,6 @@ \let\page_sides_check_floats\page_sides_check_floats_indeed -\def\iffirstsidefloatparagraph - {\ifcase\c_page_sides_checks_done\or} - \unexpanded\def\page_sides_check_floats_set {\scratchdimen\dimexpr\d_page_sides_progress+\strutht-\roundingeps\relax \c_page_sides_n_of_hang\scratchdimen diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv index b69612e6c..4ffdeaf85 100644 --- a/tex/context/base/spac-ver.mkiv +++ b/tex/context/base/spac-ver.mkiv @@ -181,12 +181,12 @@ \localinterlinespacefalse} \unexpanded\def\dosetupcheckedinterlinespace#1% often a chain - {\edef\askedinterlinespace{#1}% - \ifx\askedinterlinespace\empty + {\edef\p_spac_checked_interlinespace{#1}% + \ifx\p_spac_checked_interlinespace\empty \spac_linespacing_synchronize_local - \else\ifcsname\namedinterlinespacehash\askedinterlinespace\s!parent\endcsname % we could have a \s!check + \else\ifcsname\namedinterlinespacehash\p_spac_checked_interlinespace\s!parent\endcsname % we could have a \s!check \pushmacro\currentinterlinespace - \let\currentinterlinespace\askedinterlinespace + \let\currentinterlinespace\p_spac_checked_interlinespace \spac_linespacing_setup_specified_interline_space % \dosetupspecifiedinterlinespaceindeed \iflocalinterlinespace \the\everysetuplocalinterlinespace @@ -197,8 +197,8 @@ \fi \popmacro\currentinterlinespace \else - \normalexpanded{\noexpand\doifassignmentelse{\askedinterlinespace}% - \setupspecifiedinterlinespace\setuprelativeinterlinespace[\askedinterlinespace]}% + \normalexpanded{\noexpand\doifassignmentelse{\p_spac_checked_interlinespace}% + \setupspecifiedinterlinespace\setuprelativeinterlinespace[\p_spac_checked_interlinespace]}% \iflocalinterlinespace \the\everysetuplocalinterlinespace \else diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex b6f8f0cf2..7aa77290f 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 abeabfefd..4e1369aeb 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 53cab34e5..c8782e532 100644 --- a/tex/context/base/status-mkiv.lua +++ b/tex/context/base/status-mkiv.lua @@ -653,17 +653,19 @@ return { { filename = "strc-con", marktype = "mkiv", - status = "todo", + status = "okay", + comment = "maybe more common counter code here", }, { filename = "strc-des", marktype = "mkiv", - status = "todo", + status = "okay", }, { filename = "strc-enu", marktype = "mkiv", - status = "todo", + status = "okay", + comment = "(interactive) coupling is not yet working" }, { filename = "strc-ind", diff --git a/tex/context/base/status-mkiv.tex b/tex/context/base/status-mkiv.tex index b01ba8c86..8bbb89ee9 100644 --- a/tex/context/base/status-mkiv.tex +++ b/tex/context/base/status-mkiv.tex @@ -52,6 +52,8 @@ \startitem the message system will be unified \stopitem \startitem maybe rename dowhatevertexcommand to fromluawhatevertexcommand \stopitem \startitem consider moving setups directly to lua end (e.g. in characterspacing, breakpoint, bitmaps etc.) \stopitem + \startitem more local temporary \type {\temp...} will become \type {\p_...} \stopitem + \startitem check all ctxlua calls for ctxcommand \stopitem \stopitemize \stoptitle diff --git a/tex/context/base/strc-con.mkvi b/tex/context/base/strc-con.mkvi index 16cc16bbb..bd1309f48 100644 --- a/tex/context/base/strc-con.mkvi +++ b/tex/context/base/strc-con.mkvi @@ -27,12 +27,13 @@ % % todo: \currentconstructionattribute : can be a counter instead - -%D Constructions are just descriptions but a bit more abstract so that -%D we can conveniently build upon them. They are not really meant for -%D users but module writers might find them useful. We mention a -%D couple of parameters but these are only mentioned because in the -%D shared code we map all resolvers to constructions. +%D Constructions are just descriptions but a bit more abstract so that we can +%D conveniently build upon them. They are not really meant for users but module +%D writers might find them useful. We mention a couple of parameters but these are +%D only mentioned because in the shared code we map all resolvers to constructions. +%D +%D On top of constructions we build descriptions, enumerations, notes, labels and +%D maybe some day more. \unprotect @@ -135,9 +136,9 @@ {\csname\??constructionstophandler\currentconstructionhandler\endcsname \endgroup} -%D As we will build on top of the generic construction mechanism we -%D have handlers as a sort of plug in mechanism. In order to have -%D some consistency we share some namespaces. +%D As we will build on top of the generic construction mechanism we have handlers +%D as a sort of plug in mechanism. In order to have some consistency we share +%D some namespaces. \installcorenamespace{constructioninitializer} \installcorenamespace{constructionfinalizer} @@ -172,9 +173,9 @@ \unexpanded\setvalue{\??constructionfinalizer\v!construction}% {} -% We keep the command variant around but rather would move to the -% start-stop one. Also, passing the title as argument has some -% history so we need to keep that as well. +%D We keep the command variant around but rather would move to the start-stop one. +%D Also, passing the title as argument has some history so we need to keep that as +%D well. \ifdefined\dotagsetconstruction \else \let\dotagsetconstruction\relax \fi diff --git a/tex/context/base/strc-des.mkvi b/tex/context/base/strc-des.mkvi index 816a89316..5635ff0df 100644 --- a/tex/context/base/strc-des.mkvi +++ b/tex/context/base/strc-des.mkvi @@ -118,10 +118,6 @@ \expandafter\strc_descriptions_start_yes_normal \fi} -% \unexpanded\def\strc_descriptions_start_yes_titled[#1]#2% todo userdata -% {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference={#1},\c!title={#2},\c!bookmark=,\c!list=][]% -% \csname\??constructionstarthandler\currentconstructionhandler\endcsname} - \unexpanded\def\strc_descriptions_start_yes_titled[#1]% {\doifnextbgroupelse {\strc_descriptions_start_yes_titled_indeed[#1]}% @@ -143,11 +139,6 @@ \expandafter\strc_descriptions_start_nop_normal \fi} -% \unexpanded\def\strc_descriptions_start_nop_titled#1% -% {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference=,\c!title={#1},\c!bookmark=,\c!list=][]% -% \csname\??constructionstarthandler\currentconstructionhandler\endcsname} -% \csname\??constructionstarthandler\currentconstructionhandler\endcsname} - \unexpanded\def\strc_descriptions_start_nop_titled {\doifnextbgroupelse {\strc_descriptions_start_nop_titled_indeed}% @@ -205,10 +196,6 @@ \expandafter\strc_descriptions_nop_normal \fi} -% \unexpanded\def\strc_descriptions_nop_titled#1% -% {\strc_constructions_register[\c!label={\descriptionparameter\c!text},\c!reference=,\c!title={#1},\c!bookmark=,\c!list=][]% -% \csname\??constructioncommandhandler\currentconstructionhandler\endcsname} - \unexpanded\def\strc_descriptions_nop_titled {\doifnextbgroupelse {\strc_descriptions_nop_titled_indeed}% @@ -242,7 +229,7 @@ {\csname\??constructionstophandler\v!construction\endcsname \endgroup} -%D For historic rasons we have (from now on undocumented): +%D For historic reasons we have (from now on undocumented): \definedescription [tab] diff --git a/tex/context/base/strc-enu.mkvi b/tex/context/base/strc-enu.mkvi index ea5cc0d19..6220120d2 100644 --- a/tex/context/base/strc-enu.mkvi +++ b/tex/context/base/strc-enu.mkvi @@ -221,7 +221,8 @@ %D Counters (maybe we can share this code): (not ok yet, messy with notes) -%%%%%%%%%%% BEGIN TODO (SEE NOTES) %%%%%%%%%%%%%%% +% Maybe we should move counters to the construction level as more derived mechanisms +% use it \unknown\ so don't depend on names here! \newtoks\everysetupenumerationcounter @@ -239,9 +240,6 @@ \strc_counter_setup_using_parameter\v_strc_enumerations_counter_name\enumerationparameter \to \everysetupenumerationcounter -% \def\currentconstructionnumber {\enumerationparameter\s!counter} -% \def\specificconstructionnumber#1{\namedenumerationparameter{#1}\s!counter} - \def\currentconstructionnumber {\constructionparameter\s!counter} \def\specificconstructionnumber#1{\namedconstructionparameter{#1}\s!counter} @@ -249,8 +247,6 @@ \strc_enumerations_setup_counter\currentenumeration \to \everysetupenumeration -%%%%%%%%%%% END TODO (SEE NOTES) %%%%%%%%%%%%%%% - %D Initializer: %D The handlers. @@ -366,23 +362,23 @@ % % we will provide some more control, like skipping etc or reference relates -% todo - - \unexpanded\def\strc_enumerations_full_number_coupling - {\iflocation - \strc_enumerations_full_number_yes - \else - \iftrialtypesetting \else - % \doenumerationregistercoupling - \fi - \strc_enumerations_full_number_yes - \edef\p_coupling{\constructionparameter\c!coupling}% - \ifx\p_coupling\empty \else - \symbolreference[order(construction:\p_coupling:\nextinternalorderreference)]% - \fi - \fi} - - \def\skipenumerationcoupling[#1]% e.g. for questions with no answer - {\ctxlua{structures.references.setnextorder("construction","#1")}} +% to do / to be checked + +\unexpanded\def\strc_enumerations_full_number_coupling + {\iflocation + \strc_enumerations_full_number_yes + \else + \iftrialtypesetting \else + % \doenumerationregistercoupling + \fi + \strc_enumerations_full_number_yes + \edef\p_coupling{\constructionparameter\c!coupling}% + \ifx\p_coupling\empty \else + \symbolreference[order(construction:\p_coupling:\nextinternalorderreference)]% + \fi + \fi} + +\unexpanded\def\strc_enumerations_skip_number_coupling[#1]% e.g. for questions with no answer + {\ctxlua{structures.references.setnextorder("construction","#1")}} \protect \endinput diff --git a/tex/context/base/strc-not.mkvi b/tex/context/base/strc-not.mkvi index b5e81fee1..74e4345aa 100644 --- a/tex/context/base/strc-not.mkvi +++ b/tex/context/base/strc-not.mkvi @@ -119,14 +119,8 @@ \c!state=\v!start, \c!levels=3] -% mostly the same as enumersations but we want to keep them -% isolated and at some point we might differentiate - -% to be considered: -% -% \let\??construction\??notation -% -% with push/pop (also at definition time) +%D The code here is mostly the same as enumersations but we want to keep them +%D isolated and at some point we might differentiate. \unexpanded\def\strc_define_commands_notation#1#2#3% current level parent {\doifelsenothing{#3} @@ -137,8 +131,8 @@ \setuevalue{\e!next #1}{\strc_notations_next }% \setuevalue{\c!reset#1}{\strc_notations_reset }% %setuevalue{\c!set #1}{\strc_notations_set }% -% \setuevalue {#1}{\strc_notations_command{\currentnotation}}% -% \setuevalue{\e!start#1}{\strc_notations_start {\currentnotation}{#1}}% + %setuevalue {#1}{\strc_notations_command{\currentnotation}}% + %setuevalue{\e!start#1}{\strc_notations_start {\currentnotation}{#1}}% \setuevalue {#1}{\strc_notations_command{#1}}% \setuevalue{\e!start#1}{\strc_notations_start {#1}{#1}}% okay? \setuevalue{\e!stop #1}{\strc_notations_stop }} @@ -385,9 +379,7 @@ \fi \to \everydefinenote -% maybe we will share this at some point - -%%%%%%%%%%% BEGIN TODO (SEE ENUMERATIONS) %%%%%%%%%%%%%%% +% maybe we will share this at some point: \newtoks\everysetupnotecounter @@ -409,10 +401,7 @@ \strc_notes_setup_counter\currentnotation \to \everysetupnotation -%%%%%%%%%%% END TODO (SEE ENUMERATIONS) %%%%%%%%%%%%%%% - -% \setvalue{\??constructionstarthandler\v!notation}% -% {\csname\??constructionstarthandler\v!construction\endcsname} +% so far %expandafter\let\csname\??constructionstarthandler \v!notation\expandafter\endcsname\csname\??constructionstarthandler \v!enumeration\endcsname \expandafter\let\csname\??constructionstarthandler \v!notation\expandafter\endcsname\csname\??constructionstarthandler \v!construction\endcsname % no par mess @@ -643,7 +632,7 @@ \strc_notes_inject_separator \fi \nobreak - \hbox to .5em{}% + \hbox to .5\emwidth{}% \globallet\lastnotesymbol\relax} \unexpanded\def\strc_notes_inject_separator % patch by WS due to request on list diff --git a/tex/context/base/strc-ren.mkiv b/tex/context/base/strc-ren.mkiv index f1fc71948..d20e494f0 100644 --- a/tex/context/base/strc-ren.mkiv +++ b/tex/context/base/strc-ren.mkiv @@ -15,7 +15,11 @@ \unprotect -\newconstant\headtimingmode +\newbox\b_strc_rendering_head + +\newdimen\d_strc_rendering_local_height +\newdimen\d_strc_rendering_local_depth +\newdimen\d_strc_rendering_local_lineheight % Martin Kolarik's problem: % @@ -23,13 +27,13 @@ % \def\doTitle#1#2{\ruledvbox{\forgetall \hsize=4cm \ruledhbox{\ruledvtop{#1}\ruledvtop{#2}}}} % \section{test test test test test test test test test test test test test test test test test} -\newevery \everyheadstart \relax +\newtoks\everyheadstart -\unexpanded\def\setupheadcomponentfont#1#2% +\unexpanded\def\strc_rendering_component_set_font#1#2% {\dontconvertfont \ifconditional\headisdisplay - \edef\askedheadinterlinespace{\headparameter\c!interlinespace}% - \ifx\askedheadinterlinespace\empty + \edef\p_strc_rendering_interlinespace{\headparameter\c!interlinespace}% + \ifx\p_strc_rendering_interlinespace\empty % here the interline space is only set when style sets no space \setfalse\fontattributeisset % use the currentfontparameter state instead \setfalse\interlinespaceisset @@ -46,45 +50,44 @@ \setfalse\fontattributeisset \useheadstyleandcolor\c!style\c!color \ifconditional\fontattributeisset - \dosetupcheckedinterlinespace\askedheadinterlinespace + \dosetupcheckedinterlinespace\p_strc_rendering_interlinespace \fi \setfalse\fontattributeisset \useheadstyleandcolor#1#2% \ifconditional\fontattributeisset - \dosetupcheckedinterlinespace\askedheadinterlinespace + \dosetupcheckedinterlinespace\p_strc_rendering_interlinespace \fi \fi \else \setfalse\fontattributeisset \useheadstyleandcolor\c!style\c!color \ifconditional\fontattributeisset - \setupspacing + \updateraggedskips % \setupspacing \fi \setfalse\fontattributeisset \useheadstyleandcolor#1#2% \ifconditional\fontattributeisset - \setupspacing + \updateraggedskips % \setupspacing \fi \fi} \def\doplaceheadtextcomponent#1% {\begingroup - \setupheadcomponentfont\c!textstyle\c!textcolor - \headparameter\c!commandbefore + \strc_rendering_component_set_font\c!textstyle\c!textcolor + \headparameter\c!commandbefore\relax \ifcsname\currentheadhash\c!deeptextcommand\endcsname \expandafter\let\expandafter\deepstructuretitlecommand\csname\currentheadhash\c!deeptextcommand\endcsname \fi \ifconditional\headisdisplay % \ifdisplaysectionhead % struts can be nilled with \setnostrut \headparameter\c!textcommand{\setstrut\begstrut#1\endstrut}% - \xdef\localheadheight {\the\strutht}% - \xdef\localheaddepth {\the\strutdp}% - \xdef\localheadlineheight{\the\lineheight}% - % == \globallet\localheaddepth\strutdepth + \global\d_strc_rendering_local_height\strutht + \global\d_strc_rendering_local_depth\strutdp + \global\d_strc_rendering_local_lineheight\lineheight \else \headparameter\c!textcommand{#1}% \fi - \headparameter\c!commandafter + \headparameter\c!commandafter\relax \ifconditional\headisdisplay % \ifdisplaysectionhead \endgraf \fi @@ -92,7 +95,7 @@ \def\doplaceheadnumbercomponent#1% {\begingroup - \setupheadcomponentfont\c!numberstyle\c!numbercolor + \strc_rendering_component_set_font\c!numberstyle\c!numbercolor \ifcsname\currentheadhash\c!deepnumbercommand\endcsname \expandafter\let\expandafter\deepstructurenumbercommand\csname\currentheadhash\c!deepnumbercommand\endcsname \fi @@ -104,10 +107,6 @@ \fi \endgroup} -% \newif\ifheadnumbercontent -% \newif\ifemptyhead -% \newif\ifdisplaysectionhead - \let\currentstructurereferenceattribute\attributeunsetvalue \def\headreferenceattributes @@ -147,35 +146,37 @@ \setheadmarking \doresettructureheadnumbercontent \ifconditional\headleaveempty - \setbox\sectionheadbox\hbox \headreferenceattributes to \zeropoint{}% - \makestrutofbox\sectionheadbox + \setbox\b_strc_rendering_head\hbox \headreferenceattributes to \zeropoint{}% + \makestrutofbox\b_strc_rendering_head \else \docheckheadreference - \setbox\sectionheadbox\hbox \headreferenceattributes + \setbox\b_strc_rendering_head\hbox \headreferenceattributes {\spac_grids_set_local_snapping{\headparameter\c!internalgrid}% \doresettructureheadnumbercontent \useheadstyleparameter\c!style \setinlineheadreferenceattributes \headparameter\c!command{}{\doplaceheadtextcomponent\getheadtitle}}% \fi - \endheadplacement{\getheadsyncs}} + \endheadplacement\getheadsyncs} \unexpanded\def\placecurrentheadnumbertext {\beginheadplacement \setheadmarking - \doiftextelse{\getheadnumber}\dosettructureheadnumbercontent\doresettructureheadnumbercontent + \doiftextelse\getheadnumber + \dosettructureheadnumbercontent + \doresettructureheadnumbercontent \ifconditional\headleaveempty - \setbox\sectionheadbox\hbox \headreferenceattributes to \zeropoint{}% - \makestrutofbox\sectionheadbox + \setbox\b_strc_rendering_head\hbox \headreferenceattributes to \zeropoint{}% + \makestrutofbox\b_strc_rendering_head \else % = needed \docheckheadreference - \setbox\sectionheadbox\hbox \headreferenceattributes + \setbox\b_strc_rendering_head\hbox \headreferenceattributes {\spac_grids_set_local_snapping{\headparameter\c!internalgrid}% \useheadstyleparameter\c!style \setinlineheadreferenceattributes \headparameter\c!command{\doplaceheadnumbercomponent\getheadnumber}{\doplaceheadtextcomponent\getheadtitle}}% \fi - \endheadplacement{\getheadsyncs}} + \endheadplacement\getheadsyncs} \unexpanded\def\placecurrentheadempty {\hbox \headreferenceattributes {\getheadsyncs}} @@ -192,26 +193,28 @@ %D \MySubject{feeling stretched feeling stretched feeling stretched feeling stretched} %D \stoptyping -\let\headlastlinewidth\!!zeropoint - -\def\localheadheight {\strutht} -\def\localheaddepth {\strutdp} -\def\localheadlineheight{\lineheight} - -\def\dolocalheadsetup % koppeling met standaard kopcommando / engels - {\forgetall % traag dus ... - \doifsomething{\headparameter\c!align } {\normalexpanded{\noexpand\setupalign [\headparameter\c!align ]}}% - \doifsomething{\headparameter\c!tolerance} {\normalexpanded{\noexpand\setuptolerance[\headparameter\c!tolerance]}}% - \doif {\headparameter\c!strut }\v!no{\setnostrut}% new +\def\dolocalheadsetup + {\forgetall + \edef\p_align{\headparameter\c!align}% + \ifx\p_align\empty \else + \normalexpanded{\setupalign[\p_align]}% + \fi + \edef\p_tolerance{\headparameter\c!tolerance}% + \ifx\p_tolerance\empty \else + \normalexpanded{\setuptolerance[\p_tolerance]}% + \fi + \edef\p_strut{\headparameter\c!strut}% + \ifx\p_strut\v!no + \setnostrut + \fi \def\\{\crlf\strut\ignorespaces}} \def\beginheadplacement {\bgroup \setsystemmode\currenthead - \xdef\localheadheight {\the\strutht}% - \xdef\localheaddepth {\the\strutdp}% - \xdef\localheadlineheight{\the\lineheight}% - % == \globallet\localheaddepth\strutdp + \global\d_strc_rendering_local_height\strutht + \global\d_strc_rendering_local_depth\strutdp + \global\d_strc_rendering_local_lineheight\lineheight \reseteverypar % needed indeed \noindent % ipv \whitespace elders, na \forgetall ! \bgroup @@ -259,55 +262,56 @@ % \subsubsection {Test\\Test} \input tufte \page % \subsubsubsection{Test\\Test} \input tufte \page +\newdimen\d_strc_rendering_hang_height + \def\hangheadplacement - {\scratchdimen\localheadlineheight - \bgroup - \openlineheight\scratchdimen - \scratchdimen\htdp0% - \getnoflines\scratchdimen - \advance\noflines\minusone - \normalexpanded{\egroup\noflines\the\noflines}% brrr - \setbox0\hbox{\lower\noflines\scratchdimen\box0}% - \scratchdimen\dimexpr\htdp0-\localheadheight+\strutdp\relax - \ht0 \strutht - \dp0 \strutdp - \edef\localheaddepth{\the\strutdp}} - -\newconditional\continuoussectionhead % oeps, \newif\ifcontinuoushead got lost -\newbox\sectionheadbox + {\begingroup + \openlineheight\d_strc_rendering_local_lineheight + \d_strc_rendering_hang_height\htdp\b_strc_rendering_head + \getnoflines\d_strc_rendering_hang_height + \normalexpanded{\endgroup\noflines\the\dimexpr\noflines-\plusone\relax}% brrr + \setbox\b_strc_rendering_head\hbox{\lower\noflines\d_strc_rendering_hang_height\box\b_strc_rendering_head}% + \d_strc_rendering_hang_height\dimexpr\htdp\b_strc_rendering_head-\d_strc_rendering_local_height+\strutdp\relax + \ht\b_strc_rendering_head\strutht + \dp\b_strc_rendering_head\strutdp + \d_strc_rendering_local_depth\strutdp} + +\installcorenamespace{headplacementcheckhang} + +\setvalue{\??headplacementcheckhang\v!line }{\hangheadplacement + \noflines\zerocount} +\setvalue{\??headplacementcheckhang\v!broad }{\hangheadplacement + \getnoflines\d_strc_rendering_hang_height} +\setvalue{\??headplacementcheckhang\v!fit }{\hangheadplacement + \getrawnoflines\d_strc_rendering_hang_height} +\setvalue{\??headplacementcheckhang\v!none }{\noflines\zerocount} +\setvalue{\??headplacementcheckhang }{\noflines\zerocount} +\setvalue{\??headplacementcheckhang\s!unknown}{\hangheadplacement + \noflines\numexpr\p_hang-\plusone\relax} \def\endheadplacement#1% {\noflines\zerocount \ifconditional\headisdisplay % \ifdisplaysectionhead - % new (todo tight == one following line up) - \processaction - [\headparameter\c!hang] - [ \v!line=>\hangheadplacement\noflines\zerocount, - \v!broad=>\hangheadplacement\getnoflines\scratchdimen, - \v!fit=>\hangheadplacement\getrawnoflines\scratchdimen, - \v!none=>\noflines\zerocount, - \v!default=>\noflines\zerocount, - \v!unknown=>\hangheadplacement\noflines\numexpr0\commalistelement-1\relax]% - % so far - \let\headlastlinewidth\!!zeropoint + \edef\p_hang{\headparameter\c!hang}% + \expandcheckedcsname\??headplacementcheckhang\p_hang\s!unknown % kind of special, we want to snap heads also according to local specs local \ifgridsnapping \hbox\bgroup % extra hbox will trigger global snapper on top of local - \edef\currentheadgridsnapping{\headparameter\c!grid}% + \edef\p_grid{\headparameter\c!grid}% \ifconditional\headisdisplay - \ifx\currentheadgridsnapping\empty\else + \ifx\p_grid\empty\else \useheadstyleandcolor\c!style\c!color \setupinterlinespace \useheadstyleandcolor\c!textstyle\c!textcolor \setupinterlinespace \fi \fi - \snaptogrid[\currentheadgridsnapping]\hbox - {\hskip\localheadskip\hskip\headparameter\c!margin\box\sectionheadbox}% + \snaptogrid[\p_grid]\hbox + {\hskip\dimexpr\localheadskip+\headparameter\c!margin\relax\box\b_strc_rendering_head}% \egroup \else \hbox - {\hskip\localheadskip\hskip\headparameter\c!margin\box\sectionheadbox}% + {\hskip\dimexpr\localheadskip+\headparameter\c!margin\relax\box\b_strc_rendering_head}% \fi \flushnotes % new, not really needed \endgraf @@ -322,8 +326,7 @@ \else \strut \flushnotes % new, here since we're in par mode - \unhbox\sectionheadbox - \globallet\headlastlinewidth\!!zeropoint + \unhbox\b_strc_rendering_head #1% \hskip\numberheaddistance\!!plus\numberheaddistance\!!minus.25\dimexpr\numberheaddistance\relax \hskip\continuousheadsignal\ignorespaces @@ -333,7 +336,7 @@ \ifgridsnapping % important, font related depth, see comment \prevdepth\strutdp \else - \prevdepth\localheaddepth + \prevdepth\d_strc_rendering_local_depth \fi \fi \fi @@ -398,8 +401,7 @@ \def\setheaddisplay % used in strc-sec {\doifelsevalue{\??headplacementnature\headparameter\c!alternative}\v!horizontal - {\setfalse\headisdisplay} - {\settrue \headisdisplay}} + \setfalse\settrue\headisdisplay} \defineheadplacement[\v!paragraph][\v!vertical]#1#2% {\vbox @@ -448,7 +450,8 @@ \hangindent\scratchdimen \hangafter \plusone \noindent - \box\scratchbox\hskip\numberheaddistance + \box\scratchbox + \hskip\numberheaddistance \else \ifx\headtextwidth\empty \ifx\headwidth\empty @@ -462,18 +465,6 @@ \fi #2}} -% \unexpanded\def\placeheadmarginalternative#1#2% -% {\vbox -% {\localheadsetup -% \begstrut % use one \strut here! -% \dontleavehmode % in case there is no strut, else side effects with llap -% \ifconditional\headshownumber -% \llap{\hbox{\hfill{#1}\hskip\localheadskip\hskip\leftmargindistance}}% introduces whitespace -% % maybe better: -% % \inleftmargin{\hbox{\hss{#1}\hskip\localheadskip}}% -% \fi -% {#2}}} - \unexpanded\def\placeheadmarginalternative#1#2% {\vbox {\localheadsetup @@ -484,8 +475,11 @@ \fi {#2}}} -\defineheadplacement[\v!inmargin][\v!vertical]#1#2{\placeheadmarginalternative{#1}{#2}} -\defineheadplacement[\v!margin] [\v!vertical]#1#2{\placeheadmarginalternative{#1}{#2}} +\defineheadplacement[\v!inmargin][\v!vertical]#1#2% + {\placeheadmarginalternative{#1}{#2}} + +\defineheadplacement[\v!margin] [\v!vertical]#1#2% + {\placeheadmarginalternative{#1}{#2}} \defineheadplacement[\v!middle][\v!vertical]#1#2% {\vbox @@ -516,11 +510,13 @@ #1{\localheadsetup\noindent#3}% \fi} -% onder/boven lijnt het nummer op de onderste/bovenste regel -% uit van een meerregelige kop +% onder/boven lijnt het nummer op de onderste/bovenste regel uit van een meerregelige kop + +\defineheadplacement[\v!bottom][\v!vertical]#1#2% + {\placeheadlohialternative\vbox{#1}{#2}} -\defineheadplacement[\v!bottom][\v!vertical]#1#2{\placeheadlohialternative\vbox{#1}{#2}} -\defineheadplacement[\v!top] [\v!vertical]#1#2{\placeheadlohialternative\vtop{#1}{#2}} +\defineheadplacement[\v!top][\v!vertical]#1#2% + {\placeheadlohialternative\vtop{#1}{#2}} % helpers diff --git a/tex/context/base/strc-sec.mkiv b/tex/context/base/strc-sec.mkiv index e9b613f21..7cf6921cb 100644 --- a/tex/context/base/strc-sec.mkiv +++ b/tex/context/base/strc-sec.mkiv @@ -43,6 +43,9 @@ % lua interface / names and interface might change +\newconditional\c_strc_rendering_continuous % not used (mkii ?) + + \def\setstructurelevel #1#2{\ctxlua{structures.sections.setlevel("#1","#2")}} % name, level|parent \def\getstructurelevel #1{\ctxlua{structures.sections.getcurrentlevel("#1")}}% name \def\setstructurenumber #1#2{\ctxlua{structures.sections.setnumber(#1,"#2")}} % level, number (+/-) @@ -671,14 +674,14 @@ \global\precedingstructurelevel\currentheadlevel \nobreak \fi - \global\settrue\continuoussectionhead + \global\settrue\c_strc_rendering_continuous \else \penalty\scratchcounter - \global\setfalse\continuoussectionhead + \global\setfalse\c_strc_rendering_continuous #1% \fi \else - \global\setfalse\continuoussectionhead + \global\setfalse\c_strc_rendering_continue #1% \fi} diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index a5c4cf0ff..74dd076f7 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -5295,40 +5295,41 @@ %D We have to use a two||step implementation, because the %D expansion has to take place outside \type{\uppercase}. %D -%D These might up as \LUA based helpers: +%D These might up as \LUA based helpers (i.e. considere these +%D obsolete: \unexpanded\def\syst_helpers_do_IF#1#2% - {\uppercase{{$#1$}{$#2$}}% + {\uppercase{\syst_helpers_do_if_in_string_else{$#1$}{$#2$}}% \expandafter\firstofoneargument \else \expandafter\gobbleoneargument \fi} \unexpanded\def\syst_helpers_do_IF_NOT#1#2% - {\uppercase{{$#1$}{$#2$}}% + {\uppercase{\syst_helpers_do_if_in_string_else{$#1$}{$#2$}}% \expandafter\gobbleoneargument \else \expandafter\firstofoneargument \fi} \unexpanded\def\syst_helpers_do_IF_ELSE#1#2% - {\uppercase{{$#1$}{$#2$}}% + {\uppercase{\syst_helpers_do_if_in_string_else{$#1$}{$#2$}}% \expandafter\firstoftwoarguments \else \expandafter\secondoftwoarguments \fi} \unexpanded\def\syst_helpers_do_IF_INSTRING_ELSE#1#2% - {\uppercase{{$#1$}{$#2$}}% + {\uppercase{\syst_helpers_do_if_in_string_else{$#1$}{$#2$}}% \expandafter\firstoftwoarguments \else \expandafter\secondoftwoarguments \fi} -\unexpanded\def\DOIF #1#2{\normalexpanded{\syst_helpers_do_IF {#1}{#2}}} -\unexpanded\def\DOIFNOT #1#2{\normalexpanded{\syst_helpers_do_IF_NOT {#1}{#2}}} -\unexpanded\def\DOIFELSE #1#2{\normalexpanded{\syst_helpers_do_IF_ELSE {#1}{#2}}} -\unexpanded\def\DOIFINSTRINGELSE #1#2{\normalexpanded{\syst_helpers_do_IF_INSTRING_ELSE{#1}{#2}}} +\unexpanded\def\DOIF #1#2{\normalexpanded{\syst_helpers_do_IF {#1}{#2}}}% will become obsolete +\unexpanded\def\DOIFNOT #1#2{\normalexpanded{\syst_helpers_do_IF_NOT {#1}{#2}}}% will become obsolete +\unexpanded\def\DOIFELSE #1#2{\normalexpanded{\syst_helpers_do_IF_ELSE {#1}{#2}}}% will become obsolete +\unexpanded\def\DOIFINSTRINGELSE #1#2{\normalexpanded{\syst_helpers_do_IF_INSTRING_ELSE{#1}{#2}}}% will become obsolete %D \macros %D {dosingleargumentwithset, diff --git a/tex/context/base/x-mathml.mkiv b/tex/context/base/x-mathml.mkiv index 30ae1232e..6db01c671 100644 --- a/tex/context/base/x-mathml.mkiv +++ b/tex/context/base/x-mathml.mkiv @@ -121,7 +121,6 @@ % \def\mmlmiddledelimiter#1{\ifconditional\mmlignoredelimiter#1\else\normalordelimiter{#1}{% % \ifcase\delimiternesting\MMLleft\else\MMLmiddle\fi#1}\fi} - %D Remark: from now on this is a module and no longer an xtag %D filter. There is an intermediate cleaner module but it has %D some namespace limitations. Here we do it the \MKIV\ way. @@ -2155,9 +2154,9 @@ {\ifx#1\empty \expandafter\secondoftwoarguments \else\ifcsname#1\endcsname - \expandafter\expandafter\expandafter\firstoftwoarguments + \doubleexpandafter\firstoftwoarguments \else - \expandafter\expandafter\expandafter\secondoftwoarguments + \doubleexpandafter\secondoftwoarguments \fi\fi {\csname#1\endcsname}} diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index c7acc7b5a..93c21412b 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/06/12 22:37:28 +-- merge date : 07/07/12 15:04:48 do -- begin closure to overcome local limits and interference |