diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-sec.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/core-sec.tex | 582 |
1 files changed, 301 insertions, 281 deletions
diff --git a/Master/texmf-dist/tex/context/base/core-sec.tex b/Master/texmf-dist/tex/context/base/core-sec.tex index 1d91e66e01d..c5fc5db8ac5 100644 --- a/Master/texmf-dist/tex/context/base/core-sec.tex +++ b/Master/texmf-dist/tex/context/base/core-sec.tex @@ -67,31 +67,37 @@ 2: sfarsit de bloc sectiune -- \stopmessages +\startmessages french library: structures + title: structure + 1: début de blocsection -- + 2: fin de blocsection -- +\stopmessages + \unprotect % from now on, internaly numbers are separated by a period % and postprocessed on demand \def\numberseparator {.} % reasonable default -\def\sectionseparator{:} % was : but is now - +\def\sectionseparator{-} % was : but is now - -\def\@@filterfirstpart [#1::#2]{#1} -\def\@@filtersecondpart [#1::#2]{#2} +\def\@@filterfirstpart [#1--#2]{#1} +\def\@@filtersecondpart [#1--#2]{#2} -\def\@@filterblockpart [#1::#2::#3]{#1} -\def\@@filternumberpart [#1::#2::#3]{#2} -\def\@@filterpagepart [#1::#2::#3]{#3} -\def\@@filterblocknumberpart[#1::#2::#3]{#1::#2} +\def\@@filterblockpart [#1--#2--#3]{#1} +\def\@@filternumberpart [#1--#2--#3]{#2} +\def\@@filterpagepart [#1--#2--#3]{#3} +\def\@@filterblocknumberpart[#1--#2--#3]{#1--#2} -\def\@@filterheadpart[#1]{\@EA\@@dofilterheadpart\@EA[#1:0]} -\def\@@filtertailpart[#1]{\@EA\@@dofiltertailpart\@EA[#1:0]} +\def\@@filterheadpart[#1]{\@EA\@@dofilterheadpart\@EA[#1-0]} +\def\@@filtertailpart[#1]{\@EA\@@dofiltertailpart\@EA[#1-0]} -\def\@@dofilterheadpart[#1:#2]{#1} -\def\@@dofiltertailpart[#1:#2]{#2} +\def\@@dofilterheadpart[#1-#2]{#1} +\def\@@dofiltertailpart[#1-#2]{#2} -\def\@@filterlevelpart[#1::#2::#3]{\@@dofilterlevelpart[#2:0:0:0:0]} +\def\@@filterlevelpart[#1--#2--#3]{\@@dofilterlevelpart[#2-0-0-0-0]} -\def\@@dofilterlevelpart[#1:0:0:0:#2]{#1} +\def\@@dofilterlevelpart[#1-0-0-0-#2]{#1} \def\gobbleuntilrelax#1\relax{} @@ -129,42 +135,47 @@ \def\dohandleheadnumber#1% {\expanded{\separatednumber{#1}}} -\def\dodochecknummer#1#2#3% will become ugly after speed up +\def\dodochecknumber#1#2#3% will become ugly after speed up {\bgroup \doifinstringelse{.0}{.#2} {\doifnot{#3}\v!by {%\debuggerinfo\m!systems{number #1 #3 becomes \getnumbervariable{#1\c!way}}% \setevalue{\@@thenumber{#1}\c!way}{#3}% geen \xdef, gaat mis met \subpage - \dochecknummer{#1}}} % tricky and ugly + \dochecknumber{#1}}} % tricky and ugly {\doifnotvalue{\@@thenumber{#1}\s!check}{#2} - {\setcounter{\@@thenumber{#1}}{0\getvalue{\@@thenumber{#1}\c!start}}% - \setxvalue{\@@thenumber{#1}\c!way\c!local}% - {\getvalue{\@@thenumber{#1}\c!way}}% - \setxvalue{\@@thenumber{#1}\s!check}% - {#2}}}% + {% new, calculate accumulated number + \scratchcounter\getvalue{\@@thenumber{#1}\c!n}\relax + \advance\scratchcounter\countervalue{\@@thenumber{#1}}\relax + \setxvalue{\@@thenumber{#1}\c!n}{\the\scratchcounter}% + % + \setcounter{\@@thenumber{#1}}{0\getvalue{\@@thenumber{#1}\c!start}}% + \setxvalue{\@@thenumber{#1}\c!way\c!local}{\getvalue{\@@thenumber{#1}\c!way}}% + \setxvalue{\@@thenumber{#1}\s!check}{#2}}}% \egroup} -\def\dochecknummer#1% +\def\dochecknumber#1% {\edef\currentsection{\csname\??by\csname\@@thenumber{#1}\c!way\endcsname\endcsname}% \ifx\currentsection\empty\else - \dodochecknummer + \dodochecknumber {#1}% {\csname\currentsection\c!number\endcsname}% {\v!by\previoussection\currentsection}% \fi} -\def\checknummer#1% +\def\checknumber[#1]% {\bgroup %\ifcase\blocklevel\else \ifdoingblocks \doifnotvalue{\@@thenumber{#1}\c!blockway}\v!no\setblockcounters \fi - \dochecknummer{#1}% + \dochecknumber{#1}% \egroup} \def\rawsectionnumber#1% {\countervalue{\??se#1}} +\def\precedingseparator{\@@koseparator} % brrr + \def\domakeprecedingsectionnumber[#1]% will become ugly after speed up {\bgroup % added \globallet\precedingsectionnumber\empty @@ -180,7 +191,8 @@ \doifnot\currentsection\zerosection {\doifnot{\@@sectionvalue\currentsection}{0} {\xdef\precedingsectionnumber% - {\getvalue{\currentsection\c!number}.}}}% + {\getvalue{\currentsection\c!number}% + \spr{\precedingseparator}}}}% \fi}% \fi \egroup} @@ -197,7 +209,7 @@ % \def\makesectionnumber[#1]% % {\makeprecedingsectionnumber[#1]% -% \xdef\hetnummer% +% \xdef\composedsectionnumber% % {\precedingsectionnumber\convertednumber[#1]}}% % % hack needed for chinese and oldstyle in normal tex, will change @@ -206,29 +218,82 @@ {\bgroup \forceunexpanded % i don't like this hack \makeprecedingsectionnumber[#1]% - \xdef\hetnummer% was \xdef maar dat gaat fout met font switches + \xdef\composedsectionnumber% was \xdef maar dat gaat fout met font switches {\precedingsectionnumber\convertednumber[#1]}% \egroup} -\def\preparethenumber#1#2#3% {\??id#1} \number \result - {\doifelsevaluenothing{#1\c!separator} - {\let\numberseparator\empty - \let#3#2} - {% was \unexpanded \edef, but we need it unexpanded ! - \edef\numberseparator{\getvalue{#1\c!separator}}% - \edef#3{\@EA\separatednumber\@EA{#2}}}} % hm, etex +% \def\preparethenumber#1#2#3% {\??id#1} \number \result +% {\doifelsevaluenothing{#1\c!separator} +% {\let\numberseparator\empty +% \let#3#2} +% {% was \unexpanded \edef, but we need it unexpanded ! +% \edef\numberseparator{\spr{\getvalue{#1\c!separator}}}% +% \doifelsenothing{\executeifdefined{#1\c!suffix}\empty} +% {\edef#3% +% {\@EA\separatednumber\@EA{#2}% +% }}%\stp{\getvalue{#1\c!stopper}}}} +% {\edef#3% +% {\@EA\separatednumber\@EA{#2}% +% \spr{\getvalue{#1\c!separator}}% +% \getvalue{#1\c!suffix}% +% \stp{\getvalue{#1\c!stopper}}}}}} +% +% some day we do a real cleanup + +\def\analyzenumber#1#2#3% {\??id#1} \(precedingsection)number \result + {% was \unexpanded \edef, but we need it unexpanded ! + \doifelsenothing{\executeifdefined{#1\c!suffix}\empty} + {\let \numbersuffix \empty} + {\edef\numbersuffix{\spr{\getvalue{#1\c!suffix}}}}% + \doifelsenothing{\executeifdefined{#1\c!stopper}\empty} + {\let \numberstopper \empty} + {\edef\numberstopper{\spr{\getvalue{#1\c!stopper}}}}% + \doifelsenothing{\executeifdefined{#1\c!separator}\empty} + {\let \numberseparator \empty} + {\edef\numberseparator{\spr{\getvalue{#1\c!separator}}}}% + \let\numberprefix\empty} + +\def\preparefullnumber#1#2#3% {\??id#1} \(precedingsection)number \result + {\analyzenumber{#1}#2#3% + \ifx\numberseparator\empty + \edef\numberprefix{#2}% + \else + \edef\numberprefix{\@EA\separatednumber\@EA{#2}}% + \fi + \ifx\numbersuffix\empty + \ifx\numberprefix\empty + \let #3\empty + \else + \edef#3{\numberprefix\numberstopper}% + \fi + \else + \ifx\numberprefix\empty + \edef#3{\numbersuffix\numberstopper}% + \else + \edef#3{\numberprefix\numberseparator\numbersuffix\numberstopper}% + \fi + \fi} + +\def\prepareprefixnumber#1#2#3% {\??id#1} \number \result + {\analyzenumber{#1}#2#3% + \ifx\numberseparator\empty + \edef\numberprefix{#2}% + \else + \edef\numberprefix{\@EA\separatednumber\@EA{#2}}% + \fi + \let#3\numberprefix} -\def\lossenummer[#1]% +\def\sectionnumberonly[#1]% {\makesectionnumber[#1]% - \hetnummer} + \composedsectionnumber} \def\currentnumber[#1]% kan tekst hier weg ? - {\dotextprefix{\getvalue{\@@thenumber{#1}\c!text}}\lossenummer[#1]} + {\dotextprefix{\getvalue{\@@thenumber{#1}\c!text}}\sectionnumberonly[#1]} \def\nextnumber[#1][#2][#3]% {\incrementnumber[#1]% \currentnumber[#1]% - \rawreference{#2}{#3}{\hetnummer}} + \rawreference{#2}{#3}{\composedsectionnumber}} % sectioning @@ -243,49 +308,42 @@ \makecounter{\??se\v!text} \letvalueempty{\??se\v!text\c!before} -\letvalueempty{\??se\v!text\c!after } +\letvalueempty{\??se\v!text\c!after } \setvalue {\v!text\c!number}{0} \letvalueempty{\v!text\s!format} \letvalueempty{\??sk\v!text} -\letvalueempty{\??sk } +\letvalueempty{\??sk } -\letvalue{\??by }\v!text -\letvalue{\??by\v!text }\v!text -\letvalue{\??by\v!all }\v!text -\letvalue{\??by\v!by }\v!text -\letvalue{\??by\v!by\v!text }\v!text +\letvalue{\??by }\v!text +\letvalue{\??by\v!text }\v!text +\letvalue{\??by\v!all }\v!text +\letvalue{\??by\v!by }\v!text +\letvalue{\??by\v!by\v!text}\v!text \letvalue{\??by\v!by\v!all }\v!text \letvalue{\??by\v!by\v!page}\v!text % see footnotes -%%%%%%%%% old - -\def\dosetupsection[#1][#2]% - {\getparameters[\??se#1][#2]% - \doifelsevalue{\??se#1\c!previousnumber}\v!yes - {\setvalue{#1\c!number}{\@@longsectionnumber{#1}}} - {\setvalue{#1\c!number}{\@@shortsectionnumber{#1}}}} +\def\sectionofhead#1{\executeifdefined{\??ko#1\c!section}\s!unknown} \def\setupsection - {\dodoubleargument\dosetupsection} - -%%%%%%%%% new, multilingual - -\def\dosetupsection[#1][#2][#3]% - {\ifthirdargument - \getparameters[\??se#1#2][#3]% - \else - \getparameters[\??se#1][#2]% - \fi - \doifelsevalue{\??se#1\c!previousnumber}\v!yes - {\setvalue{#1\c!number}{\@@longsectionnumber {#1}}} - {\setvalue{#1\c!number}{\@@shortsectionnumber{#1}}}} - -\def\setupsection% {\dotripleempty\dosetupsection} -%%%%%%%%% +\def\dosetupsection[#1]% + {\doifdefinedelse{\??se#1} + {\dodosetupsection[#1]}% + {\dodosetupsection[\sectionofhead{#1}]}} + +\def\dodosetupsection[#1][#2][#3]% + {\doifdefined{\??se#1} + {\ifthirdargument + \getparameters[\??se#1#2][#3]% + \else + \getparameters[\??se#1][#2]% + \fi + \doifelsevalue{\??se#1\c!previousnumber}\v!yes + {\setvalue{#1\c!number}{\@@longsectionnumber {#1}}} + {\setvalue{#1\c!number}{\@@shortsectionnumber{#1}}}}} \def\docouplemarking[#1][#2]% {\doifdefinedelse{\??ko#2\c!section} @@ -323,6 +381,7 @@ \setevalue{\??by#1}{#1}% \setevalue{\??by\v!by#1}{#1}% \makecounter{\??se#1}% + \makecounter{\??se\v!last#1}% GB \edef\lastsection{#1}% \setvalue{\??sk#1}{#1}% \letvalue{\??se#1\c!marking}\empty @@ -331,39 +390,41 @@ \def\previoussection#1{\csname\??se#1\c!before\endcsname} \def\nextsection #1{\csname\??se#1\c!after \endcsname} +\let\preservedsection\v!unknown % \def\preservedsection{\firstsection} + +\def\checkpreservevalueafter#1% GB + {\ifnum\getvalue{\??se#1\c!level}<\nofsections + \edef\preservedsection{\getvalue{\??se#1\c!after}}% + \ifconditional\@@resetsubheadnumbers + \setcounter{\??se\v!last\preservedsection}\zerocount % {0}% + \else + \setcounter{\??se\v!last\preservedsection}{\countervalue{\??se\preservedsection}}% + \fi + \fi} + \def\@@setsectionnumber#1#2% {\letgvalueempty{\??se#1\s!start}% signal i.p.v. boolean \setcounter{\??se#1}{#2}% - \ifconditional\@@resetsubheadnumbers\resetsectioncounters{#1}\fi + \checkpreservevalueafter{#1}% GB + \resetsectioncounters{#1}% \checkpagecounter} -\def\@@nextsectionnumber#1% +\def\@@nextsectionnumber#1% patched by GB {\letgvalueempty{\??se#1\s!start}% signal i.p.v. boolean + \ifnum\countervalue{\??se\v!last#1}>\zerocount + \setcounter{\??se#1}{\countervalue{\??se\v!last#1}}% + \setcounter{\??se\v!last#1}\zerocount % {0}% + \fi \pluscounter{\??se#1}% - \ifconditional\@@resetsubheadnumbers\resetsectioncounters{#1}\fi + \checkpreservevalueafter{#1}% + \resetsectioncounters{#1}% \checkpagecounter} \def\@@sectionvalue#1% % nog niet overal doorgevoerd {\countervalue{\??se#1}} % zoeken op \??se -% \def\@@sectionconversion#1% -% {\getvalue{\??cv\getvalue{\??se#1\@@sectionblock\c!conversion}}} - % suited for chinese too: -% \def\@@sectionconversion#1#2% a doublure with \@@shortsectionnumber -% {\ifnum#2=0 0\else % else troubles with \uchar -% \@EA\ifx\csname\??se#1\@@sectionblock\c!conversion\endcsname\relax -% \@EA\ifx\csname\??se#1\c!conversion\endcsname\relax -% #2% -% \else -% \getvalue{\??cv\getvalue{\??se#1\c!conversion}}{#2}% -% \fi -% \else -% \getvalue{\??cv\getvalue{\??se#1\@@sectionblock\c!conversion}}{#2}% -% \fi -% \fi} - \def\@@sectionconversion#1#2% a doublure with \@@shortsectionnumber {\ifnum#2=0 0\else % else troubles with \uchar \@EA\ifx\csname\??se#1\@@sectionblock\c!conversion\endcsname\relax @@ -377,13 +438,16 @@ \fi \fi} +% \def\@@sectionlevel#1% +% {\ifundefined{\??se#1\c!level}0\else\getvalue{\??se#1\c!level}\fi} + \def\@@sectionlevel#1% - {\ifundefined{\??se#1\c!level}0\else\getvalue{\??se#1\c!level}\fi} + {\executeifdefined{\??se#1\c!level}0} % Omdat een markering kan worden herdefinieerd moeten we % eerst testen of er wel een keten||afhankelijkheid is. -\def\resetsectionmarks#1% +\def\resetsectionmarks#1% can invoke a break {\ifundefined{\??se#1}% \fastresetmarker[\mainmarking{#1}]% % redundant \mainmarking \else @@ -505,8 +569,13 @@ \fi}% \dobacktrackcommando\lastsection}} +% \def\ignoresectionconversion % brrr +% {\let\@@sectionconversion\secondoftwoarguments} + \def\dosetfilterlevel#1#2% beware: this one is \let {\bgroup + \let\@@shortsectionnumber\@@sectionvalue +% \ignoresectionconversion \edef\askedlevel{#1}% \edef\askedfilter{#2}% \ifx\askedlevel\v!current @@ -868,7 +937,7 @@ \def\dosetlocalsectionblock#1#2#3% new \edef's {\edef\@@sectiontype {#1}% - \edef\@@sectionblock {#2}% + \edef\@@sectionblock {#2}% \edef\@@sectionblocks{#3}} % beware, the \resetsectionmarks generates some nodes that @@ -1018,10 +1087,14 @@ \global\paginageblokkeerdtrue \fi} +% \setuphead[section][aligntitle=float] % permits title next to sidefloat +% +% \placefigure[left]{}{} \section{\dorecurse{10}{bagger }} \input tufte + \def\dohandlepagebreakAB#1% will be replaced by a more clever (signaling) mechanism (in beta) - {\flushsidefloats + {\doifnotvalue{\??ko#1\c!aligntitle}\v!float\flushsidefloats \getvalue{\??ko#1\c!before}% - %\whitespace vervangen door \noindent elders + % \whitespace vervangen door \noindent elders \relax \ifpaginageblokkeerd \global\paginageblokkeerdfalse @@ -1036,12 +1109,15 @@ \dosomebreak\allowbreak \fi \fi + \doifvalue{\??ko#1\c!aligntitle}\v!float\indent \xdef\@@kolevel{\getvalue{\??se\@@sectie\c!level}}} \def\dohandlepagebreakBB#1#2#3% - {\doifinset{\getvalue{\??tk#2\c!state}}{\v!normal,\v!start} + {%\doifinsetelse{\getvalue{\??tk#2\c!state}}{\v!normal,\v!start} + \doifelselayouttextline{#2} {\doifvaluesomething{\??ko#1#3} - {\setuplayouttext[#2][\c!state=\getvalue{\??ko#1#3}]}}} + {\setuplayouttext[#2][\c!state=\getvalue{\??ko#1#3}]}} + \donothing} \def\dohandlepagebreakB#1% {\doifvaluesomething{\??ko#1\c!page} @@ -1089,6 +1165,8 @@ {\expanded{\setupalign[\getvalue{\??ko#1\c!align}]}}% \doifvaluesomething{\??ko#1\c!tolerance} % wordt al expanded in spa {\expanded{\setuptolerance[\getvalue{\??ko#1\c!tolerance}]}}% + \doifvalue{\??ko#1\c!strut}\v!no % wordt al expanded in spa + {\setnostrut}% new \def\\{\crlf\strut\ignorespaces}} \def\localkopsetup{\localheadsetup} % kan tzt weg @@ -1103,7 +1181,7 @@ \newif\ifemptyhead \newif\ifwritetolist \newif\ifheadnumber -\newif\ifcontinuoushead +\newif\ifzushead \newif\ifheadnumbercontent % niet meer wijzigen / wordt mode \newif\ifheadprefix \newif\ifsomeheadconversion @@ -1179,33 +1257,6 @@ \setupheadnumber[#1][\foundsectionnumber]% \setupheadnumber[#1][-1]} -% \def\setsomeheadconversion#1#2% -% {\someheadconversionfalse -% \doifelsevalue{\??ko#1\c!eigennummer}\v!ja -% {\def\someheadconversion{#2}} -% {\bepaalkopnummer[#1]% -% \@EA\ifx\csname\??se\@@sectie\@@sectionblock\c!kopconversie\endcsname\relax -% \@EA\ifx\csname\??se\@@sectie\c!kopconversie\endcsname\relax -% \def\someheadconversion{#2}% -% \else -% \@EA\ifx\csname\??se\@@sectie\c!kopconversie\endcsname\empty -% \def\someheadconversion{#2}% -% \else -% \someheadconversiontrue -% \def\someheadconversion% -% {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\c!kopconversie}}{#2}}% -% \fi -% \fi -% \else -% \@EA\ifx\csname\??se\@@sectie\@@sectionblock\c!kopconversie\endcsname\empty -% \def\someheadconversion{#2}% -% \else -% \someheadconversiontrue -% \def\someheadconversion% -% {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\@@sectionblock\c!kopconversie}}{#2}}% -% \fi -% \fi}} -% % deal with eigennummer \def\setsomeheadconversion#1#2% @@ -1266,23 +1317,23 @@ \let\fullsectionnumber\limitedfullsectionnumber -% \dodododosomekop IS NON GROUPED, SO WE NEED TO RESTORE !!!! +% \dodododoconstructhead IS NON GROUPED, SO WE NEED TO RESTORE !!!! % % dit kan dus beter \everyaroundhead zijn \let\currentheadnumber\empty \let\currentheadtext \empty -\def\dodosomekop#1[#2]#3% [ref] {title} +\def\dodoconstructhead#1[#2]#3% [ref] {title} {\doifelsevalue{\??ko#1\c!ownnumber}\v!yes - {\doquadruplegroupempty\dododosomekop{#1}{#2}{#3}} - {\fourthargumentfalse \dododosomekop{#1}{#2}{#3}{}}} + {\doquadruplegroupempty\dododoconstructhead{#1}{#2}{#3}} + {\fourthargumentfalse \dododoconstructhead{#1}{#2}{#3}{}}} -\def\dododosomekop#1#2#3#4% [ref] {own} {title} +\def\dododoconstructhead#1#2#3#4% [ref] {own} {title} {\iffourthargument - \def\next{\dodododosomekop{#1}[#2]{#3}{#4}}% + \def\next{\dodododoconstructhead{#1}[#2]{#3}{#4}}% \else - \def\next{\dodododosomekop{#1}[#2]{\finalsectionnumber}{#3}}% + \def\next{\dodododoconstructhead{#1}[#2]{\finalsectionnumber}{#3}}% \fi \next} @@ -1304,14 +1355,14 @@ \let\localkopprefix\empty -% \def\headparameter#1% to do: everywhere in core-sec -% {\csname\??ko\currenthead#1\endcsname} +\def\headparameter#1% to do: everywhere in core-sec + {\csname\??ko\currenthead#1\endcsname} -\def\dodododosomekop#1[#2]#3#4% [ref] {number} {title} +\def\dodododoconstructhead#1[#2]#3#4% [ref] {number} {title} {\def\currenthead{#1}% dus #1 overal vervangen \let\finalsectionnumber\dofinalsectionnumber % overloaded ungrouped -) \unexpanded\def\\{\space}% - \def\numberseparator{\getvalue{\??ko\currenthead\c!separator}}% + \edef\numberseparator{\spr{\getvalue{\??ko\currenthead\c!separator}}}% \flushingcolumnfloatsfalse % {number} can be \finalsectionnumber \someheadconversionfalse \let\fullsectionnumber\limitedfullsectionnumber @@ -1428,16 +1479,16 @@ \rawreference\s!sec{#2}{{#3}{\asciititle}}% \resetsectionmarks\@@sectie \setlistparameter\@@koppeling\c!expansion{\getvalue{\??ko#1\c!expansion}}% -\doifelsevalue{\??ko#1\c!ownnumber}\v!yes % brrr, new per 18/1/2005, sometimes we need - {\dowritetolist\@@koppeling{#3}{#4}\v!head} % entries in the list (special purpose) but - {\dowritetolist\@@koppeling {}{#4}\v!head}% not in the header, ok we could pop in a command -}% \dowritetolist\@@koppeling{}{#4}\v!head} + \doifelsevalue{\??ko#1\c!ownnumber}\v!yes % brrr, new per 18/1/2005, sometimes we need + {\dowritetolist\@@koppeling{#3}{#4}\v!head} % entries in the list (special purpose) but + {\dowritetolist\@@koppeling {}{#4}\v!head}% not in the header, ok we could pop in a command + }% \dowritetolist\@@koppeling{}{#4}\v!head} {#4} {\marking[#1]{#4}% \doifelsevalue{\??ko#1\c!ownnumber}\v!yes % brrr {\edef\finalsectionnumber{#3}} {\determineheadnumber[#1]}% -% todo : geen markering (leeg maken) + % todo : geen markering (leeg maken) \expanded{\marking[#1\v!number]{\finalsectionnumber}}}% \writesection{#1}{-}{#4}% \fi @@ -1530,7 +1581,8 @@ \flushingcolumnfloatstrue \someheadconversionfalse \let\fullsectionnumber\limitedfullsectionnumber - \ifdisplaysectionhead\else\expandafter\GotoPar\fi} + % ignorespaces prevents spaces creeping in when after=\dontleavehmode + \ifdisplaysectionhead\ignorespaces\else\expandafter\GotoPar\fi} \def\forcesectiontolist#1#2% {\ifwritetolist @@ -1629,7 +1681,7 @@ \chardef\headtimingmode=0 -% \chardef\headtimingmode=1 +% \chardef\headtimingmode=1 % 0 also works ok now too % % Martin Kolarik's problem: % @@ -1665,7 +1717,7 @@ % outerside font determines distance \dosetfontattribute{\??ko#1}\c!style % but we don't want color to influence user commands -% todo: get the if-else out of it + % todo: get the if-else out of it \getvalue{\??ko#1\c!command} {} % no number {\dostartattributes{\??ko#1}\c!style\c!color\empty @@ -1676,19 +1728,24 @@ \else \setupspacing \fi -% overwegen \dontleavehmode, else unwanted cr due to #2 - \ifcase\headtimingmode#2\fi + % \ifcase\headtimingmode#2\fi % can introduce cr \getvalue{\??ko#1\c!commandbefore}% \placeheadmargintexts{#1}% binnen #3? \ifdisplaysectionhead - \getvalue{\??ko#1\c!textcommand}% - {\setstrut\begstrut#3\endstrut}% can be nilled with \setnostrut + \getvalue{\??ko#1\c!textcommand}% struts can be nilled with \setnostrut + {\setstrut + \begstrut + \ifcase\headtimingmode\hbox{#2}\fi + \executeifdefined{\??ko#1\c!deeptextcommand}\firstofoneargument{#3} + \endstrut}% \hbox prevents break \xdef\localheadheight {\the\strutht}% \xdef\localheaddepth {\the\strutdp}% \xdef\localheadlineheight{\the\lineheight}% - % == \globallet\localheaddepth\strutdepth + % == \globallet\localheaddepth\strutdepth \else - \getvalue{\??ko#1\c!textcommand}{#3}% + \ifcase\headtimingmode#2\fi + \getvalue{\??ko#1\c!textcommand}% + {\executeifdefined{\??ko#1\c!deeptextcommand}\firstofoneargument{#3}}% \fi \getvalue{\??ko#1\c!commandafter}% \ifdisplaysectionhead\endgraf\fi @@ -1719,13 +1776,18 @@ \getvalue{\??ko#1\c!command}% {\dostartattributes{\??ko#1}\c!style\c!color\empty \dostartattributes{\??ko#1}\c!numberstyle\c!numbercolor\empty - \getvalue{\??ko#1\c!commandbefore}% + % \getvalue{\??ko#1\c!commandbefore}% strange, why here? moved 21/11/2005 \placeheadmargintexts{#1}% binnen #3? \ifdisplaysectionhead + % can be nilled with \setnostrut \getvalue{\??ko#1\c!numbercommand}% - {\setstrut\begstrut#3\endstrut}% can be nilled with \setnostrut + {\setstrut + \begstrut + \executeifdefined{\??ko#1\c!deepnumbercommand}\firstofoneargument{#3}% + \endstrut}% \else - \getvalue{\??ko#1\c!numbercommand}{#3}% + \getvalue{\??ko#1\c!numbercommand}% + {\executeifdefined{\??ko#1\c!deepnumbercommand}\firstofoneargument{#3}}% \fi \dostopattributes \dostopattributes} @@ -1737,18 +1799,24 @@ \else \setupspacing \fi -% overwegen \dontleavehmode, else unwanted cr due to #2 - \ifcase\headtimingmode#2\fi + % \ifcase\headtimingmode#2\fi % can introduce cr + \getvalue{\??ko#1\c!commandbefore}% makes more sense here \placeheadmargintexts{#1}% binnen #3? \ifdisplaysectionhead - \getvalue{\??ko#1\c!textcommand}% - {\setstrut\begstrut#4\endstrut}% can be nilled with \setnostrut + \getvalue{\??ko#1\c!textcommand}% struts can be nilled with \setnostrut + {\setstrut + \begstrut + \ifcase\headtimingmode\hbox{#2}\fi + \executeifdefined{\??ko#1\c!deeptextcommand}\firstofoneargument{#4}% + \endstrut}% \hbox prevents break \xdef\localheadheight {\the\strutht}% \xdef\localheaddepth {\the\strutdp}% \xdef\localheadlineheight{\the\lineheight}% % == \globallet\localheaddepth\strutdepth \else - \getvalue{\??ko#1\c!textcommand}{#4}% + \ifcase\headtimingmode#2\fi % inside textcommand ? + \getvalue{\??ko#1\c!textcommand}% + {\executeifdefined{\??ko#1\c!deeptextcommand}\firstofoneargument{#4}}% \fi \getvalue{\??ko#1\c!commandafter}% \ifdisplaysectionhead\endgraf\fi @@ -1757,6 +1825,18 @@ \fi \endheadplacement{#1}{#5}} +%D \starttyping +%D \def\StretchedBox#1% +%D {\framed +%D [frame=off,offset=.5em,align=middle,width=broad] +%D {\sc\def\stretchedspaceamount{.3em}\stretchednormalcase{#1}}} +%D +%D \definehead[MySubject] +%D \setuphead [MySubject][deeptextcommand=\StretchedBox] +%D +%D \MySubject{feeling stretched feeling stretched feeling stretched feeling stretched} +%D \stoptyping + \newsignal\headsignal \let\headlastlinewidth\!!zeropoint @@ -1764,14 +1844,14 @@ {\bgroup \setsystemmode{#1}% to be documented \ifgridsnapping\iftracegridsnapping\showstruts\fi\fi - \xdef\localheadheight {\the\strutht}% - \xdef\localheaddepth {\the\strutdp}% + \xdef\localheadheight {\the\strutht}% + \xdef\localheaddepth {\the\strutdp}% \xdef\localheadlineheight{\the\lineheight}% % == \globallet\localheaddepth\strutdp \everypar\emptytoks % needed indeed \noindent % ipv \whitespace elders, na \forgetall ! \bgroup - \doifelsevalue{\??ko#1\c!aligntitle}\v!yes % new + \doifinsetelse{\getvalue{\??ko#1\c!aligntitle}}{\v!yes,\v!float}% new {\skip0 1\leftskip \skip2 1\rightskip \xdef\localheadskip{\the\skip0}% @@ -1792,72 +1872,6 @@ \def\localheadsetup{\dolocalheadsetup{#1}}% \startsynchronization} -% \def\endheadplacement#1#2% -% {\doifelsevalue{\??rf#1\c!state}\v!start -% {\doifvaluenothing{\??ko#1\c!file}{\autocrossdocumentfalse}} -% {\autocrossdocumentfalse}% -% % no message needed here, should be a proper switch -% % \let\unknownreference\gobbleoneargument -% \ifdisplaysectionhead -% \let\headlastlinewidth\!!zeropoint -% \snaptogrid[\getvalue{\??ko#1\c!grid}]\hbox -% {\hskip\localheadskip -% \hskip\getvalue{\??ko#1\c!margin}\relax -% \iflocation -% \ifautocrossdocument -% \doifreferencefoundelse{\getvalue{\??ko#1\c!file}::#1} -% {\edef\currentinnerreference{\s!aut:\currenttextreference}% stored in -% \gotoouterlocation{}{\box0}} % text slot -% {\hbox{\box0}}% -% \else -% \hbox{\box0}% -% \fi -% \else -% \hbox{\box0}% -% \fi}% -% \doflushnotes % new, not really needed -% \endgraf -% \nointerlineskip -% \dosomebreak\nobreak -% #2% -% \else -% \strut -% \doflushnotes % new, here since we're in par mode -% \iflocation -% \ifautocrossdocument -% \hhboxindent=\ifcontinuoushead\headlastlinewidth\else\zeropoint\fi -% \unhhbox0\with{\gotobox{\box\hhbox}[\getvalue{\??ko#1\c!file}::#1]}% -% \advance\lasthhboxwidth by \numberheaddistance -% \xdef\headlastlinewidth{\the\lasthhboxwidth}% -% \else -% \unhbox0 -% \globallet\headlastlinewidth\!!zeropoint -% \fi -% \else -% \unhbox0 -% \globallet\headlastlinewidth\!!zeropoint -% \fi -% #2% -% \dimen0=\numberheaddistance -% \hskip\dimen0 \!!plus \dimen0 \!!minus .25\dimen0 -% \hskip\headsignal\ignorespaces -% \fi -% \ifdisplaysectionhead \ifvmode -% \ifgridsnapping % important, font related depth, see comment -% \prevdepth\strutdp -% \else -% \prevdepth\localheaddepth -% \fi -% \fi \fi -% \stopsynchronization -% \egroup -% \egroup -% \ifdisplaysectionhead -% \dochecknextindentation{\??ko#1}% -% \else -% \nonoindentation % recently added, was a bug -% \fi} - % \setuphead[chapter] [style=\bfd,after=,hang=line] % fit broad 2 % \setuphead[section] [style=\bfc,after=,hang=line] % \setuphead[subsection] [style=\bfb,after=,hang=line] @@ -1894,23 +1908,25 @@ \dp0 \strutdp \edef\localheaddepth{\the\strutdp}} +\newconditional\continuoussectionhead % oeps, \newif\ifcontinuoushead got lost + \def\endheadplacement#1#2% {\doifelsevalue{\??rf#1\c!state}\v!start {\doifvaluenothing{\??ko#1\c!file}{\autocrossdocumentfalse}} {\autocrossdocumentfalse}% % no message needed here, should be a proper switch -\noflines\zerocount + \noflines\zerocount \ifdisplaysectionhead -% new -\processaction - [\getvalue{\??ko#1\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\noflines0\commalistelement\advance\noflines\minusone]% -% so far + % new + \processaction + [\getvalue{\??ko#1\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\noflines0\commalistelement\advance\noflines\minusone]% + % so far \let\headlastlinewidth\!!zeropoint \snaptogrid[\getvalue{\??ko#1\c!grid}]\hbox {\hskip\localheadskip @@ -1929,18 +1945,20 @@ \fi}% \doflushnotes % new, not really needed \endgraf -\ifnum\noflines>\zerocount - \dorecurse\noflines{\nointerlineskip\dosomebreak\nobreak\strut\endgraf}% -\fi - \nointerlineskip - \dosomebreak\nobreak + \ifvmode + \ifnum\noflines>\zerocount + \dorecurse\noflines{\nointerlineskip\dosomebreak\nobreak\strut\endgraf}% + \fi + \nointerlineskip + \dosomebreak\nobreak + \fi #2% \else \strut \doflushnotes % new, here since we're in par mode \iflocation \ifautocrossdocument - \hhboxindent=\ifcontinuoushead\headlastlinewidth\else\zeropoint\fi + \hhboxindent=\ifconditional\continuoussectionhead\headlastlinewidth\else\zeropoint\fi \unhhbox0\with{\gotobox{\box\hhbox}[\getvalue{\??ko#1\c!file}::#1]}% \advance\lasthhboxwidth by \numberheaddistance \xdef\headlastlinewidth{\the\lasthhboxwidth}% @@ -1978,14 +1996,14 @@ \scratchcounter=\lastpenalty\unpenalty % no beauty in this \ifdim\lastskip=\headsignal \handlepagebreakC{#1}% - \global\continuousheadtrue + \global\settrue\continuoussectionhead \else \penalty\scratchcounter - \global\continuousheadfalse + \global\setfalse\continuoussectionhead #1{#2}% \fi \else - \global\continuousheadfalse + \global\setfalse\continuoussectionhead #1{#2}% \fi} @@ -2055,7 +2073,7 @@ {\setvalue{\??ko:#1}{#2}% \setvalue{\??ko::#1}} -\def\@@placehead +\def\normalplacehead {\executeifdefined {\??ko::\numberheadalternative} {\getvalue{\??ko::\v!normal}}} @@ -2084,9 +2102,11 @@ {\vbox {\localheadsetup \begstrut % use one \strut here! + \dontleavehmode % in case there is no strut, else side effects with llap \ifheadnumbercontent - \llap{\hbox to 5em{\hfill{#1}% - \hskip\localheadskip\hskip\leftmargindistance}}% + \llap{\hbox to 5em{\hfill{#1}\hskip\localheadskip\hskip\leftmargindistance}}% introduces whitespace + % maybe better: + % \inleftmargin{\hbox{\hss{#1}\hskip\localheadskip}}% \fi {#2}}} @@ -2110,7 +2130,7 @@ \def\placeheadlohi#1#2#3% {\ifheadnumbercontent \setbox0\hbox{#2} - \setbox2#1{\localheadsetup\advance\hsize-\wd0\relax#3}% + \setbox2=#1{\localheadsetup\advance\hsize-\wd0\relax#3}% \hbox{\box0\hskip\numberheaddistance\box2}% \else #1{\localheadsetup\noindent#3}% @@ -2136,6 +2156,7 @@ \c!textstyle=\getvalue{\??ko#1\c!style}, \c!numbercolor=\getvalue{\??ko#1\c!color}, \c!textcolor=\getvalue{\??ko#1\c!color}]% + % deeptextcommand and deepnumbercommand are left undefined ! \doifassignmentelse{#2} {\getparameters [\??ko#1] @@ -2161,12 +2182,14 @@ \c!resetnumber=\v!yes, \c!incrementnumber=\v!yes, \c!alternative=\@@koalternative, - \c!command=\@@placehead, + \c!command=\normalplacehead, \c!separator=\@@koseparator, + \c!stopper=\@@kostopper, \c!align=\@@koalign, \c!aligntitle=\@@koaligntitle, \c!tolerance=\@@kotolerance, \c!indentnext=\@@koindentnext, + \c!strut=\@@kostrut, \c!hang=\@@kohang, \c!file=, \c!expansion=, @@ -2179,13 +2202,13 @@ {\copyparameters [\??ko#1][\??ko\getvalue{\??ko#1\c!default}] [\c!before,\c!after,\c!command,\c!file,\c!page,\c!continue, - \c!header,\c!text,\c!footer,\c!separator,\c!resetnumber, + \c!header,\c!text,\c!footer,\c!separator,\c!stopper,\c!resetnumber, \c!number,\c!ownnumber,\c!placehead,\c!incrementnumber, \c!style,\c!color,\c!distance,\c!alternative,\c!indentnext, % new per 20/03/3002 (o-pbu-l) / was too confusing % \c!numberstyle,\c!textstyle,\c!expansion, % again too confusing - \c!align,\c!aligntitle,\c!tolerance,\c!grid,\c!hang, + \c!align,\c!aligntitle,\c!tolerance,\c!grid,\c!hang,\c!strut, \c!numbercommand,\c!textcommand,\c!margintext,\c!margin]}}% \getparameters[\??ko#1][#2]% \doifsomething{\getvalue{\??ko#1\c!section}} @@ -2194,9 +2217,7 @@ {\definemarking[#1]% \couplemarking[#1][\getvalue{\??ko#1\c!section}]% \definemarking[#1\v!number]% -% klopt dit wel ? \couplemarking[#1\v!number][\getvalue{\??ko#1\c!section}]}}% -% \couplemarking[#1\v!nummer][\getvalue{\??ko#1\c!sectie}\v!nummer]}}% \doifundefined{\??li#1}{\definelist[#1]}} {\ConvertToConstant\doifelse{#1}{#2} {\doifundefined{\??li#1}{\definelist[#1]}} @@ -2204,16 +2225,16 @@ [\??ko#1][\??ko#2] [\c!level,\c!section,\c!coupling,\c!prefix, \c!before,\c!after,\c!command,\c!file,\c!page,\c!continue, - \c!separator, + \c!separator,\c!stopper, \c!header,\c!text,\c!footer,\c!resetnumber, \c!number,\c!ownnumber,\c!placehead,\c!incrementnumber, \c!style,\c!color,\c!distance,\c!alternative,\c!indentnext, % new per 20/03/3002 (o-pbu-l) / was too confusing % \c!numberstyle,\c!textstyle,\c!expansion, % again too confusing - \c!align,\c!aligntitle,\c!tolerance,\c!grid,\c!hang, + \c!align,\c!aligntitle,\c!tolerance,\c!grid,\c!hang,\c!strut, \c!numbercommand,\c!textcommand,\c!margintext,\c!margin]% -\getparameters[\??ko#1][\c!expansion=]% iig een value, rather fuzzy + \getparameters[\??ko#1][\c!expansion=]% iig een value, rather fuzzy \definemarking[#1][#2]% \definemarking[#1\v!number][#2\v!number]% \doifundefined{\??li#1}{\definelist[#1][#2]}}}% @@ -2221,13 +2242,13 @@ \setevalue{\??sk#1}{\getvalue{\??ko#1\c!coupling}}% \setevalue{\??by#1}{\getvalue{\??ko#1\c!section}}% \setevalue{\??by\v!by#1}{\getvalue{\??ko#1\c!section}}% - \setvalue{#1}{\dodoubleempty\dosomekop[#1]}} + \setvalue{#1}{\dodoubleempty\doconstructhead[#1]}} \def\definehead {\dodoubleemptywithset\dodefinehead} -\def\dosomekop[#1][#2]% - {\dowithpargument{\dodosomekop{#1}[#2]}} +\def\doconstructhead[#1][#2]% + {\dowithpargument{\dodoconstructhead{#1}[#2]}} \def\dosetuphead[#1][#2]% {\getparameters[\??ko#1][#2]% @@ -2235,7 +2256,7 @@ % set \c!command to nothing and (quite natural) got the % wrong references etc. The whole bunch should be boxed! \expandafter\convertcommand\csname\??ko#1\c!command\endcsname\to\ascii - \doifnothing\ascii{\setvalue{\??ko#1\c!command}{\@@placehead}}} + \doifnothing\ascii{\setvalue{\??ko#1\c!command}{\normalplacehead}}} \def\setuphead {\dodoubleargumentwithset\dosetuphead} @@ -2267,10 +2288,12 @@ [\c!alternative=\v!normal, \c!sectionnumber=\v!yes, \c!separator=., + \c!stopper=, \c!limittext=\v!yes, \c!align=, \c!aligntitle=, \c!tolerance=, + \c!strut=, \c!indentnext=\v!no, \c!margin=\zeropoint, \c!hang=\v!none, @@ -2281,50 +2304,47 @@ \definesectionblock [\v!appendix] [\v!appendices] [\c!number=\v!yes] \definesectionblock [\v!backpart] [\v!backmatter] [\c!number=\v!no] -\definesection[\v!sectionlevel-1] % part -\definesection[\v!sectionlevel-2] % chapter -\definesection[\v!sectionlevel-3] % section -\definesection[\v!sectionlevel-4] % subsection -\definesection[\v!sectionlevel-5] % subsubsection -\definesection[\v!sectionlevel-6] % subsubsubsection -\definesection[\v!sectionlevel-7] % subsubsubsubsection +\definesection[\s!section-1] % part +\definesection[\s!section-2] % chapter +\definesection[\s!section-3] % section +\definesection[\s!section-4] % subsection +\definesection[\s!section-5] % subsubsection +\definesection[\s!section-6] % subsubsubsection +\definesection[\s!section-7] % subsubsubsubsection % \c!eigennummer ook hier? \definehead [\v!part] - [\c!section=\v!sectionlevel-1] + [\c!section=\s!section-1] \definehead [\v!chapter] - [\c!section=\v!sectionlevel-2] + [\c!section=\s!section-2] \definehead [\v!section] - [\c!section=\v!sectionlevel-3] + [\c!section=\s!section-3] \definehead [\v!subsection] - [\c!section=\v!sectionlevel-4, + [\c!section=\s!section-4, \c!default=\v!section] \definehead [\v!subsubsection] - [\c!section=\v!sectionlevel-5, - %\c!default=\v!section] - \c!default=\v!subsection] % nieuw + [\c!section=\s!section-5, + \c!default=\v!subsection] \definehead [\v!subsubsubsection] - [\c!section=\v!sectionlevel-6, - %\c!default=\v!section] - \c!default=\v!subsubsection] % nieuw + [\c!section=\s!section-6, + \c!default=\v!subsubsection] \definehead [\v!subsubsubsubsection] - [\c!section=\v!sectionlevel-7, - %\c!default=\v!section] - \c!default=\v!subsubsubsection] % nieuw + [\c!section=\s!section-7, + \c!default=\v!subsubsubsection] \definehead [\v!title] @@ -2363,7 +2383,7 @@ \c!incrementnumber=\v!no] \setupsection - [\v!sectionlevel-2] + [\s!section-2] [\v!appendix\c!conversion=\v!Character, \c!previousnumber=\v!no] |