summaryrefslogtreecommitdiff
path: root/tex/context/base/core-sec.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-sec.tex')
-rw-r--r--tex/context/base/core-sec.tex238
1 files changed, 207 insertions, 31 deletions
diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex
index d0be70d10..c2c43d8d6 100644
--- a/tex/context/base/core-sec.tex
+++ b/tex/context/base/core-sec.tex
@@ -304,6 +304,8 @@
% Omdat een markering kan worden herdefinieerd moeten we
% eerst testen of er wel een keten||afhankelijkheid is.
+% we het huidge (eigen) nummer kunnen ophalen
+
\def\resetsectionmarks[#1]%
{\doifdefinedelse{\??se#1}
{\def\donexttrackcommando##1%
@@ -340,8 +342,53 @@
\newif\ifalllevels
+% \def\dosetlevel#1% opvoeren met \ifcsname
+% {\bgroup
+% \doifelse{#1}{\v!vorige}
+% {\global\alllevelstrue
+% \global\let\currentlevel\empty
+% \def\dobacktrackcommando##1%
+% {\ifnum\countervalue{\??se##1}>0
+% \global\alllevelsfalse
+% \xdef\currentlevel{\getvalue{\previoussection{##1}\s!format}}%
+% \else
+% \dobacktracklevel{##1}%
+% \fi}%
+% \dobacktrackcommando\lastsection}
+% {\doifelse{\getvalue{\??by#1}}{\v!tekst}
+% {\global\alllevelstrue
+% \global\let\currentlevel\empty}
+% {\doifdefinedelse{\??ko#1\c!sectie} % beter alteratief: ook
+% {\edef\@@sectie{\getvalue{\??ko#1\c!sectie}}} % hoofdstuk\c!format
+% {\edef\@@sectie{#1}}%
+% \doifdefinedelse{\??se\@@sectie}
+% {\global\alllevelsfalse
+% \xdef\currentlevel{\getvalue{\@@sectie\s!format}}}
+% {\global\alllevelstrue
+% \global\let\currentlevel\empty
+% \def\dobacktrackcommando##1%
+% {\@EA\ifx\csname\??se##1\c!start\endcsname\relax
+% \dobacktracklevel{##1}%
+% \else
+% \ifnum\countervalue{\??se##1}>0
+% \global\alllevelsfalse
+% \xdef\currentlevel{\getvalue{##1\s!format}}%
+% \else
+% \dobacktracklevel{##1}%
+% \fi
+% \fi}%
+% \dobacktrackcommando\lastsection}}}%
+% \egroup}
+
+\let\currentlevel\empty
+
+\def\dontsetlevel#1%
+ {\let\currentlevel\somesavedlevel
+ \alllevelsfalse}
+
\def\dosetlevel#1% opvoeren met \ifcsname
- {\bgroup
+ {\let\dosetlevel\dontsetlevel % local lists will be real local
+ \bgroup
\doifelse{#1}{\v!vorige}
{\global\alllevelstrue
\global\let\currentlevel\empty
@@ -356,7 +403,7 @@
{\doifelse{\getvalue{\??by#1}}{\v!tekst}
{\global\alllevelstrue
\global\let\currentlevel\empty}
- {\doifdefinedelse{\??ko#1\c!sectie} % beter alteratief: ook
+ {\doifdefinedelse{\??ko#1\c!sectie} % beter alteratief: ook
{\edef\@@sectie{\getvalue{\??ko#1\c!sectie}}} % hoofdstuk\c!format
{\edef\@@sectie{#1}}%
\doifdefinedelse{\??se\@@sectie}
@@ -378,34 +425,107 @@
\dobacktrackcommando\lastsection}}}%
\egroup}
-\let\currentlevel\empty
+\def\dosettoclevel{\dosetlevel}
+\def\dosetreglevel{\dosetlevel}
+\def\dosetblklevel{\dosetlevel}
+
+% cleaner
+%
+% \def\doifnextlevelelse[#1::#2]#3#4%
+% {\ifalllevels
+% #3%
+% \else
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}
+% {\doifinstringelse{=\currentlevel:0}{=:#2:}{#4}{#3}}
+% {#4}}
+% {#4}%
+% \fi}
+%
+% \def\doifprevlevelelse[#1::#2]#3#4%
+% {\ifalllevels
+% #3%
+% \else
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}{#3}{#4}}
+% {#4}%
+% \fi}
+%
+% faster
+%
+% \def\doifnextlevelelse[#1::#2]%
+% {\ifalllevels
+% \donetrue
+% \else
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}
+% {\doifinstringelse{=\currentlevel:0}{=:#2:}\donefalse\donetrue}
+% \donefalse}
+% \donefalse
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \def\doifprevlevelelse[#1::#2]%
+% {\ifalllevels
+% \donetrue
+% \else
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse}
+% \donefalse
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% meaner
+%
+% \stellijstin
+% [hoofdstuk]
+% [na={\startkolommen\plaatslijst[paragraaf]\stopkolommen}]
+
+\def\somesavedlevel{0}
+
+\def\dosavesomelevel[#1:0:0:0:#2]%
+ {\def\somesavedlevel{:#1}}
-\def\doifnextlevelelse[#1::#2]#3#4%
- {\ifalllevels
- #3%
+\def\doifnextlevelelse[#1::#2]%
+ {\dosavesomelevel[#2:0:0:0:0]%
+ \ifalllevels
+ \donetrue
\else
- \doifelse{\@@sectiontype}{#1} % \@EA kunnen denk ik weg
- {\@EA\doifinstringelse\@EA{\@EA=\currentlevel:}{=:#2:}
- {\@EA\doifinstringelse\@EA{\@EA=\currentlevel:0}{=:#2:}{#4}{#3}}
- {#4}}
- {#4}%
+ \doifelse{\@@sectiontype}{#1}
+ {\doifinstringelse{=\currentlevel:}{=:#2:}
+ {\doifinstringelse{=\currentlevel:0}{=:#2:}\donefalse\donetrue}
+ \donefalse}
+ \donefalse
+ \fi
+ \ifdone
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
\fi}
-\def\doifprevlevelelse[#1::#2]#3#4%
- {\ifalllevels
- #3%
+\def\doifprevlevelelse[#1::#2]%
+ {\dosavesomelevel[#2:0:0:0:0]%
+ \ifalllevels
+ \donetrue
\else
\doifelse{\@@sectiontype}{#1}
- {\@EA\doifinstringelse\@EA{\@EA=\currentlevel:}{=:#2:}
- {#3}
- {#4}}
- {#4}%
+ {\doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse}
+ \donefalse
+ \fi
+ \ifdone
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
\fi}
-\def\dosettoclevel{\dosetlevel}
-\def\dosetreglevel{\dosetlevel}
-\def\dosetblklevel{\dosetlevel}
-
\def\doiftoclevelelse{\doifnextlevelelse}
\def\doifreglevelelse{\doifprevlevelelse}
\def\doifblklevelelse{\doifprevlevelelse}
@@ -578,17 +698,19 @@
\fi
\xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}}
+\def\dohandelpaginaafBB#1#2#3%
+ {\doifinset{\getvalue{\??tk#2\v!tekst\c!status}}{\v!normaal,\v!start}
+ {\doifvaluesomething{\??ko#1#3}
+ {\setuplayouttext[#2][\c!status=\getvalue{\??ko#1#3}]}}}
+
\def\dohandelpaginaafB#1%
{\doifinset{\getvalue{\??ko#1\c!pagina}}{\v!ja,\v!rechts,\v!links}
{\def\resetcurrentsectionmarks% toegevoegd, zie \pagina
{\resetsectionmarks[\previoussection{\@@sectie}]}%
\pagina[\getvalue{\??ko#1\c!pagina}]%
- \doifinset{\getvalue{\??tk\v!hoofd\v!tekst\c!status}}{\v!normaal,\v!start}
- {\doifvaluesomething{\??ko#1\c!hoofd}
- {\stelhoofdin[\c!status=\getvalue{\??ko#1\c!hoofd}]}}%
- \doifinset{\getvalue{\??tk\v!voet\v!tekst\c!status}}{\v!normaal,\v!start}
- {\doifvaluesomething{\??ko#1\c!voet} % new
- {\stelvoetin[\c!status=\getvalue{\??ko#1\c!voet}]}}}}
+ \dohandelpaginaafBB{#1}\v!hoofd\c!hoofd
+ \dohandelpaginaafBB{#1}\v!tekst\c!tekst
+ \dohandelpaginaafBB{#1}\v!voet \c!voet}}
\def\dohandelpaginaafX#1% zie doordefinieren / boven
{\bgroup
@@ -661,7 +783,7 @@
\def\dodosomekop#1[#2]#3%
{\doifelsevalue{\??ko#1\c!eigennummer}{\v!ja}
{\def\next{\doquadruplegroupempty\dododosomekop{#1}{#2}{#3}}}
- {\def\next{\fourthargumentfalse\dododosomekop{#1}{#2}{#3}{}}}%
+ {\def\next{\fourthargumentfalse \dododosomekop{#1}{#2}{#3}{}}}%
\next}
\def\finalsectionnumber%
@@ -924,6 +1046,57 @@
\let\fullsectionnumber\limitedfullsectionnumber
\ifdisplaysectionhead\else\expandafter\GotoPar\fi}
+\def\previoussectionformat{}
+\def\currentsectionformat{}
+
+\let\updatelistreferences=\relax
+\def\updatedlistreferences{}
+
+\def\setsectionlistreference#1#2%
+ {\ifnum\countervalue{\??se\previoussection{#1}}>0\relax
+ \xdef\previoussectionformat{\@@longformatnumber{\previoussection{#1}}}%
+ \else
+ \xdef\previoussectionformat{}%
+ \fi
+ \xdef\currentsectionformat{\@@longformatnumber{#1}}}
+
+\def\startlistreferences#1%
+ {\thisissomeinternal{\s!lst}{#1\currentsectionformat}%
+ \setxvalue{\s!lst:#1}{\realfolio}% to be sure
+ \setxvalue{\s!lst:#1\currentsectionformat}{\realfolio}%
+ \setxvalue{\e!vorigelokale#1}{\s!lst:#1\previoussectionformat}%
+ \setxvalue{\e!huidigelokale#1}{\s!lst:#1\currentsectionformat}%
+ \doifelse{\currentsectionformat}{}
+ {\setglobalcrossreference
+ {\e!vorige#1}{}{\realfolio}{}}
+%
+ {\setglobalsystemreference\rt!list
+ {\e!vorige#1}{\getvalue{\e!vorigelokale#1}}}%
+%
+% {\definereference[\e!vorige#1][\getvalue{\e!vorigelokale#1}]%
+%
+ \def\stoplistreferences{\dostoplistreferences}}
+
+\def\dostoplistreferences#1%
+ {\iflijstgeplaatst
+ \addtocommalist{#1}\updatedlistreferences % nog global (\doglobal)
+ \global\let\updatedlistreferences=\updatedlistreferences % een noodverbandje
+ \gdef\updatelistreferences%
+ {\def\docommando####1%
+%
+ {\setglobalsystemreference\rt!list
+ {\e!vorige####1}{\getvalue{\e!huidigelokale####1}}}%
+%
+% {\definereference[\e!vorige####1][\getvalue{\e!huidigelokale####1}]%
+%
+ \processcommacommand[\updatedlistreferences]\docommando
+ \global\let\updatelistreferences=\relax
+ \global\let\updatedlistreferences=\empty}%
+ \fi}
+
+\def\stoplistreferences%
+ {\gobbleoneargument}
+
% \prevdepth\dp\strutbox is belangrijk, vergelijk naast elkaar:
%
% \onderwerp{test} \input tufte
@@ -1230,6 +1403,7 @@
\c!afstand=,
\c!pagina=,
\c!hoofd=,
+ \c!tekst=,
\c!voet=,
\c!letter=,
\c!nummercommando=,
@@ -1252,7 +1426,8 @@
{\doifsomething{\getvalue{\??ko#1\c!default}}
{\copyparameters
[\??ko#1][\??ko\getvalue{\??ko#1\c!default}]
- [\c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,\c!hoofd,\c!voet,
+ [\c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,
+ \c!hoofd,\c!tekst,\c!voet,
\c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer,
\c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein,
%\c!nummerletter,\c!tekstletter,
@@ -1272,7 +1447,8 @@
{\copyparameters
[\??ko#1][\??ko#2]
[\c!niveau,\c!sectie,\c!koppeling,\c!prefix,
- \c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,\c!hoofd,\c!voet,
+ \c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,
+ \c!hoofd,\c!tekst,\c!voet,
\c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer,
\c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein,
%\c!nummerletter,\c!tekstletter,