diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-spa.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/core-spa.tex | 947 |
1 files changed, 369 insertions, 578 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-spa.tex b/Master/texmf-dist/tex/context/base/core-spa.tex index e41f1921536..fae78327f03 100644 --- a/Master/texmf-dist/tex/context/base/core-spa.tex +++ b/Master/texmf-dist/tex/context/base/core-spa.tex @@ -13,10 +13,16 @@ \writestatus{loading}{Context Spacing Macros} -% to be sorted out: dependencies, order of initialization +% to be sorted out: dependencies, order of initialization / also some dutch code here \unprotect +% interfacing mkii/mkiv + +\ifx\mksetupgridsnapping \undefined \let\mksetupgridsnapping \relax \fi +\ifx\mkenablegridsnapping \undefined \let\mkenablegridsnapping \relax \fi +\ifx\mkdisablegridsnapping\undefined \let\mkdisablegridsnapping\relax \fi + % some will move to core-var \newif \ifgridsnapping @@ -239,6 +245,8 @@ % \type{\normalskipamount} equals the current baseline % distance. +% \lineskiplimit = -\maxdimen -> freezes baselineskip + % can be conditionals \newif\ifblanknowhite \blanknowhitefalse @@ -290,186 +298,6 @@ \smallskipamount\medskipamount\bigskipamount \fi}} -%%%% dus niet weg - -% replaced -% -% \def\dosingleblanko#1% -% {\doassignsomeskip#1\to\blankskipamount -% \global\advance\blankskip \blankskipamount} -% -% \def\doblank#1% -% {\processallactionsinset % is maar een actie -% [#1] -% [ \v!groot=>\dosingleblanko\v!groot, % happens often -% \v!buiten=>\ifvmode\ifinner\blankoutertrue\fi\fi, -% \v!reset=>\global\blankresettrue, -% \v!flexibel=>\global\localblankflexibletrue, -% \v!vast=>\global\localblankfixedtrue, -% \v!back=>\geenblanko, -% \v!wit=>\global\advance\blankskip \parskip, -% \v!formule=>\global\advance\blankskip \medskipamount, -% \v!geenwit=>\global\blanknowhitetrue, -% -\v!wit=>\global\advance\blankskip -\parskip, -% \v!blokkeer=>\global\blankdisabletrue, -% \v!forceer=>\global\blankforcetrue, -% \v!regel=>\global\advance\blankskip \lineheight, -% \v!halveregel=>\ifgridsnapping\global\fuzzyvskiptrue\fi -% \global\advance\blankskip .5\lineheight, -% \s!unknown=>\doindirectblanko{#1}]} -% -% \def\docomplexdoblank[#1]% pas op \relax's zijn nodig ivm volgende \if -% {\global\blankresetfalse -% \global\blankdisablefalse -% \global\blanknowhitefalse -% \global\localblankflexiblefalse -% \global\localblankfixedfalse -% \global\blankskip\zeropoint -% \global\blankforcefalse -% \blankouterfalse -% \processcommalist[#1]\doblank -% \ifdim\blankskip=\zeropoint\relax -% \iflocalblankflexible \dosingleblanko\currentblank \fi -% \iflocalblankfixed \dosingleblanko\currentblank \fi -% \fi -% \ifblankouter -% \else -% \par -% \ifvmode %in pos fonts gaat dit mis -% \ifblankforce %\ifdim\prevdepth>\zeropoint\else -% % -1000pt signals top of page or column (\ejectcolumn) -% \verticalstrut\kern-\struttotal -% \fi -% \ifblankdisable -% \global\blankindeedfalse -% \edef\oldprevdepth{\the\prevdepth}% -% \prevdepth=\newprevdepth -% \else -% \global\blankindeedtrue -% \fi -% \ifblankreset -% \global\blankindeedtrue -% \ifdim\prevdepth=\newprevdepth -% \prevdepth=\oldprevdepth -% \fi -% \fi -% \ifblankindeed -% \ifdim\lastskip<\blankskip\relax -% % else when \blanko[2*groot] + \blanko[3*groot] with parskip -% % equaling 1*groot, gives a groot=\parskip so adding a small -% % value makes it distinguishable; can also be done at parskip -% % setting time (better) -% \global\advance\blankskip by \mindimen\relax % = skip -% % test this on 2* + 3* and parskip groot -% \ifblanknowhite -% \global\advance\blankskip by -\parskip -% \else -% \ifdim\lastskip=\parskip -% \else % force this due to previous comment -% \ifdim\parskip>\zeropoint\relax -% \ifdim\blankskip<\parskip\relax -% \global\blankskip\zeropoint -% \else -% \global\advance\blankskip by -\parskip -% \fi -% \fi -% \fi -% \fi -% \ifblankflexible \else -% \blankskip=1\blankskip -% \fi -% \iflocalblankfixed -% \blankskip=1\blankskip -% \fi -% \iflocalblankflexible -% \blankskip=1\blankskip -% \!!plus\skipgluefactor\blankskip -% \!!minus\skipgluefactor\blankskip -% \fi -% \ifdim\prevdepth=\newprevdepth -% \else -% \iffuzzyvskip -% \removelastfuzzyvskip -% \fuzzyvskip\blankskip\relax -% \else -% \removelastskip -% \vskip\blankskip\relax -% \fi -% \fi -% \else -% \iffuzzyvskip -% \removelastfuzzyvskip -% \fuzzyvskip\blankskip\relax -% \fi -% \fi -% \fi -% \fi -% \fi -% \global\fuzzyvskipfalse -% \presetindentation} -% -% \def\complexdodoblank[#1]% -% {\flushnotes -% \ifopelkaar -% \ifinpagebody -% \expanded{\docomplexdoblank[#1]}% \expanded=nieuw -% \else -% \par -% \fi -% \else -% \expanded{\docomplexdoblank[#1]}% \expanded = nieuw -% \fi} -% -% % old -% % -% % \def\doindirectblanko#1% -% % {\ifundefined{\??bo#1}% <-etex \expandafter\ifx\csname\??bo#1\endcsname\relax -% % \expanded{\complexdodoblank[#1]}% -% % \else -% % \expandafter\complexdoblank\expandafter[\csname\??bo#1\endcsname]% -% % \fi} -% % -% % \def\complexdoblank[#1]% enables [force,8\bodyfontsize] -% % {\doifinstringelse{,}{#1} -% % {\expanded{\complexdodoblank[#1]}} -% % {\doifnumberelse{#1} -% % {\expanded{\complexdodoblank[#1]}} -% % {\doindirectblanko{#1}}}} -% % -% % new, more robust -% % -% % \def\doindirectblanko#1% -% % {\edef\ascii{#1}\convertcommand\ascii\to\ascii -% % \ifundefined{\??bo\ascii}% <-etex \expandafter\ifx\csname\??bo#1\endcsname\rel -% % \dorepeatwithcommand[#1]\dosingleblanko -% % \else -% % \expandafter\complexdoblank\expandafter[\csname\??bo\ascii\endcsname]% -% % \fi} -% % -% % even more robust -% -% \def\doindirectblanko#1% -% {\edef\ascii{#1}\convertcommand\ascii\to\ascii -% \ifundefined{\??bo\ascii}% <-etex \expandafter\ifx\csname\??bo#1\endcsname -% \expanded{\dorepeatwithcommand[#1]\noexpand\dosingleblanko}% -% \else -% \expandafter\complexdoblank\expandafter[\csname\??bo\ascii\endcsname]% -% \fi} - -% \def\TestBlank[#1]% -% {blank : {\convertargument#1\to\ascii\tttf\ascii}\blanko[#1]} -% -% \defineblank[whatever][2*big,2*big] -% \TestBlank[] -% \TestBlank[big] -% \TestBlank[2*big] -% \TestBlank[big,big,2*big] -% \TestBlank[big] -% \TestBlank[whatever] -% \TestBlank[2*big,whatever] -% \TestBlank[3\lineheight] - -% this will be replaced/enhanced \def\addblankskip#1#2#3{\global\advance\blankskip#1\ifgridsnapping#3\else#2\fi} @@ -501,6 +329,8 @@ \defineblankmethod [\v!none] {\global\blankresettrue} \defineblankmethod [\v!joinedup] {\ifvmode\nointerlineskip\fi} +\defineblankmethod [\v!always] {\redowhitespace} % experimental + % happens often, so we speed this up: % % \defineblankmethod [2*\v!line] {\addblankskip+{2\openlineheight}{2\openlineheight}} @@ -509,21 +339,17 @@ % no, with 2\whatever we loose the stretch and shrink! Taco's alternative: \defineblankmethod - [2*line] + [2*\v!line] {\addblankskip+\openlineheight\openlineheight \addblankskip+\openlineheight\openlineheight} \defineblankmethod - [2*big] + [2*\v!big] {\addblankskip+\bigskipamount\openlineheight \addblankskip+\bigskipamount\openlineheight} -% ETEX ! ! ! - -\beginETEX \ifcsname - \def\doblank#1% - {\edef\ascii{#1}\convertcommand\ascii\to\ascii + {\edefconvertedargument\ascii{#1}% \ifx\ascii\empty\else \ifcsname\??bo\??bo\ascii\endcsname % internal def \csname\??bo\??bo\ascii\endcsname @@ -535,7 +361,7 @@ \fi} \def\redoblank#1% - {\edef\ascii{#1}\convertcommand\ascii\to\ascii + {\edefconvertedargument\ascii{#1}% \ifx\ascii\empty\else \ifcsname\??bo\??bo\ascii\endcsname % internal def \csname\??bo\??bo\ascii\endcsname @@ -546,62 +372,9 @@ \fi\fi \fi} -\endETEX - -\beginTEX - -\def\doblank#1% - {\edef\ascii{#1}\convertcommand\ascii\to\ascii - \ifx\ascii\empty\else - \@EA\ifx\csname\??bo\??bo\ascii\endcsname\relax - \@EA\ifx\csname\??bo\ascii\endcsname\relax - \dorepeatwithcommand[#1]\redoblank - \else - \@EA\rawprocesscommalist\@EA[\csname\??bo\ascii\endcsname]\doblank\relax - \fi - \else - \csname\??bo\??bo\ascii\endcsname - \fi - \fi} - -\def\redoblank#1% - {\edef\ascii{#1}\convertcommand\ascii\to\ascii - \ifx\ascii\empty\else - \@EA\ifx\csname\??bo\??bo\ascii\endcsname\relax - \@EA\ifx\csname\??bo\ascii\endcsname\relax - \global\advance\blankskip#1\relax - \else - \@EA\rawprocesscommalist\@EA[\csname\??bo\ascii\endcsname]\doblank\relax - \fi - \else - \csname\??bo\??bo\ascii\endcsname - \fi - \fi} - -\endTEX - \unexpanded\def\blank % the \relax is definitely needed due to the many \if's {\relax\complexorsimple\doblank} -% \def\complexdoblank -% {\flushnotes -% \ifmmode -% \let\next\nocomplexdoblank -% \else -% \ifopelkaar -% \ifinpagebody -% \let\next\docomplexdoblank -% \else -% \let\next\nocomplexdoblank -% \fi -% \else -% \let\next\docomplexdoblank -% \fi -% \fi -% \next} -% -% with \next removed - \def\complexdoblank {\flushnotes \ifmmode @@ -1046,7 +819,7 @@ \medskipamount \bigskipamount \divide\medskipamount \plustwo \smallskipamount\bigskipamount \divide\smallskipamount\plusfour}% -\def\complexsetupblank[#1]% more \let's +\def\complexsetupblank[#1]% more \let's -> this also wil become installable {\ifgridsnapping \blankflexiblefalse \else @@ -1060,32 +833,24 @@ [ \v!flexible=>\dosetupblank\appliedblankskip, \v!fixed=>\dosetupblank\appliedblankskip, \v!line=>\edef\appliedblankskip{\linedistance}% - \dosetupblank\appliedblankskip - ,%\let\deblanko\v!big, + \dosetupblank\appliedblankskip, \v!halfline=>\scratchskip.5\linedistance \edef\appliedblankskip{\the\scratchskip}% - \dosetupblank\appliedblankskip - ,%\let\deblanko\v!medium, + \dosetupblank\appliedblankskip, \v!big=>\ifgridsnapping \edef\appliedblankskip{\linedistance}% \dosetupblank\appliedblankskip \fi - \let\currentblank\v!big % was \def, why ? - ,%\let\deblanko\v!big, - \v!medium=>\let\currentblank\v!medium % was \def, why ? - ,%\let\deblanko\v!medium, - \v!small=>\let\currentblank\v!small % was \def, why ? - ,%\let\deblanko\v!small, - \v!normal=>\dosetupblank\appliedblankskip - ,%\let\deblanko\v!big, + \let\currentblank\v!big, + \v!medium=>\let\currentblank\v!medium, + \v!small=>\let\currentblank\v!small, + \v!global=>\let\currentblank\v!global, + \v!normal=>\dosetupblank\appliedblankskip, \v!standard=>\edef\appliedblankskip{\skipfactor\linedistance}% - \dosetupblank\appliedblankskip - ,%\let\deblanko\v!big, - \s!default=>\dosetupblank\appliedblankskip - ,%\let\deblanko\v!big, + \dosetupblank\appliedblankskip, + \s!default=>\dosetupblank\appliedblankskip, \s!unknown=>\let\appliedblankskip\commalistelement - \dosetupblank\appliedblankskip - ]%\let\deblanko\v!big]% + \dosetupblank\appliedblankskip]% \simplesetupwhitespace} % \definecomplexorsimpleempty\setupblank @@ -1294,16 +1059,14 @@ \toggleindentation}} \def\docomplexsetupindentingA#1% - {\edef\!!stringa{#1}% catch #1=\somedimen - \convertcommand\!!stringa\to\!!stringa + {\edefconvertedargument\!!stringa{#1}% \doifundefined{\??in:\!!stringa}% {\edef\currentindentation{#1}% \let\normalindentation\currentindentation \simplesetupindenting}} \def\docomplexsetupindentingB#1% - {\edef\!!stringa{#1}% catch #1=\somedimen - \convertcommand\!!stringa\to\!!stringa + {\edefconvertedargument\!!stringa{#1}% catch #1=\somedimen \executeifdefined{\??in:\!!stringa}\donothing} \def\simplesetupindenting % empty case, a it strange, needed this way? @@ -1338,7 +1101,7 @@ \fi} \defineindentingmethod [\v!reset] {\indentfirstparagraphtrue - \parindent\zerocount + \parindent\zeropoint \chardef\indentingtoggle\zerocount} \def\noindenting{\indenting[\v!no, \v!next ]} @@ -1413,6 +1176,16 @@ \def\notoggleindentation {\gdef\checkindentation{\global\indentationtrue\dotoggleindentation}} + +\appendtoks + \pushmacro\checkindentation + \pushmacro\ifindentation +\to \everypushsomestate + +\appendtoks + \popmacro\ifindentation + \popmacro\checkindentation +\to \everypopsomestate % we need to save the state if we want to adapt behaviour to empty lines % @@ -1730,58 +1503,13 @@ \newskip\ctxparskip \ctxparskip\zeropoint -\newif\ifwitruimteflexibel \witruimteflexibeltrue +\newconditional \flexiblewhitespace \settrue\flexiblewhitespace -\def\blankokleinmaat {\smallskipamount} -\def\blankomiddelmaat {\medskipamount} -\def\blankogrootmaat {\bigskipamount} +\def\blankokleinmaat {\smallskipamount} +\def\blankomiddelmaat {\medskipamount} +\def\blankogrootmaat {\bigskipamount} \def\currentwhitespace {\zeropoint} -% \def\stelwitruimteopnieuwin -% {\expanded{\setupwhitespace[\currentwhitespace]}} -% -% \newif\ifwitruimteflexibel \witruimteflexibeltrue -% -% \definecomplexorsimple\setupwhitespace -% -% \def\complexsetupwhitespace[#1]% -% {\expanded{\dosetupwhitespace[#1]}% -% \dodosetupwhitespace} -% -% \def\dosetupwhitespace[#1]% -% {\processallactionsinset -% [#1] -% [\v!herstel=>, -% \v!vast=>\witruimteflexibelfalse, -% \v!flexibel=>\witruimteflexibeltrue, -% \v!regel=>\ctxparskip\baselineskip, -% \v!halveregel=>\ctxparskip.5\baselineskip, -% \s!default=>\doifnot\currentwhitespace\v!geen\stelwitruimteopnieuwin, -% \s!unknown=>\@EA\assigndimension\@EA{\commalistelement} % \@EA is nodig -% \ctxparskip\blankokleinmaat\blankomiddelmaat\blankogrootmaat]} % te vangen -% -% \def\dodosetupwhitespace -% {\edef\currentwhitespace -% {\ifdim\ctxparskip=\zeropoint -% \v!geen -% \else -% \ifgridsnapping\the\baselineskip\else\the\ctxparskip\fi -% \fi}% -% \ifgridsnapping -% \witruimteflexibelfalse -% \ctxparskip1\ctxparskip -% \ifdim\ctxparskip>\zeropoint -% \ctxparskip\baselineskip -% \fi -% \else -% \ifwitruimteflexibel \else \ctxparskip1\ctxparskip \fi -% \fi -% \parskip\ctxparskip} -% -% \def\simplesetupwhitespace% == snelle \setupwhitespace[\s!default] -% {\doifnot\currentwhitespace\v!geen\stelwitruimteopnieuwin -% \dodosetupwhitespace} - \definecomplexorsimple\setupwhitespace \def\simplesetupwhitespace @@ -1797,15 +1525,27 @@ {\processcommacommand[\currentwhitespace]\dowhitespacemethod \dodosetupwhitespace} +\chardef\baselinegridmode=0 % option in layout / 1=permit_half_lines + \def\dodosetupwhitespace {\ifgridsnapping - \witruimteflexibelfalse + \setfalse\flexiblewhitespace \ctxparskip1\ctxparskip \ifdim\ctxparskip>\zeropoint - \ctxparskip\baselineskip + \ifcase\baselinegridmode + \ctxparskip\baselineskip % normal ! ! ! ! !! + \or + \ifdim\scratchdimen=\baselineskip % maybe range + \ctxparskip\baselineskip % normal ! ! ! ! !! + \else + \ctxparskip\numexpr\ctxparskip/\dimexpr.5\lineheight\relax\relax\dimexpr.5\lineheight\relax + \fi + \else + \ctxparskip\baselineskip % normal ! ! ! ! !! + \fi \fi \else - \ifwitruimteflexibel \else \ctxparskip1\ctxparskip \fi + \ifconditional\flexiblewhitespace \else \ctxparskip1\ctxparskip \fi \fi \parskip\ctxparskip} @@ -1814,16 +1554,16 @@ \def\definewhitespacemethod[#1]#2{\setvalue{\??ws\??ws#1}{#2}} \definewhitespacemethod [\v!fix] {} -\definewhitespacemethod [\v!fixed] {\witruimteflexibelfalse} -\definewhitespacemethod [\v!flexible] {\witruimteflexibeltrue} +\definewhitespacemethod [\v!fixed] {\setfalse\flexiblewhitespace} +\definewhitespacemethod [\v!flexible] {\settrue\flexiblewhitespace} \definewhitespacemethod [\v!line] {\ctxparskip \baselineskip} \definewhitespacemethod [\v!halfline] {\ctxparskip.5\baselineskip} \definewhitespacemethod [\v!none] {\ctxparskip \zeropoint} -\definewhitespacemethod [\v!big] {\ctxparskip \blankogrootmaat} -\definewhitespacemethod [\v!medium] {\ctxparskip \blankomiddelmaat} -\definewhitespacemethod [\v!small] {\ctxparskip \blankokleinmaat} +\definewhitespacemethod [\v!big] {\ctxparskip \bigskipamount} +\definewhitespacemethod [\v!medium] {\ctxparskip \medskipamount} +\definewhitespacemethod [\v!small] {\ctxparskip \smallskipamount} -\definewhitespacemethod [\s!default] {\stelwitruimteopnieuwin} +\definewhitespacemethod [\s!default] {\simplesetupwhitespace} % {\stelwitruimteopnieuwin} \def\dowhitespacemethod#1% {\executeifdefined{\??ws\??ws#1}{\ctxparskip#1}\relax} @@ -1836,15 +1576,25 @@ \fi \fi} +\def\nowhitespaceunlessskip + {\ifdim\lastskip>\zeropoint \else + \nowhitespace + \fi} + +\def\redowhitespace + {\ifdim\lastskip>-\parskip \else + \vskip\parskip + \fi} + \def\savecurrentwhitespace {\edef\restorecurrentwhitespace {\ctxparskip\the\ctxparskip \parskip\the\parskip \noexpand\def\noexpand\currentwhitespace{\currentwhitespace}% - \ifwitruimteflexibel - \noexpand\witruimteflexibeltrue + \ifconditional\flexiblewhitespace + \noexpand\settrue\flexiblewhitespace \else - \noexpand\witruimteflexibelfalse + \noexpand\setfalse\flexiblewhitespace \fi}} % deze variant is nodig binnen \startopelkaar @@ -2153,13 +1903,14 @@ \endgroup \fi \normalbaselineskip\openlineheight -\ifgridsnapping\else - \!!plus \baselinegluefactor\openlineheight - \!!minus\baselinegluefactor\openlineheight -\fi + \ifgridsnapping\else + \!!plus \baselinegluefactor\openlineheight + \!!minus\baselinegluefactor\openlineheight + \fi \normallineskip\minimumlinedistance\relax % \onepoint\relax \normallineskiplimit\zeropoint\relax - \normalbaselines} + \normalbaselines + \mksetupgridsnapping} \def\setspacingfactor#1\to#2\by#3\\% {\strutdimen#2\points @@ -2193,25 +1944,6 @@ \let\restoreinterlinespace\relax -\beginTEX - -\def\saveinterlinespace - {\scratchdimen\normallineheight - \edef\restoreinterlinespace - {\lineheight \the\lineheight - \openstrutheight \the\openstrutheight - \openstrutdepth \the\openstrutdepth - \openlineheight \the\openlineheight - \normalbaselineskip \the\normalbaselineskip - \normallineskip \the\normallineskip - \normallineskiplimit\the\normallineskiplimit - \noexpand\def\noexpand\normallineheight{\the\scratchdimen}% - \noexpand\normalbaselines}} - -\endTEX - -\beginETEX - \def\saveinterlinespace {\edef\restoreinterlinespace {\lineheight \the\lineheight @@ -2224,8 +1956,6 @@ \noexpand\def\noexpand\normallineheight{\the\dimexpr\normallineheight\relax}% \noexpand\normalbaselines}} -\endETEX - % plain definition: % % \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} @@ -2348,18 +2078,42 @@ %D Centered looks nicer: +% \def\dosetstrut +% {\let\strut\normalstrut +% \setbox\strutbox\normalhbox +% {\normalhbox to \zeropoint +% {% \hss % new, will be option +% \vrule +% \!!width \strutwidth +% \!!height\strutheight +% \!!depth \strutdepth +% \hss}}% +% \struttotal\dimexpr\strutht+\strutdp\relax} +% +% because of all the callbacks in mkiv, we avoid unnecessary boxes ... +% maybe use an attribute so that we can tag boxes that don't need a +% treatment; tests with using an attribute so far have shown that +% it's slower because testing the attribute takes time too + \def\dosetstrut {\let\strut\normalstrut - \setbox\strutbox\normalhbox - {\normalhbox to \zeropoint - {% \hss % new, will be option - \vrule - \!!width \strutwidth - \!!height\strutheight - \!!depth \strutdepth - \hss}}% - \struttotal\strutht - \advance\struttotal\strutdp} + \ifdim\strutwidth=\zeropoint + \setbox\strutbox\normalhbox + {\vrule + \!!width \zeropoint + \!!height\strutheight + \!!depth \strutdepth}% + \else + \setbox\strutbox\normalhbox + {\normalhbox to \zeropoint + {% \hss % new, will be option + \vrule + \!!width \strutwidth + \!!height\strutheight + \!!depth \strutdepth + \hss}}% + \fi + \struttotal\dimexpr\strutht+\strutdp\relax} %D The dimen \type {\struttotal} holds the exact size of the %D strut; occasionally a one scaled point difference can show @@ -2464,7 +2218,7 @@ \fi \fi\fi} -\newbox\nostrutbox \setbox\nostrutbox\normalhbox{\normalhbox{}} +\newbox\nostrutbox \setbox\nostrutbox\normalhbox{} % {\normalhbox{}} \def\setnostrut {\setbox\strutbox\copy\nostrutbox @@ -2554,73 +2308,27 @@ % \widowpenalty=\defaultwidowpenalty\relax % \clubpenalty =\defaultclubpenalty \relax -\beginTEX widowpenalties clubpenalties interlinepenalties - - \newcount \widowpenalties - \newcount \clubpenalties - \newcount \interlinepenalties - -\endTEX - -% \setpenalties\widowpenalties2\maxdimen -% -% expands to \widowpenalty \maxdimen \maxdimen \zeropoint - -\beginTEX - - \let\resetpenalties \gobbleoneargument - \let\setpenalties \gobblethreearguments - \let\doexpandedrecurse\gobbletwoarguments - -\endTEX - -\beginETEX \numexpr - - \def\resetpenalties#1% - {\ifx#1\undefined\else - #1\minusone - \fi} - -% \def\setpenalties#1#2#3% -% {\ifx#1\undefined\else % space before #3 prevents lookahead problems, needed when #3=text -% #1\numexpr(#2+1)\space\doexpandedrecurse{\the\numexpr(#2)}{ #3}\zerocount\relax -% \fi} - - \def\setpenalties#1#2#3% - {\ifx#1\undefined\else % space before #3 prevents lookahead problems, needed when #3=text - #1\numexpr#2+\plusone\relax\space\doexpandedrecurse{\the\numexpr#2\relax}{ #3}\zerocount\relax - \fi} - -% \def\doexpandedrecurse#1#2% -% {\ifnum#1>\zerocount#2\@EA\doexpandedrecurse\@EA{\the\numexpr(#1-1)}{#2}\fi} +\def\resetpenalties#1% + {\ifx#1\undefined\else + #1\minusone + \fi} - \def\doexpandedrecurse#1#2% - {\ifnum#1>\zerocount#2\@EA\doexpandedrecurse\@EA{\the\numexpr#1-1\relax}{#2}\fi} +\def\setpenalties#1#2#3% + {\ifx#1\undefined\else % space before #3 prevents lookahead problems, needed when #3=text + #1\numexpr#2+\plusone\relax\space\doexpandedrecurse{\the\numexpr#2\relax}{ #3}\zerocount\relax + \fi} -\endETEX +\def\doexpandedrecurse#1#2% + {\ifnum#1>\zerocount#2\@EA\doexpandedrecurse\@EA{\the\numexpr#1-1\relax}{#2}\fi} %D \macros %D {keeplinestogether} %D %D Dirty hack, needed in margin content that can run of a page. -\beginETEX - - \def\keeplinestogether#1% - {\xdef\restoreinterlinepenalty{\global\resetpenalties\interlinepenalties}% - \global\setpenalties\interlinepenalties{#1}\plustenthousand} - -\endETEX - -\beginTEX - - \def\keeplinestogether#1% - {\xdef\restoreinterlinepenalty - {\global\let\restoreinterlinepenalty\relax - \global\interlinepenalty=\the\interlinepenalty}% keep = here - \global\interlinepenalty\plustenthousand} - -\endTEX +\def\keeplinestogether#1% + {\xdef\restoreinterlinepenalty{\global\resetpenalties\interlinepenalties}% + \global\setpenalties\interlinepenalties{#1}\plustenthousand} \newif\ifgridsnapping % to be sure @@ -2725,6 +2433,8 @@ \def\dotfskip#1{{\tf\hskip#1}} \def\dotfkern#1{{\tf\kern #1}} +% needs a proper \definenarrower or installnarrower + \newskip\ctxleftskip \newskip\ctxrightskip \newskip\ctxmidskip @@ -2735,7 +2445,10 @@ [ \v!left=>\global\advance\ctxleftskip \@@slleft, \v!middle=>\global\advance\ctxmidskip \@@slmiddle, \v!right=>\global\advance\ctxrightskip \@@slright, - \v!none=>, + \v!reset=>\global\ctxleftskip \zeropoint + \global\ctxmidskip \zeropoint + \global\ctxrightskip\zeropoint, + \v!none=>, \s!unknown=>\global\advance\ctxmidskip \commalistelement]} % \def\donarrower[#1]% hm, can be dorepeat directly @@ -2944,6 +2657,11 @@ {\getvalue{\@@ragged@@command\v!left}} {\getvalue{\@@ragged@@command\v!right}}} +\setvalue{\@@ragged@@command\v!lesshyphenation}% + {\appendtoks\lesshyphens\to\everyraggedcommand} +\setvalue{\@@ragged@@command\v!morehyphenation}% + {\appendtoks\morehyphens\to\everyraggedcommand} + % compare: % % \framed[width=4cm,align=no] {\hfil xxx} @@ -2998,7 +2716,7 @@ % \voorkeur … la \blanko % % Om ongewenste witruimte te voorkomen kan met \dosomebreak{\break} -% een \penalty v¢¢r witruimte worden geplaatst. +% een \penalty voor witruimte worden geplaatst. \def\removelastskip % a redefinition of plain {\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi} @@ -3016,18 +2734,18 @@ % % don't change the next improvement: -\def\dosomebreak#1% - {\endgraf % beware, this forces a newline - \ifvmode - \ifdim\lastskip=\zeropoint - #1\relax - \else - \scratchskip\lastskip - \removelastskip - #1\relax - \vskip\scratchskip - \fi - \fi} +% \def\dosomebreak#1% +% {\endgraf % beware, this forces a newline +% \ifvmode +% \ifdim\lastskip=\zeropoint +% #1\relax +% \else +% \scratchskip\lastskip +% \removelastskip +% #1\relax +% \vskip\scratchskip +% \fi +% \fi} % beter, vooral in \vbox; nog in \pagina toepassen s! @@ -3124,26 +2842,6 @@ \let\dostopattributes\relax % in case these commands end up in an edef -\beginTEX - -\unexpanded\def\dostartattributes#1#2#3% - {\begingroup % geen \bgroup, anders in mathmode lege \hbox - \@EA\ifx\csname#1#3\endcsname\relax - \let\dostopattributes\@@nostopattributes - \else - \let\dostopattributes\@@dostopattributes - \startcolor[\csname#1#3\endcsname]% - \fi - \@EA\ifx\csname#1#2\endcsname\relax - \expandafter\gobbleoneargument - \else - \expandafter\doconvertfont - \fi{\csname#1#2\endcsname}} - -\endTEX - -\beginETEX \ifcsname - \unexpanded\def\dostartattributes#1#2#3% {\begingroup % geen \bgroup, anders in mathmode lege \hbox \ifcsname#1#3\endcsname @@ -3158,8 +2856,6 @@ \expandafter\gobbleoneargument \fi{\csname#1#2\endcsname}} -\endETEX - \newconditional \parbasedattributes \def\finishparbasedattributes @@ -3186,35 +2882,12 @@ % An even faster \ETEX\ version: -\beginETEX - -% \unexpanded\def\dostartattributes#1#2#3% -% {\begingroup % geen \bgroup, anders in mathmode lege \hbox -% \ifcsname#1#3\endcsname -% \let\dostopattributes\@@dostopattributes -% \startcolor[\csname#1#3\endcsname]% -% \else -% \let\dostopattributes\@@nostopattributes -% \fi -% \ifcsname#1#2\endcsname -% \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname -% \fi} -% -% \unexpanded\def\@@dostopattributes% -% {\stopcolor -% \finishparbasedattributes -% \endgroup} -% -% \unexpanded\def\@@nostopattributes% -% {\finishparbasedattributes -% \endgroup} - \unexpanded\def\dostartattributes#1#2#3% {\begingroup % geen \bgroup, anders in mathmode lege \hbox \ifincolor \ifcsname#1#3\endcsname - \let\dostopattributes\@@dostopattributes - \doglobalstartcolor[\csname#1#3\endcsname]% + \let\dostopattributes\@@dostopattributes + \faststartcolor[\csname#1#3\endcsname]% \else \let\dostopattributes\@@nostopattributes \fi @@ -3227,7 +2900,7 @@ \fi} \unexpanded\def\@@dostopattributes - {\doglobalstopcolor + {\faststopcolor \finishparbasedattributes \endgroup} @@ -3235,54 +2908,34 @@ {\finishparbasedattributes \endgroup} -\endETEX - %D Bonus macro, see core-sec.tex -\beginTEX - -\unexpanded\def\dosetfontattribute#1#2% - {\@EA\ifx\csname#1#2\endcsname\relax\else - \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname - \fi\empty} - -\endTEX - -\beginETEX \ifcsname - \unexpanded\def\dosetfontattribute#1#2% {\ifcsname#1#2\endcsname - % \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname \@EA\doconvertfont\csname#1#2\@EA\endcsname \fi\empty} -\endETEX - %D Since this happens a lot, and sometimes large arguments %D are passed in \type {#4}, we just copy some code: -\beginETEX \ifcsname - \unexpanded\def\doattributes#1#2#3#4% {\begingroup % geen \bgroup, anders in mathmode lege \hbox \ifincolor \ifcsname#1#3\endcsname \let\dostopattributes\@@dostopattributes - \doglobalstartcolor[\csname#1#3\endcsname]% + \faststartcolor[\csname#1#3\endcsname]% \else \let\dostopattributes\endgroup \fi - \else - \let\dostopattributes\endgroup - \fi - \ifcsname#1#2\endcsname - % \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname - \@EA\doconvertfont\csname#1#2\@EA\endcsname - \fi - {#4}% - \dostopattributes} - -\endETEX + \else + \let\dostopattributes\endgroup + \fi + \ifcsname#1#2\endcsname + % \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname + \@EA\doconvertfont\csname#1#2\@EA\endcsname + \fi + {#4}% + \dostopattributes} % Kan vaker worden toegepast en moet bovendien sneller! @@ -3297,32 +2950,6 @@ {\dosetrightskipadaption{#1}% \advance\rightskip \rightskipadaption} -\beginTEX - -\def\dosetleftskipadaption#1% - {\leftskipadaption\zeropoint - \processaction[#1] - [\v!standard=>\leftskipadaption - \ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi, - \v!yes=>\leftskipadaption - \ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi, - \v!no=>, - \s!unknown=>\leftskipadaption#1]} - -\def\dosetrightskipadaption#1% - {\rightskipadaption\zeropoint - \processaction[#1] - [\v!standard=>\rightskipadaption\@@slright, - \v!yes=>\rightskipadaption\@@slright, - \v!no=>, - \s!unknown=>\rightskipadaption#1]} - -\endTEX - -\beginETEX - -% installation - \setvalue{@lsa@\v!standard}{\ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi} \setvalue{@lsa@\v!yes }{\ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi} \letvalue{@lsa@\v!no }\zeropoint @@ -3344,8 +2971,7 @@ % \relax} \def\dosetleftskipadaption#1% - {\edef\ascii{@lsa@#1}% - \convertcommand\ascii\to\ascii + {\edefconvertedargument\ascii{@lsa@#1}% \leftskipadaption \ifcsname\ascii\endcsname \csname\ascii\endcsname @@ -3355,8 +2981,7 @@ \relax} \def\dosetrightskipadaption#1% - {\edef\ascii{@rsa@#1}% - \convertcommand\ascii\to\ascii + {\edefconvertedargument\ascii{@rsa@#1}% \rightskipadaption \ifcsname\ascii\endcsname \csname\ascii\endcsname @@ -3364,13 +2989,11 @@ #1% \fi \relax} - -\endETEX -\newcounter \noftrackedpagestates -\newif \ifpagestatemismatch -\let \realpagestateno \realfolio -\chardef \frozenpagestate \zerocount +\newcount \noftrackedpagestates +\newif \ifpagestatemismatch +\newcount \realpagestateno +\chardef \frozenpagestate \zerocount \def\dotrackpagestate#1#2% {\ifdoublesided \ifinpagebody \else @@ -3379,16 +3002,16 @@ \def\doforcedtrackpagestate#1#2% {\ifcase\frozenpagestate - \doglobal\increment\noftrackedpagestates\relax - \doglobal\increment#2\relax - \lazysavetaggedtwopassdata{#1}{\noftrackedpagestates}{#2}{\noexpand\realfolio}% - %\llap{\infofont\noftrackedpagestates/#2}% tracing + \global\advance\noftrackedpagestates\plusone + \global\advance#2\plusone + \lazysavetaggedtwopassdata{#1}{\number\noftrackedpagestates}{\number#2}{\noexpand\realfolio}% + %\llap{\infofont\number\noftrackedpagestates/\number#2}% tracing \fi} \def\doifrightpagestateelse#1#2% {\ifcase\frozenpagestate \pagestatemismatchfalse - \let\realpagestateno\realfolio + \realpagestateno\realfolio \ifinpagebody \ifdoublesided \ifodd\realpageno\relax @@ -3398,9 +3021,9 @@ \twopassdatafoundtrue \fi \else\ifdoublesided - \findtwopassdata{#1}{#2}% + \findtwopassdata{#1}{\number#2}% \iftwopassdatafound - \let\realpagestateno\twopassdata + \realpagestateno\twopassdata\relax \ifnum\twopassdata=\realpageno \else \pagestatemismatchtrue \fi @@ -3429,10 +3052,10 @@ \def\doifforcedrightpagestateelse#1#2% {\ifcase\frozenpagestate \pagestatemismatchfalse - \let\realpagestateno\realfolio - \findtwopassdata{#1}{#2}% + \realpagestateno\realfolio + \findtwopassdata{#1}{\number#2}% \iftwopassdatafound - \let\realpagestateno\twopassdata + \realpagestateno\twopassdata\relax \ifnum\twopassdata=\realpageno \else \pagestatemismatchtrue \fi @@ -3460,15 +3083,15 @@ % we can make more of these on top, but how to deal with mixed frozen states -\definetwopasslist\s!paragraph \newcounter\nofraggedparagraphs +\definetwopasslist\s!paragraph \newcount \nofraggedparagraphs \def\signalrightpage {\dotrackpagestate \s!paragraph\nofraggedparagraphs} \def\doifrightpageelse{\doifrightpagestateelse\s!paragraph\nofraggedparagraphs} -\newcounter\pagesignallevel +\newcount\pagesignallevel \def\startsignalrightpage % one may do a \postsignalrightplace - {\increment\pagesignallevel + {\advance\pagesignallevel\plusone \presignalrightpage \let\signalrightpage\relax \let\presignalrightpage\relax @@ -3478,7 +3101,7 @@ \def\stopsignalrightpage {\ifcase\pagesignallevel\or\postsignalrightpage\fi - \decrement\pagesignallevel} + \advance\pagesignallevel\minusone} \def\setraggedparagraphmode {\signalrightpage\doifrightpageelse} % move it there @@ -3519,7 +3142,7 @@ \def\docheckpagestatechange#1#2#3% {\pagechangedfalse \doforcedtrackpagestate{#2}{#3}% - \findtwopassdata{#2}{#3}% + \findtwopassdata{#2}{\number#3}% \iftwopassdatafound \ifnum\twopassdata>0\getvalue{#2:p:#1}\relax \pagechangedtrue @@ -3870,6 +3493,26 @@ \installalign \v!verytolerant {\tolerance4500 \relax} \installalign \v!stretch {\emergencystretch\bodyfontsize} +\installalign \v!grid {\mkenablegridsnapping } % only mkiv +\installalign \v!nogrid {\mkdisablegridsnapping} % only mkiv + +\newcount\hyphenminoffset + +\ifx\sethyphenationvariables\undefined \let\sethyphenationvariables\relax \fi + +\def\lesshyphens + {\advance\hyphenminoffset\plusone + \sethyphenationvariables} + +\def\morehyphens + {\ifcase\hyphenminoffset \else + \advance\hyphenminoffset\minusone + \fi + \sethyphenationvariables} + +\installalign \v!lesshyphenation {\lesshyphens} +\installalign \v!morehyphenation {\morehyphens} + \def\dodosetupalign#1{\csname @@align@@#1\endcsname} \def\dodosetupngila#1{\csname @@ngila@@#1\endcsname} @@ -3906,14 +3549,36 @@ \newtoks \everyleftofalignedline \newtoks \everyrightofalignedline +\def\shiftalignedline#1#2#3#4% left, right, inner, outer + {\rightorleftpageaction + {\everyleftofalignedline {\hskip\dimexpr#1+#3\relax}% + \everyrightofalignedline{\hskip\dimexpr#2+#4\relax}} + {\everyleftofalignedline {\hskip\dimexpr#1+#4\relax}% + \everyrightofalignedline{\hskip\dimexpr#2+#3\relax}}} + +% \def\doalignline#1#2% \\ == newline +% {\begingroup +% \setlocalhsize % new +% \def\\{\egroup\par\doalignline{#1}{#2}\bgroup}% +% \dowithnextbox +% {\noindentation % was \noindent +% \dontleavehmode % added in marrakesch at TUG 2006 +% \hbox to \localhsize +% {\ifcase\alignstrutmode\or\strut\fi +% \the\everyleftofalignedline +% #1\unhbox\nextbox#2\relax +% \the\everyrightofalignedline}% +% \endgroup} +% \hbox} + \def\doalignline#1#2% \\ == newline - {\begingroup + {\noindentation % was \noindent + \dontleavehmode % added in marrakesch at TUG 2006\begingroup + \begingroup \setlocalhsize % new \def\\{\egroup\par\doalignline{#1}{#2}\bgroup}% \dowithnextbox - {\noindentation % was \ noindent - \dontleavehmode % added in marrakesch at TUG 2006 - \hbox to \localhsize + {\hbox to \localhsize {\ifcase\alignstrutmode\or\strut\fi \the\everyleftofalignedline #1\unhbox\nextbox#2\relax @@ -3962,11 +3627,13 @@ % more extensive: \def\doxalignline#1#2#3#4#5#6% - {\bgroup + {\noindentation % was \noindent + \dontleavehmode % added in marrakesch at TUG 2006\begingroup + \begingroup \setlocalhsize \def\\{\egroup\par\doxalignline#1#2#3#4#5#6\bgroup}% inefficient \dowithnextbox - {\noindent + {%\noindent moved up \hbox to \localhsize {#1\hskip\ifdone#2\else#3\fi#4% \hbox to \localhsize @@ -3975,7 +3642,7 @@ \ifdone#5\unhbox\nextbox#6\else#6\unhbox\nextbox#5\fi \the\everyrightofalignedline}% \hss}% - \egroup} + \endgroup} \hbox} \def\doxcheckline @@ -4052,6 +3719,7 @@ \hbox} {\doifelse{#1}\v!right{\kern-\rightskip}{\doifsomething{#1}{\kern-#1}}% \parfillskip\zeropoint + %\finalhyphendemerits\zerocount % yes or no \par}} \def\wordright @@ -4067,6 +3735,16 @@ % % \wordright[\rightskip]{whatever} +% \simplealignedbox{2cm}{right}{x} + +\setvalue{\s!simple\c!align\v!right }#1#2{\hbox to #1{#2\hss}} +\setvalue{\s!simple\c!align\v!left }#1#2{\hbox to #1{\hss#2}} +\setvalue{\s!simple\c!align\v!flushright }#1#2{\hbox to #1{\hss#2}} +\setvalue{\s!simple\c!align\v!flushleft }#1#2{\hbox to #1{#2\hss}} +\setvalue{\s!simple\c!align\v!middle }#1#2{\hbox to #1{\hss#2\hss}} + +\def\simplealignedbox#1{\executeifdefined{\s!simple\c!align#1}{\getvalue{\s!simple\c!align\v!right}}} + %D \macros %D {pushindentation,popindentation} %D @@ -4257,21 +3935,26 @@ \unexpanded\def\textormathspace#1#2#3% {\ifmmode\mskip#1#2\else\kern#1\hspaceamount\empty{#3}\fi\relax} +\newmuskip\hairmuskip \hairmuskip=.15mu + +\def\hairspace {\textormathspace+\hairmuskip{.5}} \def\thinspace {\textormathspace+\thinmuskip 1} \def\medspace {\textormathspace+\medmuskip 2} \def\thickspace {\textormathspace+\thickmuskip3} +\def\neghairspace {\textormathspace-\thinmuskip{.5}} \def\negthinspace {\textormathspace-\thinmuskip 1} \def\negmedspace {\textormathspace-\medmuskip 2} \def\negthickspace{\textormathspace-\thickmuskip3} +\definehspace[.5][.1250\emspaceamount] % could also be [.1250\spaceamount] +\definehspace[1] [.1667\emspaceamount] +\definehspace[2] [.2222\emspaceamount] +\definehspace[3] [.2777\emspaceamount] + \let \, \thinspace \let \: \medspace \let \; \thickspace \let \! \negthinspace - -\definehspace[1][.1667em] -\definehspace[2][.2222em] -\definehspace[3][.2777em] % this will become an alternative bunch of \blank settings % @@ -4629,10 +4312,118 @@ \space \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +% moved from page-lin + +\def\installspacehandler#1#2% needs to set \obeyedspace + {\setvalue{\??sr#1}{#2}} + +\installspacehandler \v!on + {\obeyspaces + \def\obeyedspace{\mathortext\normalspace{\dontleavehmode{\tt\controlspace}}}% + \let\ =\obeyedspace} + +\installspacehandler \v!yes + {\obeyspaces + \def\obeyedspace{\mathortext\normalspace{\dontleavehmode \normalspace }}% + \let\ =\obeyedspace} + +\installspacehandler \v!off + {\normalspaces + \let\obeyedspace\normalspace + \let\ =\normalspace} + +\installspacehandler \v!fixed + {\obeyspaces + \def\obeyedspace{\mathortext\normalspace{\dontleavehmode\fixedspace}}% + \let\ =\obeyedspace} + +\def\activatespacehandler#1% + {\executeifdefined{\??sr#1}{\activatespacehandler\v!off}} + +% moved from page-lin + +%D When spacing is active we need to handle commands in +%D a special way: +%D +%D \starttyping +%D \setuplines[space=on] +%D +%D \startlines +%D Let's talk about this{\ttsl\gobbleoneargument or}that. +%D \stoplines +%D +%D \startlines +%D Let's talk about this{\getvalue{ttsl}or}that. +%D \stoplines +%D \stoptyping +%D +%D One can indent in several ways: +%D +%D \starttyping +%D \setupindenting[medium] \setuplines[indenting=odd] % no yes odd even +%D +%D \startlines +%D first +%D second +%D third +%D fourth +%D \stoplines +%D \stoptyping + +\def\setuplines + {\dodoubleargument\getparameters[\??rg]} + +\def\startlines + {\@@rgbefore + \pushmacro\checkindentation + \whitespace + %\page[\v!preference]} gaat mis na koppen, nieuw: later \nobreak + \begingroup + \setupindenting[\@@rgindenting]% + \typesettinglinestrue + \setupwhitespace[\v!none]% + \obeylines + \ignorespaces + \gdef\afterfirstobeyedline % tzt two pass, net als opsomming + {\gdef\afterfirstobeyedline + {\nobreak + \global\let\afterfirstobeyedline\relax}}% + \def\obeyedline + {\par + \afterfirstobeyedline + \futurelet\next\dobetweenthelines}% + \activatespacehandler\@@rgspace + \GotoPar} + +\def\stoplines + {\endgroup + \popmacro\checkindentation + \@@rgafter} + +\def\dobetweenthelines + {\doifmeaningelse\next\obeyedline\@@rginbetween\donothing} + +\setuplines + [\c!before=\blank, + \c!after=\blank, + \c!inbetween=\blank, + \c!indenting=\v!no, + \c!space=\v!default] + +\def\emptylines + {\dosingleempty\doemptylines} + +\def\doemptylines[#1]% + {\endgraf\dorecurse{\iffirstargument#1\else3\fi}\crlf} + +% plugins + +\loadmarkfile{core-spa} + \setupwhitespace [\v!none] -% still old-fachioned +% still old-fashioned \indenting [\v!never] |