summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/core-sec.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/core-sec.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/core-sec.tex582
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]