summaryrefslogtreecommitdiff
path: root/tex/context/base/core-01a.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-01a.tex')
-rw-r--r--tex/context/base/core-01a.tex31987
1 files changed, 16242 insertions, 15745 deletions
diff --git a/tex/context/base/core-01a.tex b/tex/context/base/core-01a.tex
index 263c6d982..0e6983f07 100644
--- a/tex/context/base/core-01a.tex
+++ b/tex/context/base/core-01a.tex
@@ -1,15745 +1,16242 @@
-%D \module
-%D [ file=core-01a,
-%D version=1997.03.31,
-%D title=\CONTEXT\ Core Macros,
-%D subtitle=1A (to be split),
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. Non||commercial use is
-%C granted.
-
-% \ifinfloat \ifinpagebody \ifintable \ifincolumns etc naar
-% core-sta(tus)
-
-% nieuw/nb:
-%
-% in handleiding: eerste in set float [hier..] telt!
-% [hier,altijd] en niet [altijd,hier]
-%
-% \switchnaarkorps[globaal] voor bv grote figuren in klein
-% \interactiebuttons[][]
-% lijstalternatieven: e, f,g
-% \lastreference
-
-% kopletter: letter=,tekstletter=\bfa,nummerletter=\bf (anders ook \bfa)
-
-% in handleiding vermelden dat \definieerinteractiemenu 3 args behoeft!
-% in handleiding: \steloffsetin vervangen door \stellayoutin
-% in handleiding: \stellayoutin optie [markering=aan]
-% in handleiding: \stellayoutin schaalt naar paginamaten
-% in handleiding: \stellayoutin optie [plaats=midden|..zijdig]
-% in handleiding: \stelinteractieschermin optie [..wit=, ..=passend]
-% in handleiding: \stelinteractieschermin optie [..offset=, ..=passend]
-% in handleiding: \definieerpapierformaat [A3,S3456][..]
-% in handleiding: \stellayoutin optie [breedte|hoogte=passend]
-% in handleiding: meer achtergrond opties
-% in handleiding: \stelregelsin[inspringen=ja,nee,even,oneven]
-% in handleiding: \stelkolommenin[optie=achtergrond]
-% in handleiding: \omlijnd[breedte=passend,uitlijnen=midden] (auto mode)
-% in handleiding: \omlijnd[achtergrondcommando ...]
-% in handleiding: \stelhoofdin[status=hoog]
-% in handleiding: \stellijstin[koppeling=aan] % interactieve optie, was standaard aan, nu uit
-% in handleiding: \stelvoetin[voor=,na=,strut=]
-% in handleiding: \stelmenuin[][links=,rechts=,midden=,voor=,...]
-
-% in handleiding: \definecolorgroup[a][b]
-% \stelinteractiebalkin[symbool=ja|nee]
-% \stelinteractiemenuin[zelfdepagina|onbekendeverwijzing=ja|nee|leeg|geen]
-% \definieerconversie[aa][*,**,***]
-% \stelkopin[eigennummer=ja]
-
-% in handleiding: \definieeroverlay[naam]{commando}
-% in handleiding: \plaatsonderelkaar
-%
-% in handleiding preview bij figuren
-
-% nb: als subpage: dan ook op eerste pag nummer ophogen (i.g.v. \standaardopmaak)
-% execute command interactive commands
-
-% \stelsubpaginanummerin[reset]
-% \bepaallijstkenmerken
-% \bepaalregisterkenmerken
-
-% in handleiding cmyk/rgb/k
-% in handleiding: \raggedright etc fontswitch afhankelijk (em)
-
-\newevery \everycorps \EveryCorps % just to be sure
-
-\appendtoks \setnormalbaselines \to \everycorps
-\appendtoks \setstrut \to \everycorps
-\appendtoks \settopskip \to \everycorps
-\appendtoks \setmaxdepth \to \everycorps
-\appendtoks \stelinspringenin \to \everycorps
-\appendtoks \stelblankoin \to \everycorps
-\appendtoks \stelwitruimtein \to \everycorps
-
-% \appendtoks .. \to \everypar
-% \appendtoks .. \to \everypar
-% \appendtoks .. \to \everypar
-
-% kan elders ook worden gebruikt i.i.g ongeveer
-% \v!tekst EN \c!tekst etc checken
-
-\unprotect
-
-\def\gobbleassigndimen#1\\{}
-
-\def\assigndimen#1#2%
- {\afterassignment\gobbleassigndimen#1=#2\!!zeropoint\\}
-
-\protect
-
-\writestatus{loading}{Context Core Macros (a)}
-
-\unprotect
-
-\startmessages dutch library: systems
- title: systeem
- 1: laden hulpfile uitgesteld (typemode)
- 2: -- geladen
- 3: probeer LaTeX eens
- 4: commando -- is al gedefinieerd
- 5: macro's uit -- geladen
- 6: geen macro's in -- gevonden
- 7: macro's uit -- reeds geladen
- 8: nieuwe versie hulpfile, tweede run nodig
- 9: -- niet gevonden/geplaatst
- 10: gebruik geen em in --
- 11: aanmaken basale hulpfile
- 12: de hulpfile is niet gesorteerd, gebruik texutil
- 13: markering -- gedefinieerd --
- 14: geforceerde paginaovergang in lijst voor --
- 15: wegschrijven buffer --
- 16: inlezen buffer --
- 17: verbatim inlezen buffer --
- 18: synoniem -- -- bestaat niet
- 19: betekenissen (synoniemen) van -- geladen
- 20: betekenissen (sorteren) van -- geladen
-\stopmessages
-
-\startmessages english library: systems
- title: system
- 1: loading utility-file postponed (typemode)
- 2: -- loaded
- 3: try LaTeX
- 4: command -- is already defined
- 5: macros of -- loaded
- 6: no macros found in --
- 7: macros of -- already loaded
- 8: new version of utility file, second pass needed
- 9: -- not found/processed
- 10: don't use em in --
- 11: building simple utility-file
- 12: the utility-file is not sorted, use texutil
- 13: mark -- defined --
- 14: forced newpage in list at --
- 15: saving buffer --
- 16: typesetting buffer --
- 17: typesetting verbatim buffer --
- 18: synonym -- -- does not exist
- 19: meaning (synonyms) of -- loaded
- 20: meaning (sorts) of -- loaded
-\stopmessages
-
-\startmessages german library: systems
- title: system
- 1: Laden der Hilfsdatei verschoben (tippenmodus)
- 2: -- geladen
- 3: Versuche LaTeX
- 4: Befehl -- ist bereits definiert
- 5: Makros in -- geladen
- 6: Keine Makros in -- gefunden
- 7: Makros in -- bereits geladen
- 8: Neue Version der Hilfsdatei, zweiter Durchlauf benoetigt
- 9: -- nicht gefunden/verarbeitet
- 10: Benutzte kein em in --
- 11: Erstelle einfache Hilfdatei
- 12: Die Hilfdatei ist nicht sortiert, verwende texutil
- 13: Beschriftung -- definiert --
- 14: Erzwungendes Seitenumbruch in Liste bei --
- 15: Speichere Buffer --
- 16: Setzte Buffer --
- 17: Setzte tippen-Buffer --
- 18: Synonym -- -- existiert nicht
- 19: Bedeutung (synonyme) von -- geladen
- 20: Bedeutung (sortieren) von -- geladen
-\stopmessages
-
-\startmessages dutch library: references
- title: verwijzingen
- 1: verwijzing -- onbekend
- 2: dubbele verwijzing -- op pagina --
-\stopmessages
-
-\startmessages english library: references
- title: references
- 1: unknown reference --
- 2: duplicate reference -- on page --
-\stopmessages
-
-\startmessages german library: references
- title: referenzen
- 1: unbekannte Referenz --
- 2: doppelte Referenz -- auf Seite --
-\stopmessages
-
-\startmessages dutch library: textblocks
- title: tekstblokken
- 1: nieuwe versie, tweede run nodig
- 2: wegschrijven blokken naar --
- 3: inlezen blokken uit --
- 4: er is een tweede run nodig
- 5: -- niet verborgen
- 6: -- verborgen en verwerkt
- 7: -- verborgen
- 8: -- gehandhaafd
- 9: -- niet gehandhaafd
- 10: -- geladen en verwerkt
- 11: -- geladen en geplaatst
- 12: -- overgeslagen
-\stopmessages
-
-\startmessages english library: textblocks
- title: textblocks
- 1: new version, second pass needed
- 2: writing blocks to --
- 3: reading blocks from --
- 4: second pass needed
- 5: -- not hidden
- 6: -- hidden and processed
- 7: -- hidden
- 8: -- typeset
- 9: -- not typeset
- 10: -- loaded and processed
- 11: -- loaded and typeset
- 12: -- skipped
-\stopmessages
-
-\startmessages german library: textblocks
- title: textblock
- 1: neue Version, zweiter Durchlauf benoetigt
- 2: schreibe Bloecke zu --
- 3: lese Bloecke von --
- 4: zweiter Durchlauf benoetigt
- 5: -- nicht verborgen
- 6: -- verborgen und verarbeitet
- 7: -- verborgen
- 8: -- gesetzt
- 9: -- nicht gesetzt
- 10: -- geladen und verarbeitet
- 11: -- geladen und gesetzt
- 12: -- ausgelassen
-\stopmessages
-
-\startmessages dutch library: floatblocks
- title: plaatsblokken
- 1: -- hernummerd / -- => --
- 2: -- bewaard
- 3: -- verplaatst
- 4: -- geplaatst
- 5: volgorde aangepast
- 6: maximaal -- boven
- 7: maximaal -- onder
- 8: minder dan -- regels
- 9: volgorde verstoord
- 10: -- begrensd
- 11: geen blok opgegeven
- 12: niet gedefinieerd
-\stopmessages
-
-\startmessages english library: floatblocks
- title: floatblocks
- 1: -- renumbered / -- => --
- 2: -- saved
- 3: -- moved
- 4: -- placed
- 5: order adapted
- 6: n of top floats limited to --
- 7: n of bottom floats limited to --
- 8: less than -- lines
- 9: order disturbed
- 10: -- limited
- 11: no block given
- 12: undefined
-\stopmessages
-
-\startmessages german library: floatblocks
- title: Gleitobjektbloecke
- 1: -- neu nummeriert / -- => --
- 2: -- gespeichert
- 3: -- verschoben
- 4: -- plaziert
- 5: Reihenfolge angepasst
- 6: Anz. der oberen Gleitobjekte beschraengt auf --
- 7: Anz. der unteren Gleitobjekte beschraengt auf --
- 8: weniger als -- zeilen
- 9: Reigenfolge gestoert
- 10: -- begrenzt
- 11: kein Block gegeben
- 12: undefiniert
-\stopmessages
-
-\startmessages dutch library: layouts
- title: layout
- 1: teksthoogte aangepast met -- op pagina --
- 2: -- maal uitgestelde tekst tussengevoegd
- 3: -- maal tekst plaatsen uitstellen
- 4: margeblokken actief
- 5: margeblokken inactief
- 6: subpagina reeks -- verwerkt (aantal --)
- 7: beeldmerken berekenen
- 8: achtergronden berekenen
- 9: momenteen maximaal -- niveaus in opsommingen
-\stopmessages
-
-\startmessages english library: layouts
- title: layout
- 1: textheight adapted with -- at page --
- 2: -- times postponed text placed
- 3: -- times text postponed
- 4: marginblocks active
- 5: marginblocks inactive
- 6: subpage set -- processed (size --)
- 7: calculating logospace
- 8: calculating backgrounds
- 9: currently no more than -- levels in itimezations
-\stopmessages
-
-\startmessages german library: layouts
- title: Layout
- 1: Texthoehe angepasst mit -- auf Seite --
- 2: -- mal verschobener Text plaziert
- 3: -- mal Text verschoben
- 4: marginalbloecke aktiv
- 5: marginalbloecke inaktiv
- 6: Unterseitenfolge -- verarbeitet (Groesse --)
- 7: berechne Platz des Logo
- 8: berechne Hintergrund
- 9: z.Z. nicht mehr als -- Niveaus in Posten
-\stopmessages
-
-\startmessages dutch library: structures
- title: structuur
- 1: begin van sectieblok --
- 2: eind van sectieblok --
-\stopmessages
-
-\startmessages english library: structures
- title: structure
- 1: begin of sectionblock --
- 2: end of sectionblock --
-\stopmessages
-
-\startmessages german library: structures
- title: struktur
- 1: Begin des Abschnittsblock --
- 2: Ende des Abschnittsblock --
-\stopmessages
-
-\CONTEXTtrue % Now we know that we can use ConTeXt commands.
-
-% \def\teststatus{stop}
-%
-% \def\doiftrue {\iftrue}
-% \def\doiffalse {\iffalse}
-%
-% \def\setstatus#1#2%
-% {\doifelse{\getvalue{#1\c!status}}{\v!start}
-% {\let#2=\doiftrue}
-% {\let#2=\doiffalse}}
-%
-% \setstatus{test}\iftest
-%
-% \iftest
-% \message{JA}
-% \else
-% \message{NEE}
-% \fi
-
-% om problemen te voorkomen:
-%
-% \ascii => \@@ascii@@
-% \asciiA => \@@ascii@@A
-% \asciiB => \@@ascii@@B
-
-% Nodig i.v.m. inspringen eerste alineas
-
-\def\explicithmode%
- {\unhbox\voidb@x}
-
-% Nodig voor gebruikers
-
-\def\geentest{\donottest}
-
-% Dit moet nog ergens een plaats krijgen:
-
-\def\stelfactorenin%
- {\stelwitruimtein
- \stelblankoin
- \settopskip
- \setmaxdepth}
-
-% Nog doen:
-%
-% \goodbreak -> \allowbreak en \dosomebreak{..} in koppen
-%
-% bij koppen zowieso: \blanko[reset]
-
-% Nog in commando verwerken:
-%
-% \voorkeur … la \blanko
-%
-% Om ongewenste witruimte te voorkomen kan met \dosomebreak{\break}
-% een \penalty v¢¢r witruimte worden geplaatst.
-
-\def\dosomebreak#1%
- {\skip0=\lastskip
- \removelastskip
- %\type{#1}%
- #1\relax
- \ifdim\skip0=\!!zeropoint
- \else
- \vskip\skip0
- \fi}
-
-% beter, vooral in \vbox; nog in \pagina toepassen s!
-
-\def\doifoutervmode#1%
- {\ifvmode\ifinner\else#1\fi\fi}
-
-\def\dosomebreak#1%
- {\doifoutervmode
- {\skip0=\lastskip
- \removelastskip
- %\leavevmode\type{#1}%
- #1\relax
- \ifdim\skip0=\!!zeropoint % else interference with footnotes
- \else
- \vskip\skip0
- \fi}}
-
-% Idem:
-%
-% \springin
-
-%\def\noindentation% vervallen
-% {\EveryPar
-% {\ifdim\parindent=\!!zeropoint
-% \else
-% \bgroup
-% \setbox0=\lastbox
-% \egroup
-% \fi
-% \EveryPar{}}}
-
-\newif\ifindentation \indentationtrue % documenteren, naar buiten
-
-\let\checkindentation=\relax
-
-\def\donoindentation%
- {\ifdim\parindent=\!!zeropoint
- \else
- \bgroup
- \setbox0=\lastbox
- \egroup
- \fi}
-
-\def\noindentation%
- {\indentationfalse
- \def\checkindentation%
- {\donoindentation
- \let\checkindentation=\indentationtrue}}
-
-\def\indentation%
- {\ifvmode
- \ifdim\parindent=\!!zeropoint
- \else
- \hskip\parindent
- \fi
- \fi}
-
-% vergeten
-
-% \def\forgetall%
-% {\everypar{}% % i.v.m. sidefloats
-% \let\par=\endgraf % i.v.m. getpar etc
-% \stelwitruimtein[\v!geen]%
-% \stelinspringenin[\v!geen]%
-% \leftskip\!!zeropoint
-% \rightskip\!!zeropoint
-% \relax}
-%
-% \def\forgetparindent%
-% {\everypar{}%
-% \voorwit\!!zeropoint % toegevoegd
-% \parindent\!!zeropoint}
-
-\def\forgeteverypar%
- {\everypar{}}
-
-\def\forgeteverypar%
- {\everypar{\the\neverypar}}
-
-\def\forgetparindent%
- {\forgeteverypar
- \stelinspringenin[\v!geen]}
-
-\def\forgetparskip%
- {\stelwitruimtein[\v!geen]}
-
-\def\forgetbothskips%
- {\leftskip\!!zeropoint
- \rightskip\!!zeropoint\relax}
-
-\def\forgetspacing%
- {\emergencystretch\!!zeropoint\relax}
-
-\def\forgetall%
- {\let\par=\endgraf % i.v.m. getpar etc
- \forgetparskip
- \forgetparindent
- \forgetbothskips
- \forgetspacing} % i.v.m. funny spacing in pagebody
-
-\def\localvbox#1#%
- {\vbox#1\bgroup
- \forgetparskip
- \setlocalhsize
- \hsize=\localhsize
- \forgetparindent
- \forgetbothskips
- \forgeteverypar
- \let\next=}
-
-% ach ja
-
-\unexpanded\def\dostartattributes#1%
- {\begingroup % geen \bgroup, anders in mathmode lege \hbox
- \doifdefinedelse{#1\c!kleur}
- {\def\colorattribute{\getvalue{#1\c!kleur}}}
- {\let\colorattribute=\empty}%
- \doifdefinedelse{#1\c!letter}
- {\def\fontattribute{\getvalue{#1\c!letter}}}
- {\let\fontattribute=\empty}%
- \startcolor[\colorattribute]%
- \doconvertfont{\fontattribute}}
-
-\unexpanded\def\dostopattributes%
- {\stopcolor
- \endgroup}
-
-\unexpanded\def\doattributes#1#2%
- {\dostartattributes{#1}{#2}\dostopattributes}
-
-% \dotextprefix{tekst}
-%
-% als {tekst} niet leeg is: tekst~
-
-\def\dotextprefix#1%
- {\ConvertToConstant\doifnot{#1}{}{#1~}}
-
-\def\herhaal {\dorepeat}
-\def\herhaler {\repeater}
-\def\herhaalmetcommando {\dorepeatwithcommand}
-
-% This permits things like ^\index{hans}^, where hans is
-% duplicated in the text.
-
-\newif\ifduplicate
-
-\bgroup
-\gdef\checkduplication% in line with Knuth
- {\ifmmode
- \def\next{^}%
- \else
- \let\next=\startduplication
- \fi
- \next}
-\gdef\insideduplication%
- {\ifmmode
- \def\next{^}%
- \else
- \let\next=\egroup
- \fi
- \next}
-\catcode`\^=\@@active
-\gdef\enableduplication%
- {\catcode`\^=\@@active
- \let^=\checkduplication}
-\gdef\disableduplication%
- {\catcode`\^=\@@superscript}
-\gdef\startduplication%
- {\bgroup
- \duplicatetrue
- \let^=\insideduplication}
-\egroup
-
-\def\verbatim#1%
- {\convertargument#1\to\ascii\ascii}
-
-% mogelijke optimalisaties:
-%
-% \ifx ...\else ...\fi
-% \ifvisible ... \fi
-
-% De opbouw van deze file
-%
-% Deze file bevat naast de verschillende Pragma-Macro's ook
-% helpinformatie bij deze macro's en templates. Een blok
-% helpinformatie wordt gekenmerkt door een %I.
-%
-% Een blok kan zijn opgedeeld in pagina's. In dat geval is
-% %I vervangen door %P. De eerste regel van een blok bevat
-% de titel van de informatie.
-%
-% Een template (voorgedefinieerde structuur) wordt gekenmerkt
-% door %T. Ook hier bevat de eerste regel een titel,
-% eventueel gevolgd door een mnemonic.
-%
-% Zowel de helpinformatie als de templates zijn in het
-% programma TeXEdit oproepbaar.
-%
-% Het programma TeXEdit kan t.z.t. worden ingesteld met
-% behulp van de onderstaande, door %S voorafgegane,
-% setupcommando's. Vooralsnog is een en ander 'hard' in het
-% programma geprogrammeerd.
-
-%S InputFile \input
-%S InputFile \omgeving \environment
-%S InputFile \projekt \project
-%S InputFile \produkt \product
-%S InputFile \onderdeel \component
-%S
-%S CheckStrings \start \stop
-%S CheckStrings \begin \end
-%S CheckStrings \begin \eind
-%S
-%S CheckChars { }
-%S CheckChars [ ]
-%S CheckChars ( )
-%S
-%S CheckChar $
-
-% Het <pagina>-karakter (FormFeed), wordt omgezet in \par
-
-\edef\oldlinefeed{\the\catcode`\^^L}
-
-\catcode`\^^L=\oldlinefeed
-
-\catcode`\^^L=\@@endofline
-
-%I n=Struts
-%I c=\strut,\setnostrut,\setstrut,\toonstruts
-%I
-%I Struts zijn onzichtbare 'karakters' met alleen een hoogte
-%I en diepte. De volgende commando's hebben betrekking op
-%I struts
-%I
-%I \strut
-%I \setstrut
-%I \setnostrut
-%I \toonstruts
-
-\def\toonstruts%
- {\setteststrut}
-
-% Hieronder volgen enkele instellingen en macro's ten behoeve
-% van de interlinie en \strut. De waarden 2.8, 0.07, 0.72 en
-% 0.28 zijn ooit eens ontleend aan INRS-TEX en moeten wellicht
-% nog eens instelbaar worden.
-%
-% \lineheight : de hoogte van een regel
-% \spacing{getal} : instellen interlinie
-% \normalbaselines : instellen regelafstend
-%
-% \setstrut : instellen \strut
-% \setnostrut : resetten \strut, \endstrut, \begstrut
-%
-% \setteststrut : instellen zichtbare struts
-% \resetteststrut : instellen onzichtbare struts
-%
-% \setfontparameters : instellen na fontset
-%
-% De hoogte van een regel (\lineheight) is gelijk aan de
-% som van de hoogte (\ht) en diepte (\dp) van \strutbox.
-%
-% \strut : denkbeeldig blokje met hoogte en diepte
-%
-% Een \hbox kan als deze aan het begin van een regel staat
-% een breedte \hsize krijgen. Dit is soms te voorkomen met het
-% commando \leavevmode. Binnen een \vbox geeft dit echter
-% niet altijd het gewenste resultaat, vandaar het commando
-%
-% \leaveoutervmode
-
-% Pas op: niet zomaar \topskip en \baselineskip aanpassen
-% en zeker niet \widowpenalty. Dit kan ernstige gevolgen
-% hebben voor kolommen.
-%
-% Enige glue kan op zich geen kwaad, echter als blanko=vast,
-% dan moet ook de rek 0 zijn. Binnen kolommen is rek ook
-% niet bepaald mooi. Een hele kleine waarde (0.025) voldoet,
-% omdat een positieve glue eindeloos rekbaar is.
-
-\newdimen\strutdimen
-\newdimen\lineheight
-\newdimen\openlineheight
-
-\def\strutheightfactor {.72}
-\def\strutdepthfactor {.28}
-
-\def\baselinefactor {2.8}
-\def\baselinegluefactor {0}
-
-\def\normallineheight {\baselinefactor ex}
-
-\def\strutheight {0pt}
-\def\strutdepth {0pt}
-\def\strutwidth {0pt}
-
-\def\spacingfactor {1}
-
-\def\topskipfactor {1.0}
-\def\maxdepthfactor {0.4}
-
-\let\systemtopskipfactor = \topskipfactor
-\let\systemmaxdepthfactor = \maxdepthfactor
-
-% De onderstaande definitie wordt in de font-module overruled
-
-\ifx\globalcorpssize\undefined
- \newdimen\globalcorpssize \globalcorpssize=12pt
-\fi
-
-% door een \dimen. Dit is geen probleem omdat (1) de default
-% korpsgrootte 12pt is en (2) de fonts nog niet geladen zijn
-% en de instellingen bij het laden nogmaals plaatsvinden.
-
-\def\settopskip%
- {\topskip=
- \systemtopskipfactor\globalcorpssize
- \ifr@ggedbottom\!!plus5\globalcorpssize\fi
- \relax}
-
-\def\setmaxdepth%
- {\maxdepth=\systemmaxdepthfactor\globalcorpssize}
-
-\def\normalbaselines%
- {\baselineskip\normalbaselineskip
- \lineskip\normallineskip
- \lineskiplimit\normallineskiplimit}
-
-\def\setnormalbaselines%
- {\lineheight=\normallineheight
- \openlineheight=\spacingfactor\lineheight
- \normalbaselineskip=
- \openlineheight
- \!!plus\baselinegluefactor\openlineheight
- \!!minus\baselinegluefactor\openlineheight
- \normallineskip\!!onepoint\relax
- \normallineskiplimit\!!zeropoint\relax
- \normalbaselines}
-
-\def\setspacingfactor#1\to#2\by#3\\%
- {\strutdimen=#2pt\relax
- \strutdimen=#3\strutdimen
- \edef#1{\withoutpt{\the\strutdimen}}}
-
-\def\spacing#1%
- {\edef\spacingfactor{#1}%
- \setspacingfactor\systemtopskipfactor\to\topskipfactor\by#1\\%
- \setspacingfactor\systemmaxdepthfactor\to\maxdepthfactor\by#1\\%
- \setnormalbaselines
- \setstrut}
-
-\def\setstrutdimen#1#2#3% % een strut is n.m maal ex
- {\strutdimen=\normallineheight % wat niet per se \lineheight
- \strutdimen=#2\strutdimen % is omdat een strut lokaal
- \strutdimen=#3\strutdimen % kan afwijken van de globale
- \edef#1{\the\strutdimen}} % strut
-
-\let\normalstrut=\strut
-
-% The double \hbox construction enables us to \backtrack
-% boxes.
-
-\def\setstrut%
- {\setstrutdimen\strutheight\strutheightfactor\spacingfactor
- \setstrutdimen\strutdepth\strutdepthfactor\spacingfactor
- \let\strut=\normalstrut
- \setbox\strutbox=\normalhbox
- {\normalhbox
- {\vrule
- \!!width \strutwidth
- \!!height \strutheight
- \!!depth \strutdepth
- \kern-\strutwidth}}}
-
-\def\setteststrut%
- {\def\strutwidth{.8pt}%
- \setstrut}
-
-\def\begstrut%
- {\ifdim\ht\strutbox=\!!zeropoint\relax\else
- \strut
- \normalpenalty\!!tenthousand
- \normalhskip\!!zeropoint
- \ignorespaces
- \fi}
-
-\def\endstrut%
- {\ifdim\ht\strutbox=\!!zeropoint\relax\else
- \unskip
- \normalpenalty\!!tenthousand
- \normalhskip\!!zeropoint
- \strut
- \fi}
-
-\def\setnostrut%
- {\setbox\strutbox=\normalhbox{\normalhbox{}}%
- \def\strut{}%
- \def\endstrut{}%
- \def\begstrut{}}
-
-\def\resetteststrut%
- {\let\strutwidth=\!!zeropoint
- \setstrut}
-
-\def\setfontparameters%
- {\the\everycorps}
-
-% \setnormalbaselines
-% \setstrut
-% \settopskip
-% \setmaxdepth
-% \the\EveryFontSwitch
-
-\newskip\oldbaselineskip
-\newskip\oldlineskip
-\newskip\oldlineskiplimit
-
-\newif\ifinterlineskipoff
-
-\def\offinterlineskip%
- {\ifinterlineskipoff\else
- \interlineskipofftrue
- \oldbaselineskip=\baselineskip
- \oldlineskip=\lineskip
- \oldlineskiplimit=\lineskiplimit
- \fi
- \baselineskip-1000\p@ % knuth's value
- \lineskip\z@ % knuth's value
- \lineskiplimit\maxdimen} % knuth's value
-
-\def\oninterlineskip%
- {\ifinterlineskipoff
- \baselineskip=\oldbaselineskip
- \lineskip=\oldlineskip
- \lineskiplimit=\oldlineskiplimit
- \fi}
-
-\def\leaveoutervmode%
- {\ifvmode\ifinner\else
- \leavevmode
- \fi\fi}
-
-%D \macros
-%D {getnoflines}
-%D {}
-%D
-%D Het commando \type{\getnoflines} converteert een hoogte
-%D (dimensie) in een aantal regels en kent dit toe aan
-%D \type{\noflines}.
-%D
-%D \starttypen
-%D \getnoflines{dimensie}
-%D \stoptypen
-%D
-%D Er wordt gedeeld door \type{\openlineheight} en een hoogte
-%D van~0pt komt overeen met 0~regels.
-
-\newcount\noflines
-
-\def\getnoflines#1%
- {\dimen0=#1\relax
- \ifdim\dimen0=\!!zeropoint\relax
- \noflines=0\relax
- \else
- \divide\dimen0 by \openlineheight
- \noflines=\dimen0
- \advance\noflines by 1\relax
- \fi}
-
-
-% We passen ook de \displayskip's wat aan (nog eens uitzoeken):
-
-\def\displayskipsize#1#2%
- {#1\lineheight\!!plus#2\lineheight\!!minus#2\lineheight}
-
-\def\displayskipfactor {1.0}
-\def\displayshortskipfactor {0.8}
-
-\def\displayskipgluefactor {0.3}
-\def\displayshortskipgluefactor {0.2}
-
-\def\abovedisplayskipsize% doet niets ?
- {\displayskipsize\displayskipfactor\displayskipgluefactor}
-
-\def\belowdisplayskipsize% doet niets ?
- {\displayskipsize\displayskipfactor\displayskipgluefactor}
-
-\def\abovedisplayshortskipsize%
- {\displayskipsize\displayshortskipfactor\displayshortskipgluefactor}
-
-\def\belowdisplayshortskipsize%
- {\displayskipsize\displayshortskipfactor\displayshortskipgluefactor}
-
-\def\setdisplayskip#1#2#3%
- {#1=#2\relax
- \advance#1 by -\parskip
- \advance#1 by -#3\relax}
-
-\def\setdisplayskips%
- {\setdisplayskip\abovedisplayskip\abovedisplayskipsize\baselineskip
- \setdisplayskip\belowdisplayskip\belowdisplayskipsize\!!zeropoint
- \setdisplayskip\abovedisplayshortskip\abovedisplayshortskipsize\baselineskip
- \setdisplayskip\belowdisplayshortskip\belowdisplayshortskipsize\!!zeropoint}
-
-% We stellen enkele penalties anders in dan Plain TEX:
-
-\widowpenalty=2000 % was: 1000
-\clubpenalty=2000 % was: 800
-
-% Bovendien definieren we enkele extra \fill's:
-
-\def\hfilll%
- {\hskip\!!zeropoint\!!plus1filll}
-
-\def\vfilll%
- {\vskip\!!zeropoint\!!plus1filll}
-
-% De onderstaande hulpmacro's moeten nog eens instelbaar worden
-% gemaakt.
-
-\def\tfskipsize{1em\relax}
-
-\def\tfkernsize{1ex\relax}
-
-\def\tfskip%
- {{\tf\hskip\tfskipsize}}
-
-\def\tfkern%
- {{\tf\kern\tfkernsize}}
-
-% Dit hoort eigenlijk thuis onder het kopje boodschappen cq,
-% meldingen.
-
-\def\mindermeldingen%
- {\hbadness=10000
- \hfuzz=\maxdimen
- \vbadness=10000
- \vfuzz=\maxdimen}
-
-% Utility-file
-%
-% De onderstaande macro's ondersteunen het gebruik van de
-% zogeheten utility-file. Alle extern onder te brengen
-% informatie wordt opgeslagen in de file \jobname.tui, tenzij
-% er selectief pagina's worden gezet. In dat geval wordt de
-% file \jobname.tmp gebruikt. Informatie wordt ingelezen uit
-% de file \jobname.tuo, welke door TeXUtil wordt aangemaakt.
-
-% Bepaalde commando's worden als string weggeschreven. Deze
-% zijn aan het eind van deze file gedefinieerd.
-
-% Om een opbouw van spaties te voorkomen (???) moet ^^M een
-% andere betekenis krijgen:
-%
-% \catcode`\^^M=14 (comment)
-%
-% read file
-%
-% \catcode`\^^M=5 (end of line)
-
-\newwrite\uti
-\newif\ifutilitydone
-
-\def\@@utilityerrormessage%
- {\showmessage{\m!systems}{8}{}%
- \global\let\@@utilityerrormessage=\relax}
-
-\def\thisisutilityversion#1%
- {\doifnot{\utilityversion}{#1}%
- {\@@utilityerrormessage
- \resetutilities
- \endinput}}
-
-\def\writeutilitycommand#1%
- {\write\uti{c \string#1}}
-
-\def\openutilities%
- {\immediate\openout\uti=\jobname
- \ifselecteren
- .\f!temporaryextension
- \else
- .\f!inputextension
- \fi
- \immediate\writeutilitycommand%
- {\thisisutilityversion{\utilityversion}}}
-
-\def\closeutilities%
- {\savenofsubpages
- \savenofpages
- \immediate\closeout\uti}
-
-\def\utilityresetlist{}
-
-\def\addutilityreset#1%
- {\addtocommalist{\s!reset#1}\utilityresetlist}
-
-\def\resetutilities%
- {\processcommacommand[\utilityresetlist]\getvalue}
-
-% #1=type
-% #2=file
-% #3=melding
-
-% #4=voor
-% #5=na
-
-% Er wordt gegroepeerd. Als binnen een lijst (bijvoorbeeld) de
-% \leftskip is aangepast, maar nog geen \par is gegeven, dan
-% geldt buiten de groep de oude \leftskip. Aan #5 kan dan
-% ook \par worden meegegeven om de paragraaf af te sluiten.
-
-\newif\ifdoinpututilities
-\newif\ifunprotectutilities % voor't geval er \v!xxxxxx's zijn
-
-\def\utilitycheckmessage%
- {\showmessage{\m!systems}{12}{}%
- \global\let\utilitycheckmessage=\relax}
-
-\def\saveutilityline#1 #2\txen% tricky maar ok, want achter \command
- {\if #1c% commands % in \ascii staat een spatie; #1 kan
- \write\scratchwrite{#2}% % \par in stringvorm zijn (eof)!
- \else\if#1s% synoniems
- \utilitycheckmessage
- \else\if#1r% registers
- \utilitycheckmessage
- \fi\fi\fi}
-
-\def\checkutilityfile%
- {\doiflocfileelse{\jobname.\f!outputextension}
- {}
- {\doiflocfileelse{\jobname.\f!inputextension}
- {\bgroup
- \showmessage{\m!systems}{11}{}%
- \openout\scratchwrite=\jobname.\f!outputextension
- \openlocin\scratchread{\jobname.\f!inputextension}%
- \def\doprocessline%
- {\ifeof\scratchread
- \def\doprocessline{\closein\scratchread}%
- \else
- \read\scratchread to \ascii
- \convertcommand\ascii\to\ascii
- \expandafter\saveutilityline\ascii\txen
- \fi
- \doprocessline}%
- \doprocessline
- \closeout\scratchwrite
- \egroup}
- {}}}
-
-\long\def\doutilities#1#2#3#4#5% % introduceren in utility file
- {%\ifprocessingverbatim
- % \showmessage{\m!systems}{1}{}%
- %\else
-\restorecatcodes
- \resetutilities
- \def\docommando##1% % zo kunnen meerdere dingen
- {\getvalue{\s!set##1}}% % in een pass worden gedaan,
- \processcommacommand[#1]\docommando % zie bijvoorbeeld lijsten
- \begingroup
- \footnotesenabledfalse
- \doinpututilitiestrue
- \global\utilitydonefalse
- \catcode`\%=\@@comment\relax
- \pushendofline % geeft problemen zodra andere file wordt ingelezen
- \ifunprotectutilities % nog nodig ?
- \unprotect
- \fi
- \ifnum\catcode`\@=\@@active \else
- \catcode`\@=\@@letter % permits expanded commands with \@'s
- \fi
- \ifnum\catcode`\!=\@@active \else
- \catcode`\!=\@@letter % permits multilingual constants
- \fi
- #4\readjobfile{#2.\f!outputextension}{}{}#5%
- \relax
- \ifunprotectutilities
- \protect
- \fi
- \popendofline
- \ifutilitydone\else
- \doifnot{#3}{}
- {\showmessage{\m!systems}{9}{{#3}}%
- \ifvoorlopig
- \blanko
- \type{[\currentmessagetext]}%
- \blanko
- \fi}%
- \fi
- \endgroup
- }%\fi}
-
-% Commando's ten behoeve van two-pass lists. In principe
-% kan alles in een keer worden ingelezen. Omdat de macro's
-% groeien is de kans groot dat het (main) geheugen door
-% (de)allocatie volloopt. Vandaar dat we het toch maar niet
-% doen.
-%
-% \definetwopasslist{\s!xxx}
-%
-% \gettwopassdata{\s!xxx}
-% \getfrompassdata{\s!xxx}{n} n=index (getal)
-% \findtwopassdata{\s!xxx}{tag} bijvoorbeeld {label:}
-% \iftwopassdatafound
-% \twopassdata
-%
-% \twopassentry{\s!xxx}{nr}{data} nr alleen voor testdoeleinden
-
-\def\alltwopasslists{}
-
-\newif\iftwopassdatafound
-
-\def\twopassentry#1%
- {\executeifdefined{@@#1\s!pass}\gobbletwoarguments}
-
-\def\definetwopasslist#1%
- {\doifundefined{#1:\s!list}
- {\addtocommalist{#1}\alltwopasslists
- \doglobal\addutilityreset{#1\s!pass}%
- \setgvalue{\s!set#1\s!pass}%
- {\setgvalue{@@#1\s!pass}####1####2%
- {\debuggerinfo{\m!systems}{twopass data #1 - ####1 = ####2}%
- \setxvalue{#1:\s!list}{\getvalue{#1:\s!list}####2,}}}%
- \setgvalue{\s!reset#1\s!pass}%
- {\setgvalue{@@#1\s!pass}####1####2{}}%
- \getvalue{\s!reset#1\s!pass}}}
-
-\def\doloadtwopassdata#1%
- {\doifundefined{#1:\s!list}
- {\setgvalue{#1:\s!list}{}%
- \doutilities{#1\s!pass}{\jobname}{}{}{}%
- \setxvalue{#1:\s!list}{\getvalue{#1:\s!list}0,0}}}
-
-\def\loadtwopassdata%
- {\processcommacommand[\alltwopasslists]\doloadtwopassdata}
-
-\def\twopassdata{}
-
-\def\dogettwopassdata[#1,#2]#3%
- {\doifelse{#1}{0}
- {\twopassdatafoundfalse}
- {\twopassdatafoundtrue
- \setxvalue{#3:\s!list}{#2}%
- \edef\twopassdata{#1}}}
-
-\def\gettwopassdata#1%
- {\edef\!!stringa{\getvalue{#1:\s!list}}%
- \debuggerinfo{\m!systems}{twopass get #1 - \!!stringa}%
- \expandafter\dogettwopassdata\expandafter[\!!stringa]{#1}}
-
-\def\dofindtwopassdata#1#2%
- {\edef\!!stringa{,\getvalue{#1:\s!list}}%
- \debuggerinfo{\m!systems}{twopass find #2 - \!!stringa}%
- \def\dodofindtwopassdata[##1,##2#2##3,##4]%
- {\def\twopassdata{##3}%
- \doifelse{##3}{}
- {\twopassdatafoundfalse}
- {\twopassdatafoundtrue}}%
- \@EA\dodofindtwopassdata\@EA[\!!stringa,#2,#2,]}
-
-\def\findtwopassdata%
- {\ExpandBothAfter\dofindtwopassdata}
-
-\def\dogetfirsttwopassdata[#1,#2]#3%
- {\doifelse{#1}{0}
- {\twopassdatafoundfalse}
- {\twopassdatafoundtrue
- \edef\twopassdata{#1}}}
-
-\def\getfirsttwopassdata#1%
- {\edef\!!stringa{\getvalue{#1:\s!list}}%
- \expandafter\dogetfirsttwopassdata\expandafter[\!!stringa]{#1}}
-
-\def\getlasttwopassdata#1%
- {\edef\twopassdata{0}\twopassdatafoundfalse
- \newcounter\noftwopassitems
- \def\docommando##1%
- {\doifnot{##1}{0}
- {\increment\noftwopassitems
- \edef\twopassdata{##1}\twopassdatafoundtrue}}%
- \processcommacommand[\getvalue{#1:\s!list}]\docommando}
-
-\def\getfromtwopassdata#1#2%
- {\getfromcommacommand[\getvalue{#1:\s!list}][#2]%
- \doifelsenothing{\commalistelement}
- {\twopassdatafoundfalse}
- {\twopassdatafoundtrue
- \let\twopassdata=\commalistelement}}
-
-% Maten
-%
-% De onderstaande instellingen worden gebruikt voor het
-% vastleggen van de zetspiegel en marges.
-
-\voffset=0pt % setting this to -1in let's go metapost crazy
-\hoffset=0pt % setting this to -1in let's go metapost crazy
-
-\newdimen\papierhoogte
-\newdimen\papierbreedte
-
-\newdimen\printpapierhoogte
-\newdimen\printpapierbreedte
-
-\newdimen\zethoogte
-\newdimen\zetbreedte
-
-\newdimen\teksthoogte
-\newdimen\tekstbreedte
-
-\newdimen\kopwit \kopwit=2cm
-\newdimen\rugwit \rugwit=2cm
-
-\newdimen\hoofdhoogte \hoofdhoogte=2cm
-\newdimen\voethoogte \voethoogte=2cm
-
-\newdimen\kopkopwit \kopkopwit=0cm
-
-\newdimen\kopoffset \kopoffset=\!!zeropoint
-\newdimen\rugoffset \rugoffset=\!!zeropoint
-
-\newdimen\linkermargebreedte \linkermargebreedte=3cm
-\newdimen\rechtermargebreedte \rechtermargebreedte=\linkermargebreedte
-
-\newdimen\linkerrandbreedte \linkerrandbreedte=3cm
-\newdimen\rechterrandbreedte \rechterrandbreedte=\linkerrandbreedte
-
-\newdimen\bovenhoogte \bovenhoogte=1cm
-\newdimen\onderhoogte \onderhoogte=\bovenhoogte
-
-\def\margeafstand%
- {\@@lymargeafstand}
-
-\def\randafstand%
- {\@@lyrandafstand}
-
-\def\margebreedte%
- {\@@lymarge}
-
-\def\randbreedte%
- {\@@lyrand}
-
-\def\linkerrandafstand%
- {\ifdim\!!zeropoint<\linkerrandbreedte
- \@@lylinkerrandafstand
- \else
- \!!zeropoint
- \fi}
-
-\def\rechterrandafstand%
- {\ifdim\!!zeropoint<\rechterrandbreedte
- \@@lyrechterrandafstand
- \else
- \!!zeropoint
- \fi}
-
-\def\linkermargeafstand%
- {\ifdim\!!zeropoint<\linkermargebreedte
- \@@lylinkermargeafstand
- \else
- \!!zeropoint
- \fi}
-
-\def\rechtermargeafstand%
- {\ifdim\!!zeropoint<\rechtermargebreedte
- \@@lyrechtermargeafstand
- \else
- \!!zeropoint
- \fi}
-
-\def\bovenafstand%
- {\ifdim\!!zeropoint<\bovenhoogte
- \@@lybovenafstand
- \else
- \!!zeropoint
- \fi}
-
-\def\hoofdafstand%
- {\ifdim\!!zeropoint<\hoofdhoogte
- \@@lyhoofdafstand
- \else
- \!!zeropoint
- \fi}
-
-\def\voetafstand%
- {\ifdim\!!zeropoint<\voethoogte
- \@@lyvoetafstand
- \else
- \!!zeropoint
- \fi}
-
-\def\onderafstand%
- {\ifdim\!!zeropoint<\onderhoogte
- \@@lyonderafstand
- \else
- \!!zeropoint
- \fi}
-
-\newif\ifdubbelzijdig
-\dubbelzijdigfalse
-
-\newif\ifenkelzijdig
-\enkelzijdigtrue
-
-\def\doifsometextlineelse#1#2#3% ! omgekeerd !
- {\doifinsetelse{\getvalue{\??tk#1\v!tekst\c!status}}{\v!geen,\v!hoog}{#3}{#2}}
-
-\def\calculatevsizes% global needed in \resetlayoutregel
- {\redoglobal\teksthoogte=\zethoogte
- \redoglobal\kopkopwit=\kopwit
- \redoglobal\advance\kopkopwit by \hoofdhoogte
- \redoglobal\advance\kopkopwit by \hoofdafstand
- \doifsometextlineelse{\v!hoofd}
- {\redoglobal\advance\teksthoogte by -\hoofdhoogte
- \redoglobal\advance\teksthoogte by -\hoofdafstand}
- {}%
- \doifsometextlineelse{\v!voet}
- {\redoglobal\advance\teksthoogte by -\voethoogte
- \redoglobal\advance\teksthoogte by -\voetafstand}
- {}%
- \resetglobal
- \setvsize}
-
-\def\calculatereducedvsizes%
- {\teksthoogte=\zethoogte
- \doifsometextlineelse{\v!hoofd}
- {\advance\teksthoogte by -\hoofdhoogte
- \advance\teksthoogte by -\hoofdafstand}
- {\hoofdhoogte=\!!zeropoint}%
- \doifsometextlineelse{\v!voet}
- {\advance\teksthoogte by -\voethoogte
- \advance\teksthoogte by -\voetafstand}
- {\voethoogte=\!!zeropoint}}
-
-\def\calculatehsizes%
- {\tekstbreedte=\zetbreedte
- \sethsize}
-
-\def\sethsize%
- {\global\hsize=\tekstbreedte}
-
-\def\setvsize%
- {\ifdim\vsize=\teksthoogte
- \else
- \bgroup
- \dimen0=-\vsize
- \advance\dimen0 by \teksthoogte
- \global\advance\vsize by \dimen0
- \ifdim\pagegoal<\maxdimen
- \advance\dimen0 by \pagegoal
- \global\pagegoal=\dimen0
- \fi
- \egroup
- \fi}
-
-% Algemeen
-%
-% De Pragma-macros zijn samengesteld met behulp van de
-% commandos van PlainTeX- en enkele TugBoat routines.
-%
-% Voor de volledigheid zijn in de definitie steeds de
-% {}-haakjes vermeld. Deze haakjes zijn niet altijd
-% nodig, Als bijvoorbeeld een paragraaf bewerkt wordt,
-% kunnen ze achterwege blijven.
-%
-% Instellingen worden opgegeven tussen []-haakjes,
-% meestal direct na het commando. Instellingen mogen
-% soms achterwege blijven.
-%
-% Een aantal veelgebruikte macro's zijn in TeXEdit op
-% naam en/of door middel van een mnemonic oproepbaar.
-
-% %I n=Offset
-% %I c=\steloffsetin
-% %I
-% %I De totale bladzijde kan verschoven worden ten opzichte
-% %I van de linkerbovenhoek met:
-% %I
-% %I \steloffsetin[rug=,kop=]
-% %I
-% %I Dit commando moet worden gegeven aan het begin van de
-% %I pagina waarvoor het moet gelden. Er kunnen positieve
-% %I en negatieve waarden worden ingevuld: -10pt, 1.5cm.
-%
-% \def\dosteloffsetin[#1]%
-% {\getparameters
-% [\??os]
-% [\c!rug=\rugoffset,
-% \c!kop=\kopoffset,
-% #1]%
-% \rugoffset=\@@osrug
-% \kopoffset=\@@oskop}
-%
-% \def\steloffsetin%
-% {\dosingleargument\dosteloffsetin}
-
-% De onderstaande macro voert commando's uit, afhankelijk van
-% het karakter van het paginanummer.
-%
-% \doifonevenpaginaelse{then-commando}{else-commando}
-
-\def\doifonevenpaginaelse#1#2%
- {\ifodd\userpageno#1\else#2\fi}
-
-\def\doifbothsidesoverruled#1\orsideone#2\orsidetwo#3\od%
- {\ifdubbelzijdig
- \ifodd\userpageno#2\relax\else#3\relax\fi
- \else
- #1\relax
- \fi}
-
-\def\doifbothsides#1\orsideone#2\orsidetwo#3\od%
- {\ifdubbelzijdig
- \ifenkelzijdig
- #1\relax
- \else
- \ifodd\userpageno#2\relax\else#3\relax\fi
- \fi
- \else
- #1\relax
- \fi}
-
-%I n=Lokaliteit
-%I c=\startlokaal
-%I
-%I Een aantal instellingen hebben een globaal karakter,
-%I bijvoorbeeld die met betrekking tot de zetspiegel.
-%I Dergelijke instellingen kunnen eventueel lokaal worden
-%I gehouden door ze tussen de volgende commando's te
-%I instellingen plaatsen:
-%I
-%I \startlokaal
-%I \stoplokaal
-
-\def\dostartglobaldefs#1#2%
- {\edef\!!stringa{\the\globaldefs}%
- \ifnum\globaldefs#10
- \globaldefs=-\globaldefs
- \fi
- \advance\globaldefs by #21
- \setevalue{@gd@\the\globaldefs}{\!!stringa}}
-
-\def\dostopglobaldefs%
- {\doifdefinedelse{@gd@\the\globaldefs}
- {\globaldefs=\getvalue{@gd@\the\globaldefs}\relax}
- {\globaldefs=0\relax}}
-
-\def\startlokaal {\dostartglobaldefs>-}
-\def\stoplokaal {\dostopglobaldefs}
-\def\startglobaal {\dostartglobaldefs<+}
-\def\stopglobaal {\dostopglobaldefs}
-
-%I n=Zetspiegel
-%I c=\stellayoutin,\definieerpapierformaat,\stelpapierformaatin
-%I c=\paslayoutaan
-%I
-%I De zetspiegel is het door de tekst gevormde vlak.
-%I Hiertoe behoren ¢¢k de hoofd- en voetmarge. De zetspiegel
-%I wordt ingesteld met:
-%I
-%I \stellayoutin[breedte=,hoogte=,rugwit=,kopwit=]
-%I
-%I Er dienen maten te worden ingevuld, waarbij de eenheid
-%I direkt achter het getal staat: 10pt, 100mm, 5cm, 3.5in.
-%I
-%I De parameters hebben de volgende betekenis:
-%I
-%I breedte breedte van het tekstvlak, inclusief marges
-%I hoogte hoogte van het tekstvlak, inclusief marges
-%I rugwit witruimte aan de binnenzijde, zonder marge
-%I kopwit witruimte aan de bovenzijde, zonder marge
-%P
-%I Rond de zetspiegel vinden we marges, randen, het hoofd en
-%I de voet. Ook deze worden ingesteld met:
-%I
-%I \stellayoutin[breedte=,hoogte=,rugwit=,kopwit=]
-%I
-%I hoofd hoogte van de bovenmarge binnen de zetspiegel
-%I voet hoogte van de ondermarge binnen de zetspiegel
-%I marge breedte van de marge naast de zetspiegel
-%I
-%I en
-%I
-%I rand breedte van de rand naast de marge
-%I boven hoogte van de rand boven het hoofd
-%I onder hoogte van de rand onder de voet
-%I
-%I Alleen het hoofd en de voet hangen dus samen met de
-%I zetspiegel.
-%P
-%I Eventueel kunnen de linker- en rechtermarge en apart
-%I worden ingesteld:
-%I
-%I \stellayoutin[linkermarge=,rechtermarge=]
-%I
-%I Het zelfde geldt voor de randen. In dat geval wordt bij
-%I dubbelzijdig zetten gespiegeld. Oppassen dus!
-%I
-%I De afstanden tussen marges, randen enz. kunnen worden
-%I ingesteld met:
-%I
-%I bovenafstand, onderafstand
-%I hoofdafstand,voetafstand
-%I linkermargeafstand,rechtermargeafstand,
-%I linkerrandafstand,rechterrandafstand
-%P
-%I De zetspiegel kan (tijdelijk) worden aangepast met het
-%I commando:
-%I
-%I \paslayoutaan[hoogte=]
-%I
-%I Men dient een positieve (+) of negatieve (-) maat op te
-%I geven. De zethoogte blijft gelijk, maar de teksthoogte
-%I wordt aangepast ten koste van de voethoogte. Eventueel
-%I kan 'max' worden opgegeven.
-%I
-%I Er kan een reeks aanpassingen worden opgegeven:
-%I
-%I \paslayoutaan[nr,nr,nr,...][hoogte=]
-%I
-%I Hierbij is staat nr voor het paginanummer, dat wil
-%I zeggen: het volgnummer in de tekst.
-%I
-%I Bij voorlopige versies wordt onderaan de pagina de
-%I aanpassing weergegeven.
-%P
-%I Beeldmerken en achtergronden worden uit oogpunt van
-%I verwerkingssnelheid niet vaker berekend dan nodig. Mocht
-%I om een of andere reden een beeldmerk of achtergrond niet
-%I overeenkomen komen met de wensen, dan kan herberekenen
-%I worden geforceerd met:
-%I
-%I \stellayoutin[reset]
-%P
-%I Het papierformaat is in te stellen met het commando
-%I
-%I \stelpapierformaatin[DIN-formaat]
-%I
-%I Mogelijke DIN-formaten zijn A4 tot en met A9. De
-%I afmetingen van een A4 zijn:
-%I
-%I breedte : 21.0cm = 8.18in = 589pt
-%I hoogte : 29.7cm = 11.58in = 834pt
-%I
-%I Optioneel kan men het printer papierformaat instellen door
-%I een tweede argument mee te geven. Standaard wordt
-%I uitgegaan van A4.
-%I
-%I \stelpapierformaatin[A5][A4]
-%I
-%P Men kan zelf een papierformaat definieren met
-%I
-%I \definieerpapierformaat [naam] [hoogte=,breedte=]
-%I
-%I waarbij de offset betrekking heeft op dubbelzijdig zetten.
-
-\def\dodefinieerpapierformaat[#1][#2]%
- {\getparameters
- [\??pp#1]
- [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte,#2]}
-
-\def\definieerpapierformaat%
- {\dodoubleargument\dodefinieerpapierformaat}
-
-\definieerpapierformaat[][\c!breedte=210mm,\c!hoogte=297mm]
-
-\def\dostelpapierformaatin[#1][#2]%
- {\doifdefined{\??pp#1\c!breedte}
- {\gdef\papierformaat{#1}%
- \global\papierbreedte=\getvalue{\??pp#1\c!breedte}%
- \global\papierhoogte=\getvalue{\??pp#1\c!hoogte}%
- \doifdefinedelse{\??pp#2\c!breedte}
- {\global\printpapierbreedte=\getvalue{\??pp#2\c!breedte}%
- \global\printpapierhoogte=\getvalue{\??pp#2\c!hoogte}}
- {\global\printpapierbreedte=\papierbreedte
- \global\printpapierhoogte=\papierhoogte}%
-\ifdim\papierhoogte>\printpapierhoogte
- \global\printpapierhoogte=\papierhoogte
-\fi
-\ifdim\papierbreedte>\printpapierbreedte
- \global\printpapierbreedte=\papierbreedte
-\fi
- \calculatehsizes
- \calculatevsizes
- \global\newlogostrue
- \global\newbackgroundtrue}%
- \resetlayout}
-
-\def\stelpapierformaatin%
- {\dodoubleempty\dostelpapierformaatin}
-
-\def\checkforems[#1]%
- {\def\docommando##1%
- {\beforesplitstring##1\at em\to\asciia
- \doifnot{\asciia}{##1}
- {\aftersplitstring\asciia\at=\to\asciia
- \doifsomething{\asciia}
- {\showmessage{\m!systems}{10}{##1}}}}%
- \processcommalist[#1]\docommando}
-
-\def\resetlayout%
- {\global\linkermargebreedte=\@@lylinkermarge
- \global\rechtermargebreedte=\@@lyrechtermarge
- \global\linkerrandbreedte=\@@lylinkerrand
- \global\rechterrandbreedte=\@@lyrechterrand
- \global\hoofdhoogte=\@@lyhoofd
- \global\voethoogte=\@@lyvoet
- \global\onderhoogte=\@@lyonder
- \global\bovenhoogte=\@@lyboven
- %\global\zetbreedte=\@@lybreedte
- %\global\zethoogte=\@@lyhoogte
- \global\rugwit=\@@lyrugwit
- \global\kopwit=\@@lykopwit
- \doifelse{\@@lybreedte}{\v!passend}
- {\global\zetbreedte=\papierbreedte
- \global\advance\zetbreedte by -\rugwit
- \scratchdimen=\rugwit
- \advance\scratchdimen by -\linkerrandbreedte
- \advance\scratchdimen by -\linkerrandafstand
- \advance\scratchdimen by -\paginascheiding
- \advance\scratchdimen by -\linkermargebreedte
- \advance\scratchdimen by -\linkermargeafstand
- \ifdim\scratchdimen<\!!zeropoint
- \scratchdimen=\!!zeropoint
- \fi
- \global\advance\zetbreedte by -\rechtermargeafstand
- \global\advance\zetbreedte by -\rechtermargebreedte
- \global\advance\zetbreedte by -\paginascheiding
- \global\advance\zetbreedte by -\rechterrandafstand
- \global\advance\zetbreedte by -\rechterrandbreedte
- \global\advance\zetbreedte by -\scratchdimen}
- {\global\zetbreedte=\@@lybreedte}%
- \doifelse{\@@lyhoogte}{\v!passend}
- {\global\zethoogte=\papierhoogte
- \global\advance\zethoogte by -\kopwit
- \scratchdimen=\kopwit
- \advance\scratchdimen by -\bovenhoogte
- \advance\scratchdimen by -\bovenafstand
- \ifdim\scratchdimen<\!!zeropoint
- \scratchdimen=\!!zeropoint
- \fi
- \global\advance\zethoogte by -\onderafstand
- \global\advance\zethoogte by -\onderhoogte
- \global\advance\zethoogte by -\scratchdimen}
- {\global\zethoogte=\@@lyhoogte}%
- \rugoffset=\@@lyrugoffset
- \kopoffset=\@@lykopoffset
- \calculatehsizes
- \calculatevsizes
- \global\newlogostrue
- \global\newbackgroundtrue}
-
-\def\dostellayoutin[#1]%
- {\ConvertToConstant\doifnot{#1}{\v!reset}
- {\getparameters[\??ly][#1]%
- \checkforems[#1]}%
- \resetlayout}
-
-\def\stellayoutin%
- {\dosingleargument\dostellayoutin}
-
-\let\@@zahoogte=\!!zeropoint
-
-\def\dopushpagedimensions%
- {\xdef\oldteksthoogte{\the\teksthoogte}%
- \xdef\oldvoethoogte{\the\voethoogte}%
- \global\let\@@zahoogte=\@@zahoogte}
-
-\def\dopoppagedimensions%
- {\global\teksthoogte=\oldteksthoogte
- \global\voethoogte=\oldvoethoogte
- \calculatevsizes
- \global\let\pushpagedimensions=\dopushpagedimensions
- \global\let\poppagedimensions=\relax}
-
-\let\poppagedimensions=\relax
-\let\pushpagedimensions=\dopushpagedimensions
-
-% Elke \csname ... \endcsname wordt ook aangemaakt, dus ook
-% in een test met \doifdefined. Bij veel bladzijden kan dit
-% te veel macro's kosten. Vandaar de set \adaptedpages. Het
-% kost tijd, maar scheelt macro's.
-
-\def\adaptedpages{}
-
-\def\adaptpagedimensions%
- {\rawdoifinsetelse{\realfolio}{\adaptedpages}
- {\getvalue{\??za\realfolio}%
- \letvalue{\??za\realfolio}=\relax}
- {}}
-
-\def\checkpagedimensions%
- {\poppagedimensions
- \adaptpagedimensions}
-
-\def\reportpagedimensions%
- {\ifx\poppagedimensions\relax
- \else
- \spatie\@@zahoogte\spatie-
- \fi
- \realfolio}
-
-\def\dodopaslayoutaan[#1]%
- {\getparameters[\??za][#1]%
- \pushpagedimensions
- \doifelse{\@@zahoogte}{\v!max}
- {\balancedimensions{\teksthoogte}{\voethoogte}{\voethoogte}}
- {\balancedimensions{\teksthoogte}{\voethoogte}{\@@zahoogte}}%
- \ifdim\voethoogte<\!!zeropoint
- \global\advance\teksthoogte by \voethoogte
- \global\voethoogte=\!!zeropoint
- \global\xdef\@@zahoogte{\@@lyvoet\spatie(\v!max)}%
- \fi
- \setvsize
- \global\pagegoal=\vsize % nog corrigeren voor insertions ?
- \global\newlogostrue
- \global\newbackgroundtrue
- \showmessage{\m!layouts}{1}{\@@zahoogte,\realfolio}%
- \global\let\pushpagedimensions=\relax
- \global\let\poppagedimensions=\dopoppagedimensions}
-
-\def\dopaslayoutaan[#1][#2]%
- {\doifelsenothing{#2}
- {\dodopaslayoutaan[#1]}
- {\def\docommando##1%
- {\addtocommalist{##1}\adaptedpages
- \setgvalue{\??za##1}{\dodopaslayoutaan[#2]}}%
- \processcommalist[#1]\docommando
- \adaptpagedimensions}}
-
-\def\paslayoutaan%
- {\dodoubleempty\dopaslayoutaan}
-
-%I n=Margeblokken
-%I c=\startmargeblok,\stelmargeblokkenin
-%I
-%I voorlopig:
-%I
-%I \stelmargeblokkenin
-%I [plaats=,breedte,letter=,uitlijnen=,
-%I voor=,na=,links=,rechts=,boven=,onder=,tussen=]
-%I
-%I plaats = inmarge, links, rechts, midden
-%I links, rechts, voor, na = rule
-%I boven, onder, tussen = skip
-%I status=
-%I
-%I \startmargeblok
-%I \stopmargeblok
-
-\newif\ifmargeblokken
-
-\def\dostelmargeblokkenin[#1]%
- {\getparameters[\??mb][#1]%
- \doifelse{\@@mbstatus}{\v!start}%
- {\showmessage{\m!layouts}{4}{}%
- \margeblokkentrue
- \let\somenextfloat=\dosomenextfloat
- \let\startmargeblok=\dostartmargeblok
- \let\stopmargeblok=\dostopmargeblok}%
- {\showmessage{\m!layouts}{5}{}%
- \margeblokkenfalse
- \def\somenextfloat[##1]%
- {\someelsefloat[##1,\v!hier]}%
- \let\startmargeblok=\dontstartmargeblok
- \let\stopmargeblok=\dontstopmargeblok}}
-
-\def\stelmargeblokkenin%
- {\dosingleargument\dostelmargeblokkenin}
-
-\newbox\marginbox
-
-\def\dosomenextfloat[#1]%
- {\global\setbox\marginbox=\vbox
- {\hsize\@@mbbreedte
- \unvbox\marginbox
- \ifvoid\marginbox\else
- \@@mbtussen
- \fi
- \box\floatbox\filbreak}%
- \ifdim\ht\marginbox>\teksthoogte
- \dosavefloatinfo
- \else
- \doinsertfloatinfo
- \fi}
-
-\newbox\preparedmarginbox
-
-\def\reshapemargin%
- {\beginofshapebox
- \unvbox\preparedmarginbox
- \endofshapebox
- \reshapebox
- {\box\shapebox}%
- \setbox\preparedmarginbox=\vbox to \teksthoogte
- {\@@mbboven
- \flushshapebox
- \@@mbonder}}
-
-\def\plaatsrechtermargeblok%
- {\hskip\rechtermargebreedte}
-
-\def\plaatslinkermargeblok%
- {\hskip\linkermargebreedte}
-
-\def\checkmargeblokken%
- {\setbox\preparedmarginbox=\vbox
- {\forgetall
- \splittopskip\topskip
- \ifvoid\marginbox\else
- \ifdim\ht\marginbox>\teksthoogte
- \vsplit\marginbox to \teksthoogte
- \else
- \unvbox\marginbox
- \fi
- \fi}%
- \reshapemargin
- \setbox\preparedmarginbox=\vbox
- {\@@mbvoor\box\preparedmarginbox\@@mbna}%
- \def\rightmarginbox%
- {\def\plaatsrechtermargeblok%
- {\setbox\preparedmarginbox=\hbox to \rechtermargebreedte
- {\@@mblinks\box\preparedmarginbox\@@mbrechts}%
- \vsmashbox\preparedmarginbox
- \box\preparedmarginbox}}%
- \def\leftmarginbox%
- {\def\plaatslinkermargeblok%
- {\setbox\preparedmarginbox=\hbox to \linkermargebreedte
- {\@@mbrechts\box\preparedmarginbox\@@mblinks}%
- \vsmashbox\preparedmarginbox
- \box\preparedmarginbox}}%
- \processaction
- [\@@mbplaats]
- [ \v!inmarge=>\doifbothsidesoverruled
- \rightmarginbox
- \orsideone
- \rightmarginbox
- \orsidetwo
- \leftmarginbox
- \od,
- \v!midden=>\doifbothsidesoverruled
- \rightmarginbox
- \orsideone
- \leftmarginbox
- \orsidetwo
- \rightmarginbox
- \od,
- \v!links=>\leftmarginbox,
- \v!rechts=>\rightmarginbox,
- \s!unknown=>\setbox\preparedmarginbox=\hbox{}]}
-
-\def\dostartmargeblok% % 2 maal \vbox ivm \unvbox elders
- {\global\setbox\marginbox=\vtop\bgroup\vbox\bgroup
- \hsize\@@mbbreedte
- \ifvoid\marginbox\else
- \unvbox\marginbox
- \@@mbtussen
- \fi
- \steluitlijnenin[\@@mbuitlijnen]%
- \dostartattributes{\??mb}{}%
- \begstrut\ignorespaces}
-
-\def\dostopmargeblok%
- {\unskip\endstrut
- \dostopattributes
- \egroup
- \egroup}
-
-\def\dontstartmargeblok%
- {\@@mbvoor
- \bgroup
- \dostartattributes{\??mb}{}}
-
-\def\dontstopmargeblok%
- {\dostopattributes
- \egroup
- \@@mbna}
-
-%I n=Uitstellen
-%I c=\steluit,\startuitstellen
-%I
-%I Zetcommando's kunnen in een wachtrij worden gezet en na
-%I een pagina worden uitgevoerd. Dit gebeurt met het commando:
-%I
-%I \startuitstellen
-%I ...
-%I \stopuitstellen
-%I
-%I of
-%I
-%I \steluit{...}
-%I
-%I Dit kan handig zijn bij bijvoorbeeld grote tussen te voegen
-%I figuren, tabellen, formulieren enz.
-%I
-%I \startuitstellen
-%I \plaatsfiguur[pagina][]{...}{...}
-%I \stopuitstellen
-%I
-%I Er kunnen meerdere commando's in de wachtrij worden
-%I geplaatst.
-%P
-%I Het mechanisme werkt nog niet vlekkeloos. Zo wordt
-%I nog gerekend met waarden van de vorige pagina. Dit heeft
-%I bijvoorbeeld als gevolg dat figuren kunnen worden
-%I opgespaard.
-%I
-%I Het kan gebeuren dat een (te) groot figuur er voor zorgt
-%I dat ook andere figuren worden verplaatst. De volgorde
-%I blijft immers gehandhaafd. In dat geval kan zo'n groot
-%I figuur worden verplaatst naar de eerstvolgende voor de
-%I handliggende pagina:
-%I
-%I \startuitstellen
-%I \plaatsfiguur[pagina][]{...}{...}
-%I \pagina
-%I \stopuitstellen
-
-\newcounter\nofpostponedblocks
-
-\newbox\postponedblocks
-
-\def\douitstellen%
- {\ifnum\nofpostponedblocks>0
- \showmessage{\m!layouts}{2}{\nofpostponedblocks}%
- \unvbox\postponedblocks
- \doglobal\newcounter\nofpostponedblocks
- \fi}
-
-\def\startuitstellen%
- {\doglobal\increment\nofpostponedblocks
- \showmessage{\m!layouts}{3}{\nofpostponedblocks}%
- \global\setbox\postponedblocks=\vbox
- \bgroup
- \unvbox\postponedblocks
- \let\stopuitstellen=\egroup}
-
-\def\steluit%
- {\startuitstellen\let\next=}
-
-%I n=Nummeren
-%I c=\stelnummerenin
-%I
-%I Automatische nummering kan worden ingesteld met het
-%I commando:
-%I
-%I \stelnummerenin[wijze=,blok=,status=]
-%I
-%I Mogelijke wijzen van nummeren zijn: 'pertekst',
-%I 'perhoofdstuk' en 'perparagraaf'. Als status kan worden
-%I meegegeven 'start' of 'stop'. Met blok wordt aangegeven
-%I of moet worden uitgegaan van het huidige hoofdstuk ('nee')
-%I of het blokhoofdstuk ('ja').
-
-% Commando's ten behoeve van nummeren:
-%
-% \definieernummer[naam]
-% \stelnummerin[naam][wijze=,blok=,tekst=plaats=,conversie=,start=]
-% \setnummer[naam]{waarde}
-% \resetnummer[naam]
-% \verhoognummer[naam]
-% \verlaagnummer[naam]
-% \volgendenummer[naam][tag][referentie]
-% \nummer[naam]
-% \huidigenummer[naam]
-% \innummer[naam][referentie]
-% \opnummer[naam][referentie]
-% \savenumber[naam]
-% \restorenumber[naam]
-
-\newif\ifnummeren
-
-\def\dostelnummerenin[#1]% globaal
- {\getparameters[\??nr][#1]%
- \doifelse{\@@nrstatus}{\v!start}
- {\global\nummerentrue}
- {\global\nummerenfalse}}%
-
-\def\stelnummerenin%
- {\dosingleargument\dostelnummerenin}
-
-\def\dostelnummerin[#1][#2]%
- {\getparameters[\s!number#1][#2]}
-
-\def\stelnummerin%
- {\dodoubleargument\dostelnummerin}
-
-\def\dodefinieernummer[#1][#2]% ook overal class als localframed
- {\makecounter{\s!number#1}%
- \getparameters
- [\s!number#1]
- [\s!check=,
- \c!wijze=\@@nrwijze,
- \c!wijze\c!lokaal=\getvalue{\s!number#1\c!wijze},
- \c!sectienummer=\v!ja,
- \c!tekst=,
- \c!plaats=, % was: \c!zetwijze
- \c!conversie=\v!cijfers,
- \c!start=0,
- #2]%
- \setcounter{\s!number#1}{\getvalue{\s!number#1\c!start}}}
-
-\def\definieernummer%
- {\dodoubleempty\dodefinieernummer}
-
-\def\setnummer[#1]#2%
- {\setcounter{\s!number#1}{#2}}
-
-\def\resetnummer[#1]%
- {\setcounter{\s!number#1}{0\getvalue{\s!number#1\c!start}}}
-
-\def\dodoreset#1%
- {\getvalue{\s!reset#1}}%
-
-\def\doreset[#1]%
- {\processcommalist[#1]\dodoreset}
-
-\def\reset%
- {\dosingleargument\doreset}
-
-\def\verhoognummer[#1]%
- {\checknummer{#1}%
- \ifnummeren
- \else
- \resetcounter{\s!number#1}%
- \fi
- \pluscounter{\s!number#1}}
-
-\def\savenumber[#1]%
- {\savecounter{\s!number#1}}
-
-\def\restorenumber[#1]%
- {\restorecounter{\s!number#1}}
-
-% nieuw, maar kan dit (i.v.m. (sub)page?)
-
-\def\verhoognummer[#1]%
- {\checknummer{#1}%
- \ifnummeren
- \pluscounter{\s!number#1}%
- \else
- \setcounter{\s!number#1}{0\getvalue{\s!number#1\c!start}}%
- \fi}
-
-\def\verlaagnummer[#1]%
- {\minuscounter{\s!number#1}}
-
-\def\dodochecknummer#1#2#3%
- {\bgroup
- \doifinstringelse{.0}{.#2} % waarom \instring en \@koscheider
- {\doifnot{#3}{\v!per}
- {\debuggerinfo{\m!systems}{number #1 #3 becomes \getvalue{\s!number#1\c!wijze}}%
- \setevalue{\s!number#1\c!wijze}% geen \xdef, gaat mis met \subpage
- {#3}%
- \dochecknummer{#1}}} % tricky and ugly
- {\doifnotvalue{\s!number#1\s!check}{#2}
- {\setcounter{\s!number#1}{0\getvalue{\s!number#1\c!start}}%
- \setxvalue{\s!number#1\c!wijze\c!lokaal}%
- {\getvalue{\s!number#1\c!wijze}}%
- \setxvalue{\s!number#1\s!check}%
- {#2}}}%
- \egroup}
-
-\def\dochecknummer#1%
- {\edef\currentsection{\getvalue{\??by\getvalue{\s!number#1\c!wijze}}}%
- \doifsomething{\currentsection}
- {\dodochecknummer
- {#1}
- {\getvalue{\currentsection\c!nummer}}
- {\v!per\previoussection{\currentsection}}}}
-
-\def\checknummer#1%
- {\bgroup
- \ifnum\blocklevel>0
- \doifelsevalue{\s!number#1\c!blokwijze}{\v!nee}
- {\dochecknummer{#1}}
- {\setblockcounters % dit kan sneller omdat de waarden
- \dochecknummer{#1}}% % en het type bekend zijn
- \else
- \dochecknummer{#1}%
- \fi
- \egroup}
-
-\def\domaakvoorafgaandenummer[#1]%
- {\gdef\voorafgaandenummer{}%
- \ifsectienummer
- \doifvalue{\??sb\@@sectieblok\c!nummer}{\v!ja} % toegevoegd
- {\doifvalue{\s!number#1\c!sectienummer}{\v!ja}
- {\edef\currentsection%
- {\getvalue{\??by\getvalue{\s!number#1\c!wijze\c!lokaal}}}%
- \doifnot{\currentsection}{\zerosection}
- {\doifnot{\@@sectionvalue{\currentsection}}{0}
- {\xdef\voorafgaandenummer%
- {\getvalue{\currentsection\c!nummer}.}}}}}%
- \fi}
-
-\def\maakvoorafgaandenummer[#1]%
- {\bgroup
- \ifnum\blocklevel>0
- \doifelsevalue{\s!number#1\c!blokwijze}{\v!nee}
- {\domaakvoorafgaandenummer[#1]}%
- {\setblockcounters % dit kan sneller omdat de waarden
- \domaakvoorafgaandenummer[#1]}% % en het type bekend zijn
- \else
- \domaakvoorafgaandenummer[#1]%
- \fi
- \egroup}
-
-\def\nummer[#1]%
- {\convertnumber
- {\getvalue{\s!number#1\c!conversie}}
- {\countervalue{\s!number#1}}}
-
-\def\ruwenummer[#1]%
- {\countervalue{\s!number#1}}
-
-\def\maakhetnummer[#1]%
- {\maakvoorafgaandenummer[#1]%
- \global\edef\hetnummer%
- {\voorafgaandenummer\nummer[#1]}}%
-
-\def\lossenummer[#1]%
- {\maakhetnummer[#1]%
- \hetnummer}
-
-\def\huidigenummer[#1]%
- {%\getvalue{\getvalue{\s!number#1\c!zetwijze}}%
- \getvalue{\getvalue{\s!number#1\c!plaats}}%
- {\dotextprefix{\getvalue{\s!number#1\c!tekst}}\lossenummer[#1]}}
-
-\def\volgendenummer[#1][#2][#3]%
- {\verhoognummer[#1]%
- \huidigenummer[#1]%
- \rawreference{#2}{#3}{\hetnummer}}
-
-\def\innummer[#1][#2]%
- {\c!in \in{\getvalue{\s!number#1\c!tekst}}[#2]}%
-
-\def\opnummer[#1][#2]%
- {\c!op \op{\getvalue{\s!number#1\c!tekst}}[#2]}%
-
-% \gotonextsubpage : voor de pagebody
-% \subpaginanummer : alleen in de voet/kopregels
-% \aantalsubpaginas : alleen in de voet/kopregels
-
-% \firstsubpage : eerste \realpageno, voor interne doeleinden
-% \prevsubpage : vorige \realpageno, voor interne doeleinden
-% \nextsubpage : volgende \realpageno, voor interne doeleinden
-% \lastsubpage : laatste \realpageno, voor interne doeleinden
-% \nofsubpages : laatste subpage (in berekeningen)
-% \subpageno : huidige subpage (in berekeningen)
-
-\countdef\subpageno = 2 \subpageno = 0 % !!
-
-\newif\ifsubpaging
-\newif\ifshowingsubpage
-
-\definieernummer
- [\s!subpage]
-
-\stelnummerin
- [\s!subpage]
- [\c!wijze=\@@snwijze]
-
-\def\resetsubpaginanummer%
- {\resetnummer[\s!subpage]%
- \global\subpageno=\ruwenummer[\s!subpage]}
-
-\def\dostelsubpaginanummerin[#1]%
- {\doifelse{#1}{\v!reset}
- {\resetnummer[\s!subpage]}
- {\getparameters[\??sn][#1]%
- \processaction
- [\@@snstatus]
- [ \v!stop=>\ifsubpaging
- \else
- \subpagingfalse
- \fi
- \showingsubpagefalse,
- \v!start=>\subpagingtrue
- \showingsubpagetrue,
- \v!geen=>\subpagingtrue
- \showingsubpagefalse]}}
-
-\def\aantalsubpaginas%
- {\ifshowingsubpage
- \nofsubpages
- \else
- 0%
- \fi}
-
-\def\subpaginanummer%
- {\ifshowingsubpage
- \the\subpageno
- \else
- 0%
- \fi}
-
-\def\stelsubpaginanummerin%
- {\dosingleargument\dostelsubpaginanummerin}
-
-\def\newnofsubpages {0}
-\def\nofsubpages {0}
-\def\firstsubpage {1}
-\def\prevsubpage {1}
-\def\nextsubpage {1}
-\def\lastsubpage {1}
-
-\def\nextpage {1}
-\def\prevpage {1}
-
-\definetwopasslist{\s!subpage}
-
-\def\savenofsubpages%
- {\ifsubpaging
- \showmessage{\m!layouts}{6}{\newnofsubpages,\the\subpageno}%
- \immediate\writeutilitycommand%
- {\twopassentry%
- {\s!subpage}%
- {\newnofsubpages}%
- {\the\subpageno}}%
- \fi}
-
-\def\setsubpagenumbers%
- {\iftwopassdatafound
- \bgroup
- \xdef\nofsubpages{\twopassdata}%
- \xdef\firstsubpage{\realfolio}%
- \advance\realpageno by \nofsubpages
- \advance\realpageno by -1
- \xdef\lastsubpage{\realfolio}%
- \egroup
- \else
- \xdef\nofsubpages{0}%
- \fi}
-
-\def\gotonextsubpage%
- {\global\let\checksubpages=\relax
- \ifsubpaging
- \edef\oldsubpage{\the\subpageno}%
- \verhoognummer[\s!subpage]%
- \global\subpageno=\ruwenummer[\s!subpage]\relax
- \ifnum\subpageno=1
- \gettwopassdata{\s!subpage}%
- \setsubpagenumbers
- \ifnum\oldsubpage>0
- \showmessage{\m!layouts}{6}{\newnofsubpages,\oldsubpage}%
- \edef\next%
- {\writeutilitycommand%
- {\twopassentry%
- {\s!subpage}%
- {\newnofsubpages}%
- {\oldsubpage}}}%
- \next
- \fi
- \doglobal\increment\newnofsubpages\relax
- \fi
- \setdummypagereference{\v!eerste\v!sub\v!pagina}\firstsubpage
- \setdummypagereference{\v!laatste\v!sub\v!pagina}\lastsubpage
- \bgroup
- \ifnum\realpageno=\firstsubpage\relax
- \global\let\prevsubpage=\firstsubpage
- \else
- \xdef\prevsubpage{\realfolio}%
- \doglobal\decrement\prevsubpage
- \fi
- \setdummypagereference{\v!vorige\v!sub\v!pagina}\prevsubpage
- \ifnum\realpageno=\lastsubpage\relax
- \global\let\nextsubpage=\lastsubpage
- \else
- \xdef\nextsubpage{\realfolio}%
- \doglobal\increment\nextsubpage
- \fi
- \setdummypagereference{\v!volgende\v!sub\v!pagina}\nextsubpage
- \egroup
- \fi}
-
-\def\checksubpages%
- {\getfromtwopassdata{\s!subpage}{1}%
- \setsubpagenumbers
- \global\let\checksubpages=\relax}
-
-% Omdat \gotonextrealpage gebruik maakt van de hulpfile,
-% moet het initialiseren van \realpageno plaatsvinden in
-% een later stadium, namelijk zodra referenties worden
-% gebruikt (anders gaat het mis op nog niet gedefinieerde
-% lijstcommando's e.d.). De eerst aanroep vindt dan ook
-% plaats vlak nadat de hulpfile voor de eerste maal is
-% ingelezen.
-
-% we don't want conflicts when \pageno is used by other
-% packages, like CWEB, so we redefine \pageno
-
-\countdef\realpageno = 0 \realpageno = 1
-\countdef\userpageno = 1 \userpageno = 1
-\newcount\pageno \pageno = 1
-
-\def\setuserpageno#1%
- {\global\userpageno=#1\relax
- \global\pageno=\userpageno}
-
-\def\realfolio {\the\realpageno}
-\def\folio {\the\userpageno}
-\def\firstpage {1}
-\def\lastpage {1}
-\def\currentpage {\the\realpageno}
-
-\newif\ifrealpagechecked \realpagecheckedfalse
-
-\def\setdummypagereference#1#2%
- {\setreference{#1}{}{#2}{\r!page}}
-
-\def\gotonextrealpage%
- {\global\advance\realpageno by 1
- \ifnum\realpageno>\lastpage
- \gdef\lastpage{\realfolio}%
- \fi
- \setdummypagereference{\v!eerste\v!pagina}\firstpage
- \setdummypagereference{\v!laatste\v!pagina}\lastpage
- \bgroup
- \ifnum\realpageno>1
- \advance\realpageno by -1
- \xdef\prevpage{\realfolio}%
- \else
- \global\let\prevpage=\firstpage
- \fi
- \setdummypagereference{\v!vorige\v!pagina}\realfolio
- \egroup
- \bgroup
- \ifnum\realpageno<\lastpage\relax
- \advance\realpageno by 1
- \xdef\nextpage{\realfolio}%
- \else
- \global\let\nextpage=\lastpage
- \fi
- \setdummypagereference{\v!volgende\v!pagina}\realfolio
- \egroup}
-
-\def\checkrealpage%
- {\ifrealpagechecked\else
- \global\realpageno=0
- \gotonextrealpage
- \global\realpagecheckedtrue
- \fi}
-
-\def\realnumberofpages#1% meteen laden, voor andere files (met refs)
- {\gdef\lastpage{#1}%
- \global\let\realnumberofpages=\gobbleoneargument}
-
-\def\savenofpages%
- {\advance\realpageno by -1
- \immediate\writeutilitycommand{\realnumberofpages{\realfolio}}}%
-
-\def\totaalaantalpaginas%
- {\lastpage}
-
-\def\myshipout#1%
- {\voorpagina
- \dontshowcomposition
- \dosetuppaper{\papierformaat}{\the\papierbreedte}{\the\papierhoogte}%
-\dolocationstartup
- \shipout\vbox
- {\forgetall % needed !
- \offinterlineskip
- \vskip\kopoffset\vskip-1in
- \hskip\rugoffset\hskip-1in
- \mindermeldingen
- \thisisrealpage{\realfolio}#1}%
- \gotonextrealpage
- \napagina}
-
-\def\noshipout#1%
- {\setbox0=\hbox{\dopagebody{#1}}%
- \deadcycles=0%
- \gotonextrealpage}
-
-\def\goleftonpage%
- {\hskip-\linkermargeafstand
- \hskip-\linkermargebreedte
- \hskip-\paginascheiding
- \hskip-\linkerrandafstand
- \hskip-\linkerrandbreedte}
-
-\def\doswapmargins%
- {\let\doswapmargins=\relax % to prevent local swapping
- \swapmacros\@@lylinkermargeafstand\@@lyrechtermargeafstand
- \swapmacros\@@lylinkerrandafstand\@@lyrechterrandafstand
- \swapdimens\linkermargebreedte\rechtermargebreedte
- \swapdimens\linkerrandbreedte\rechterrandbreedte}
-
-\def\doifmarginswapelse#1#2%
- {\doifbothsides#1\orsideone#1\orsidetwo#2\od}
-
-\def\swapmargins%
- {\doifmarginswapelse{}{\doswapmargins}}
-
-% Output routines
-%
-% \dopagecontents#1 : tekst, floats en footnotes
-% \dopagebody#1 : hoofd, \pagecontents, voet
-% \dooutput : outputroutine
-%
-% \ifinpagebody
-
-\def\doejectpage#1%
- {\bgroup % de \ifdim is nodig omdat
- \par % anders een eventuele
- \ifdim\pagetotal>\pagegoal\else % laatste regel boven de
- %\normalvfill % baseline te staan terwijl
- \normalvfil % baseline te staan terwijl
- \fi % de vorige bladzijden op
- #1% % de baseline staan
- \egroup}
-
-% ^^ NOG NETTER MAKEN, TEGELIJK MET MULTI COLUMNS EN ACHTERGRONDEN!
-
-\def\ejectpage%
- {\doejectpage\eject}
-
-\def\superejectpage%
- {\doejectpage\supereject}
-
-\def\ejectinsert%
- {\flushfootnotes
- \bgroup
- \noftopfloats=\!!thousand
- \doflushfloats
- \egroup}
-
-% De volgende macro's worden gedefinieerd in de module
-% colo-ini. Om resetten bij twee maal laden te voorkomen
-% checken we wel even. Anders krijgen we een mark-build-up.
-
-\newif\ifinpagebody
-
-\doifundefined{pushcolor} {\def\pushcolor{}}
-\doifundefined{popcolor} {\def\popcolor{}}
-\doifundefined{startcolorpage} {\def\startcolorpage{}}
-\doifundefined{stopcolorpage} {\def\stopcolorpage{}}
-
-\def\dopagecontents#1%
- {\dotopinsertions
- \bgroup
- \forgetall
- \boxmaxdepth=\maxdepth
- \dimen0=\dp255 % #1 komt dus nog te vervallen
- \bgroup
- #1\relax
- \pushcolor
- \dobotinsertions
- \egroup
- \ifr@ggedbottom
- \kern-\dimen0
- \vfil
- \fi
- \ifb@selinebottom
- \kern-\dimen0
- \kern\maxdepth
- \fi
- \egroup
- \placefootnotes}
-
-\def\dodummypageskip#1%
- {\getvalue{\s!dummy\c!commando#1}}
-
-\setvalue{\s!dummy\c!commando\v!links}%
- {\hskip\linkerrandbreedte}
-
-\setvalue{\s!dummy\c!commando\v!rechts}%
- {\hskip\rechterrandbreedte}
-
-\setvalue{\s!dummy\c!commando\v!boven}%
- {} % \vbox to \bovenhoogte{\vss}}
-
-\setvalue{\s!dummy\c!commando\v!onder}%
- {} % \vbox to \onderhoogte{\vss}}
-
-\def\plaatslinkerrandblok {\dodummypageskip\v!links}
-\def\plaatsrechterrandblok {\dodummypageskip\v!rechts}
-
-\newtoks\afterpage \newtoks\aftereverypage
-\newtoks\beforepage \newtoks\beforeeverypage
-
-\def\plaatstekstblok#1%
- {\hbox to \zetbreedte
- {\vbox to \teksthoogte
- {\offinterlineskip
- \boxmaxdepth\maxdepth
- \dopagecontents{#1}}%
- \hss}}
-
-\def\getmainbox#1%
- {\setbox0=\vbox
- {\offinterlineskip % na \paginaletter !
- \calculatereducedvsizes
- \calculatehsizes
- \swapmargins
- \vskip\hoofdhoogte
- \vskip\hoofdafstand
- \hbox
- {\bgroup
- \swapmargins
- \goleftonpage
- \plaatslinkerrandblok
- \hskip\linkerrandafstand
- \showpageseparation
- \plaatslinkermargeblok
- \hskip\linkermargeafstand
- \egroup
- \plaatstekstblok{#1}%
- \bgroup
- \hskip\rechtermargeafstand
- \plaatstestinfo
- \plaatsrechtermargeblok
- \showpageseparation
- \hskip\rechterrandafstand
- \plaatsrechterrandblok
- \egroup}%
- \vfill}
- \smashbox0
- \box0}
-
-%\def\setpagedisplacement%
-% {\global\voffset=\kopoffset
-% \global\hoffset=\rugoffset
-% \global\advance\voffset by -1in
-% \global\advance\hoffset by -1in}
-
-\def\centerpagebox#1%
- {\processaction
- [\@@lyplaats]
- [ \v!midden=>\setbox#1=\vbox to \printpapierhoogte
- {\vss
- \hbox to \printpapierbreedte{\hss\box#1\hss}%
- \vss},
- \v!dubbelzijdig=>\setbox#1=\vbox
- {\doifbothsides
- \orsideone
- \orsidetwo
- \hskip\printpapierbreedte
- \hskip-\papierbreedte
- \hskip-2\rugoffset
- \od
- \box#1}]}
-
-\def\buildpagebox#1%
- {\setbox#1=\vbox to \papierhoogte
- {\hsize\papierbreedte
- \vskip\kopwit
- \doifbothsides
- \hskip\rugwit
- \orsideone
- \hskip\rugwit
- \orsidetwo
- \hskip\papierbreedte
- \hskip-\rugwit
- \hskip-\zetbreedte
- \od
- \box#1}
- \dp#1=\!!zeropoint}
-
-\def\addpagecutmarks#1%
- {\doif{\@@lymarkering}{\v!aan}
- {\makecutbox#1}}
-
-\def\buildpagebody#1%
- {%\setpagedisplacement
- \vbox
- {\forgetall
- \mindermeldingen
- \setbox0=\vbox
- {%\paginaletter
- \doconvertfont{\@@lyletter}{}%
- \offinterlineskip
- \getbackgroundbox
- \getlogobox
- \gettextboxes
- \getgridbox
- \getmainbox{#1}}%
- \buildpagebox0
- \addpagecutmarks0
- \addpagebackground0
- \centerpagebox0
- \box0}}
-
-\def\toongrid%
- {\let\getgridbox=\dogetgridbox}
-
-\let\getgridbox=\relax
-
-\def\dogetgridbox%
- {\bgroup
- \setbox0=\vbox
- {\vskip\hoofdhoogte
- \vskip\hoofdafstand
- \setbox0=\vbox to \teksthoogte
- {\forgetall
- \scratchdimen\teksthoogte
- \divide\scratchdimen by \lineheight
- \offinterlineskip
- \vskip\topskip
- \vskip-\ht\strutbox
- \dorecurse{\number\scratchdimen}
- {\strut\vrule
- \!!height \testrulewidth
- \!!depth \testrulewidth
- \!!width \tekstbreedte
- \par}
- \vfill}%
- \setbox2=\hbox to \tekstbreedte
- {\leaders
- \hbox
- {\vrule
- \!!height \teksthoogte
- \!!width 2\testrulewidth
- \kern1em}
- \hfill}%
- \wd0=\!!zeropoint
- \startoverlay
- \box0 \box2
- \stopoverlay}%
- \smashbox0
- \box0
- \egroup}
-
-\def\dopagebody#1%
- {\getallmarks
- \restoreglobalcorps
- \startcolorpage
- \gotonextsubpage
- \dontshowboxes
- \naastpagina
- \checkreferences
- \checkmargeblokken
- \dotoks\beforeeverypage
- \flushtoks\beforepage
- \inpagebodytrue
- \buildpagebody{#1}%
- \flushtoks\afterpage
- \dotoks\aftereverypage
- \resetpagina
- \updatelistreferences
- \resetlayoutregels % mischien in shipout
- \stopcolorpage}
-
-\def\beforefinaloutput%
- {}
-
-\def\afterfinaloutput%
- {\forgetall
- \vskip\!!zeropoint\relax
- \ifvoid255
- \else
- \unvbox255
- \penalty\outputpenalty
- \fi
- \ifnum\outputpenalty>-\@MM\relax
- \else
- \dosupereject
- \fi
- \dosetbothinserts
- \setvsize} % this is needed for interacting components, like floats and multicolumns
-
-\def\setpagecounters%
- {\setuserpageno{\ruwenummer[\s!page]}%
- \doifelse{\@@snstatus}{\v!stop}
- {\global\subpageno=0}
- {\global\subpageno=\ruwenummer[\s!subpage]}}
-
-\def\dofinaloutput#1%
- {\beforefinaloutput
- \myshipout{\hbox{\dopagebody{#1}\setpagecounters}}%
- \afterfinaloutput
- \douitstellen
- \popcolor} % ... and here ...
-
-\def\donofinaloutput#1%
- {\beforefinaloutput
- \setpagecounters
- \message{[-\the\realpageno]}%
- \noshipout{#1}%
- \douitstellen
- \afterfinaloutput
- \popcolor} % ... and here
-
-\let\checkpageversion=\relax
-
-\def\finaloutput#1%
- {\checkpageversion
- \ifverwerken
- \ifgeselecteerd
- \dofinaloutput{#1}%
- \else
- \donofinaloutput{#1}%
- \fi
- \else
- \ifgeselecteerd
- \donofinaloutput{#1}%
- \else
- \dofinaloutput{#1}%
- \fi
- \fi
- \resetselectiepagina
- \verhoogpaginanummer
- \checkpagedimensions
- \ifnum\outputpenalty>-\@MM\relax
- \else
- \dosupereject
- \fi}
-
-\def\dooutput%
- {\finaloutput{\unvbox255}}
-
-\output={\dooutput}
-
-%I n=Beeldmerken
-%I c=\definieerbeeldmerk,\plaatsbeeldmerken
-%I
-%I In het hoofd of in de voet kan een logo worden gezet met
-%I het commando:
-%I
-%I \plaatsbeeldmerken[naam]
-%I
-%I Plaatsen kan dan ook pas nadat een beeldmerk is gedefinieerd:
-%I
-%I \definieerbeeldmerk[naam][lokatie][plaats][commando=,status=]
-%I
-%I waarbij status 'start' of 'stop' kan zijn. In geval van
-%I 'start' wordt op elke bladzijde het logo geplaatst.
-%I
-%I Mogelijke lokaties zijn 'boven', 'hoofd', 'voet' en 'onder' en
-%I als plaats kan worden opgegeven 'linkerrand', 'linkermarge',
-%I 'links', 'midden', 'rechts', 'rechtermarge' en 'rechterrand'.
-%I
-%I Logo's worden boven, onder of in de hoofd- of voetregel gezet,
-%I zo hoog of laag mogelijk. Verdere positionering zal dus in
-%I het commando moeten plaatsvinden!
-
-\newbox\leftlogos
-\newbox\rightlogos
-
-\newif\ifnewlogos
-
-% \logostatus
-%
-% 0 = niet plaatsen > 0
-% 1 = direkt plaatsen > 1
-% 2 = berekenen en plaatsen > 1
-% 3 = een pagina berekenen en plaatsen > 2
-
-\def\logostatus{0}
-
-\def\gedefinieerdebeeldmerken{}
-\def\teplaatsenbeeldmerken{}
-
-\def\dodefinieerbeeldmerk[#1][#2][#3][#4]%
- {\addtocommalist{#1}\gedefinieerdebeeldmerken
- \setvalue{\??lo#2#3}{#1}%
- \getparameters[\??lo#2#3][#4]%
- \gdef\logostatus{2}}
-
-\def\definieerbeeldmerk%
- {\doquadrupleargument\dodefinieerbeeldmerk}
-
-\def\complexplaatsbeeldmerken[#1]%
- {\xdef\teplaatsenbeeldmerken{#1}%
- \gdef\logostatus{3}}
-
-\def\simpleplaatsbeeldmerken%
- {\global\let\teplaatsenbeeldmerken=\gedefinieerdebeeldmerken
- \gdef\logostatus{3}}
-
-\definecomplexorsimple\plaatsbeeldmerken
-
-\def\doplaatsbeeldmerken#1#2%
- {\bgroup
- \setbox0=\vbox
- {\hbox
- {\ifnum\logostatus=3
- \def\docommando##1%
- {\ExpandBothAfter\doifinset{\getvalue{\??lo#1##1}}{\teplaatsenbeeldmerken}
- {#2{\hbox{\getvalue{\??lo#1##1\c!commando}}}}}%
- \else
- \def\docommando##1%
- {\doifvalue{\??lo#1##1\c!status}{\v!start}
- {#2{\hbox{\getvalue{\??lo#1##1\c!commando}}}}}%
- \fi
- \def\dodocommando##1##2##3##4##5##6%
- {\hskip\linkerrandafstand
- \hskip\pageseparation
- \hbox to \linkermargebreedte{\docommando{##2}\hss}%
- \hskip\linkermargeafstand
- \hbox to \zetbreedte{\docommando{##3}\hss\docommando{##4}}%
- \hskip\rechtermargeafstand
- \hbox to \rechtermargebreedte{\hss\docommando{##5}}%
- \hskip\pageseparation
- \hskip\rechterrandafstand
- \hbox to \rechterrandbreedte{\hss\docommando{##6}}}%
- \normalbaselines
- \hsmash
- {\hbox to \zetbreedte{\hss\docommando\c!midden\hss}}%
- \hsmash
- {\doifbothsides
- \hskip-\rugwit
- \orsideone
- \hskip-\rugwit
- \orsidetwo
- \hskip-\papierbreedte
- \hskip+\rugwit
- \hskip+\zetbreedte
- \od
- \hbox to \papierbreedte{\docommando\v!pagina\hss}}%
- \swapmargins
- \goleftonpage
- \doifbothsidesoverruled
- \dodocommando
- {\v!linkerrand}{\v!linkermarge}{\v!links}
- {\v!rechts}{\v!rechtermarge}{\v!rechterrand}%
- \orsideone
- \dodocommando
- {\v!linkerrand}{\v!linkermarge}{\v!links}
- {\v!rechts}{\v!rechtermarge}{\v!rechterrand}%
- \orsidetwo
- \dodocommando
- {\v!rechterrand}{\v!rechtermarge}{\v!rechts}
- {\v!links}{\v!linkermarge}{\v!linkerrand}%
- \od}}%
- \getboxheight\dimen0\of\box0\relax
- \vskip-\dimen0
- \box0
- \egroup}
-
-\def\setlogobox#1#2%
- {\global\setbox#1=\vbox to \papierhoogte
- {\offinterlineskip
- \mindermeldingen
- \calculatereducedvsizes
- #2\relax
- \vskip-\kopwit
- \doplaatsbeeldmerken\v!boven\vsmash
- \vskip\kopwit
- \doplaatsbeeldmerken\v!hoofd\vsmash
- \vskip\hoofdhoogte
- \vskip\hoofdafstand
- \doplaatsbeeldmerken\v!tekst\vsmash % evt \vbox
- \vskip\teksthoogte
- \vskip\voetafstand
- \vskip\voethoogte
- \doplaatsbeeldmerken\v!voet\vbox
- \vfilll
- \doplaatsbeeldmerken\v!onder\vbox%
- \vskip\kopwit}
- \smashbox#1}
-
-\def\setlogoboxes%
- {\showmessage{\m!layouts}{7}{}%
- \setlogobox\leftlogos\relax
- \ifdubbelzijdig
- \setlogobox\rightlogos\doswapmargins
- \fi}
-
-\def\getlogobox%
- {\ifnum\logostatus>0
- \ifnum\logostatus=3
- \setlogoboxes
- \gdef\logostatus{2}%
- \else\ifnum\logostatus=2
- \setlogoboxes
- \gdef\logostatus{1}%
- \else\ifnewlogos
- \gdef\logostatus{2}%
- \setlogoboxes
- \gdef\logostatus{1}%
- \global\newlogosfalse
- \fi\fi\fi
- \doifmarginswapelse
- {\copy\leftlogos}
- {\copy\rightlogos}%
- \fi}
-
-%I n=Spatiering
-%I c=\stelspatieringin
-%I c=\omlaag,\opelkaar,\spatie,\vastespaties
-%I
-%I De ruimte na interpunctie worden ingesteld met:
-%I
-%I \stelspatieringin[instelling]
-%I
-%I waarbij de volgende instellingen mogelijk zijn:
-%I
-%I ruim flexibele ruimte na interpunctie
-%I opelkaar een spatie na interpunctie
-%I
-%I Bij een smalle layout levert de instelling 'ruim' minder
-%I in de marge uitstekende (niet af te breken) woorden op.
-%I
-%P
-%I Andere commando's zijn:
-%I
-%I \omlaag[afstand] een vaste afstand omlaag
-%I \opelkaar ruimte tussen regels weghalen
-%I
-%I \spatie een (harde) spatie
-%I \geenspatie geen vorige/volgende spatie
-%I
-%I \hfil \hfill \hfilll opvullen met horizontaal wit
-%I \vfil \vfill \vfilll opvullen met vertikaal wit
-%I
-%I \strut karakter-box zonder breedte
-%I
-%I \vastespaties geeft ~ de breedte van een cijfer
-
-% \frenchspacing leidt soms tot afbreken tussen -, vandaar
-% de variant \newfrenchspacing.
-
-\def\dofrenchspacing#1%
- {\sfcode`\.#1 \sfcode`\,#1\relax
- \sfcode`\?#1 \sfcode`\!#1\relax
- \sfcode`\:#1 \sfcode`\;#1\relax}
-
-\def\frenchspacing%
- {\dofrenchspacing{1000}} % \@m
-
-\def\newfrenchspacing%
- {\dofrenchspacing{1050}} % \@ml
-
-\def\dostelspatieringin[#1]%
- {\processaction
- [#1]
- [\v!opelkaar=>\newfrenchspacing,
- \v!ruim=>\nonfrenchspacing]}
-
-\def\stelspatieringin%
- {\dosingleargument\dostelspatieringin}
-
-\def\space%
- { }
-
-\def\spatie% kan tzt vervallen, eerst overal in zetten
- { }
-
-\def\hardespatie%
- {~}
-
-\bgroup
-\catcode`\~=\@@active % eigenlijk is ~ al actief
-\gdef\fixedspaces% % in Plain \TeX, maar we weten
- {\catcode`\~=\@@active % nooit wat er inmiddels is
- \def~{\hskip.5em}} % gebeurd, vandaar.
-\egroup
-
-\def\nospace%
- {\unskip\ignorespaces}
-
-\def\geenspatie% % kan tzt vervallen, eerst overal in zetten
- {\unskip\ignorespaces}
-
-\def\geenspaties{\geenspaties} % kan weg
-
-\def\opelkaar%
- {\nointerlineskip}
-
-\def\omlaag[#1]%
- {\nointerlineskip%
- \vskip#1 }
-
-%I n=Witruimte
-%I c=\stelwitruimtein,\witruimte,\geenwitruimte
-%I c=\startopelkaar,\startvanelkaar
-%I c=\startregelcorrectie,\corrigeerwitruimte
-%I
-%I De afstand tussen paragrafen is in te stellen met:
-%I
-%I \stelwitruimtein[maat]
-%I
-%I In te vullen op de plaats van 'maat' (12pt, 1cm) of een
-%I van de aanduidingen klein, middel of groot. Als niets
-%I wordt meegegeven, dus alleen \stelwitruimtein, dan
-%I wordt de ingestelde witruimte aangepast aan het formaat
-%I letter.
-%I
-%I Voor elke lege regel in de ASCII-file voegt TEX de
-%I ingestelde witruimte tussen.
-%I
-%I Het commando \witruimte dwingt witruimte af en het
-%I commando \geenwitruimte maakt witruimte ongedaan.
-%I
-%I Behalve met de hier beschreven witruimte-commando's is de
-%I witruimte tussen paragrafen te be‹nvloeden met behulp van
-%I de elders beschreven blanko-commando's.
-%P
-%I Een stuk tekst kan zonder witruimte worden gezet door het
-%I tussen de volgende commando's op te nemen:
-%I
-%I \startopelkaar
-%I \stopopelkaar
-%I
-%I Waarbij een optioneel argument [blanko] mogelijk is. De
-%I tegenhanger hiervan is:
-%I
-%I \startvanelkaar
-%I \stopvanelkaar
-%P
-%I TeX handelt de interlinie van een (omlijnde) box of een
-%I rule anders af dan van een regel tekst. In dergelijke
-%I gevallen kan de volgende constructie worden gebruikt:
-%I
-%I \startregelcorrectie
-%I \omlijnd{tekst}
-%I \stopregelcorrectie
-
-\newskip\tussenwit
-\tussenwit=\!!zeropoint
-
-\def\blankokleinmaat%
- {\smallskipamount}
-
-\def\blankomiddelmaat%
- {\medskipamount}
-
-\def\blankogrootmaat%
- {\bigskipamount}
-
-\def\currentwitruimte%
- {\!!zeropoint}
-
-\def\stelwitruimteopnieuwin%
- {\expanded{\stelwitruimtein[\currentwitruimte]}}
-
-\def\dodostelwitruimtein[#1]%
- {\processallactionsinset
- [#1]
- [\v!herstel=>\parskip=\tussenwit,
- \v!regel=>\edef\currentwitruimte{#1}%
- \tussenwit=\baselineskip
- \parskip=\tussenwit,
- \v!vast=>\tussenwit=1\tussenwit
- \parskip=1\parskip,
- \s!default=>\doifnot{\currentwitruimte}{\v!geen}
- {\stelwitruimteopnieuwin},
- \s!unknown=>\edef\currentwitruimte{#1}%
- \assigndimension{#1}
- {\tussenwit}{\blankokleinmaat}
- {\blankomiddelmaat}{\blankogrootmaat}%
- \parskip=\tussenwit]}
-
-\def\dostelwitruimtein[#1]%
- {\expanded{\dodostelwitruimtein[#1]}}
-
-\def\stelwitruimtein%
- {\dosingleempty\dostelwitruimtein}
-
-\def\geenwitruimte%
- {\ifdim\parskip>\!!zeropoint\relax
- \ifdim\lastskip=-\parskip
- \else
- \vskip-\parskip
- \fi
- \fi}
-
-% deze variant is nodig binnen \startopelkaar
-% steeds testen:
-%
-% \hoofdstuk{..}
-% \plaatslijst[..]
-% \hoofdstuk{..}
-% \input tufte
-%
-% met/zonder witruimte
-
-\def\witruimte%
- {\par
- \ifdim\parskip>\!!zeropoint\relax
- %\ifdim\lastskip>\parskip \else
- % \removelastskip interferes with blanko blokkeer en klein
- \vskip\parskip
- %\fi
- \fi}
-
-
-\def\nonoblanko[#1]%
- {\par}
-
-\def\noblanko%
- {\dosingleempty\nonoblanko}
-
-% De onderstaande macro handelt ook de situatie dat er geen
-% tekst tussen \start ... \stop is geplaatst. Daartoe wordt de
-% laatste skip over de lege tekst heen gehaald. Dit komt goed
-% van pas bij het plaatsen van (mogelijk lege) lijsten.
-
-\newif\ifopelkaar
-
-\def\noparskipsignal {0.00001pt}
-\def\lastdoneparskip {0pt}
-
-\def\dostartopelkaar[#1]%
- {\par
- \ifvmode
- \edef\lastdoneparskip{\the\lastskip}%
- \ifdim\prevdepth=-1000pt % toegevoegd omdat binnen
- \else % een vbox een extra skip
- \witruimte % ongewenst is; dit kan
- \vskip\noparskipsignal % waarschijnlijk ook in
- \fi % blanko blokkeer
- \bgroup
- \doifelse{#1}{\v!blanko}
- {\opelkaarfalse}
- {\opelkaartrue}%
- \blanko[\v!blokkeer]%
- \stelwitruimtein[\v!geen]
- \fi}
-
-\def\startopelkaar%
- {\dosingleempty\dostartopelkaar}
-
-\def\stopopelkaar%
- {\par
-\ifvmode
- \egroup
- \ifdim\lastskip=\noparskipsignal\relax
- \removelastskip
- \geenwitruimte
- \vskip-\lastdoneparskip
- \vskip+\lastdoneparskip
- \fi
-\fi}
-
-\def\startvanelkaar%
- {\blanko
- \leavevmode
- \bgroup}
-
-\def\stopvanelkaar%
- {\egroup
- \blanko}
-
-% De onderstaande macro's moeten nog eens nader worden uitgewerkt.
-% Ze spelen een rol bij de spatiering rond omkaderde teksten
-% en/of boxen zonder diepte.
-
-\def\toonregelcorrectie {\showbaselinecorrection}
-\def\regelcorrectie {\baselinecorrection}
-%\def\startregelcorrectie {\startbaselinecorrection}
-%\def\stopregelcorrectie {\stopbaselinecorrection}
-
-\definecomplexorsimpleempty\startregelcorrectie
-
-% \prevdepth crosses pageboundaries!
-
-\let\dorondomregelcorrectie=\relax
-
-\def\complexstartregelcorrectie[#1]%
- {\bgroup
- \processaction
- [#1]
- [ \v!blanko=>\let\dorondomregelcorrectie=\blanko,
- \s!unknown=>{\def\dorondomregelcorrectie{\blanko[#1]}},
- \s!default=>\let\dorondomregelcorrectie=\relax]%
- \dorondomregelcorrectie
- \startbaselinecorrection}
-
-\def\stopregelcorrectie%
- {\stopbaselinecorrection
- \dorondomregelcorrectie
- \egroup}
-
-\def\corrigeerwitruimte%
- {\dowithnextbox
- {\startbaselinecorrection
- \box\nextbox
- \stopbaselinecorrection}%
- \vbox}
-
-%I n=Regelafstand
-%I c=\stelinterliniein
-%I
-%I De regelafstand is in te stellen met het commando:
-%I
-%I \stelinterliniein[factor]
-%I
-%I Invulmogelijkheden voor 'factor' zijn: klein (1.00),
-%I middel (1.25), groot (1.50) of een getal. OOk kan
-%I aan of uit worden opgegeven.
-%I
-%I Als het commando zonder [factor] wordt gegeven, dan
-%I worden de interlinie aangepast aan het formaat van het
-%I actuele letterformaat. Een aan het formaat aangepaste
-%I interlinie kan ook worden ingesteld met:
-%I
-%I \stelinterliniein[reset,factor]
-%I
-%I In z'n eenvoudigste vorm \stelinterliniein wordt de
-%I interlinie aangepast aan het formaat letter.
-
-\def\complexstelinterliniein[#1]%
- {\processallactionsinset % \regelwit = dummy !
- [#1]
- [ \v!aan=>\oninterlineskip,
- \v!uit=>\offinterlineskip,
- \v!reset=>\setfontparameters,
- \s!unknown=>\assignvalue{#1}{\regelwit}{1.00}{1.25}{1.50}%
- \spacing{\regelwit}]}
-
-\def\simplestelinterliniein%
- {\setfontparameters}
-
-\definecomplexorsimple\stelinterliniein
-
-%I n=Blanko
-%I c=\blanko,\geenblanko,\stelblankoin
-%I c=\startregelcorrectie
-%I
-%I Behalve met de hier beschreven blanko-commando's is de
-%I witruimte tussen paragrafen te be‹nvloeden met behulp van
-%I de elders beschreven witruimte-commando's.
-%I
-%I Het commando
-%I
-%I \blanko[sprong]
-%I
-%I voegt witruimte tussen paragrafen toe.
-%I
-%I Mogelijke instellingen voor 'sprong' zijn: terug, klein,
-%I middel, groot. Per blanko is elke combinatie van
-%I instellingen toegestaan. Ook een veelvoud van een instelling
-%I is mogelijk. Enkele voorbeelden:
-%I
-%I \blanko[terug,3*groot]
-%I \blanko[klein,middel]
-%P
-%I Naast de genoemde instellingen zijn enkele bijzondere
-%I instellingen mogelijk:
-%I
-%I wit tussenvoegen van \witruimte
-%I geenwit terugspringen van \witruimte
-%I blokkeer overslaan van de volgende \blanko
-%I reset opheffen van \blanko[blokkeer]
-%I forceer afdwingen van een blanko (bovenaan)
-%I
-%I Ook deze instellingen zijn in combinatie met andere te
-%I gebruiken. Een voorbeeld: \blanko[forceer,wit,2*middel].
-%I
-%I Het commando \blanko (zonder instelling) is gelijk aan
-%I \blanko[groot].
-%I
-%I Het commando \geenblanko maakt het commando \blanko
-%I ongedaan.
-%P
-%I Met het commando's
-%I
-%I \stelblankoin[maat]
-%I
-%I is het mogelijk de spronggrootte in te stellen. De maat
-%I kan worden opgegeven in getallen en eenheden (12pt, 1cm).
-%I De standaard instellingen krijgt met met 'normaal',
-%I regelafstanden met 'regel'.
-%I
-%I Het commando \stelblankoin (zonder argument) past de sprong
-%I aan het formaat letter aan.
-%P
-%I Rond omlijnde tekst, of algemener: rond lijnen, wordt
-%I geen witruimte gegenereerd. Wil men dit wel, dan dient men
-%I de betreffende tekst te omringen met:
-%I
-%I \startregelcorrectie
-%I \stopregelcorrectie
-
-% In earlier versions \type{\bigskipamount} was
-% \type{\ht\strutbox} and the stretch was plus or minus
-% \type{.4\dp\strutbox}. Don't ask me why. The most recent
-% implementation is based on a user supplied distance, which
-% is by default \type{.75\normalskipamount} where
-% \type{\normalskipamount} equals the current baseline
-% distance.
-
-\newif\ifblankoreset \blankoresetfalse
-\newif\ifblankoblokkeer \blankoblokkeerfalse
-\newif\ifblankogeenwit \blankogeenwitfalse
-\newif\ifdoeblanko \doeblankofalse
-\newif\ifblankoflexibel \blankoflexibeltrue
-\newif\ifblankobuiten
-
-\newskip\blankoskip \blankoskip=\bigskipamount
-\newskip\blankoskipamount
-
-\def\skipfactor {.75}
-\def\skipgluefactor {.25}
-
-\def\normalskipamount%
- {\openlineheight
- \ifblankoflexibel
- \!!plus\skipgluefactor\openlineheight
- \!!minus\skipgluefactor\openlineheight
- \fi
- \relax}
-
-\def\regelafstand{\normalskipamount}
-
-\def\deblankoskip{\skipfactor\regelafstand}
-
-\def\laatsteblankoskip%
- {\blankoskip}
-
-\def\geenblanko%
- {\removelastskip}
-
-\def\dosingleblanko#1%
- {\assigndimension{#1}{\blankoskipamount}%
- {\smallskipamount}{\medskipamount}{\bigskipamount}%
- \global\advance\blankoskip by \blankoskipamount}
-
-\def\doblanko#1%
- {\processallactionsinset
- [#1]
- [ \v!groot=>\dosingleblanko\v!groot, % happens often
- \v!buiten=>\ifvmode\ifinner\blankobuitentrue\fi\fi,
- \v!reset=>\global\blankoresettrue,
- \v!terug=>\geenblanko,
- \v!wit=>\global\advance\blankoskip by \parskip,
- \v!formule=>\global\advance\blankoskip by \medskipamount,
- \v!geenwit=>\global\blankogeenwittrue,
- -\v!wit=>\global\advance\blankoskip by -\parskip,
- \v!blokkeer=>\global\blankoblokkeertrue,
- \v!forceer=>\endgraf\hrule \!!height \!!zeropoint\relax,
- \v!regel=>\global\advance\blankoskip by \lineheight,
- \s!unknown=>{\herhaalmetcommando[#1]\dosingleblanko}]}
-
-\def\oldprevdepth{\prevdepth}%
-\def\newprevdepth{-1001pt}
-
-\def\mindimen{0.00002pt}
-
-\def\docomplexdoblanko[#1]%
- {\global\blankoresetfalse
- \global\blankoblokkeerfalse
- \global\blankogeenwitfalse
- \global\blankoskip=\!!zeropoint\relax
- \blankobuitenfalse
- \processcommalist[#1]\doblanko
- \ifblankobuiten
- \else
- \par
- \ifvmode
- \ifblankoblokkeer
- \global\doeblankofalse
- \edef\oldprevdepth{\the\prevdepth}%
- \prevdepth=\newprevdepth
- \else
- \global\doeblankotrue
- \fi
- \ifblankoreset
- \global\doeblankotrue
- \ifdim\prevdepth=\newprevdepth
- \prevdepth=\oldprevdepth
- \fi
- \fi
- \ifdoeblanko
- \ifdim\lastskip<\blankoskip\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\blankoskip by \mindimen\relax % = skip
- % test this on 2* + 3* and parskip groot
- \ifblankogeenwit
- \global\advance\blankoskip by -\parskip
- \else
- \ifdim\lastskip=\parskip
- \else % force this due to previous comment
- \ifdim\parskip>\!!zeropoint\relax
- \ifdim\blankoskip<\parskip\relax
- \global\blankoskip=\!!zeropoint
- \else
- \global\advance\blankoskip by -\parskip
- \fi
- \fi
- \fi
- \fi
- \ifdim\prevdepth=\newprevdepth
- \else
- \removelastskip
- \vskip\blankoskip
- \fi
- \fi
- \fi
- \fi
- \fi}
-
-\def\complexdoblanko[#1]%
- {\flushfootnotes
- \ifopelkaar
- \ifinpagebody
- \expanded{\docomplexdoblanko[#1]}% \expanded=nieuw
- \else
- \par
- \fi
- \else
- \expanded{\docomplexdoblanko[#1]}% \expanded = nieuw
- \fi}
-
-\def\currentblanko%
- {\v!groot}
-
-\def\simpledoblanko%
- {\doifelse{\currentwitruimte}{\v!geen}
- {\blanko[\currentblanko]}
- {\blanko[\currentwitruimte]}}
-
-\def\blanko%
- {\complexorsimple{doblanko}}
-
-\def\dostelblankoin#1%
- {\bgroup
- \skip0=#1\relax
- \xdef\globalblanko{\the\skip0}%
- \egroup
- \bigskipamount=\globalblanko
- \smallskipamount=\globalblanko
- \medskipamount=\globalblanko
- \divide\medskipamount by 2\relax
- \divide\smallskipamount by 4\relax}%
-
-\def\complexstelblankoin[#1]%
- {\ExpandFirstAfter\processallactionsinset
- [#1]
- [ \v!flexibel=>\blankoflexibeltrue,
- \v!vast=>\blankoflexibelfalse]%
- \ExpandFirstAfter\processallactionsinset
- [#1]
- [ \v!flexibel=>\dostelblankoin{\deblankoskip},
- \v!vast=>\dostelblankoin{\deblankoskip},
- \v!regel=>\edef\deblankoskip{\regelafstand}%
- \dostelblankoin{\deblankoskip}%
- \let\deblanko=\v!groot,
- \v!groot=>\def\currentblanko{\v!groot}%
- \let\deblanko=\v!groot,
- \v!middel=>\def\currentblanko{\v!middel}%
- \let\deblanko=\v!middel,
- \v!klein=>\def\currentblanko{\v!klein}%
- \let\deblanko=\v!klein,
- \v!normaal=>\dostelblankoin{\deblankoskip}%
- \let\deblanko=\v!groot,
- \v!standaard=>\edef\deblankoskip{\skipfactor\regelafstand}%
- \dostelblankoin{\deblankoskip}%
- \let\deblanko=\v!groot,
- \s!default=>\dostelblankoin{\deblankoskip}%
- \let\deblanko=\v!groot,
- \s!unknown=>\let\deblankoskip=\commalistelement
- \dostelblankoin{\deblankoskip}%
- \let\deblanko=\v!groot]%
- \stelwitruimtein}
-
-\def\stelblankoin%
- {\complexorsimpleempty{stelblankoin}}
-
-%I n=Inspringen
-%I c=\inspringen,\nietinspringen,\welinspringen
-%I c=\stelinspringenin
-%I
-%I Het inspringen van de eerste regel van een paragraaf
-%I wordt ingesteld met het commando:
-%I
-%I \inspringen[parameter]
-%I
-%I waarbij als parameter kan worden meegegeven:
-%I
-%I niet de volgende paragraaf niet inspringen
-%I nooit de volgende paragrafen niet inspringen
-%I altijd de volgende paragrafen inspringen
-%I
-%I De mate van inspringen wordt ingesteld met:
-%I
-%I \stelinspringenin[maat]
-%I
-%I waarbij maat staat voor een TeX-maat of het woord klein,
-%I middel, groot of geen.
-
-\def\currentvoorwit{}
-
-\newdimen\voorwit
-
-\def\dostelinspringenin[#1]%
- {\doifsomething{#1}{\def\currentvoorwit{#1}}%
- \assigndimension{\currentvoorwit}{\voorwit}{1em}{1.5em}{2em}%
- \parindent=\voorwit\relax}
-
-\def\stelinspringenin%
- {\dosingleempty\dostelinspringenin}
-
-\def\doinspringen[#1]%
- {\processaction
- [#1]
- [ \v!nee=>\parindent=\voorwit\relax\noindent,
- \v!niet=>\parindent=\voorwit\relax\noindent,
- \v!ja=>\parindent=\voorwit\relax, % geen \indent !
- \v!altijd=>\parindent=\voorwit\relax, % geen \indent !
- \v!nooit=>\parindent=\!!zeropoint\relax]}
-
-\def\inspringen%
- {\dosingleargument\doinspringen}
-
-\def\nietinspringen{\inspringen[\v!nee]}
-\def\welinspringen{\inspringen[\v!ja]}
-
-%I n=Verhogen,Verlagen
-%I c=\laag,\hoog,\laho
-%I
-%I Met de volgende commando's kunnen letters en woorden
-%I worden verhoogd en verlaagd.
-%I
-%I \laag{tekst}
-%I \hoog{tekst}
-%I \laho{lage tekst}{hoge tekst}
-
-\def\holatextfont{\tx}
-\def\holamathfont{\the\scriptfont\fam}
-
-\def\dodohooglaag#1%
- {\doifelsenothing{\fontsize}
- {\ifnum\fam<0 \holatextfont\else\holamathfont\fi#1}
- {\holatextfont#1}}
-
-\def\dohooglaag#1#2#3#4#5%
- {\bgroup
- \ifdim\fontdimen5\textfont2=1ex
- \dimen0=\fontdimen#1\textfont2
- \else
- \dimen0=#2ex
- \fi
- \advance\dimen0 by #3\relax
- \kern.1ex
- \setbox0=\hbox{#4\dimen0\hbox{\dodohooglaag{#5}}}%
- \ht0=\ht\strutbox
- \dp0=\dp\strutbox
- \box0
- \egroup}
-
-\unexpanded\def\hoog%
- {\dohooglaag{14}{.86}\!!zeropoint\raise}
-
-\unexpanded\def\laag%
- {\dohooglaag{16}{.48}\!!zeropoint\lower}
-
-\unexpanded\def\laho#1#2%
- {\hbox%
- {\setbox4=\hbox{\dohooglaag{16}{.48}{.1ex}{\lower}{#1}}%
- \setbox6=\hbox{\dohooglaag{14}{.86}{.1ex}{\raise}{#2}}%
- \ifdim\wd4<\wd6\relax
- \wd4=\!!zeropoint\box4\box6\relax
- \else
- \wd6=\!!zeropoint\box6\box4\relax
- \fi}}
-
-%I n=Kapitalen
-%I c=\kap,\Kap,\KAP,\Kaps,\Woord,\Woorden,\opgerekt
-%I
-%I Kapitalen kunnen in een kleiner letterformaat worden
-%I weergegeven met de commando's:
-%I
-%I \kap{tekst}
-%I \Kap{tekst}
-%I \KAP{tekst}
-%I
-%I Bij het eerste commando wordt de hele tekst in kapitalen
-%I gezet, bij het tweede alleen de eerste letter en bij het
-%I laatste commando de letters die worden voorafgegaan door
-%I \\, bijvoorbeeld \KAP{\\Commissie \\Ziezo}.
-%I
-%I Als de tekst van het laatste commando uit woorden bestaat,
-%I kan ook het volgende commando worden gebruikt:
-%I
-%I \Kaps{tekst tekst tekst}
-%I
-%I In dat geval zijn geen \\ nodig.
-%P
-%I Binnen \kap kan \nokap worden gebruikt om een kleine
-%I letter af te dwingen: \kap{AM\nokap{v}B}.
-%I
-%I Een eerste letter(s) van een of meer woorden kunnen worden
-%I omgezet in een hoofdletter met het commando
-%I
-%I \Woord{woord}
-%I \Woorden{woord woord woord ...}
-%I
-%I Een heel woord kan in hoofdletters worden omgezet met:
-%I
-%I \WOORD{tekst}
-%P
-%I Woorden kunnen worden uitgerekt over de actuele breedte
-%I met:
-%I
-%I \opgerekt{tekst}
-%I
-%I bijvoorbeeld:
-%I
-%I \hbox to 20em{\opgerekt{abcdef\\ghijk}}
-%I
-%I met \\ of {} wordt een spatie afgedwongen.
-
-%T n=kap
-%T m=kap
-%T a=k
-%T
-%T \kap{?}
-
-%I n=Afbreken
-%I c=\stelkoppeltekenin
-%I
-%I Met streepjes (-, --, ---) verbonden worden alleen afgebroken
-%I op de plaats van het streepje. Wil men kunnen afbreken op
-%I andere plaatsen, dan moet men de volgende constructie
-%I gebruiken:
-%I
-%I ditiseen|---|heellangwoord|--|hoeweleigenlijkis|-|heteenzin
-%I
-%I Het is ook mogelijk geen teken mee te geven:
-%I
-%I ditiseen||heellangwoord
-%I
-%I In dat geval wordt het ingestelde teken tussengevoegd. Het
-%I teken kan worden ingesteld met:
-%I
-%I \stelkoppeltekenin[teken=]
-%I
-%I Betekenisvolle waarden zijn: - en --, eventueel kan ~
-%I worden meegegeven. In dat geval wordt een \thinspace
-%I geplaatst.
-%P
-%I Een |~| levert midden in de zin een spatie en aan het
-%I eind van de zin een streepje, || is standaard equivalent
-%I met |--|.
-%I
-%I Het koppelteken zelf kan worden opgeroepen met |=|,
-%I bijvoorbeeld in alfa|=| en beta||deeltjes. Dit levert
-%I dus alfa- en beta-deeltjes of alfa-- en beta--deeltjes.
-%I Andere instellingen worden afgevangen.
-%I
-%I Ook ( en ) worden afgevangen. Hierbij wordt bij het
-%I afbreken van voor(na) op de volgende regel (-na)
-%I geplaatst. En wat te denken van |<| en |>|.
-
-% we use module supp-lan.tex
-
-\installdiscretionaries || \@@kpteken
-
-\newsignal\subsentencesignal
-\newcounter\subsentencelevel
-\def\subsentenceskip{.25em}
-
-\def\stelkoppeltekenin%
- {\dodoubleargument\getparameters[\??kp]}
-
-\def\beginofsubsentence%
- {\ifdim\lastkern=\subsentencesignal \else
- \unskip
- \fi
- \ifdim\lastkern=\subsentencesignal
- \unskip
- \hskip\subsentenceskip
- \else
- \normalspace
- \fi
- \doglobal\increment\subsentencelevel
- \ifnum\subsentencelevel=1
- \leaveoutervmode
- \fi
- \ifodd\subsentencelevel
- \getvalue{\??la\currentlanguage\c!leftsentence}%
- \else
- \getvalue{\??la\currentlanguage\c!leftsubsentence}%
- \fi
- \ignorespaces}
-
-\def\beginofsubsentencespacing%
- {\kern\subsentencesignal}
-
-\def\endofsubsentence%
- {\ifodd\subsentencelevel
- \getvalue{\??la\currentlanguage\c!rightsentence}%
- \else
- \getvalue{\??la\currentlanguage\c!rightsubsentence}%
- \fi
- \doglobal\decrement\subsentencelevel
- \kern\subsentencesignal
- \normalspace}
-
-\def\endofsubsentencespacing%
- {\ifdim\lastkern=\subsentencesignal \else
- \unskip
- \fi
- \ifdim\lastkern=\subsentencesignal
- \unskip
- \hskip\subsentenceskip
- \fi}
-
-\enableactivediscretionaries
-
-%I n=Positioneren
-%I c=\startpositioneren,\stelpositionerenin
-%I
-%I Er kan (binnen zekere grenzen) gepositioneerd worden met
-%I de commando's:
-%I
-%I \startpositioneren
-%I \stoppositioneren
-%I
-%I met daartussen
-%I
-%I \positioneer(x,y){...}
-%I
-%I waarbij x en y alleen getallen worden ingevuld. Ongewenste
-%I spaties moeten zonodig met worden voorkomen met een %-teken.
-%P
-%I Een en ander kan worden ingesteld met:
-%I
-%I \stelpositionerenin[eenheid=,factor=,schaal=,xstap=,
-%I ystap=,xoffset=,yoffset=,offset=]
-%I
-%I Standaard is de eenheid cm en de factor 1. Mogelijke
-%I stapaanduidingen zijn 'absoluut' en 'relatief'. Deze
-%I instellingen kunnen \resetpositioneren worden hersteld.
-%I
-%I Als men negatieve coordinaten (of een negatieve offset)
-%I gebruikt, dan kan het soms wenselijk zijn het nulpunt te
-%I laten samenvallen met de linkerbovenhoek van de omringende
-%I box. In dat geval kan met offset=nee instellen. De negatieve
-%I posities vallen in dat geval buiten de box.
-
-% Het gebruik van \skip's spaart \dimen's.
-
-\newskip\xpositie
-\newskip\ypositie
-
-\newskip\xafmeting
-\newskip\yafmeting
-
-\newskip\xoffset
-\newskip\yoffset
-
-\newbox\positiebox
-
-\def\startpositioneren%
- {\bgroup
- \xpositie=\!!zeropoint
- \ypositie=\!!zeropoint
- \xafmeting=\!!zeropoint
- \yafmeting=\!!zeropoint
- \xoffset=\!!zeropoint
- \yoffset=\!!zeropoint
- \hfuzz=30cm
- \vfuzz=30cm
- \setbox\positiebox=\hbox\bgroup}
-
-\def\stoppositioneren%
- {\doifnot{\@@psoffset}{\v!ja}
- {\global\xoffset=\!!zeropoint
- \global\yoffset=\!!zeropoint}%
- \global\advance\xafmeting by \xoffset
- \global\advance\yafmeting by \yoffset
- \egroup
- \vbox to \yafmeting
- {\vskip\yoffset
- \hbox to \xafmeting
- {\hskip\xoffset
- \box\positiebox
- \hfill}%
- \vfill}%
- \egroup}
-
-\def\resetpositioneren%
- {\getparameters[\??ps]
- [\c!eenheid=\s!cm,
- \c!factor=1,
- \c!xfactor=\@@psfactor,
- \c!yfactor=\@@psfactor,
- \c!schaal=1,
- \c!xschaal=\@@psschaal,
- \c!yschaal=\@@psschaal,
- \c!xstap=\v!absoluut,
- \c!ystap=\v!absoluut,
- \c!xoffset=\!!zeropoint,
- \c!yoffset=\!!zeropoint]}
-
-\resetpositioneren
-
-\def\stelpositionerenin%
- {\resetpositioneren%
- \dodoubleargument\getparameters[\??ps]}%
-
-\def\positioneer(#1,#2)#3% \nextbox
- {\setbox0=\hbox{#3}%
- \def\berekenpositioneren##1##2##3##4##5##6##7##8##9%
- {\skip0=##1\@@pseenheid\relax
- \skip0=##8\skip0\relax
- \skip0=##9\skip0\relax
- \doifelse{##2}{\v!relatief}%
- {\advance\skip0 by ##3\relax
- \advance\skip0 by ##4\relax
- \def##4{\!!zeropoint}}%
- {\advance\skip0 by ##4\relax}%
- ##3=\skip0\relax
- \ifdim##3<-##7\relax
- \global##7=-##3\relax
- \fi
- \skip2=##5\relax
- \advance\skip2 by ##3\relax
- \ifdim\skip2>##6\relax
- \global##6=\skip2\relax
- \fi}%
- \berekenpositioneren{#1}{\@@psxstap}{\xpositie}
- {\@@psxoffset}{\wd0}{\xafmeting}{\xoffset}
- {\@@psxschaal}{\@@psxfactor}%
- \skip4=\ht0 \advance\skip4 by \dp0
- \berekenpositioneren{#2}{\@@psystap}{\ypositie}
- {\@@psyoffset}{\skip4}{\yafmeting}{\yoffset}
- {\@@psyschaal}{\@@psyfactor}%
- \vbox to \!!zeropoint
- {\vskip\ypositie
- \hbox to \!!zeropoint
- {\hskip\xpositie
- \box0
- \hskip-\xpositie}%
- \vskip-\ypositie}%
- \ignorespaces}
-
-\def\dorooster[#1]%
- {\bgroup
- \getparameters[\??rt]
- [\c!nx=10,\c!ny=10,
- \c!dx=.5,\c!dy=.5,
- \c!xstap=0,\c!ystap=0,
- \c!eenheid=\s!cm,
- \c!schaal=1,
- \c!factor=1,
- \c!offset=\v!ja,
- #1]%
- \startpositioneren
- \dimen0=\@@rtdx\@@rteenheid
- \dimen0=\@@rtschaal\dimen0
- \dimen0=\@@rtfactor\dimen0
- \multiply\dimen0 by \@@rtnx
- \dimen2=\@@rtdy\@@rteenheid
- \dimen2=\@@rtschaal\dimen2
- \dimen2=\@@rtfactor\dimen2
- \multiply\dimen2 by \@@rtny
- \def\horline
- {\vbox
- {\hrule
- \!!width \dimen0
- \!!height \lijndikte
- \!!depth \!!zeropoint}}%
- \def\verline%
- {\vrule
- \!!width \lijndikte
- \!!height \dimen2
- \!!depth \!!zeropoint}%
- \def\setlegend##1##2%
- {\global\!!countc=0
- \dimen0=2em
- \dimen2=##2\@@rteenheid
- \dimen2=\@@rtschaal\dimen2
- \dimen2=\@@rtfactor\dimen2
- \divide\dimen0 by \dimen2
- \global\!!counte=\dimen0
- \ifnum\!!counte>50
- \global\!!counte=100
- \else\ifnum\!!counte>10
- \global\!!counte=50
- \else\ifnum\!!counte>5
- \global\!!counte=10
- \else\ifnum\!!counte>1
- \global\!!counte=5
- \else
- \global\!!counte=1
- \fi\fi\fi\fi
- \global\!!countd=0
- \def\legend%
- {\ifnum\!!countd=0
- \vbox
- {\hbox to 2em{\hss\the\!!countc\hss}}%
- \global\!!countd=\!!counte
- \fi
- \global\advance\!!countd by -1
- \global\advance\!!countc by ##1}}%
- \def\draw##1##2##3##4##5##6##7%
- {\stelpositionerenin
- [\c!xstap=\v!absoluut,
- \c!ystap=\v!absoluut,
- \c!eenheid=\@@rteenheid,
- \c!schaal=\@@rtschaal,
- \c!factor=\@@rtfactor,
- \c!offset=\@@rtoffset,
- \c!xoffset=##6,
- \c!yoffset=##7]%
- \positioneer(0,0){##1}%
- \stelpositionerenin
- [\c!xstap=\v!relatief,
- \c!ystap=\v!relatief,
- \c!schaal=\@@rtschaal,
- \c!factor=\@@rtfactor,
- \c!offset=\@@rtoffset,
- \c!eenheid=\@@rteenheid]%
- \dorecurse{##2}{\positioneer(##3,##4){##5}}}%
- \draw{\verline}{\@@rtnx}{\@@rtdx}{0}{\verline}{\!!zeropoint}{\!!zeropoint}%
- \draw{\horline}{\@@rtny}{0}{\@@rtdy}{\horline}{\!!zeropoint}{\!!zeropoint}%
- \tfx
- \doifnot{\@@rtxstap}{0}
- {\setlegend{\@@rtxstap}{\@@rtdx}%
- \draw{\legend}{\@@rtnx}{\@@rtdx}{0}{\legend}{-1em}{-1.5em}}%
- \doifnot{\@@rtystap}{0}
- {\setlegend{\@@rtystap}{\@@rtdy}%
- \draw{\legend}{\@@rtny}{0}{\@@rtdy}{\legend}{-2em}{-.75ex}}%
- \stoppositioneren
- \egroup}
-
-\def\rooster%
- {\dosingleempty\dorooster}
-
-%I n=Kolommen
-%I c=\stelkolommenin,\startkolommen,\kolom
-%I
-%I Tekst kan in kolommen worden gezet. Het aantal kolommen
-%I en het al dan niet opnemen van een vertikale lijn kan
-%I worden ingesteld.
-%I
-%I \stelkolommenin[n=,lijn=,tolerantie=,afstand=,
-%I balanceren=,uitlijnen=,hoogte=]
-%I
-%I Hierin staat n voor het aantal kolommen. Aan lijn
-%I kan aan of uit worden toegekend. Aan voor en na kan
-%I een commando worden toegekend, bijvoorbeeld ~~.
-%I
-%I Mogelijke waarden voor de tolerantie zijn: zeerstreng,
-%I streng, soepel en zeersoepel.
-%P
-%I De in kolommen te zetten tekst moet worden opgenomen
-%I tussen de commando's:
-%I
-%I \startkolommen
-%I \stopkolommen
-%I
-%I Er wordt naar een nieuwe kolom gesprongen met:
-%I
-%I \kolom
-
-\newif\ifbinnenkolommen
-\newif\if@@klbalanceren
-\newif\if@@kluitlijnen
-
-\binnenkolommenfalse
-
-\def\stelkolommenin%
- {\dodoubleargument\getparameters[\??kl]}
-
-\def\linebetweencolumns%
- {\bgroup
- \startcolorpage
- \ifdim\@@klafstand>\!!zeropoint
- \dimen0=\@@klafstand
- \else
- \dimen0=\linewidth
- \fi
- \advance\dimen0 by -\linewidth
- \hskip.5\dimen0
- \vrule
- \!!width\linewidth
- \ifb@selinebottom\!!depth\strutdepth\fi
- \hskip.5\dimen0\relax
- \stopcolorpage
- \egroup}
-
-\def\spacebetweencolumns%
- {\hskip\@@klafstand}
-
-\presetlocalframed[\??kl]
-
-\def\backgroundfinishcolumnbox%
- {\dimen0=\@@kloffset
- \advance\dimen0 by -\@@kllijndikte
- \localframed
- [\??kl]
- [\c!offset=\dimen0,
- \c!strut=\v!nee,
- \c!breedte=\v!passend,
- \c!hoogte=\v!passend,
- \c!uitlijnen=]}
-
-\def\backgroundsetcolumntextheight%
- {\dimen0=-\@@kloffset
- \multiply\dimen0 by 2
- \advance\dimen0 by \teksthoogte
- \edef\columntextheight{\the\dimen0}}
-
-\def\backgroundsetcolumntextwidth%
- {\dimen0=-\@@kloffset
- \multiply\dimen0 by \nofcolumns
- \multiply\dimen0 by 2
- \advance\dimen0 by \tekstbreedte
- \edef\columntextwidth{\the\dimen0}}
-
-\def\complexstartkolommen[#1]% %% \startkolommen
- {\bgroup
- \let\stopkolommen=\egroup
- \ifbinnenkolommen
- \else
- \stelkolommenin[#1]%
- \ifnum\@@kln>1\relax
- \witruimte
- \begingroup
- \doif{\@@kloptie}{\v!achtergrond}
- {\let\finishcolumnbox = \backgroundfinishcolumnbox
- \let\setcolumntextheight = \backgroundsetcolumntextheight
- \let\setcolumntextwidth = \backgroundsetcolumntextwidth}%
-% \doifelse{\@@kllijn}{\v!aan}
-% {\let\betweencolumns=\linebetweencolumns}
-% {\let\betweencolumns=\spacebetweencolumns}%
- \processaction
- [\@@kllijn]
- [ \v!aan=>\let\betweencolumns=\linebetweencolumns,
- \v!uit=>\let\betweencolumns=\spacebetweencolumns,
- \s!default=>\let\betweencolumns=\spacebetweencolumns,
- \s!unknown=>\let\betweencolumns=\@@kllijn]%
- \doifelsenothing{\@@klhoogte}
- {\heightencolumnsfalse}
- {\heightencolumnstrue}%
- \doifelse{\@@klbalanceren}{\v!ja}
- {\balancecolumnstrue}
- {\balancecolumnsfalse}%
- \processaction % ook nog: laatsteuitlijnen
- [\@@kluitlijnen]
- [ \v!ja=>\stretchcolumnstrue
- \inheritcolumnsfalse,
- \v!nee=>\stretchcolumnsfalse
- \inheritcolumnsfalse,
- \v!tekst=>\stretchcolumnsfalse
- \inheritcolumnstrue]%
- \nofcolumns=\@@kln
- \edef\fixedcolumnheight{\@@klhoogte}%
- \steltolerantiein[\@@kltolerantie]% %% \startkolommen
- \stelblankoin[\@@klblanko]%
- \ifdim\tussenwit>\!!zeropoint
- \stelwitruimtein[\@@klblanko]%
- \fi
- \def\stopkolommen%
- {\endmulticolumns
- \global\binnenkolommenfalse
- \endgroup
- \egroup}%
- \global\binnenkolommentrue
- \beginmulticolumns
- \fi
- \fi}
-
-\def\startkolommen%
- {\complexorsimpleempty{startkolommen}}
-
-\def\kolom%
- {\ifbinnenkolommen
- \ejectcolumn
- \fi}
-
-%I n=Kader
-%I c=\toonkader,\tooninstellingen,\toonlayout
-%I
-%I Met behulp van de drie commando's:
-%I
-%I \toonkader
-%I \tooninstellingen
-%I
-%I kan de zetspiegel zichtbaar worden gemaakt, of eventueel
-%I met:
-%I
-%I \toonkader [rand,tekst,marge]
-%I
-%I Het commando:
-%I
-%I \toonlayout
-%I
-%I genereert enkele (linker en rechter) pagina's.
-
-\def\complextoonkader[#1]%
- {\stelachtergrondenin
- [\v!hoofd,\v!tekst,\v!voet]
- [#1]
- [\c!achtergrond=,
- \c!kader=\v!aan,
- \c!hoek=\v!recht,
- \c!kaderoffset=\!!zeropoint,
- \c!kaderdiepte=\!!zeropoint,
- \c!kaderkleur=]
- \let\pageseparation=\!!zeropoint}
-
-\def\simpletoonkader%
- {\complextoonkader
- [\v!linkerrand,\v!linkermarge,
- \v!tekst,
- \v!rechtermarge,\v!rechterrand]}
-
-\definecomplexorsimple\toonkader
-
-\def\tooninstelling#1#2%
- {\hbox
- {\doifelse{#2}{\??ly}
- {\dimen0=\getvalue{#2#1}}
- {\dimen0=#2}%
- \hbox to 9em{\strut#1\hfill}%
- \hbox to 5em{\hfill\PtToCm{\the\dimen0}}%
- \hbox to 6em{\hfill\the\dimen0}%
- \doifnot{#2}{\??ly}
- {\hskip 1em{\tttf\string#2}}}%
- \par}
-
-\def\tooninstellingen% % engels maken
- {\noindent
- \vbox
- {\forgetall
- \mindermeldingen
- \tooninstelling{papierhoogte}\papierhoogte
- \tooninstelling{papierbreedte}\papierbreedte
- \tooninstelling{printpapierhoogte}\printpapierhoogte
- \tooninstelling{printpapierbreedte}\printpapierbreedte
- \tooninstelling{kopwit}\kopwit
- \tooninstelling{rugwit}\rugwit
- \tooninstelling{hoogte}\zethoogte
- \tooninstelling{breedte}\zetbreedte
- \tooninstelling{teksthoogte}\teksthoogte
- \tooninstelling{tekstbreedte}\tekstbreedte
- \tooninstelling{bovenafstand}\??ly
- \tooninstelling{hoofd}\hoofdhoogte
- \tooninstelling{hoofdafstand}\??ly
- \tooninstelling{boven}\bovenhoogte
- \tooninstelling{voetafstand}\??ly
- \tooninstelling{voet}\voethoogte
- \tooninstelling{onderafstand}\??ly
- \tooninstelling{onder}\onderhoogte
- \tooninstelling{linkerrand}\linkerrandbreedte
- \tooninstelling{linkerrandafstand}\??ly
- \tooninstelling{linkermarge}\linkermargebreedte
- \tooninstelling{linkermargeafstand}\??ly
- \tooninstelling{rechtermargeafstand}\??ly
- \tooninstelling{rechtermarge}\rechtermargebreedte
- \tooninstelling{rechterrandafstand}\??ly
- \tooninstelling{rechterrand}\rechterrandbreedte}}
-
-\def\toonlayout
- {\bgroup
- \pagina
- \toonkader
- \stellayoutin[\c!markering=\v!aan]
- \herhaal[4*\tooninstellingen\pagina]
- \egroup}
-
-% - meerdere niveaus (moet niet moeilijk zijn)
-% - instellingen in macro
-
-%I n=Opsomming
-%I c=\startopsomming,\som,\sub,\kop,\sym,\mar,\but
-%I c=\stelopsommingin
-%I
-%I Opsommingen kunnen tot op vier niveaus automatisch worden
-%I aangemaakt met het commando:
-%I
-%I \startopsomming[aanduiding][instellingen]
-%I
-%I \som ........
-%I \som ........
-%I \som[referentie] ........
-%I \som ........
-%I
-%I \stopopsomming
-%I
-%I Eventueel kan direct achter \som een [referentie] worden
-%I opgegeven, zodat men bijvoorbeeld kan verwijzen naar
-%I 'punt \in[referentie]' (hier punt 3).
-%P
-%I De volgende genummerde aanduidingen zijn mogelijk:
-%I
-%I wijze van 'nummeren' instelling
-%I
-%I 1, 2, 3, 4 n (normaal) / o (oldstyle)
-%I a, b, c, d a
-%I A, B, C, D A (normaal) / KA (kap)
-%I i, ii, iii, iv r
-%I I, II, III, IV R (normaal) / KR (kap)
-%I
-%I doornummeren verder
-%P
-%I De volgende niet-genummerde aanduidingen zijn mogelijk
-%I (de aanduiding kan eventueel achterwege blijven):
-%I
-%I wijze van 'markeren' instelling
-%I
-%I dot 1
-%I streepje 2
-%I sterretje 3
-%I driehoekje 4
-%I bolletje 5
-%I groter bolletje 6
-%I nog groter bolletje 7
-%I
-%I alleen inspringen leeg laten
-%P
-%I Het al dan niet inspringen en de eventuele ruimte tussen
-%I de onderdelen wordt globaal of lokaal ingesteld met de
-%I commando's:
-%I
-%I \stelopsommingin[niveau][instelling]
-%I
-%I waarbij de volgende instellingen mogelijk zijn:
-%I
-%I standaard standaard instellingen
-%I opelkaar geen witruimte tussen onderdelen
-%I aanelkaar weinig witruimte na het symbool
-%I aansluitend geen wit voor en na de opsomming
-%I ruim meer witruimte na het symbool (n*ruim)
-%I inmarge markering in de kantlijn
-%I opmarge markering op de 'kantlijn'
-%I afsluiter afsluiter achter markering
-%I kolommen in twee kolommen zetten
-%I intro aansluiten op vorige regel(s)
-%P
-%I In plaats van een cijfer bij niveau kan ook het woord
-%I 'elk' worden gegeven. De instellingen mogen ook direkt
-%I achter de aanduiding worden meegegeven: [1,opelkaar].
-%I
-%I Als alternatief voor \som is \kop beschikbaar. In dat geval
-%I wordt de eerste alinea (of een eerste woord) afwijkend gezet.
-%I
-%I Met \sym{symbool} kan een eigen symbool worden geplaatst.
-%I Als dit symbool breed is (bijvoorbeeld ++), kan men de
-%I breedte aanpassen, bijvoorbeeld: \startopsomming[2*ruim].
-%I
-%I Een ander alternatief is \mar{tekst}. De tekst wordt in
-%I dat geval in de marge geplaatst.
-%I
-%I Een leeg item (dus zonder aanduiding) kan worden
-%I opgeroepen met \nop. Op deze manier kunnen opsommingen in
-%I kolommen worden uitgelijnd (gemanipuleerd). Het commando
-%I \nop komt overeen met \sym{\strut} \strut.
-%P
-%I Met \som[aanduiding] (zonder \start... \stop...) kan snel een
-%I opsomming met ‚‚n item worden gezet. In dat geval wordt er
-%I geen referentie aangemaakt.
-%I
-%I Als men een item tussenvoegt maar (vooralsnog) de nummering
-%I niet wil verhogen, dan kan men \sub gebruiken. Het oude nummer
-%I wordt dan in het zetwerk voorafgegaan door een +.
-%I
-%I Interactieve items kunnen worden gemaakt met \but, waarbij
-%I de bestemming tussen [] moet worden meegegeven.
-%P
-%I Een nauwkeuriger (globale) instelling is eveneens mogelijk met
-%I het commando:
-%I
-%I \stelopsommingin[niveau][breedte=,voor=,tussen=,na=,
-%I kopvoor=,kopna=,kopletter=,marletter=,symlettter=,
-%I afsluiter=,n=,factor=,afstand=]
-%I
-%I Standaard gelden voor de letters de volgende instellingen:
-%I
-%I kopletter normaal
-%I marletter type
-%I symletter vet
-%I
-%I De commando's \sym{symbool} en \som zijn ook buiten
-%I opsommingen beschikbaar.
-
-%T n=opsomming
-%T m=ops
-%T a=o
-%T
-%T \startopsomming
-%T
-%T \som ?
-%T
-%T \stopopsomming
-
-%T n=som
-%T m=som
-%T a=s
-%T
-%T \som ?
-
-%
-% NOG [0] voor start op 0
-%
-
-\newif\ifsomkolommen \somkolommenfalse
-\newif\ifsubsom \subsomfalse
-\newif\ifsymsom \symsomfalse
-\newif\ifkopsom \kopsomfalse
-\newif\ifsomintro \somintrofalse
-\newif\ifsomautointro \somautointrofalse
-\newif\ifpackeditems \packeditemsfalse
-\newif\iffirstlist \firstlistfalse
-
-\definetwopasslist{\s!list}
-
-\newcounter\noflists
-\newcounter\itemlevel
-
-\def\dolistreference%
- {\immediate\writeutilitycommand%
- {\twopassentry%
- {\s!list}%
- {\currentlist}%
- {\currentlist:\noflistelements}}}
-
-\def\setnextitemlevel#1%
- {\doifundefined{\??op#1\c!breedte}
- {\edef\itemreferences{\itemreferences,#1}%
- \copyparameters
- [\??op#1][\??oo]
- [\c!breedte,\c!factor,\c!afstand,
- \c!marletter,\c!symletter,\c!kopletter,
- \c!markleur,\c!symkleur,\c!kopkleur,
- \c!kopvoor,\c!kopna,\c!voor,\c!tussen,\c!na,
- \c!afsluiter,\c!plaatsafsluiter,
- \c!n,\c!binnen,\c!symbool,\c!marge]%
- \makecounter{\s!itemcount#1}%
- \setvalue{\??op\c!symbool\s!global#1}{#1}}}
-
-\def\maxitemlevel{0}
-\def\itemreferences{0}
-
-\def\dostelopsommingenin[#1]% % still undocumented
- {\getparameters[\??oo][\c!niveaus=4,#1]%
- \ifnum\@@ooniveaus>\maxitemlevel
- \edef\maxitemlevel{\@@ooniveaus}%
- \herhaal[\maxitemlevel*\setnextitemlevel{\herhaler}]%
- \fi}
-
-\def\stelopsommingenin%
- {\dosingleargument\dostelopsommingenin}
-
-\def\doitemreference#1,#2,#3\\%
- {\ifnum\itemlevel>#1
- \ifnum#1>0
- \tempsymbool
- \fi
- \getvalue{\??op\c!symbool#2}%
- \doitemreference#2,#3\\%
- \fi}
-
-\def\itemreference%
- {\expandafter\doitemreference\itemreferences,,\\}
-
-\def\itemuse#1%
- {\getvalue{\??op\itemlevel#1}}%
-
-\def\packitems%
- {\ifnum\itemlevel=0 \else\packeditemstrue\fi}
-
-\def\dostelopsomminginvariable[#1][#2]% niveau instellingen
- {\doifelsenothing{#1}
- {\getparameters[\??op\itemlevel][#2]}%
- {\getparameters[\??op#1][#2]}}
-
-\def\dododostelopsomminginconstant[#1][#2#3]%
- {\processaction
- [#2#3]
- [ \v!opelkaar=>\packitems,
- \v!intro=>\somintrotrue,
- \v!autointro=>\somautointrotrue,
- \v!ruim=>{\doassign[\??op#1][\c!factor=1]},
- #2*\v!ruim=>{\doassign[\??op#1][\c!factor=#2]},
- \v!marge=>{\doassign[\??op#1][\c!breedte=-2em]}, % signal
- \v!inmarge=>{\doassign[\??op#1][\c!breedte=-2em]}, % signal
- \v!opmarge=>\doifnot{#1}{1}{\doassign[\??op#1][\c!breedte=0em]}, % signal
- \v!kolommen=>\packitems,
- \v!aansluitend=>{\getparameters[\??op#1]
- [\c!kopvoor=,\c!kopna=,
- \c!voor=,\c!tussen=,\c!na=]%
- \packitems},
- \v!aanelkaar=>{\doassign[\??op#1][\c!factor=-1]},
- #2*\v!aanelkaar=>{\doassign[\??op#1][\c!factor=-#2]},
- \v!afsluiter=>{\doassign[\??op#1][\c!plaatsafsluiter=\v!ja]},
- \v!standaard=>{\getparameters[\??op#1]
- [\c!breedte=1.5em,
- \c!factor=0,
- \c!afstand=.5em,
- \c!kopvoor=,
- \c!kopna=\blanko,
- \c!voor=\blanko,
- \c!tussen=\blanko,
- \c!na=\blanko,
- \c!binnen=]}]}
-
-\def\dostelopsomminginconstant[#1][#2]%
- {\def\dodostelopsomminginconstant##1%
- {\dododostelopsomminginconstant[#1][##1]}%
- \processcommalist[#2]\dodostelopsomminginconstant}
-
-\def\dodododostelopsommingin[#1][#2]%
- {\ConvertToConstant\doifinstringelse{=}{#2}
- {\dostelopsomminginvariable[#1][#2]}
- {\setvalue{\??op#1}{\dostelopsomminginconstant[#1][#2]}}}%
-
-\def\dododostelopsommingin[#1][#2]%
- {\ConvertToConstant\doifnot{#2}{}
- {\doifelse{#1}{\v!elk}
- {\herhaal[\maxitemlevel*{\ExpandFirstAfter\dodododostelopsommingin[\herhaler][#2]}]}
- {\ExpandFirstAfter\dodododostelopsommingin[#1][#2]}}}
-
-\def\dodostelopsommingin[#1][#2]%
- {\ConvertToConstant\doifelse{#2}{}
- {\ifnum\itemlevel=0\relax
- \dododostelopsommingin[\v!elk][#1]%
- \else
- \dododostelopsommingin[\itemlevel][#1]%
- \fi}
- {\doifelsenothing{#1}
- {\dododostelopsommingin[\itemlevel][#2]}
- {\dododostelopsommingin[#1][#2]}}}
-
-\def\dostelopsommingin[#1][#2][#3]%
- {\dodostelopsommingin[#1][#2]%
- \ConvertToConstant\doifnot{#3}{} % anders wordt #2 overruled
- {\dodostelopsommingin[#1][#3]}}
-
-\def\stelopsommingin%
- {\dotripleempty\dostelopsommingin}
-
-\def\doadvanceitem%
- {\ifsubsom\else\ifsymsom\else
- \pluscounter{\s!itemcount\itemlevel}%
- \fi\fi}
-
-\def\setitemlevel#1%
- {\ifnum\itemlevel>0\relax
- \firstlisttrue
- \doifnotinset{\v!verder}{#1}
- {\resetcounter{\s!itemcount\itemlevel}}%
- \def\tempnumber%
- {\countervalue{\s!itemcount\itemlevel}}%
- \doifelsevalue{\??op\itemlevel\c!plaatsafsluiter}{\v!ja}
- {\def\tempsymbool{\getvalue{\??op\itemlevel\c!afsluiter}}}
- {\def\tempsymbool{}}%
- \fi}
-
-\def\setitemmark#1% % maakt gebruik van \??ss en \??cv
- {\doifdefinedelse{\??ss#1} % en pas op: resets \docommando
- {\setxvalue{\??op\c!symbool\s!global\itemlevel}%
- {#1}%
- \setgvalue{\??op\c!symbool\s!local\itemlevel}%
- {?}%
- \def\listitem%
- {\symbol[#1]}%
- \def\docommando##1{}}
- {\doifdefined{\??cv#1}
- {\setxvalue{\??op\c!symbool\s!global\itemlevel}%
- {#1}%
- \setgvalue{\??op\c!symbool\s!local\itemlevel}%
- {\convertnumber{#1}{\countervalue{\s!itemcount\itemlevel}}}%
- \def\listitem%
- {\getvalue{\??op\c!symbool\s!local\itemlevel}\tempsymbool}%
- \def\docommando##1{}}}}
-
-\def\calculatelistwidth#1#2%
- {#2=\getvalue{\??op#1\c!afstand}\relax
- \multiply#2 by \getvalue{\??op#1\c!factor}\relax
- \advance#2 by \getvalue{\??op#1\c!breedte}\relax}
-
-\def\dodostartopsomming[#1][#2]%
- {\ifhmode
- \par
- \fi
- \ifnum\itemlevel=\maxitemlevel\relax
- \showmessage{\m!layouts}{9}{\maxitemlevel}%
- \def\itemincrement{0}%
- \else
- \def\itemincrement{1}%
- \fi
- \doglobal\increment(\itemlevel,\itemincrement)%
- \begingroup
- \ifnum\itemlevel=1 % NIEUW
- \doifelsevalue{\??op1\c!marge}{\v!standaard}
- {\ifdim\voorwit=\!!zeropoint
- \advance\leftskip by \@@sllinks
- \else
- \advance\leftskip by \voorwit
- \fi}
- {\advance\leftskip by \getvalue{\??op1\c!marge}}%
- \fi
- \doifinset{\v!kolommen}{#1}%
- {\ifbinnenkolommen\else
- \global\somkolommentrue
- \getvalue{\??op\itemlevel\c!voor}%
- \processfirstactioninset
- [#1]
- [ \v!een=>\!!counta=1\relax,
- \v!twee=>\!!counta=2\relax,
- \v!drie=>\!!counta=3\relax,
- \v!vier=>\!!counta=4\relax,
- \v!vijf=>\!!counta=5\relax,
- \s!unknown=>\@EA\!!counta\getvalue{\??op\itemlevel\c!n}]%
- \startkolommen
- [\c!n=\!!counta,
- \c!hoogte=,
- \c!lijn=\v!uit,
- \c!balanceren=\v!ja,
- \c!uitlijnen=\v!nee]%
- \fi}%
- \doifinsetelse{\v!intro}{#1}
- {\somintrotrue}
- {\somintrofalse}%
- \doglobal\increment\noflists
- \let\currentlist=\noflists
- \newcounter\noflistelements
- \kopsomfalse
- \subsomfalse
- \symsomfalse
- \let\marsymbol=\relax
- \let\somdestination=\empty
- \def\symsymbol{}%
- \def\som%
- {\dosom}%
- \def\but[##1]%
- {\def\somdestination{##1}%
- \dosom}%
- \def\nop%
- {\sym{\strut}\strut}%
- \definecomplexorsimple\its
- \setvalue{\v!mar}##1%
- {\def\marsymbol%
- {\llap
- {\doattributes{\??op\itemlevel\v!mar}{##1}%
- \hskip\leftskip\hskip\linkermargeafstand}}%
- \dosom}%
- \setvalue{\v!kop}%
- {\kopsomtrue\dokop}%
- \setvalue{\v!sub}%
- {\subsomtrue\dosom}%
- \setvalue{\v!sym}##1%
- {\def\symsymbol%
- {\doattributes{\??op\itemlevel\v!sym}{##1}}%
- \symsomtrue
- \dosom}%
- \setvalue{\v!its}%
- {\getvalue{\v!sym}%
- {\calculatelistwidth{\itemlevel}{\dimen0}%
- \hbox to \dimen0
- {\dorecurse{\getvalue{\??op\itemlevel\c!items}}{\listitem\hss}%
- \unskip
- \hskip\getvalue{\??op\itemlevel\c!afstand}}}}%
- \setitemlevel{#1}%
- \getvalue{\??op\itemlevel}%
- \doifelsenothing{#1} % iffirstargument
- {\edef\@@opsymbool{\getvalue{\??op\itemlevel\c!symbool}}%
- \setgvalue{\??op\c!symbool\s!global\itemlevel}{}%
- \setgvalue{\??op\v!verder\itemlevel}{}%
- \setitemmark{\@@opsymbool}%
- \dostelopsomminginvariable[\itemlevel][#2]}
- {\dostelopsomminginconstant[\itemlevel][#1]%
- \dostelopsomminginvariable[\itemlevel][#2]%
- \doifinsetelse{\v!verder}{#1}%
- {\edef\@@opsymbool{\getvalue{\??op\c!symbool\s!global\itemlevel}}%
- \getvalue{\??op\v!verder\itemlevel}}
- {\edef\@@opsymbool{\getvalue{\??op\itemlevel\c!symbool}}%
- \setgvalue{\??op\v!verder\itemlevel}%
- {\dostelopsomminginconstant[\itemlevel][#1]%
- \dostelopsomminginvariable[\itemlevel][#2]}}%
- \def\docommando{\setitemmark}% \setitemmark resets \docommando
- \processcommalist[#1,\@@opsymbool]\docommando}%
- \ifsomautointro\ifnum\prevgraf<3
- \somintrotrue
- \fi\fi
- \ifpackeditems
- \doassign[\??op\itemlevel][\c!tussen=]%
- \fi
- \calculatelistwidth{\itemlevel}{\dimen0}%
- \ifdim\dimen0>\!!zeropoint\relax
- \advance\leftskip by \dimen0\relax
- \fi}
-
-\def\dostartopsomming[#1][#2]%
- {\ifsecondargument
- \dodostartopsomming[#1][#2]%
- \else
- \doifassignmentelse{#1}
- {\dodostartopsomming[][#1]}
- {\dodostartopsomming[#1][]}%
- \fi}
-
-\def\startopsomming%
- {\bgroup
- \dodoubleempty\dostartopsomming}
-
-\def\stopopsomming%
- {\par
- \dolistreference
- \endgroup
- \ifsomkolommen
- \global\somkolommenfalse
- \stopkolommen
- \getvalue{\??op\itemlevel\c!na}%
- \else
- \ifnum\itemlevel=1\relax
- \dosomebreak\allowbreak % toegevoegd
- \getvalue{\??op1\c!na}%
- \fi
- \fi
- \endgroup
- \doglobal\decrement(\itemlevel,\itemincrement)%
- \egroup}
-
-\def\sombreak%
- {\flushfootnotes\penalty-5\relax} % -10
-
-\def\somnobreak%
- {\flushfootnotes\penalty+5\relax} % \nobreak
-
-\def\dolistitem%
- {\par
- \ignorespaces
- \increment\noflistelements
- \ifnum\noflistelements=1\relax % als gevolg van nesting
- \findtwopassdata{\s!list}{\noflists:}% % van wordt soms de volgorde
- \fi % verstoord, vandaar \find
- \ifsomkolommen\else
- \iftwopassdatafound
- \ifnum\twopassdata=3\relax
- \ifnum\noflistelements>1\relax
- \dosomebreak\somnobreak
- \fi
- \else\ifnum\twopassdata>3\relax
- \ifnum\noflistelements=2\relax
- \ifsomkolommen\else
- \ifsomintro
- \dosomebreak\nobreak
- \else
- \dosomebreak\somnobreak
- \fi
- \fi
- \else\ifnum\twopassdata=\noflistelements\relax
- \dosomebreak\somnobreak
- \else\ifnum\noflistelements>2\relax
- \dosomebreak\sombreak
- \else
- \ifsomintro\else\dosomebreak\sombreak\fi
- \fi\fi\fi
- \fi\fi
- \fi
- \fi
- \noindent
- \ifkopsom
- \setbox8=\hbox{\doattributes{\??op\itemlevel\v!kop}{\listitem}}%
- \else\ifsymsom
- \setbox8=\hbox{\symsymbol}%
- \else
- \setbox8=\hbox{\listitem}%
- \fi\fi
- \doifsomething{\somdestination}
- {\setbox8=\hbox{\naar{\copy8}[\somdestination]}}%
- \dimen2=\getvalue{\??op\itemlevel\c!breedte}\relax
- \ifdim\dimen2<\!!zeropoint\relax
- \llap{\ifsubsom\llap{+}\fi\box8\hskip\linkermargeafstand}%
- \else
- \ifdim\dimen2=\!!zeropoint\relax
- \calculatelistwidth{1}{\dimen0}%
- \else
- \calculatelistwidth{\itemlevel}{\dimen0}%
- \fi
- \llap{\hbox to \dimen0{\ifsubsom\llap{+}\fi\box8\hfill}}%
- \fi
- \setevalue{\??op\c!symbool\itemlevel}%
- {\getvalue{\??op\c!symbool\s!local\itemlevel}}%
- \kopsomfalse
- \subsomfalse
- \symsomfalse
- \EveryPar{\ignorespaces}%
- \ignorespaces}
-
-\def\complexdosom[#1]%
- {\par
- \ignorespaces
- \doadvanceitem
- \ifsomkolommen\else
- \ifnum\noflistelements>0\relax\dosomebreak\nobreak\fi
- \fi
- \iffirstlist
- \firstlistfalse
- \begingroup
- \ifcase\itemlevel
- \or % 1
- \ifsomkolommen\else
- \ifsomintro\dosomebreak\nobreak\fi
- \getvalue{\??op1\c!voor}%
- \ifsomintro\dosomebreak\nobreak\fi
- \fi
- \else % 2 en hoger
- \let\previtemlevel=\itemlevel
- \decrement\previtemlevel
- \getvalue{\??op\previtemlevel\c!tussen}% = itemlevel-1
- \fi
- \else
- \itemuse{\c!tussen}%
- \fi
- \ignorespaces
- \dolistitem
- \ifpackeditems
- \stelwitruimtein[\v!geen]%
- \fi
- \itemuse{\c!binnen}%
- \marsymbol
- \let\marsymbol=\relax
- \doifsomething{#1}
- {\bgroup
- \protectconversion
- \rawreference{\s!lst}{#1}{\itemreference}%
- \egroup}%
- \ignorespaces}
-
-\def\complexsom[#1]#2\par%
- {\startopsomming[#1]
- \complexdosom[]\ignorespaces#2\par
- \stopopsomming}
-
-\def\som%
- {\complexorsimpleempty{som}}
-
-\def\dosom%
- {\complexorsimpleempty{dosom}}
-
-\def\complexdokop[#1]#2\par%
- {\ifpackeditems\else\itemuse{\c!kopvoor}\fi%
- \dosomebreak{\pagina[\v!voorkeur]}% geen \goodbreak ! \allowbreak testen
- \complexdosom[#1]{\doattributes{\??op\itemlevel\v!kop}{\ignorespaces#2}}\par%
- \ifpackeditems\else\itemuse{\c!kopna}\fi%
- \dosomebreak\nobreak}
-
-\def\complexkop[#1]#2\par#3\par%
- {\startopsomming[#1]%
- \complexdokop[]\ignorespaces#2\par#3\par%
- \stopopsomming}
-
-\setvalue{\v!kop}%
- {\complexorsimpleempty{kop}}
-
-\def\dokop%
- {\complexorsimpleempty{dokop}}
-
-\def\sym#1%
- {\noindent
- \setbox0=\hbox{#1}%
- \ifdim\wd0<1em\relax
- \setbox0=\hbox to 1.5em{#1\hfil}%
- \else
- \setbox0=\hbox spread 1em{#1\hfil}%
- \fi
- \hangindent=\wd0\relax
- \box0
- \ignorespaces}
-
-%I n=Doordefinieren
-%I c=\doordefinieren,\steldoordefinierenin
-%I
-%I Er kunnen (eenvoudige) definitie-lijsten worden
-%I gemaakt met behulp van het commando:
-%I
-%I \doordefinieren[naam][plaats=,breedte=,uitlijnen=,
-%I monster=,letter=,kopletter=,voor=,tussen=,na=,hang=,
-%I inspringen=,tekst=]
-%I
-%I Een definitie is vervolgens op naam op te roepen:
-%I
-%I \naam{begrip} definitie
-%P
-%I Een definitie heeft de vorm:
-%I
-%I links Dit is een linker tekst. Een tekst wordt
-%I links geplaatst als 'links' wordt meegegeven.
-%I
-%I Dit is een rechter tekst. Een tekst wordt rechts
-%I rechts geplaatst als 'rechts' wordt meegegeven.
-%I
-%I boven
-%I
-%I Dit is een tekst waarbij het woord erboven staat. Voor
-%I dit soort teksten wordt 'boven' meegegeven.
-%I
-%I Tot slot is het mogelijk de tekst in de marge of
-%I aansluitend te plaatsen, in dat geval wordt 'inmarge',
-%I 'inlinker', 'inrechter' of 'aanelkaar' meegegeven.
-%P
-%I Aan 'voor', 'tussen' of 'na' kan een commando worden
-%I toegekend, bijvoorbeeld \blanko[groot]. Als letter kan
-%I normaal, vet, kapitaal, type, schuin, klein en kleinvet
-%I worden meegegeven.
-%I
-%I Als 'breedte' kan een maat worden meegegeven of een van de
-%I instellingen 'passend' en 'ruim'. In dat geval wordt de
-%I aan 'monster' toegekende tekst als uitgangspunt genomen.
-%P
-%I Met 'hang' kan men aangeven hoe lang er links of rechts
-%I moet worden ingesprongen. Er kan een aantal regels worden
-%I meegegeven maar ook 'passend' of 'ruim'. Een overgang naar
-%I een nieuwe regel binnen een linker- of rechtertekst wordt
-%I afgedwongen met \\ (vergelijk \margeteksten).
-%I
-%I Defaultwaarden kunnen worden ingesteld met het commando:
-%I
-%I \steldoordefinierenin[instellingen]
-%I
-%I Het tussentijds bijstellen van de instellingen is mogelijk
-%I met:
-%I
-%I \steldoordefinieren[naam][instellingen]
-
-% Dit kan en moet dus anders:
-%
-% \start... : \vbox\bgroup
-% \stop... : \egroup
-% llap enz.
-% geen indent!
-%
-% enz. enz.
-%
-% Op die manier is meer mogelijk en worden \par's geskipt.
-
-% De macro's \??dd#1\c!lokaal en \??dd#1\c!commando leveren
-% de koppeling tussen \doornummeren en \doordefinieren. Deze
-% constructie is nodig omdat doornummeren geen argument
-% heeft en omdat subnummers niet worden genest binnen
-% het hogere niveau. Het commando \??dd#1\s!do\c!commando
-% moet in dat geval \v!ja zijn.
-
-% herimplementeren met \nextbox en \unhbox\unvbox
-
-\newbox\@@definitiebox
-
-\setvalue{@@dodefinitiewoord\v!links}#1%
- {\hbox to \!!widtha{#1\hss}}
-\setvalue{@@dodefinitiewoord\v!rechts}#1%
- {\hbox to \!!widtha{\hss#1}}
-\setvalue{@@dodefinitiewoord\v!midden}#1%
- {\hbox to \!!widtha{\hss#1\hss}}
-\setvalue{@@dodefinitiewoord}#1%
- {#1}
-
-\def\@@definitiewoord#1%
- {\getvalue{\??dd#1\c!commando}{#1}}
-
-\def\normal@@definitiewoord#1[#2]#3%
- {\bgroup
- \getvalue{@@dodefinitiewoord\getvalue{\??dd#1\c!uitlijnen}}
- {\doattributes{\??dd#1\v!kop}{\strut\getvalue{\??dd#1\c!tekst}#3}}%
- \rawreference{\s!def}{#2}{#3}%
- \egroup}
-
-\def\@@definitielinks#1[#2]#3%
- {\doifelsevaluenothing{\??dd#1\c!hang}
- {\@@definitielinkspure{#1}[#2]{#3}}
- {\@@definitielinkshang{#1}[#2]{#3}}}
-
-\def\@@definitierechts#1[#2]#3%
- {\doifelsevaluenothing{\??dd#1\c!hang}
- {\@@definitierechtspure{#1}[#2]{#3}}
- {\@@definitierechtshang{#1}[#2]{#3}}}
-
-\def\@@definitielinkspure#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \advance\leftskip by \!!widtha
- \llap
- {\hbox to \!!widtha{\@@definitiewoord{#1}[#2]{#3}%
- \hss}}%
- \@@dodefinitie{#1}}
-
-\def\@@definitierechtspure#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \advance\rightskip by \!!widtha
- \rlap
- {\hskip\hsize
- \hskip-\leftskip
- \hskip-\rightskip
- \hbox to \!!widtha{\hss\@@definitiewoord{#1}[#2]{#3}}}%
- \@@dodefinitie{#1}}
-
-\def\@@makedefinitiebox#1[#2]#3#4%
- {\setbox\@@definitiebox=\vtop % \vbox gaat fout in hang
- {\forgetall
- \hsize\!!widtha
- #4%
- \def\\{\endgraf}%
- \@@definitiewoord{#1}[#2]{\begstrut#3\endstrut}}%
- \ht\@@definitiebox=\ht\strutbox
- \dp\@@definitiebox=\dp\strutbox
- \doifinsetelse{\getvalue{\??dd#1\c!hang}}{\v!passend,\v!ruim}
- {\dimen0=\ht\@@definitiebox
- \advance\dimen0 by \dp\@@definitiebox
- \doifvalue{\??dd#1\c!hang}{\v!ruim}
- {\advance\dimen0 by .5\ht\strutbox}%
- \getnoflines{\dimen0}%
- \hangafter=-\noflines}
- {\hangafter=-\getvalue{\??dd#1\c!hang}}}%
-
-\def\@@definitielinkshang#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \mindermeldingen
- \hangindent=\!!widtha\relax
- \@@makedefinitiebox{#1}[#2]{#3}{}%
- \llap
- {\dontshowcomposition
- \vtop to \!!zeropoint{\box\@@definitiebox}}%
- \@@dodefinitie{#1}}%
-
-\def\@@definitierechtshang#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \mindermeldingen
- \hangindent=-\!!widtha\relax
- \@@makedefinitiebox{#1}[#2]{#3}{\raggedleft}%
- \rlap
- {\dontshowcomposition
- \dimen0=\hsize
- \advance\dimen0 by -\leftskip
- \advance\dimen0 by -\rightskip
- \hbox to \dimen0
- {\hss
- \vtop to \!!zeropoint{\box\@@definitiebox}}}%
- \@@dodefinitie{#1}}
-
-\def\@@definitieboven#1[#2]#3%
- {%\pagina[\v!voorkeur]% % Weg ermee!
- \dosomebreak{\goodbreak}% % Dit is beter en nodig!
- \@@dostartdefinitie{#1}{#3}%
- \@@definitiewoord{#1}[#2]{#3}%
- \nobreak
- \getvalue{\??dd#1\c!tussen}%
- \@@dodefinitie{#1}}
-
-\def\@@definitieinmarge#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \inmarge{\@@definitiewoord{#1}[#2]{#3}}%
- \@@dodefinitie{#1}}
-
-\def\@@definitieinlinker#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \inlinker{\@@definitiewoord{#1}[#2]{#3}}%
- \@@dodefinitie{#1}}
-
-\def\@@definitieinrechter#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \inrechter{\@@definitiewoord{#1}[#2]{#3}}%
- \@@dodefinitie{#1}}
-
-\def\@@definitieaanelkaarpassend#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \@@definitiewoord{#1}[#2]{#3}%
- \tfskip % nog afstand implementeren
- \@@dodefinitie{#1}}
-
-\def\@@definitieaanelkaarbreed#1[#2]#3%
- {\@@dostartdefinitie{#1}{#3}%
- \ignorespaces
- \hbox to \!!widtha
- {\@@definitiewoord{#1}[#2]{#3}%
- \tfskip
- \hss}% % nog afstand implementeren
- \@@dodefinitie{#1}}
-
-\def\@@definitieaanelkaar#1[#2]#3%
- {\doifinsetelse{\getvalue{\??dd#1\c!breedte}}{\v!passend,\v!ruim}%
- {\@@definitieaanelkaarpassend{#1}[#2]{#3}}%
- {\@@definitieaanelkaarbreed{#1}[#2]{#3}}}
-
-\def\@@dostartdefinitie#1#2%
- {\getvalue{\??dd#1\c!voor}%
- \begingroup
- %\showcomposition
- \assignwidth
- {\!!widtha}
- {\getvalue{\??dd#1\c!breedte}}
- {\doattributes
- {\??dd#1\v!kop}
- {\getvalue{\??dd#1\c!tekst}%
- \doifelsevaluenothing{\??dd#1\c!monster}
- {#2}
- {\getvalue{\??dd#1\c!monster}}}}%
- \getvalue{\??dd#1\c!lokaal}%
- \parindent=\!!zeropoint\relax
- \noindent
- \ignorespaces}
-
-\def\@@stopdefinitie#1%
- {\par
- \dostopattributes
- \endgroup
- \egroup % temporary hack
- \getvalue{\??dd#1\c!na}%
- \pagina[\v!voorkeur]} % toegevoegd maar heroverwegen
-
-\def\@@dodefinitie#1%
- {\dostartattributes
- {\??dd#1}
- {}%
- \ignorespaces}
-
-\def\@@somedefinitie#1[#2]#3%
- {\bgroup % temporary hack
- \BeforePar{\getvalue{\??dd#1}[#2]{#3}}%
- \AfterPar{\@@stopdefinitie{#1}}%
- \GetPar}
-
-\def\@@startdefinitie#1[#2]#3%
- {\bgroup % temporary hack
- \BeforePar{\getvalue{\??dd#1}[#2]{#3}}%
- \GotoPar}
-
-\def\dodosteldoordefinierenin[#1][#2]%
- {\getparameters[\??dd#1][#2]}
-
-\def\dosteldoordefinierenin[#1][#2]%
- {\ConvertToConstant\doifelse{#2}{}
- {\dodosteldoordefinierenin[][#1]}
- {\dodoubleargumentwithset\dodosteldoordefinierenin[#1][#2]}}
-
-\def\steldoordefinierenin%
- {\dodoubleempty\dosteldoordefinierenin}
-
-% kan zonder \interfaced wanneer \setvalue{...\v!...}
-
-\def\executedoordefinitie#1[#2]%
- {\ExpandAfter\doifundefined{@@definitie\interfaced{\getvalue{\??dd#1\c!plaats}}}
- {\setvalue{\??dd#1\c!plaats}{\v!links}}%
- \getvalue{@@definitie\interfaced{\getvalue{\??dd#1\c!plaats}}}{#1}[#2]}
-
-\def\dodoordefinieren[#1][#2]%
- {\copyparameters[\??dd#1][\??dd]
- [\c!plaats,\c!kopletter,\c!letter,\c!kleur,\c!kopkleur,
- \c!breedte,\c!hang,\c!monster,\c!voor,\c!tussen,\c!na,
- \c!uitlijnen,\c!inspringen,\c!tekst]%
- \getparameters[\??dd#1]
- [\s!do\c!commando=\v!nee,
- \c!commando=\normal@@definitiewoord,
- \c!lokaal=,
- #2]%
- \doifvalue{\??dd#1\c!plaats}{\v!boven}%
- {\doassign[\??dd#1][\c!tussen={\blanko}]}%
- \setvalue{\??dd#1}[##1]%
- {\executedoordefinitie{#1}[##1]}%
- \doifelsevalue{\??dd#1\s!do\c!commando}{\v!ja}
- {\setvalue{\s!complex\??dd#1}[##1]%
- {\@@somedefinitie{#1}[##1]{}}%
- \setvalue{\s!complex\??dd\s!start#1}[##1]%
- {\@@startdefinitie{#1}[##1]{}}}%
- {\setvalue{\s!complex\??dd#1}[##1]%
- {\dowithwargument{\@@somedefinitie{#1}[##1]}}%
- \setvalue{\s!complex\??dd\s!start#1}[##1]%
- {\dowithwargument{\@@startdefinitie{#1}[##1]}}}%
- \setvalue{#1}%
- {\complexorsimpleempty{\??dd#1}}%
- \setvalue{\e!start#1}%
- {\complexorsimpleempty{\??dd\s!start#1}}%
- \setvalue{\e!stop#1}%
- {\@@stopdefinitie{#1}}}%
-
-\def\doordefinieren%
- {\dodoubleemptywithset\dodoordefinieren}
-
-%I n=Doornummeren
-%I c=\doornummeren,\steldoornummerenin
-%I c=\reset,\volgende,\vorige
-%I
-%I Het is mogelijk door een tekst heen genummerde opsommingen
-%I te gebruiken. Het beschikbare commando is:
-%I
-%I \doornummeren[naam][plaats=,niveaus=,conversie=,
-%I kopletter=,letter=,breedte=,monster=,tekst=,voor=,tussen=,
-%I na=,wijze=,blok=,scheider=,afsluiter=,hang=,links=,rechts=,
-%I sectienummer=,nummer=,koppeling=,uitlijnen=,inspringen]
-%I
-%I De naam bestaat uit letters.
-%I
-%I Na het commando 'doornummeren' zijn de volgende commando's
-%I beschikbaar:
-%I
-%I \naam
-%I \subnaam
-%I \subsubnaam
-%I
-%I waarbij naam staat voor de opgegeven naam.
-%P
-%I Dit commando komt in grote lijnen overeen met het
-%I commando \doordefinieren. Als de plaats 'links' is
-%I en de tekst is 'vraag', dan krijgen we na het
-%I geven van \vraag Wat ... was?:
-%I
-%I vraag 1 Wat zouden we krijgen als de plaats 'rechts'
-%I en de tekst 'antwoord' was?
-%I
-%I We kunnen een referentie meegeven, dus \vraag[ref]. Als
-%I we geen nummer willen, maar wel de tekst, dan is de
-%I aanroep \vraag[-]. Er wordt in dat geval niet opgehoogd.
-%I Hetzelfde kan worden bereikt door 'nummer' de waarde
-%I nee te geven.
-%P
-%I De wijze waarop het laatste niveau wordt weergegeven kan
-%I worden ingesteld met conversie: cijfers, letters, Letters,
-%I romeins en Romeins). Conversie heeft pas effect als ook
-%I niveaus is ingesteld (2 of 3, standaard 3).
-%I
-%I Voor of na de te nummeren tekst op te nemen commando's
-%I kunnen worden ingesteld. Ook kan een voor het nummer op te
-%I nemen tekst worden meegegeven en kan de plaats van de tekst
-%I en het nummer worden ingesteld (… la \doordefinieren!).
-%I
-%I Er kan een koppeling worden gelegd met een ander item. Zo
-%I kunnen bijvoorbeeld vragen worden gekoppeld aan antwoorden.
-%I Dergelijke koppelingen hebben pas betekenis bij
-%I interactieve teksten.
-%I
-%I Defaultwaarden kunnen worden ingesteld met het commando:
-%I
-%I \steldoornummerenin[instellingen]
-%P
-%I Het is mogelijk het nummeren opnieuw te starten met het
-%I commando:
-%I
-%I \reset<naam>
-%I
-%I en een (sub)nummer op te hogen met:
-%I
-%I \volgende<naam>
-%I \volgendesub<naam>
-%I
-%I Het tussentijds bijstellen van de instellingen is mogelijk
-%I met:
-%I
-%I \steldoornummerenin[naam][instellingen]
-
-\def\showdnpuretext#1%
- {\strut\getvalue{\??dd#1\c!tekst} }
-
-\def\showdntext#1%
- {\doifelsevaluenothing{\??dd#1\c!tekst}
- {\ignorespaces}
- {\strut\getvalue{\??dd#1\c!tekst}\fixedspace}}
-
-\def\showdnnummer#1%
- {\voorafgaandenummer%
- \nummer[\getvalue{\??dd#1\??dd\c!nummer}]}
-
-\def\showdnsubnummer#1%
- {\showdnnummer{#1}%
- \getvalue{\??dd#1\c!scheider}%
- \nummer[\v!sub\getvalue{\??dd#1\??dd\c!nummer}]}
-
-\def\showdnsubsubnummer#1%
- {\showdnsubnummer{#1}%
- \getvalue{\??dd#1\c!scheider}%
- \nummer[\v!sub\v!sub\getvalue{\??dd#1\??dd\c!nummer}]}
-
-\def\showdnsubsubsubnummer#1%
- {\showdnsubsubnummer{#1}%
- \getvalue{\??dd#1\c!scheider}%
- \nummer[\v!sub\v!sub\v!sub\getvalue{\??dd#1\??dd\c!nummer}]}
-
-\def\domakednnummer#1#2%
- {\getvalue{\??dd#2\c!links}%
- \strut#1{#2}%
- \getvalue{\??dd#2\c!rechts}}
-
-% #1=name #2=level #3=\show #4[#5]#6=#1[#2]#3 van definitie
-
-% alternatief zonder check en ietwat verwarrend
-%
-% \bgroup
-% \setvalue{\??dd#1\c!sectienummer}{\v!ja}%
-% \protectconversion
-% \maakvoorafgaandenummer[#1]%
-% \xdef\internaldoornummer{#3{#1}}%
-% \thisissomeinternal{#1}{\internaldoornummer}%
-% \doifelsevaluenothing{\??dd#1\c!koppeling} % checken
-% {\gotosomeinternal
-% {\getvalue{\??dd#1\c!koppeling}}
-% {\internaldoornummer}
-% {\copy0}
-% {}}
-% {\box0}%
-% \egroup
-% \rawreference{\s!num}{#5}{#3{#1}}%
-
-\def\special@@definitiewoord#1#2#3#4[#5]#6%
- {\getvalue{@@dodefinitiewoord\getvalue{\??dd#2#1\c!uitlijnen}}
- {\strut
- \doifelsevalue{\??dd#1\c!nummer}{\v!nee}
- {\!!doneafalse}
- {\doifelse{#5}{-}
- {\!!doneafalse}
- {\!!doneatrue}}%
- \if!!donea
- \getvalue{\e!volgende#2#1}%
- \iflocation
- \bgroup
- \setvalue{\??dd#1\c!sectienummer}{\v!ja}%
- \protectconversion
- \maakvoorafgaandenummer[#1]%
- \xdef\internaldoornummer{#3{#1}}%
- \rawreference{\s!num}{#1:\internaldoornummer}{}%
- \egroup
- \fi
- \maakvoorafgaandenummer[#1]%
- \hbox
- {\def\kap##1{##1}% \domakednnumer gaat hier fout binnen kap
- \doattributes
- {\??dd#1\v!kop}
- {\strut
- \showdntext{#2#1}%
- \domakednnummer#3{#1}%
- \getvalue{\??dd#1\c!afsluiter}}%
- \iflocation
- \edef\localconnection{\getvalue{\??dd#1\c!koppeling}:\internaldoornummer}%
- \doifreferencefoundelse{\localconnection}
- {\in[\localconnection]} % genereert > of <
- {}%
- \fi}%
- \rawreference{\s!num}{#5}{#3{#1}}%
- \else
- \strut\ExpandBothAfter\doattributes
- {\??dd#1\v!kop}
- {\showdnpuretext{#2#1}}%
- \rawreference{\s!num}{#5}{}%
- \fi}}
-
-% De macro's \??dd#1\c!lokaal en \??dd#1\c!commando leveren
-% de koppeling tussen \doornummeren en \doordefinieren. Deze
-% constructie is nodig omdat doornummeren geen argument
-% heeft en omdat subnummers niet worden genest binnen
-% het hogere niveau. Het commando \??dd#1\s!do\c!commando
-% moet in dat geval \v!ja zijn.
-
-\def\@@ddleftskip#1#2%
- {\do@@ddleftskip{#1}{#2}{}}
-
-\def\do@@ddleftskip#1#2#3%
- {\ExpandFirstAfter\processaction
- [\getvalue{\??dd#2#1\c!inspringen}]
- [ \v!nee=>,
- \v!ja=>\dodo@@ddleftskip{#1}{#2}{#3}%
- \doifnot{#2}{\v!sub#3}
- {\do@@ddleftskip{#1}{#2}{\v!sub#3}},
- \s!unknown=>\advance\leftskip by \getvalue{\??dd#2#1\c!inspringen}]}
-
-\def\dodo@@ddleftskip#1#2#3%
- {\ExpandFirstAfter\processaction
- [\getvalue{\??dd#3\v!sub#1\c!inspringen}]
- [ \v!nee=>,
- \v!ja=>\ExpandFirstAfter\doifnotinset
- {\getvalue{\??dd#3#1\c!breedte}}{\v!passend,\v!ruim}
- {\advance\leftskip by \getvalue{\??dd#3#1\c!breedte}},
- \s!unknown=>\advance\leftskip by \commalistelement]}
-
-\def\@@ddresetsubsubsubnummer#1%
- {\edef\doornummer{\getvalue{\??dd#1\??dd\c!nummer}}%
- \resetnummer[\v!sub\v!sub\v!sub\doornummer]}
-
-\def\@@ddresetsubsubnummer#1%
- {\@@ddresetsubsubsubnummer{#1}%
- \resetnummer[\v!sub\v!sub\doornummer]}
-
-\def\@@ddresetsubnummer#1%
- {\@@ddresetsubsubnummer{#1}%
- \resetnummer[\v!sub\doornummer]}
-
-\def\@@ddresetnummer#1%
- {\@@ddresetsubnummer{#1}%
- \resetnummer[\doornummer]}
-
-\def\@@ddvolgendesubsubsubnummer#1[#2]%
- {\edef\doornummer{\getvalue{\??dd#1\??dd\c!nummer}}%
- \verhoognummer[\v!sub\v!sub\v!sub\doornummer]%
- \rawreference{\s!num}{#2}{\showdnsubsubsubnummer{\doornummer}}}%
-
-\def\@@ddvolgendesubsubnummer#1[#2]%
- {\@@ddresetsubsubsubnummer{#1}%
- \verhoognummer[\v!sub\v!sub\doornummer]%
- \rawreference{\s!num}{#2}{\showdnsubsubnummer{\doornummer}}}
-
-\def\@@ddvolgendesubnummer#1[#2]%
- {\@@ddresetsubsubnummer{#1}%
- \verhoognummer[\v!sub\doornummer]%
- \rawreference{\s!num}{#2}{\showdnsubnummer{\doornummer}}}
-
-\def\@@ddvolgendenummer#1[#2]%
- {\@@ddresetsubnummer{#1}%
- \verhoognummer[\doornummer]%
- \rawreference{\s!num}{#2}{\showdnnummer{\doornummer}}}
-
-\def\dodosteldoornummerenin[#1][#2]%
- {\getparameters[\??dd#1][#2]%
- \stelnummerin[#1][\c!conversie=\getvalue{\??dd#1\c!conversie}]} % see below
-
-\def\dosteldoornummerenin[#1][#2]%
- {\ConvertToConstant\doifelse{#2}{}
- {\getparameters[\??dn][#1]}
- {\dodoubleargumentwithset\dodosteldoornummerenin[#1][#2]}}
-
-\def\steldoornummerenin%
- {\dodoubleempty\dosteldoornummerenin}
-
-\def\dododoornummeren#1#2#3[#4][#5]#6%
- {\dodoordefinieren[#3#1]%
- [\s!do\c!commando=\v!ja,
- \c!lokaal=\@@ddleftskip{#1}{#3},
- \c!commando=\special@@definitiewoord{#1}{#3}{#6}]%
- \copyparameters[\??dd#3#1][\??dn]
- [\c!plaats,\c!kopletter,\c!letter,\c!kleur,\c!kopkleur,
- \c!breedte,\c!nummer,
- \c!monster,\c!hang,\c!uitlijnen,\c!voor,\c!tussen,\c!na,
- \c!niveaus,\c!wijze,\c!blokwijze,\c!scheider, % \c!conversie
- \c!afsluiter,\c!sectienummer,\c!nummer,\c!inspringen]%
- \ConvertToConstant\doifinstringelse{=}{#4}
- {\getparameters[\??dd#3#1]%
- [\c!tekst=#1,\??dd\c!nummer=#1,\c!conversie=,
- \c!links=,\c!rechts=,\c!koppeling=,#4]}%
- {\doifelsenothing{#4}
- {\getparameters[\??dd#3#1]%
- [\c!tekst=#1,\??dd\c!nummer=#1,\c!conversie=,
- \c!links=,\c!rechts=,\c!koppeling=,#4]}%
- {\copyparameters[\??dd#3#1][\??dd#3#4]
- [\c!plaats,\c!kopletter,\c!letter,\c!kleur,\c!kopkleur,
- \c!breedte,\c!nummer,
- \c!monster,\c!hang,\c!uitlijnen,\c!voor,\c!tussen,\c!na,
- \c!links,\c!rechts,\c!koppeling,\c!inspringen]%
- \getparameters[\??dd#3#1]
- [\c!tekst=#1,\??dd\c!nummer=#4,\c!conversie=,#5]}}%
- \ExpandBothAfter\doif{\getvalue{\??dd#3#1\??dd\c!nummer}}{#1}
- {\definieernummer
- [#3#1]
- [\c!wijze=\getvalue{\??dd#1\c!wijze},
- \c!blokwijze=\getvalue{\??dd#1\c!blokwijze},
- \c!sectienummer=\getvalue{\??dd#1\c!sectienummer}]%
- \doifvalue{\??dd#1\c!niveaus}{#2}% % for
- {\doifsomething{\getvalue{\??dd#1\c!conversie}}% % old
- {\stelnummerin[#3#1] % times
- [\c!conversie=\getvalue{\??dd#1\c!conversie}]}}}% % sake
- \setvalue{\s!reset#3#1}%
- {\getvalue{\??dd\s!reset#3\c!nummer}{#1}}%
- \setvalue{\s!complex\e!volgende#3#1}%
- {\getvalue{\??dd\c!volgende#3\c!nummer}{#1}}%
- \setvalue{\e!volgende#3#1}%
- {\complexorsimpleempty{\e!volgende#3#1}}}
-
-\def\dodoornummeren[#1][#2][#3]%
- {\dododoornummeren{#1}{1}{}[#2][#3]\showdnnummer
- \dododoornummeren{#1}{2}{\v!sub}[#2][#3]\showdnsubnummer
- \dododoornummeren{#1}{3}{\v!sub\v!sub}[#2][#3]\showdnsubsubnummer
- \dododoornummeren{#1}{4}{\v!sub\v!sub\v!sub}[#2][#3]\showdnsubsubsubnummer}
-
-\def\doornummeren%
- {\dotripleemptywithset\dodoornummeren}
-
-%I n=Doorspringen
-%I c=\doorspringen,\steldoorspringenin
-%I
-%I Inspringende opsommingen (bijvoorbeeld dialogen) kunnen
-%I worden gezet met:
-%I
-%I \doorspringen[naam][tekst=,scheider=,breedte=,letter=,
-%I kopletter=,voor=,na=]
-%I
-%I Na dit commando zijn de commando's \naam, \subnaam en
-%I \subsubnaam beschikbaar.
-%I
-%I Er kunnen standaardwaarden worden ingesteld met het
-%I commando:
-%I
-%I \steldoorspringenin[instellingen]
-%I
-%I Een aantal commando's kan worden omringt met de volgende
-%I commando's (wel lege regels ertussen!).
-%I
-%I \startdoorspringen
-%I \stopdoorspringen
-%P
-%I Het tussentijds bijstellen van de instellingen is mogelijk
-%I met:
-%I
-%I \steldoorspringenin[naam][instellingen]
-
-% Het default-mechanisme kan mooier: leegtest, enz.
-%
-% Werkprocedure buiten definitie
-
-\def\dodosteldoorspringenin[#1][#2]%
- {\getparameters[\??ds#1][#2]}
-
-\def\dosteldoorspringenin[#1][#2]%
- {\ConvertToConstant\doifelse{#2}{}
- {\dodosteldoorspringenin[][#1]}
- {\dodoubleargumentwithset\dodosteldoorspringenin[#1][#2]}}
-
-\def\steldoorspringenin%
- {\dodoubleempty\dosteldoorspringenin}
-
-\def\startdoorspringen%
- {\witruimte
- \@@dsvoor
- \pagina[\v!voorkeur]
- \begingroup
- \parskip=\!!zeropoint\relax}
-
-\def\stopdoorspringen%
- {\endgroup
- \@@dsna}
-
-\def\dododoorspringen#1#2#3%
- {\par
- \getvalue{\??ds#1\c!voor}%
- \begingroup
- \doifvaluenothing{\??ds#1\c!monster}
- {\setvalue{\??ds#1\c!monster}%
- {\getvalue{\??ds#1\c!tekst}}}%
- \assignwidth
- {\!!widtha}
- {\getvalue{\??ds#1\c!breedte}}
- {\doattributes
- {\??ds#1\v!kop}
- {\getvalue{\??ds#1\c!monster}\getvalue{\??ds#1\c!scheider}}}%
- \advance\!!widtha by \tfskipsize
- \setbox2=\hbox to \!!widtha
- {\doattributes
- {\??ds#1\v!kop}
- {\strut
- \getvalue{\??ds#1\c!tekst}%
- \hss
- \getvalue{\??ds#1\c!scheider}%
- \tfskip}}%
- \parindent\!!zeropoint
- \hskip#2\!!widtha\indent\box2%
- \hangindent#3\!!widtha
- \doattributes{\??ds#1}{}% #4}%
- \AfterPar%
- {\endgroup
- \getvalue{\??ds#1\c!na}}%
- \GetPar}
-
-\def\dodoorspringen[#1][#2]%
- {\copyparameters[\??ds#1][\??ds]
- [\c!tekst,\c!scheider,\c!breedte,\c!letter,\c!kleur,
- \c!kopletter,\c!monster,\c!voor,\c!na]%
- \getparameters[\??ds#1][#2]%
- \setvalue{#1}%
- {\dododoorspringen{#1}{0}{1}}%
- \setvalue{\v!sub#1}%
- {\dododoorspringen{#1}{1}{2}}%
- \setvalue{\v!sub\v!sub#1}%
- {\dododoorspringen{#1}{2}{3}}}
-
-\def\doorspringen%
- {\dodoubleargumentwithset\dodoorspringen}
-
-%I n=Doorlabelen
-%I c=\doorlabelen,\verhoog,\huidige
-%I
-%I Het is mogelijk genummerde verwijzingen (bijvoorbeeld
-%I naar sheets of video's) in de tekst op te nemen met
-%I het commando:
-%I
-%I \doorlabelen[naam][tekst=,plaats=,voor=,na=,kopletter=]
-%I
-%I Na dit commando zijn de volgende commando's beschikbaar:
-%I
-%I \reset<naam>
-%I \verhoog<naam>
-%I \volgende<naam>[referentie]
-%I \huidige<naam>
-%I \in<naam>[referentie]
-%P
-%I Er kan een 'kopje' worden opgeropeen met het commando:
-%I
-%I \naam
-%I
-%I In dat geval worden de onder 'voor' en 'na' opgegeven
-%I commando's uitgevoerd.
-%I
-%I Als we voor naam 'sheet' invullen en voor tekst
-%I 'transparant' dan leidt het commando \huidigesheet tot
-%I de tekst 'transparant 1' en een volgende aanroep tot de
-%I tekst 'transparant 2'.
-
-\def\dodoorlabel[#1][#2]%
- {\getvalue{\s!number#1\c!voor}%
- \bgroup
- %\ExpandFirstAfter\doifinset{\getvalue{\s!number#1\c!plaats}}{\v!marge,\v!inmarge}
- % {\setvalue{\s!number#1\c!zetwijze}{\v!inmarge}}%
- \doif{\getvalue{\s!number#1\c!plaats}}{\v!marge}
- {\setvalue{\s!number#1\c!plaats}{\v!inmarge}}%
- \doattributes{\s!number#1\v!kop}{\getvalue{\e!volgende#1}[#2]}%
- \egroup
- \getvalue{\s!number#1\c!na}}%
-
-\def\dovolgendedoorlabel[#1][#2]%
- {\volgendenummer[#1][\s!lab][#2]}
-
-\def\dodoorlabelen[#1][#2]%
- {\definieernummer
- [#1]
- [\c!voor=,
- \c!na=,
- \c!kopletter=,
- \c!wijze=\@@nrwijze,
- #2]%
- \setvalue{#1}%
- {\dodoubleempty\dodoorlabel[#1]}%
- \setvalue{\s!reset#1}%
- {\resetnummer[#1]}%
- \setvalue{\e!verhoog#1}%
- {\verhoognummer[#1]}%
- \setvalue{\e!volgende#1}%
- {\dodoubleempty\dovolgendedoorlabel[#1]}%
- \setvalue{\c!huidige#1}%
- {\huidigenummer[#1]}%
- \setvalue{\c!in#1}[##1]% % weghalen
- {\innummer[#1][##1]}% % weghalen
- \setvalue{\c!op#1}[##1]% % weghalen
- {\opnummer[#1][##1]}} % weghalen
-
-\def\doorlabelen%
- {\dodoubleargumentwithset\dodoorlabelen}
-
-%I n=Uitlijnen
-%I c=\startuitlijnen,\steluitlijnenin,\steltolerantiein
-%I c=\regellinks,\regelrechts,\regelmidden,
-%I c=\woordrechts
-%I
-%I De regelval kan worden ingesteld met:
-%I
-%I \steluitlijnenin[instelling]
-%I
-%I waarbij de volgende instellingen mogelijk zijn:
-%I
-%I links links niet uitvullen
-%I midden links/rechts niet uitvullen = centreren
-%I rechts rechts niet uitvullen
-%I breedte uitvullen over breedte (default)
-%I beide wisselend (afhankelijk bladzijde)
-%I onder onderkant niet uitgelijnd (default)
-%I hoogte uitvullen over hoogte (op baseline)
-%I regel uitvullen over hoogte (binnen kader)
-%I reset uitvullen over breedte en hoogte
-%I
-%I In combinatie met links, midden en rechts kan 'ruim'
-%I worden opgegeven.
-%P
-%I Aanvullend zijn de volgende commando's beschikbaar:
-%I
-%I \startuitlijnen[instelling]
-%I \stopuitlijnen
-%I
-%I Een regel kan op verschillende manieren worden uitgelijnd
-%I met behulp van de commando's:
-%I
-%I \regellinks{tekst}
-%I \regelrechts{tekst}
-%I \regelmidden{tekst}
-%I
-%I Aan het eind van een paragraaf kan een stukje tekst
-%I worden geplaatst met: \woordrechts{ziezo}
-%P
-%I De tolerantie waarbinnen het uitlijnen plaatsvindt kan
-%I worden ingesteld met:
-%I
-%I \steltolerantiein[instelling]
-%I
-%I Mogelijke waarden zijn: zeerstreng, streng, soepel en
-%I zeersoepel.
-%I
-%I Standaard heeft de tolerantie betrekking op horizontaal
-%I uitlijnen. Vertikaal kan het uitlijnen worden beinvloed
-%I door het trefwoord 'vertikaal' mee te geven. Standaard
-%I geldt [vertikaal,streng] en [horizontaal,zeerstreng].
-
-\definetwopasslist{\s!paragraph}
-
-\newcounter\nofraggedparagraphs
-
-\def\doparagraphreference% looks very much like domarginreference
- {\doglobal\increment\nofraggedparagraphs\relax
- \edef\writeparref%
- {\writeutilitycommand%
- {\twopassentry%
- {\s!paragraph}%
- {\nofraggedparagraphs}%
- {\noexpand\realfolio}}}%
- \writeparref}
-
-\def\setraggedparagraphmode#1#2%
- {\ifinner
- \ifdubbelzijdig
- \gettwopassdata{\s!paragraph}%
- \iftwopassdatafound
- \ifodd\twopassdata#1\else#2\fi
- \else
- \ifodd\realfolio#1\else#2\fi
- \fi
- \doparagraphreference
- \else
- #2\relax
- \fi
- \else
- #2\relax
- \fi}
-
-% De onderstaande macro's zijn opgenomen in Plain TeX.
-%
-% \def\raggedright%
-% {\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
-%
-% \def\ttraggedright%
-% {\tttf\rightskip\z@ plus2em\relax}
-%
-% \newif\ifr@ggedbottom
-%
-% \def\raggedbottom%
-% {\topskip 10\p@ plus60\p@ \r@ggedbottomtrue}
-%
-% \def\normalbottom%
-% {\topskip 10\p@ \r@ggedbottomfalse}
-%
-% en worden hieronder wat aangepast.
-
-\newif\ifn@rmalbottom
-\newif\ifr@ggedbottom
-\newif\ifb@selinebottom
-
-\def\normalbottom%
- {\n@rmalbottomtrue
- \r@ggedbottomfalse
- \b@selinebottomfalse
- \settopskip}
-
-\def\raggedbottom%
- {\n@rmalbottomfalse
- \r@ggedbottomtrue
- \b@selinebottomfalse
- \settopskip}
-
-\def\baselinebottom%
- {\n@rmalbottomfalse
- \r@ggedbottomfalse
- \b@selinebottomtrue
- \settopskip}
-
-% \hyphenpenalty = ( 2.5 * \hsize ) / \raggedness
-% \tolerance >= 200
-% \raggedness = 2 .. 6\korpsgrootte
-
-\def\leftraggedness {2\korpsgrootte}
-\def\rightraggedness {2\korpsgrootte}
-\def\middleraggedness {6\korpsgrootte}
-
-\def\setraggedness#1%
- {\ifnum\tolerance<200\relax % kleinere waarden
- \tolerance=200\relax % geven ongewenste
- \fi % effecten
- \spaceskip=2.5\hsize % voorkomt conflict
- \xspaceskip=#1\relax % met \dimen0/2 en
- \divide\spaceskip by \xspaceskip % deze skips worden
- \hyphenpenalty=\spaceskip} % toch al aangepast
-
-\def\setraggedskips#1#2#3#4#5#6%
- {\leftskip=1\leftskip\!!plus#1\relax % zie: Tex By Topic 8.1.3
- \rightskip=1\rightskip\!!plus#2\relax % zie: Tex By Topic 8.1.3
- \spaceskip#3\relax
- \xspaceskip#4\relax
- \parfillskip\!!zeropoint\!!plus#5\relax
- \parindent#6\relax}
-
-\def\notragged%
- {\setraggedskips{0em}{0em}{0em}{0em}{1fil}{\parindent}} % {\voorwit}}
-
-\def\raggedleft%
- {\setraggedness\leftraggedness
- \setraggedskips{\leftraggedness}{0em}{.3333em}{.5em}{0em}{0em}}
-
-\def\raggedcenter%
- {\setraggedness\middleraggedness
- \setraggedskips{\middleraggedness}{\middleraggedness}{.3333em}{.5em}{0em}{0em}}
-
-\def\raggedright%
- {\setraggedness\rightraggedness
- \setraggedskips{0em}{\rightraggedness}{.3333em}{.5em}{0em}{\parindent}} % {\voorwit}}
-
-\def\veryraggedleft%
- {\setraggedskips{1fil}{0em}{.3333em}{.5em}{0em}{0em}}
-
-\def\veryraggedcenter%
- {\setraggedskips{1fil}{1fil}{.3333em}{.5em}{0em}{0em}}
-
-\def\veryraggedright%
- {\setraggedskips{0em}{1fil}{.3333em}{.5em}{0em}{\parindent}} % {\voorwit}}
-
-\def\ttraggedright%
- {\tttf
- \setraggedskips{0em}{\rightraggedness}{0em}{0em}{0em}{\parindent}} % {\voorwit}}
-
-\def\dosteluitlijnenin[#1]%
- {\doifinsetelse{\v!ruim}{#1}{\!!doneatrue}{\!!doneafalse}%
- \processallactionsinset
- [#1]
- [ \v!regel=>\baselinebottom,
- \v!onder=>\raggedbottom,
- \v!hoogte=>\normalbottom,
- \v!breedte=>\notragged,
- \v!binnen=>\setraggedparagraphmode\raggedleft\raggedright,
- \v!buiten=>\setraggedparagraphmode\raggedright\raggedleft,
- \v!links=>\if!!donea\veryraggedleft\else\raggedleft\fi,
- \v!rechts=>\if!!donea\veryraggedright\else\raggedright\fi,
- \v!midden=>\if!!donea\veryraggedcenter\else\raggedcenter\fi,
- \v!reset=>\notragged
- \normalbottom]}
-
-\def\steluitlijnenin%
- {\dosingleargument\dosteluitlijnenin}
-
-\def\startuitlijnen%
- {\bgroup
- \steluitlijnenin}
-
-\def\stopuitlijnen
- {\par
- \egroup}
-
-\def\regellinks#1%
- {\noindent\leftline{{\strut#1}}}
-
-\def\regelrechts#1%
- {\noindent\rightline{{#1\strut}}}
-
-\def\regelmidden#1%
- {\noindent\centerline{{\strut#1}}}
-
-\def\doregelplaats#1%
- {\getvalue{regel\interfaced{#1}}}
-
-\def\dosteltolerantiein[#1]%
- {\doifinsetelse{\v!vertikaal}{#1}%
- {\processfirstactioninset
- [#1]
- [\v!zeerstreng=>\def\bottomtolerance{},
- \v!streng=>\def\bottomtolerance{.050},
- \v!soepel=>\def\bottomtolerance{.075},
- \v!zeersoepel=>\def\bottomtolerance{.100}]}%
- {\processfirstactioninset
- [#1]
- [\v!zeerstreng=>\tolerance=200,
- \v!streng=>\tolerance=1500,
- \v!soepel=>\tolerance=3000,
- \v!zeersoepel=>\tolerance=4500]}}
-
-\def\steltolerantiein%
- {\dosingleargument\dosteltolerantiein}
-
-\def\woordrechts%
- {\groupedcommand{\hfill\hbox}{\parfillskip\!!zeropoint}}
-
-%I n=Margeteksten
-%I c=\inmarge,\inlinker,\inrechter,\stelinmargein
-%I c=\margetitel,\figuurinmarge
-%I c=\oplinker
-%I
-%I Een paragraaf kan worden ingeluid met een tekst in
-%I de marge:
-%I
-%I \inmarge{tekst}
-%I \inlinker{tekst}
-%I \inrechter{tekst}
-%I
-%I Met \\ kan binnen een margetekst naar een volgende regel
-%I worden gesprongen.
-%P
-%I Het onderstaande commando kan gebruikt worden om een
-%I paragraafaanduiding in de marge te plaatsen. Het commando
-%I moet aan het begin van de paragraaf staan. Er wordt
-%I gecontroleerd of een en ander nog op de bladzijde past.
-%I
-%I \margetitel{tekst}
-%I
-%I Tussen \margetitel{tekst} en de volgende alinea mag,
-%I omwille van de overzichtelijkheid, een lege regels staan.
-%I Als dit commando wordt gebruikt na een commando als
-%I \paragraaf, kan het controlemechanisme leiden tot een
-%I ongewenste overgang naar een nieuwe bladzijde. In dat
-%I geval kan beter het volgende commando worden gebruikt.
-%I
-%I \margewoord{tekst}
-%I
-%I Dit commando komt overeen met \inmarge, alleen is bij
-%I \margewoord de lege regel toegestaan.
-%P
-%I Er kan eventueel voor {tekst} een [referentie] worden
-%I meegegeven. In dat geval kan worden verwezen naar het
-%I paginanummer waarop het margewoord staat.
-%I
-%I Als TeX twijfelt in welke marge het woord moet staan, is
-%I een tweede verwerkingsslag nodig. Als een margewoord bij
-%I herhaling verkeerd wordt geplaatst, dan kan het
-%I automatisme worden verstoord door [+] mee te geven. Een
-%I margewoord kan lager worden gezet met [laag]. Combinaties
-%I kunnen ook:
-%I
-%I \margewoord[+,laag][referentie]{woord}
-%P
-%I De wijze van weergeven kan worden ingesteld met het
-%I commando:
-%I
-%I \stelinmargein[letter=,plaats=,voor=,na=,uitlijnen=]
-%I
-%I Als plaats kan links, rechts of beide worden meegegeven. In
-%I het laatste geval hangt de plaats af van het
-%I enkel/dubbelzijdig zetten.
-%I
-%I Uitlijnen kent twee instellingen: 'ja' en 'nee'. Inhet
-%I eerste geval (default) worden de margewoorden tegen de
-%I kantlijn geplaatst.
-%P
-%I Vooruitlopend op meer commando's is er al vast het
-%I commando:
-%I
-%I \oplinker{tekst}
-%I
-%I Dit commando kan bijvoorbeeld worden gebruikt binnen
-%I een midden-uitgelijnde tekst. Het commando is nog niet
-%I definitief en robuust.
-
-% %P
-% %I Aanvullend zijn commando's beschikbaar om figuren in
-% %I de marge te plaatsen:
-% %I
-% %I \figuurinmarge{figuur}
-% %I \figuurinlinker{figuur}
-% %I \figuurinrechter{figuur}
-
-%T n=margetitel
-%T m=mar
-%T a=m
-%T
-%T \margetitel{?}
-%T
-
-\newif\iflowinmargin
-
-\def\stelinmargein%
- {\dodoubleempty\dostelinmargein}
-
-\def\dostelinmargein[#1][#2]%
- {\ifsecondargument
- \doifundefinedelse{\??im#1\c!offset}
- {\presetlocalframed
- [\??im#1]%
- \getparameters
- [\??im#1]
- [\c!kader=\v!uit,
- \c!offset=\v!overlay,
- \c!regel=1,
- \c!scheider=,
- \c!breedte=\v!ruim,
- \c!afstand=\!!zeropoint,
- \c!letter=\@@imletter,
- \c!kleur=\@@imkleur,
- \c!plaats=\@@implaats,
- \c!uitlijnen=\@@imuitlijnen,
- \c!voor=\@@imvoor,
- \c!na=\@@imna,
- #2]}
- {\getparameters[\??im#1][#2]}%
- \else
- \getparameters[\??im][#1]%
- \fi}
-
-\let\margetekstafstand = \!!zeropoint
-\def\margetekstregels {1}
-\def\margetekstnummer {0}
-\let\margetekstscheider = \empty
-
-\def\maakmargetekstblok#1#2#3#4#5#6%
- {#4\relax
- \bgroup
- \mindermeldingen
- \hsize#1\relax
- \ifnum\margetekstnummer=0
- \def\margetekstnummer{#2}%
- \fi
- \processaction
- [\getvalue{\??im\margetekstnummer\c!uitlijnen}]
- [ \v!ja=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2},
- \v!binnen=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2},
- \v!buiten=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#3},
- \s!default=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2}]%
- \setbox0=\vbox\localframed
- [\??im\margetekstnummer]
- [\c!strut=\v!nee]
- {\decrement\margetekstregels
- \@@imvoor
- \doattributes{\??im\margetekstnummer}
- {\dorecurse{\margetekstregels}{\strut\\}%
- \begstrut#6\endstrut\endgraf}%
- \@@imna}%
- \ht0=\ht\strutbox
- \box0
- \egroup
- #5\relax}
-
-\def\plaatsmargetekstscheider%
- {\ifnum\margincontent>0
- \bgroup
- \dimen0=\margetekstregels\lineheight
- \advance\dimen0 by -\lineheight
- \lower\dimen0\hbox{\margetekstscheider}%
- \egroup
- \fi}
-
-\def\linkermargetekstblok#1%
- {\maakmargetekstblok
- {\linkermargebreedte}
- {\v!links}{\v!rechts}
- {\llap{\plaatsmargetekstscheider}}{\hskip\margetekstafstand}
- {#1}}
-
-\def\rechtermargetekstblok#1%
- {\maakmargetekstblok
- {\rechtermargebreedte}
- {\v!rechts}{\v!links}
- {\hskip\margetekstafstand}{\rlap{\plaatsmargetekstscheider}}
- {#1}}
-
-\def\doplacemargintext#1#2#3%
- {\strut
- \setbox0=\hbox{#1}%
- \dimen0=\ht0
- \advance\dimen0 by \dp0
- \ifdim\dimen0>\marginheight
- \global\marginheight=\dimen0
- \fi
- \setbox0=\hbox
- {#2{\hskip#3\strut\iflowinmargin\else\raise\dp\strutbox\fi\box0}}%
- \ht0=\!!zeropoint
- \dp0=\!!zeropoint
- \vadjust{\box0}}
-
-\def\doinlinker#1%
- {\doplacemargintext
- {\linkermargetekstblok{#1}\hskip\linkermargeafstand}
- \llap\!!zeropoint}
-
-\def\doinrechter#1%
- {\doplacemargintext
- {\hskip\rechtermargeafstand\rechtermargetekstblok{#1}}
- \rlap\hsize}
-
-\newcounter \nofmarginnotes
-\newif \iftrackingmarginnotes
-\newif \ifrightmargin % documenteren
-
-\definetwopasslist{\s!margin}
-
-\def\domarginreference%
- {\doglobal\increment\nofmarginnotes\relax
- \edef\writemarref%
- {\writeutilitycommand%
- {\twopassentry%
- {\s!margin}%
- {\nofmarginnotes}%
- {\noexpand\realfolio}}}%
- \writemarref}
-
-\def\dodoinmargenormal#1#2#3#4%
- {\iffirstsidefloatparagraph\geenwitruimte\fi % zo laat mogelijk
- \ifodd#1\relax
- \rightmargintrue
- #3{#4}%
- \else
- \rightmarginfalse
- #2{#4}%
- \fi}
-
-\def\doinmargenormal#1#2#3%
- {\bgroup
- \iftrackingmarginnotes
- \gettwopassdata{\s!margin}%
- \iftwopassdatafound
- \dodoinmargenormal\twopassdata#1#2{#3}%
- \else
- \dodoinmargenormal\realfolio#1#2{#3}%
- \fi
- \domarginreference
- \else
- \dodoinmargenormal\realfolio#1#2{#3}%
- \fi
- \egroup}
-
-\def\doinmargereverse#1#2#3%
- {\dodoinmargenormal\realfolio#2#1{#3}}
-
-\def\doinmarge[#1][#2][#3][#4][#5]#6%
- {\doifcommonelse{+,-,\v!laag}{#4}
- {\dodoinmarge[#1][#2][#3][#4][#5]{#6}}
- {\dodoinmarge[#1][#2][#3][][#4]{#6}}%
- \ignorespaces}
-
-\def\dodoinmarge[#1][#2][#3][#4][#5]#6%
- {\ignorespaces
- \doifinsetelse{\v!laag}{#4}
- {\lowinmargintrue}
- {\lowinmarginfalse}%
- \processaction
- [#1]
- [ \v!links=>#2{#6},
- \v!rechts=>#3{#6},
- \s!unknown=>\ifdubbelzijdig
- \doifcommonelse{+,-}{#4}
- {\doinmargereverse#2#3{#6}}
- {\doinmargenormal#2#3{#6}}%
- \else
- #2{#6}%
- \fi]%
- \rawpagereference{\s!mar}{#5}%
- \ignorespaces}
-
-\def\inlinker%
- {\indentation\doquintupleempty\doinmarge
- [\c!links][\doinlinker][\doinrechter]}
-
-\def\inrechter%
- {\indentation\doquintupleempty\doinmarge
- [\c!rechts][\doinlinker][\doinrechter]}
-
-\def\inmarge%
- {\doquintupleempty\doinmarge
- [\@@implaats][\doinlinker][\doinrechter]}
-
-\def\inanderemarge%
- {\doquintupleempty\doinmarge
- [\@@implaats][\doinrechter][\doinlinker]}
-
-\newcounter\margincontent
-
-\def\flushmargincontent% [#1][#2]#3% hier plaats 'globaal' (geen 1,2 enz)
- {\doinmarge[\@@implaats][\doinlinker][\doinrechter]} % [#1][#2]{#3}}
-
-\newdimen\marginheight
-
-\let\restoreinterlinepenalty=\relax
-
-\def\flushmargincontents% % links + rechts
- {\restoreinterlinepenalty
- \ifnum\margincontent>0
- \bgroup
- \forgetall
- \global\marginheight\!!zeropoint
- \dorecurse{\margincontent}
- {\bgroup
- \edef\margetekstafstand {\getvalue{\??im\recurselevel\c!afstand}}%
- \edef\margetekstregels {\getvalue{\??im\recurselevel\c!regel}}%
- \edef\margetekstscheider{\getvalue{\??im\recurselevel\c!scheider}}%
- \let\margetekstnummer=\recurselevel
- \getvalue{\??im\recurselevel}%
- \global\setvalue{\??im\recurselevel}{}%
- \egroup}%
- \ifdim\marginheight>\lineheight % This is something real dirty!
- \advance\marginheight by \pagetotal
- \advance\marginheight by \lineheight % a sort of bonus
- \ifdim\marginheight>\pagegoal
- \xdef\restoreinterlinepenalty%
- {\global\let\restoreinterlinepenalty\relax
- \global\interlinepenalty=\the\interlinepenalty}%
- \global\interlinepenalty=10000
- \fi
- \else % We need the above because interlinepenalties overrule vadjusted \nobreaks.
- %\vadjust
- % {\forgetall
- % \global\advance\marginheight by \lineheight
- % \global\divide\marginheight by \lineheight
- % \dorecurse{\number\marginheight}
- % {\nobreak\vskip\lineheight}%
- % \kern-\number\marginheight\lineheight}%
- \vadjust{\nobreak}%
- \fi
- \doglobal\newcounter\margincontent
- \egroup
- \fi}
-
-\def\complexmargewoord[#1][#2]#3%
- {\doglobal\increment\margincontent
- \stelinmargein[\margincontent][]%
- \global\setvalue{\??im\margincontent}%
- {\flushmargincontent[#1][#2]{#3}}}
-
-\def\margewoord%
- {\dodoubleempty\complexmargewoord}
-
-\def\margetitel%
- {\margewoord}
-
-\def\margetekst%
- {\margewoord}
-
-\def\margewoordpositie[#1]#2%
- {\ifnum#1>\margincontent
- \xdef\margincontent{#1}%
- \fi
- \stelinmargein[#1][]%
- \global\setvalue{\??im#1}%
- {\flushmargincontent[][]{#2}}}
-
-\def\oplinker#1%
- {\strut
- \vadjust
- {\mindermeldingen
- \setbox0=\vtop{\forgetall\strut#1}%
- \getboxheight\dimen0\of\box0
- \vskip-\dimen0\
- \box0}}
-
-%D \macros
-%D {inleftside,inleftmargin,inrightmargin,inrightside}
-%D {}
-%D
-%D The fast and clean way of putting things in the margin is
-%D using \type{\rlap} or \type{\llap}. Unfortunately these
-%D macro's don't handle indentation, left and right skips. We
-%D therefore embed them in some macro's that (force and)
-%D remove the indentation and restore it afterwards.
-
-\def\inleftmargin#1%
- {\pushindentation
- \llap{#1\hskip\leftskip\hskip\linkermargeafstand}%
- \popindentation
- \ignorespaces}
-
-\def\inrightmargin#1%
- {\pushindentation
- \rlap{\hskip\hsize\hskip-\rightskip\hskip\rechtermargeafstand#1}%
- \popindentation
- \ignorespaces}
-
-\def\inleftside#1%
- {\inleftmargin
- {#1\relax
- \hskip\linkermargebreedte
- \hskip\pageseparation
- \hskip\linkerrandafstand}}
-
-\def\inrightside#1%
- {\inrightmargin
- {\hskip\rechtermargebreedte
- \hskip\rechterrandafstand
- \hskip\pageseparation
- #1}}
-
-%D We want to keep things efficient and therefore only handle
-%D situations like:
-%D
-%D \startbuffer
-%D \inleftside {fine} some text \par
-%D \strut \inleftmargin {fine} some text \par
-%D \noindent \inrightmargin {fine} some text \par
-%D \noindent \strut \inrightside {fine} some text \par
-%D \stopbuffer
-%D
-%D \typebuffer
-%D
-%D which looks like:
-%D
-%D \bgroup
-%D \haalbuffer
-%D \parindent 30pt
-%D \haalbuffer
-%D \egroup
-
-%D \macros
-%D {pushindentation,popindentation}
-%D
-%D The pushing and popping is done by:
-
-\newbox\indentationboxA
-\newbox\indentationboxB
-
-\def\pushindentation%
- {\bgroup
- \ifhmode
- \unskip
- \setbox\indentationboxA=\lastbox % get \strut if present
- \unskip
- \setbox\indentationboxB=\lastbox % get \indent generated box
- \unskip
- \else
- \hskip\!!zeropoint % switch to horizontal mode
- \unskip
- \setbox\indentationboxA=\lastbox % get \indent generated box
- \setbox\indentationboxB=\box\voidb@x
- \fi}
-
-\def\popindentation%
- {\box\indentationboxB\box\indentationboxA % put back the boxes
- \egroup}
-
-%D The only complication lays in \type{\strut}. In \PLAIN\
-%D \TEX\ a \type{\strut} is defined as:
-%D
-%D \starttypen
-%D \def\strut%
-%D {\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
-%D \stoptypen
-%D
-%D But what is a \type{\strut}? Normally it's a rule of width
-%D zero, but when made visual, it's a rule and a negative skip.
-%D The mechanism for putting things in the margins described
-%D here cannot handle this situation very well. One
-%D characteristic of \type{\strut} is that the \type{\unhcopy}
-%D results in entering horizontal mode, which in return leads
-%D to some indentation.
-%D
-%D To serve our purpose a bit better, the macro \type{\strut}
-%D can be redefined as:
-%D
-%D \starttypen
-%D \def\strut%
-%D {\relax\ifmmode\else\hskip0pt\fi\copy\strutbox}
-%D \stoptypen
-%D
-%D Or more compatible:
-%D
-%D \starttypen
-%D \def\strut%
-%D {\relax\ifmmode
-%D \copy\strutbox
-%D \else
-%D \bgroup\setbox\strutbox=\normalhbox{\box\strutbox}\unhcopy\strutbox\egroup
-%D \fi}
-%D \stoptypen
-%D
-%D In \CONTEXT\ however we save some processing time by putting
-%D an extra \type{\hbox} around the \type{\strutbox}.
-
-% dit zijn voorlopig lokale commando's
-
-\def\woordinlinker {\inlinkermarge}
-\def\woordinrechter{\inrechtermarge}
-
-\def\woordinmarge%
- {\doquintupleempty\doinmarge
- [\@@implaats][\woordinlinker][\woordinrechter]}
-
-%I n=Paginanummer
-%I c=\stelpaginanummerin,\stelsubpaginanummerin
-%I
-%I Het paginanummer kan worden ingesteld met het commando:
-%I
-%I \stelpaginanummerin[nummer=,status=]
-%I
-%I Het nummeren kan gedurende een of meerdere pagina's worden
-%I stilgezet door in plaats van een nummer start, stop of
-%I handhaaf mee te geven.
-%I
-%I Het paginanummer is oproepbaar met:
-%I
-%I \paginanummer
-%I
-%I en het totaal aantal paginanummers met:
-%I
-%I \totaalaantalpaginas
-%P
-%I Er zijn subnummers beschikbaar. De wijze van nummeren
-%I wordt ingesteld met:
-%I
-%I \stelsubpaginanummerin[wijze=,status=]
-%I
-%I De status kan 'stop', 'start' of 'geen' zijn. In het
-%I laatste geval wordt gewoon doorgenummerd, maar wordt het
-%I nummer niet geplaatst.
-%I
-%I Standaard wordt 'perdeel' genummerd. De subnummers zijn
-%I oproepbaar met:
-%I
-%I \subpaginanummer
-%I \aantalsubpaginas
-
-% Standaard is \count0 in Plain TeX de paginateller. Omwille
-% van de afhandeling van lokaal nummeren, definieren we
-% echter een eigen nummer.
-
-\definieernummer
- [\s!page]
- [\c!conversie=\@@nmconversie,
- \c!wijze=\@@nmwijze,
- \c!status=\@@nmstatus,
- \c!start=1]
-
-\def\dostelpaginanummerin[#1]%
- {\getparameters
- [\??pn]
- [\c!status=\v!start,
- #1]%
- \doifinstringelse{\c!nummer}{#1}
- {\setnummer[\s!page]{\@@pnnummer}%
- \setuserpageno{\ruwenummer[\s!page]}}%
- {}}
-
-\def\stelpaginanummerin%
- {\dosingleargument\dostelpaginanummerin}
-
-\def\verlaagpaginanummer%
- {\doif{\@@pnstatus}{\v!start}
- {\verlaagnummer[\s!page]%
- \setuserpageno{\ruwenummer[\s!page]}}}
-
-\def\verhoogpaginanummer%
- {\processaction
- [\@@pnstatus]
- [ \v!start=>{\verhoognummer[\s!page]%
- \setuserpageno{\ruwenummer[\s!page]}},
- \v!handhaaf=>{\doassign[\??pn][\c!status=\v!start]}]}
-
-\def\checkpagecounter%
- {\checknummer{\s!page}}
-
-%I n=Pagina
-%I c=\pagina
-%I
-%I Het volgende commando kan worden gebruikt om pagina's af
-%I te dwingen of blokkeren:
-%I
-%I \pagina[instelling]
-%I
-%I Waarbij als instelling kan worden gegeven:
-%I
-%I ja een geforceerde paginaovergang met \vfill
-%I opmaak een geforceerde paginaovergang zonder \vfill
-%I nee bij voorkeur geen paginaovergang
-%I voorkeur bij voorkeur de paginaovergang hier (3)
-%I grotevoorkeur bij voorkeur de paginaovergang hier (7)
-%I links ga naar een linker pagina
-%I rechts ga naar een rechter pagina
-%I leeg een lege pagina
-%I blokkeer blokkeer ja ... grotevoorkeur (1 pagina)
-%I reset het blokkering ja ... grotevoorkeur op
-%I
-%I Als geen instelling wordt meegegeven (\pagina), wordt een
-%I overgang geforceerd. Als een nummer wordt meegegeven, wordt
-%I naar de opgegeven pagina gegaan.
-
-\newif\ifpaginageblokkeerd
-\paginageblokkeerdfalse
-
-\def\testpagina[#1][#2]%
- {\global\!!doneafalse
- \ifpaginageblokkeerd
- \else
- \ifdim\pagetotal<\pagegoal
- \dimen0=\lineheight
- \multiply\dimen0 by #1\relax
- \advance\dimen0 by \pagetotal
- \ifdim\lastskip<\parskip
- \advance\dimen0 by \parskip
- \fi
- \advance\dimen0 by #2\relax
- \ifdim\dimen0>.99\pagegoal
- \penalty-\!!tenthousand\relax
- \global\!!doneatrue
- \fi
- \else
- \goodbreak
- \fi
- \fi}
-
-\let\resetcurrentsectionmarks=\relax
-
-% was: \resetsectionmarks[\firstsection], zie \handelpaginaaf
-
-\def\complexpagina[#1]%
- {\flushfootnotes
- \processaction
- [#1]
- [ \v!reset=>\global\paginageblokkeerdfalse,
- \v!blokkeer=>\global\paginageblokkeerdtrue,
- \v!ja=>\ifpaginageblokkeerd\else
- \ejectinsert
- \ejectpage
- \ifbinnenkolommen
- \ejectpage % anders soms geen overgang
- \fi
- \fi,
- \v!opmaak=>\ifpaginageblokkeerd\else
- \eject
- \fi,
- \v!nee=>\ifpaginageblokkeerd\else
- \nobreak
- \fi,
- \v!voorkeur=>{\ifpaginageblokkeerd\else
- \ifbinnenkolommen
- \goodbreak
- \else
- \testpagina[3][\!!zeropoint]%
- \fi
- \fi},
- \v!grotevoorkeur=>{\ifpaginageblokkeerd\else
- \ifbinnenkolommen
- \goodbreak
- \else
- \testpagina[5][\!!zeropoint]%
- \fi
- \fi},
- \v!leeg=>{\ejectinsert
- \ejectpage
- \doifnotvalue{\??tk\v!hoofd\v!tekst\c!status}{\v!stop}
- {\stelhoofdin[\c!status=\v!leeg]}%
- \doifnotvalue{\??tk\v!voet\v!tekst\c!status}{\v!stop}
- {\stelvoetin[\c!status=\v!leeg]}%
- \hardespatie
- \vfill
- \ejectpage},
- \v!links=>{\ejectinsert
- \superejectpage
- \doifbothsidesoverruled
- \orsideone
- \resetcurrentsectionmarks
- \hardespatie
- \vfill
- \ejectpage
- \orsidetwo
- \od},
- \v!rechts=>{\ejectinsert
- \superejectpage
- \doifbothsidesoverruled
- \orsideone
- \orsidetwo
- \resetcurrentsectionmarks
- \hardespatie
- \vfill
- \ejectpage
- \od},
- \v!viertal=>{\ifdubbelzijdig
- \!!counta=\realpageno
- \!!countb=\realpageno
- \divide\!!counta by 4\relax
- \divide\!!countb by 2\relax
- \ifnum\!!counta=\!!countb\relax
- \else
- \pagina
- \pagina[\v!leeg]%
- \pagina[\v!leeg]%
- \fi
- \fi},
- \v!laatste=>{\ejectinsert
- \superejectpage
- \doifbothsidesoverruled
- \naastpagina
- \orsideone
- \orsidetwo
- \stelvoetin[\c!status=\v!leeg]%
- \stelhoofdin[\c!status=\v!leeg]%
- \hardespatie
- \vfill
- \ejectpage
- \od},
- \s!unknown=>\doifnumberelse{#1}
- {\ejectinsert
- \ejectpage
- \loop
- \ifnum\userpageno<#1\relax
- \hardespatie
- \vfill
- \ejectinsert
- \ejectpage
- \repeat}
- {}]}
-
-\def\simplepagina%
- {\complexpagina[\v!ja]}
-
-\def\pagina%
- {\complexorsimple{pagina}}
-
-\def\resetpagina%
- {\global\paginageblokkeerdfalse}
-
-% \getpagestatus
-% \ifrightpage als odd/enkelzijdig
-
-\newif\ifrightpage \rightpagetrue
-
-\newcounter \nofpagesets
-
-\definetwopasslist{\s!page}
-
-\def\dopagesetreference%
- {\doglobal\increment\nofpagesets\relax
- \edef\writepagref%
- {\writeutilitycommand%
- {\twopassentry%
- {\s!page}%
- {\nofpagesets}%
- {\noexpand\realfolio}}}%
- \writepagref}
-
-\def\getpagestatus% hierboven gebruiken
- {\ifdubbelzijdig
- \gettwopassdata{\s!page}%
- \iftwopassdatafound \else
- \let\twopassdata=\realpageno
- \fi
- \ifodd\twopassdata
- \global\rightpagetrue
- \else
- \global\rightpagefalse
- \fi
- \dopagesetreference
- \else
- \global\rightpagetrue
- \fi}
-
-%I n=Hoofdteksten
-%I c=\stelnummeringin
-%I c=\stelhoofdtekstenin,\stelvoettekstenin,\stelhoofdin,\stelvoetin
-%I c=\stelboventekstenin,\stelondertekstenin,\stelbovenin,\stelonderin
-%I
-%I Zogeheten hoofd- en/of voetteksten kan men instellen
-%I met:
-%I
-%I \stelhoofdtekstenin [linker tekst] [rechter tekst]
-%I \stelvoettekstenin [linker tekst] [rechter tekst]
-%I
-%I Bij dubbelzijdig zetten worden de linker en rechter
-%I teksten gespiegeld.
-%I
-%I In plaats van een tekst kunnen de woorden 'hoofdstuk',
-%I 'paragraaf' en 'deel' worden meegegeven. Ook kan het
-%I woord 'datum' worden meegegeven.
-%P
-%I Als men op de even en oneven pagina's een andere tekst
-%I wil hebben, dan kan men een tweede paar meegeven. In dat
-%I geval zijn er dus vier argumenten: [][][][].
-%I
-%I Als men in de marge of randen teksten wil, kan men dat
-%I direct achter het commando aangeven:
-%I
-%I \stelhoofdtekstenin [lokatie] [links] [rechts]
-%I \stelvoettekstenin [lokatie] [links] [rechts]
-%I
-%I Mogelijke lokaties zijn: tekst, marge en rand.
-%P
-%I In de tekst opgenomen commando's kunnen soms voor
-%I problemen zorgen. Commando's kan men daarom laten
-%I voorafgaan \geentest, bijvoorbeeld:
-%I
-%I \stelvoettekstenin[\geentest\lastigcommando][]
-%I
-%I Meestal geven commando's geen problemen. Wel moet men
-%I oppassen met []. Accolades zijn hiervoor de oplossing:
-%I
-%I \stelvoettekstenin[{{\huidigedatum[mm,/,jj]}}][]
-%I
-%I of
-%I
-%I \stelvoettekstenin[\geentest{\huidigedatum[mm,/,jj]}][]
-%P
-%I De wijze van nummeren wordt gedefinieerd met:
-%I
-%I \stelnummeringin[variant=,plaats=,conversie=,
-%I links=,rechts=,tekst=,tekstscheider=,nummerscheider,
-%I wijze=,blok=,status=,letter=,<sectie>nummer=,commando=]
-%I
-%I De plaats van het nummer hangt af van het eerste
-%I meegegeven argument:
-%I
-%I enkelzijdig dubbelzijdig
-%I
-%I links, rechts kantlijn (links of rechts)
-%I marge marge (links of rechts)
-%I midden midden
-%I inlinker, inrechter inlinker, inrechter
-%P
-%I Met plaats geeft men tevens aan of het nummer in het hoofd
-%I of in de voet komt {hoofd,midden}. Met 'nummerscheider' geeft
-%I men aan wat er binnen een (eventueel) samengestelde nummer
-%I als scheider wordt gezet, standaard: 2-3. Met 'tekstscheider'
-%I geeft men aan wat er tussen het paginanummer en een hoofd- of
-%I voettekst wordt gezet (in geval van plaatsen op de marge).
-%I
-%I Liefhebbers kunnen aan 'commando' een eigen commando om het
-%I nummer te zetten meegeven. Dit eigen commando krijgt als
-%I argument het paginanummer mee.
-%I
-%I Het is mogelijk een dubbelzijdige tekst met enkelzijdige
-%I marges te zetten:
-%I
-%I \stelnummeringin[variant={enkelzijdig,dubbelzijdig}]
-%I
-%I In dit geval worden de hoofd- en voetregels dus wel
-%I gespiegeld en hebben commando's als \pagina[rechts] betekenis.
-%P
-%I Als 'conversie' is mogelijk: cijfers, letters, Letters,
-%I romeins en Romeins. Als 'status' kan 'start' of 'stop'
-%I worden meegegeven. Op deze manier kan het aangeven van
-%I een paginanummer worden aan- en uitgezet.
-%I
-%I Er kan per sectienummer (deelnummer, hoofdstuknummer enz.)
-%I worden ingesteld of het zichtbaar is ('ja' of 'nee').
-%I
-%I Mogelijke wijzen van nummeren zijn: perdeel of perhoofdstuk.
-%P
-%I Hoofd- en voetregels blijven achterwege of juist niet na het
-%I commando:
-%I
-%I \geenhoofdenvoetregels
-%I \welhoofdenvoetregels
-%I
-%I of na:
-%I
-%I \stelhoofdin[lokatie][linkerletter=,rechterletter=,
-%I letter=,linkerbreedte=,rechterbreedte=,voor=,na=]
-%I \stelvoetin[locatie][linkerletter=,rechterletter=,
-%I letter=,linkerbreedte=,rechterbreedte=,voor=,na=]
-%I
-%I mogelijke lokaties zijn: tekst, marge en rand. Als [lokatie]
-%I wordt wegelaten, dan wordt tekst verondersteld.
-%I
-%I Als de breedte wordt ingesteld, dan wordt de weergegeven
-%I tekst zonodig ingekort en gevolgd door ...
-%P
-%I Het is mogelijk het plaatsen van hoofd- en voetregels
-%I stop te zetten:
-%I
-%I \stelhoofdin[status=]
-%I \stelvoetin[status=]
-%I
-%I Aan status kunnen de olgende aarden worden toegekend:
-%I
-%I geen de kop/voet vervalt (de tekst schuift omhoog)
-%I leeg de kop/voet blijft 1 pagina leeg
-%I hoog de kop/voet vervalt 1 pagina leeg (idem)
-%I normaal de kop/voet wordt gezet
-%I stop de kop/voet blijft vanaf nu leeg
-%I start de kop/voet wordt vanaf nu weer gevuld
-%I
-%I Het is ook mogelijk bij \stelhoofdin en \stelvoetin als
-%I parameters [voor=] en [na=] mee te geven. De toegekende
-%I commando's worden in dat geval voor en na het hoofd en de
-%I de voet uitgevoerd.
-%P
-%I Boven het hoofd en onder de voet is ook ruimte. Deze kan
-%I worden gedefinieerd met vergelijkbare commando's:
-%I
-%I \stelboventekstenin[...][...][...]
-%I \stelondertekstenin[...][...][...]
-%I
-%I \stelbovenin[...]
-%I \stelonderin[...]
-%I
-%I \geenbovenenonderregels
-%I \welbovenenonderregels
-
-% De onderstaande macro's lijken op het eerste gezicht vrij
-% ingewikkeld en omslachtig. Dit is het gevolg van een
-% dubbel optioneel zijn van argumenten: zowel het eerste als
-% de twee laatste argumenten zijn optioneel. Dit is mede het
-% gevolg van een uitbreiding naar marges en randen, waarbij
-% upward-compatibiliteit zwaar heeft gewogen.
-
-\def\dostellayouttekstin[#1][#2][#3]%
- {\ifthirdargument
- \getparameters[\??tk#1#2][#3]%
- \else
- \getparameters[\??tk#1\v!tekst][#2]%
- \fi
- \calculatevsizes}
-
-\def\stelbovenin {\dotripleempty\dostellayouttekstin[\v!boven]}
-\def\stelhoofdin {\dotripleempty\dostellayouttekstin[\v!hoofd]}
-\def\steltekstin {\dotripleempty\dostellayouttekstin[\v!tekst]}
-\def\stelvoetin {\dotripleempty\dostellayouttekstin[\v!voet]}
-\def\stelonderin {\dotripleempty\dostellayouttekstin[\v!onder]}
-
-\letvalue{\??tk\v!boven\v!tekst\c!status}=\v!normaal
-\letvalue{\??tk\v!hoofd\v!tekst\c!status}=\v!normaal
-\letvalue{\??tk\v!tekst\v!tekst\c!status}=\v!normaal
-\letvalue{\??tk\v!voet \v!tekst\c!status}=\v!normaal
-\letvalue{\??tk\v!onder\v!tekst\c!status}=\v!normaal
-
-\def\geenhoofdenvoetregels%
- {\stelhoofdin[\c!status=\v!leeg]%
- \stelvoetin[\c!status=\v!leeg]}
-
-\def\geenbovenenonderregels%
- {\stelbovenin[\c!status=\v!leeg]%
- \stelonderin[\c!status=\v!leeg]}
-
-\def\dolimitateteksten#1#2%
- {\limitatetext{#2}{\getvalue{#1\c!breedte}}{}}
-
-\def\doteksten#1#2#3#4%
- {\bgroup
- \convertargument#4\to\ascii
- \doifsomething{\ascii}
- {\doattributes{#1#2#3}
- {\doifvalue{#1\v!tekst\c!strut}{\v!ja}{\setstrut\strut}% hier!
- \doifdefinedelse{\??mk\ascii\c!koppeling} % brrr
- {\dolimitateteksten{#1#2#3}{\haalmarkering[\ascii][\v!eerste]}}
- {\ConvertConstantAfter\doifelse{\v!paginanummer}{#4}
- {\@@plaatspaginanummer}
- {\ConvertConstantAfter\doifelse{\v!datum}{#4}
- {\currentdate[\v!dag,\v!maand,\v!jaar]}
- {\opeenregel\dolimitateteksten{#1#2#3}{#4}}}}}}%
- \egroup}
-
-\def\dodoteksten#1#2#3#4#5#6%
- {\doifonevenpaginaelse
- {\doteksten{#1}{#2}{#3}{#4}}
- {\doteksten{#1}{#2}{#5}{#6}}}
-
-\def\dodododoteksten[#1][#2][#3][#4][#5][#6]%
- {\ifsixthargument
- \setvalue{\??tk#1#2\c!linkertekst}%
- {\dodoteksten{\??tk#1}{#2}{\c!linker}{#3}{\c!rechter}{#6}}%
- \setvalue{\??tk#1#2\c!rechtertekst}%
- {\dodoteksten{\??tk#1}{#2}{\c!rechter}{#4}{\c!linker}{#5}}%
- \else\iffifthargument
- \setvalue{\??tk#1\v!tekst\c!linkertekst}%
- {\dodoteksten{\??tk#1}{\v!tekst}{\c!linker}{#2}{\c!rechter}{#5}}%
- \setvalue{\??tk#1\v!tekst\c!rechtertekst}%
- {\dodoteksten{\??tk#1}{\v!tekst}{\c!rechter}{#3}{\c!linker}{#4}}%
- \else\iffourthargument
- \setvalue{\??tk#1#2\c!linkertekst}%
- {\dodoteksten{\??tk#1}{#2}{\c!linker}{#3}{\c!linker}{#3}}%
- \setvalue{\??tk#1#2\c!rechtertekst}%
- {\dodoteksten{\??tk#1}{#2}{\c!rechter}{#4}{\c!rechter}{#4}}%
- \else
- \setvalue{\??tk#1\v!tekst\c!linkertekst}%
- {\dodoteksten{\??tk#1}{\v!tekst}{\c!linker}{#2}{\c!linker}{#2}}%
- \setvalue{\??tk#1\v!tekst\c!rechtertekst}%
- {\dodoteksten{\??tk#1}{\v!tekst}{\c!rechter}{#3}{\c!rechter}{#3}}%
- \fi\fi\fi}
-
-\def\stelboventekstenin {\dosixtupleempty\dodododoteksten[\v!boven]}
-\def\stelhoofdtekstenin {\dosixtupleempty\dodododoteksten[\v!hoofd]}
-\def\stelteksttekstenin {\dosixtupleempty\dodododoteksten[\v!tekst]}
-\def\stelvoettekstenin {\dosixtupleempty\dodododoteksten[\v!voet]}
-\def\stelondertekstenin {\dosixtupleempty\dodododoteksten[\v!onder]}
-
-\def\@@plaatspaginanummer%
- {\doif{\@@nmstatus}{\v!start}%
- {{\@@nmcommando{\doattributes{\??nm}{\volledigepaginanummer}}}}}
-
-\def\@@nmpre#1{\setbox0=\hbox{#1}\ifdim\wd0=\!!zeropoint\else\unhbox0\tfskip\fi}
-\def\@@nmpos#1{\setbox0=\hbox{#1}\ifdim\wd0=\!!zeropoint\else\tfskip\unhbox0\fi}
-
-\def\dodoplaatsteksten#1#2#3#4#5#6% \hsize toegevoegd
- {\hbox
- {\hbox to \linkerrandbreedte
- {\hsize\linkerrandbreedte
- \hss\getvalue{\??tk#1\v!rand#2}}%
- \hskip\linkerrandafstand
- \hskip\pageseparation
- \hbox to \linkermargebreedte
- {\hsize\linkermargebreedte
- \hsmash{\hbox to \linkermargebreedte
- {\hss\getvalue{\??tk#1\v!marge#2}}}%
- \hsmash{\hbox to \linkermargebreedte
- {\hss#5{\??tk#1\v!marge\c!margetekst}}}%
- \hss}% let op: \smashed
- \hskip\linkermargeafstand
- \hbox to \zetbreedte
- {\hsize\zetbreedte
- \hsmash{\hbox to \zetbreedte
- {\@@nmpre{#5{\??tk#1\v!tekst\c!kantlijntekst}}%
- \getvalue{\??tk#1\v!tekst#2}\hss}}%
- \hsmash{\hbox to \zetbreedte
- {\hss\getvalue{\??tk#1\v!tekst#3}\hss}}%
- \hsmash{\hbox to \zetbreedte
- {\hss\getvalue{\??tk#1\v!tekst#4}%
- \@@nmpos{#6{\??tk#1\v!tekst\c!kantlijntekst}}}}%
- \hss}%
- \hskip\rechtermargeafstand
- \hbox to \rechtermargebreedte
- {\hsize\rechtermargebreedte
- \hsmash{\hbox to \rechtermargebreedte
- {\getvalue{\??tk#1\v!marge#4}\hss}}%
- \hsmash{\hbox to \rechtermargebreedte
- {#6{\??tk#1\v!marge\c!margetekst}\hss}}%
- \hss}% let op: \smashed
- \hskip\pageseparation
- \hskip\rechterrandafstand
- \hbox to \rechterrandbreedte
- {\hsize\rechterrandbreedte
- \getvalue{\??tk#1\v!rand#4}\hss}}}
-
-\def\doplaatslayoutregel#1#2%
- {\ifdim#2>\!!zeropoint\relax % prevents pagenumbers when zero height
- \goleftonpage
- \hbox
- {\setbox0=\vbox to #2
- {\forgetall
- \vsize#2
- \normalbaselines
- \def\\{ \ignorespaces}%
- \def\crlf{ \ignorespaces}%
- \getvalue{\??tk#1\v!tekst\c!voor}%
- \doifbothsidesoverruled
- \dodoplaatsteksten#1\c!linkertekst\c!middentekst\c!rechtertekst
- \gobbleoneargument\getvalue
- \orsideone
- \dodoplaatsteksten#1\c!linkertekst\c!middentekst\c!rechtertekst
- \gobbleoneargument\getvalue
- \orsidetwo
- \dodoplaatsteksten#1\c!rechtertekst\c!middentekst\c!linkertekst
- \getvalue\gobbleoneargument
- \od
- \getvalue{\??tk#1\v!tekst\c!na}%
- \kern\!!zeropoint}% keep the \dp, beware of \vtops, never change this!
- \dp0=\!!zeropoint
- \box0}%
- \fi}
-
-% \stelhoofdin[status=normaal] \titel{NORMAAL} \dorecurse{8}{\input tufte} \pagina
-% \stelhoofdin[status=hoog] \titel{HOOG} \dorecurse{8}{\input tufte} \pagina
-% \stelhoofdin[status=leeg] \titel{LEEG} \dorecurse{8}{\input tufte} \pagina
-% \stelhoofdin[status=geen] \titel{GEEN} \dorecurse{8}{\input tufte} \pagina
-% \stelhoofdin[status=stop] \titel{STOP} \dorecurse{8}{\input tufte} \pagina
-
-\def\plaatslayoutregel#1#2% % handelt o.b.v. tekst
- {\ExpandFirstAfter\processaction
- [\getvalue{\??tk#1\v!tekst\c!status}]
- [ \v!geen=>,
- \v!hoog=>, % is reset later on
- \v!start=>\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
- \doplaatslayoutregel{#1}{#2},
- \v!stop=>\vskip#2\relax,
- \v!leeg=>\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
- \vskip#2\relax,
- \v!normaal=>\doplaatslayoutregel{#1}{#2},
- \s!default=>\doplaatslayoutregel{#1}{#2},
- \s!unknown=>\doplaatslayoutregel{#1}{#2}]}
-
-\def\resetlayoutregel#1%
- {\doifvalue{\??tk#1\v!tekst\c!status}{\v!hoog}
- {\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}% ! global
- \doglobal\calculatevsizes
- \global\newlogostrue
- \global\newbackgroundtrue}}
-
-\def\resetlayoutregels%
- {\resetlayoutregel\v!boven
- \resetlayoutregel\v!hoofd
- \resetlayoutregel\v!tekst
- \resetlayoutregel\v!voet
- \resetlayoutregel\v!onder}
-
-\def\plaatsbovenregel {\plaatslayoutregel\v!boven\bovenhoogte}
-\def\plaatshoofdregel {\plaatslayoutregel\v!hoofd\hoofdhoogte}
-\def\plaatstekstregel {\plaatslayoutregel\v!tekst\teksthoogte}
-\def\plaatsvoetregel {\plaatslayoutregel\v!voet\voethoogte}
-\def\plaatsonderregel {\plaatslayoutregel\v!onder\onderhoogte}
-
-\def\gettextboxes% elders weghalen
- {\bgroup
- \setbox0=\vbox
- {\mindermeldingen
- \calculatereducedvsizes
- \swapmargins
- \forgetall
- \offinterlineskip
- \vskip-\bovenhoogte
- \vskip-\bovenafstand
- \plaatsbovenregel
- \vskip\bovenafstand
- \plaatshoofdregel
- \vskip\hoofdafstand
- \plaatstekstregel
- \vskip\voetafstand
- \plaatsvoetregel
- \vskip\onderafstand
- \plaatsonderregel
- \plaatsversieaanduiding
- \vfilll}%
- \smashbox0
- \box0
- \egroup}
-
-\def\@@plaatspaginascheider%
- {\doif{\@@nmstatus}{\v!start}%
- {\@@nmtekstscheider}}
-
-% ook rand ondersteunen
-
-\def\dodosetpagenumberlocation#1#2%
- {\ExpandFirstAfter\processallactionsinset
- [\@@nmplaats]
- [ \v!links=>\setvalue{\??tk#1\v!tekst\c!linkertekst}{#2},
- \v!rechts=>\setvalue{\??tk#1\v!tekst\c!rechtertekst}{#2},
- \v!midden=>\setvalue{\??tk#1\v!tekst\c!middentekst}{#2},
- \v!inlinker=>\setvalue{\??tk#1\v!marge\c!linkertekst}{#2},
- \v!inrechter=>\setvalue{\??tk#1\v!marge\c!rechtertekst}{#2},
- \v!inmarge=>\setvalue{\??tk#1\v!marge\ifdubbelzijdig\c!margetekst\else\c!rechtertekst\fi}{#2},
- \v!marge=>\setvalue{\??tk#1\v!marge\ifdubbelzijdig\c!margetekst\else\c!rechtertekst\fi}{#2},
- \v!opmarge=>\setvalue{\??tk#1\v!tekst\c!kantlijntekst}{#2},
- \v!kantlijn=>\setvalue{\??tk#1\v!tekst\c!kantlijntekst}{#2}]}
-
-\def\dosetpagenumberlocation#1%
- {\ExpandBothAfter\doifinsetelse{\v!hoofd}{\@@nmplaats,\@@nmin}
- {\dodosetpagenumberlocation{\v!hoofd}{#1}}
- {\dodosetpagenumberlocation{\v!voet}{#1}}}
-
-\def\@@nmin {} % kan vervallen (upward compatibility)
-\def\@@nmplaats {} % mag {plaats, in} zijn
-
-\def\dostelnummeringin[#1]%
- {\dosetpagenumberlocation\relax
- \getparameters[\??nm][#1]%
- \preparepaginaprefix{\??nm}%
- \enkelzijdigfalse
- \dubbelzijdigfalse
- \ExpandFirstAfter\processallactionsinset
- [\@@nmvariant]
- [ \v!enkelzijdig=>\enkelzijdigtrue,
- \v!dubbelzijdig=>\dubbelzijdigtrue]%
- \ifdubbelzijdig
- \trackingmarginnotestrue
- \else
- \trackingmarginnotesfalse
- \fi
- \dosetpagenumberlocation\@@plaatspaginanummer
- \global\newbackgroundtrue
- \global\newlogostrue}
-
-\def\stelnummeringin%
- {\dosingleargument\dostelnummeringin}
-
-\def\preparepaginaprefix#1%
- {\def\dopreparepaginaprefix##1%
- {\doifvalue{#1##1\c!nummer}{\v!ja}
- {\setvalue{#1\getvalue{\??by##1}\c!nummer}{\v!ja}}}%
- \processcommacommand[\@@kolijst]\dopreparepaginaprefix}
-
-\def\dopaginaprefix#1#2%
- {\doifelsevalue{#1#2\c!nummer}{\v!ja}%
- {\@EA\beforesplitstring\@EA{\postprefix}\at:\to\preprefix
- \@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix
- \doifsomething{\preprefix}
- {\doifnot{\preprefix}{0}{\preprefix\@@nmnummerscheider}}}%
- {\@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix}}
-
-\def\paginaprefix#1[#2::#3::#4]% kan wat sneller ####1:0:
- {\bgroup
- \edef\postprefix{#3}%
- \def\donexttrackcommando##1%
- {\dopaginaprefix{#1}{##1}%
- \donexttracklevel{##1}}%
- \donexttrackcommando\firstsection
- \egroup}
-
-\def\@@plaatspaginanummer%
- {\doif{\@@nmstatus}{\v!start}%
- {{\@@nmcommando{\doconvertfont{\@@nmletter}{\volledigepaginanummer}}}}}
-
-\def\@@plaatspaginascheider%
- {\doif{\@@nmstatus}{\v!start}%
- {\@@nmtekstscheider}}
-
-\def\userfolio% naast realfolio
- {\nummer[\s!page]}
-
-\def\paginanummer%
- {\userfolio}
-
-\def\volledigepaginanummer% alleen voor paginanummers !!
- {\@@nmlinks
- \def\donexttrackcommando##1%
- {\doifvalue{\??nm##1\c!nummer}{\v!ja}
- {\ifnum\countervalue{\??se##1}>0\relax
- \getvalue{##1\c!nummer}\@@nmnummerscheider
- \fi}%
- \doifsomething{\@@nmtekst}
- {\@@nmtekst\@@nmnummerscheider}%
- \donexttracklevel{##1}}%
- \donexttrackcommando{\firstsection}%
- \paginanummer
- \@@nmrechts}
-
-\def\translatednumber[#1::#2::#3]%
- {#3}
-
-%I n=Markeringen
-%I c=\markeer,\haalmarkering
-%I c=\definieermarkering,\stelmarkeringin,\resetmarkering
-%I
-%I Men kan in een tekst markeringen aanbrengen. Een markering
-%I kan bijvoorbeeld worden opgehaald in een kopregel.
-%I
-%I \definieermarkering[categorie]
-%I
-%I Een markering wordt aangebracht met het commando:
-%I
-%I \markeer[categorie]{tekst}
-%I
-%I Er kunnen drie markeringen worden opgevraagd met het
-%I commando:
-%I
-%I \haalmarkering[categorie][plaats]
-%I
-%I Mogelijke plaatsen zijn: eerste, laatste, vorige. Vorige
-%I staat voor de laatste markering op de vorige bladzijde en
-%I eerste en laatste hebben betrekking op de huidige bladzijde.
-%P
-%I Markeringen worden ge(de)blokkeerd met het commando:
-%I
-%I \stelmarkeringin[categorie][status=,expansie=]
-%I
-%I waarbij als instellingen mogelijk zijn: start en stop.
-%I Standaard wordt een markering niet ge‰xpandeerd. Wil met
-%I wel expanderen (wat bij tellers nodig is), dan kan dat
-%I worden ingesteld: expansie=ja.
-%I
-%I Markeringen kunnen worden geinitialiseerd met:
-%I
-%I \resetmarkering[categorie]
-%I
-%I Standaard worden de markeringen 'deel', 'hoofdstuk', 'paragraaf',
-%I 'subparagraaf' en 'subsubparagraaf bijgehouden.
-%P
-%I Soms wordt een argument voor meerdere doeleinden gebruikt,
-%I bijvoorbeeld in \hoofdstuk{tekst}. Hierbij is {tekst}
-%I zowel de kop van het hoofdstuk als de eventueel te plaatsen
-%I markering in de hoofd- of voetregel. Als zo'n tekst te lang
-%I wordt, kan ze als volgt worden beperkt:
-%I
-%I {eerste tweede \geenmarkering{derde vierde} vijfde}
-%I
-%I De woorden 'derde' en 'vierde' worden in dit geval in de
-%I markering vervangen door punten.
-
-% Het commando \newmark\markering genereert
-%
-% \markering
-%
-% en het commando \getmarks\markering genereert
-%
-% \topmarkering
-% \botmarkering
-% \firstmarkering
-%
-% voor 'interne' doeleinden zijn beschikbaar:
-%
-% \prefetchmark[naam]
-% \fetchmark[naam][plaats]
-
-% nog expansie in hoofdmarkering
-
-\def\hoofdmarkering#1%
- {\getvalue{\??mk#1\c!koppeling}}
-
-\def\dodoresetmarkering#1%
- {\expandafter\newmark\csname\??mk\hoofdmarkering{#1}\endcsname}
-
-\def\doresetmarkering[#1]%
- {\processcommalist[#1]\dodoresetmarkering}
-
-\def\resetmarkering%
- {\dosingleargument\doresetmarkering}
-
-\def\dostelmarkeringin[#1][#2]%
- {\getparameters[\??mk#1][#2]}
-
-\def\stelmarkeringin%
- {\dodoubleargument\dostelmarkeringin}
-
-\setvalue{\??mk\v!vorige}{top}
-\setvalue{\??mk\v!eerste}{first}
-\setvalue{\??mk\v!laatste}{bot}
-
-\def\dododefinieermarkering[#1][#2]%
- {\stelmarkeringin[#1]
- [% \c!expansie=\v!nee, scheelt weer een macro
- \c!status=\v!start]%
- \ontkoppelmarkering[#1]% d.w.z. geen koppeling met secties
- \setevalue{\??mk#1\c!koppeling}{#2}%
- \expandafter\newmark\csname\??mk#2\endcsname
- %\setgvalue{\??mk#2\s!check}{0}%
- \showmessage{\m!systems}{13}{#1,[#2]}}
-
-\def\dodefinieermarkering[#1][#2]%
- {\doifelsenothing{#2}
- {\dododefinieermarkering[#1][#1]}
- {\dododefinieermarkering[#1][#2]}}
-
-\def\definieermarkering%
- {\dodoubleempty\dodefinieermarkering}
-
-\let\geenmarkering=\relax
-
-\def\prefetchmark[#1]%
- {%\ifnum\getvalue{\??mk\hoofdmarkering{#1}\s!check}<\realpageno
- % \setxvalue{\??mk\hoofdmarkering{#1}\s!check}{\the\realpageno}%
- % \expandafter\getmarks\csname\??mk\hoofdmarkering{#1}\endcsname % mag maar eenmaal per pagina
- }%\fi}
-
-\def\fetchmark[#1][#2]%
- {\getvalue{\getvalue{\??mk#2}\??mk\hoofdmarkering{#1}}}
-
-\def\dohaalmarkering[#1][#2]%
- {\doifvalue{\??mk#1\c!status}{\v!start}
- {\bgroup
- %\prefetchmark[#1]%
- \def\geenmarkering##1{\onbekend\ }%
- \doifelsenothing{#2}
- {\fetchmark[#1][\v!eerste]}
- {\fetchmark[#1][#2]}%
- \egroup}}
-
-\def\haalmarkering%
- {\dodoubleargument\dohaalmarkering}
-
-\def\domarkeer[#1]#2%
- {\bgroup
- \doifelsevalue{\??mk#1\c!expansie}{\v!ja}
- {\expandmarkstrue}
- {\expandmarksfalse}%
- \getvalue{\??mk\hoofdmarkering{#1}}{#2}%
- \egroup}
-
-\def\markeer%
- {\dosingleargument\domarkeer}
-
-%I n=Tekstonderdelen
-%I c=\hoofdstuk,\paragraaf,\subparagraaf,\subsubparagraaf
-%I c=\titel,\onderwerp,\subonderwerp,\subsubonderwerp,\alinea
-%I c=\stelkopin,\stelkoppenin,\stelkopnummerin
-%I c=\startbijlagen,\bijlage
-%I c=\startinleidingen,\startuitleidingen
-%I
-%I Een tekst wordt gestructureerd met de commando's:
-%I
-%I \titel [referentie] {titel}
-%I \onderwerp [referentie] {onderwerp}
-%I \subonderwerp [referentie] {onderwerp}
-%I \subsubonderwerp [referentie] {onderwerp}
-%I
-%I \hoofdstuk [referentie] {titel}
-%I \paragraaf [referentie] {titel}
-%I \subparagraaf [referentie] {titel}
-%I \subsubparagraaf [referentie] {titel}
-%I
-%I In een {titel} kan het commando \\ worden gebruikt om naar
-%I een volgende regel te gaan. Wil men ook in de inhoudsopgave
-%I naar een nieuwe regel gaan, dan dient \crlf te worden
-%I gebruikt.
-%P
-%I Op een hoger niveau kunnen delen worden gedefinieerd. In
-%I dat geval wordt standaard geen kop geplaatst (het kan
-%I wel).
-%I
-%I \deel [referentie] {titel}
-%I
-%I In totaal zijn er 7 niveaus voorgedefinieerd. Meer
-%I niveaus zijn mogelijk. Het hoogste niveau is op dit
-%I moment dus \deel en het laagste \subsubsubsubparagraaf.
-%P
-%I Naar een hoofdstuk en een paragraaf kan worden
-%I terugverwezen met:
-%I
-%I \inhoofdstuk[referentie]
-%I \inparagraaf[referentie]
-%I
-%I Zodat verwijzingen als 'zie ook hoofdstuk 2' mogelijk
-%I zijn (zie ook \inhoofdstuk[alfa]).
-%I
-%I Ook kunnen de elders besproken commando's worden
-%I gebruikt. Een referentie kan eventueel worden weggelaten,
-%I bijvoorbeeld \hoofdstuk{titel}.
-%P
-%I Een overgang naar een nieuwe alinea kan worden afgedwongen
-%I met het commando:
-%I
-%I \alinea
-%I
-%I Dit commando komt overeen met het commando \par.
-%P
-%I Aanvullend zijn de volgende commando's beschikbaar. Deze
-%I commando's onderdrukken cq. wijzigen de nummering.
-%I
-%I \startbijlagen hoofdstukken nummeren met a, b, ...
-%I \stopbijlagen hoofdstukken nummeren met 1, 2, ...
-%I
-%I \startinleidingen hoofdstukken niet nummeren
-%I \stopinleidingen hoofdstukken wel nummeren
-%I \startuitleidingen hoofdstukken niet nummeren
-%I \stopuitleidingen hoofdstukken wel nummeren
-%I
-%I Als men bijlagen apart wil nummeren, dan gebruikt men in
-%I plaats van \hoofdstuk het commando:
-%I
-%I \bijlage[referentie]{titel}
-%I
-%I waarna de eigenlijke tekst komt of wordt ingelezen uit
-%I een file.
-%P
-%I De wijze waarop hoofdstukken en paragrafen worden genummerd
-%I en gezet, kan worden ingesteld met de commando's:
-%I
-%I \stelkoppenin[variant=,scheider=]
-%I
-%I Hierbij zijn als varianten mogelijk normaal en inmarge.
-%I
-%I Daarnaast is het volgende commando beschikbaar:
-%I
-%I \stelkopin[element][letter=,nummerletter=,tekstletter=,
-%I voor=,na=,pagina=,uitlijnen=,hoofd=]
-%I
-%I Mogelijke elementen zijn: hoofdstuk, paragraaf,
-%I subparagraaf, subsubparagraaf en indien gewenst: titel en
-%I onderwerp.
-%P
-%I Aan de parameters voor en na kunnen commando's worden
-%I toegekend; 'nummer', 'tekst' en 'letter' staan voor de
-%I lettertypen. Standaard zijn 'nummer' en 'tekst' gelijk
-%I aan 'letter'. In de regel kan men volstaan met het
-%I instellen van hoofdstuk en paragraaf, omdat de andere
-%I instellingen hiervan worden afgeleid. Voorbeelden van
-%I instellingen zijn 'letter=vet', 'voor={\blanko[groot]}'
-%I en 'nummer=\tfa'.
-%I
-%I Aan 'pagina' kan de waarde 'links', 'rechts' of 'ja' worden
-%I toegekend. Er wordt alleen naar een nieuwe pagina gegaan als
-%I het nummer van de (sub)(sub)paragraaf groter is dan 1.
-%I Wil men altijd overgaan op een nieuwe bladzijde, dan kan
-%I men dit aangeven door aan 'doorgaan' de waarde 'nee' toe
-%I te kennen.
-%P
-%I Een hoofdstuk kan worden voorafgegaan door een woord,
-%I bijvoorbeeld 'Hoofdstuk'. Dit woord kan worden ingesteld
-%I met \stellabeltekstin.
-%I
-%I Als men aan 'hoofd' de waarde 'geen' toekent, dan wordt
-%I geen hoofdregel geplaatst op de bladzijde waarop de kop
-%I wordt geplaatst.
-%I
-%I Het is mogelijk varianten van koppen te definieren met het
-%I commando:
-%I
-%I \definieerkop[dochter][moeder]
-%I
-%I Na \definieerkop[rubriek][onderwerp] is het commando \rubriek
-%I beschikbaar met dezelfde kenmerken als \onderwerp. Deze
-%I kenmerken kunnen worden aangepast met \stelkopin. Als de
-%I moeder een genummerde kop is, wordt de dochter ook genummerd.
-%P
-%I Nummers van koppen kunnen worden ingesteld met het commando:
-%I
-%I \stelkopnummerin[niveau][nummer]
-%I
-%I Als het nummer wordt vooraf gegaan door + of -, dan is
-%I sprake van een verhoging of verlaging: [hoofdstuk][+2].
-
-%T n=hoofdstuk
-%T m=hfd
-%T a=h
-%T
-%T \hoofdstuk{?}
-
-%T n=paragraaf
-%T m=par
-%T a=p
-%T
-%T \paragraaf{?}
-
-\newcount\nofsections
-
-\def\zerosection{\v!tekst}
-\def\firstsection{}
-\def\lastsection{}
-
-\makecounter{\??se\v!tekst}
-\setevalue{\??se\v!tekst\c!voor}{}
-\setevalue{\??se\v!tekst\c!na}{}
-\setevalue{\v!tekst\c!nummer}{0}
-\setevalue{\v!tekst\s!format}{}
-
-\setevalue{\??sk\v!tekst}{}
-\setevalue{\??sk}{}
-
-\setvalue{\??by}{\v!tekst}
-\setvalue{\??by\v!tekst}{\v!tekst}
-\setvalue{\??by\v!alles}{\v!tekst}
-\setvalue{\??by\v!per}{\v!tekst}
-\setvalue{\??by\v!per\v!tekst}{\v!tekst}
-\setvalue{\??by\v!per\v!alles}{\v!tekst}
-
-\def\dostelsectiein[#1][#2]%
- {\getparameters[\??se#1][#2]
- \doifelsevalue{\??se#1\c!vorige\c!nummer}{\v!ja}
- {\setvalue{#1\c!nummer}{\@@longsectionnumber{#1}}}%
- {\setvalue{#1\c!nummer}{\@@shortsectionnumber{#1}}}}
-
-\def\stelsectiein%
- {\dodoubleargument\dostelsectiein}
-
-\def\dokoppelmarkering[#1][#2]%
- {\doifdefinedelse{\??ko#2\c!sectie}
- {\dokoppelmarkering[#1][\getvalue{\??ko#2\c!sectie}]}
- {\def\donexttrackcommando##1%
- {\edef\gekoppeldemarkeringen{\getvalue{\??se##1\c!markering}}%
- \doifelse{##1}{#2}
- {\addtocommalist{#1}\gekoppeldemarkeringen}
- {\removefromcommalist{#1}\gekoppeldemarkeringen}%
- \setevalue{\??se##1\c!markering}{\gekoppeldemarkeringen}%
- \donexttracklevel{##1}}%
- \donexttracklevel{\firstsection}}}
-
-\def\koppelmarkering%
- {\dodoubleargument\dokoppelmarkering}
-
-\def\ontkoppelmarkering[#1]%
- {\koppelmarkering[#1][]}
-
-\def\definieersectie[#1]%
- {\doifundefined{\??se#1}
- {\doifelsenothing{\firstsection}
- {\def\firstsection{#1}%
- \setevalue{\??se#1\c!voor}{\v!tekst}%
- \setevalue{\??se\v!tekst\c!na}{#1}}%
- {\setevalue{\??se\commalistelement\c!na}{#1}%
- \setevalue{\??se#1\c!voor}{\lastsection}%
- \setevalue{\??se\lastsection\c!na}{#1}}%
- \advance\nofsections by 1
- \setevalue{\??se#1\c!niveau}%
- {\the\nofsections}%
- \setevalue{\??se#1\c!na}%
- {}%
- \setvalue{\e!volgende#1}%
- {\@@nextsectionnumber{#1}}%
- \setvalue{#1\c!nummer}%
- {\@@longsectionnumber{#1}}%
- \setvalue{#1\s!format}%
- {\@@longformatnumber{#1}}%
- \setevalue{\??by#1}{#1}%
- \setevalue{\??by\v!per#1}{#1}%
- \makecounter{\??se#1}%
- \def\lastsection{#1}%
- \setvalue{\??sk#1}%
- {#1}%
- \setvalue{\??se#1\c!markering}%
- {}%
- \stelsectiein[#1]
- [\c!vorige\c!nummer=\v!ja]}}%
-
-\def\previoussection#1%
- {\getvalue{\??se#1\c!voor}}
-
-\def\nextsection#1%
- {\getvalue{\??se#1\c!na}}
-
-\def\@@setsectionnumber#1#2%
- {\setgvalue{\??se#1\s!start}{}% % signal i.p.v. boolean
- \setcounter{\??se#1}{#2}%
- \resetsectioncounters[#1]%
- \checkpagecounter}
-
-\def\@@nextsectionnumber#1%
- {\setgvalue{\??se#1\s!start}{}% % signal i.p.v. boolean
- \pluscounter{\??se#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\@@sectieblok\c!conversie}}}
-
-% Omdat een markering kan worden herdefinieerd moeten we
-% eerst testen of er wel een keten||afhankelijkheid is.
-
-\def\resetsectionmarks[#1]%
- {\ExpandFirstAfter\doifdefinedelse{\??se#1}
- {\def\donexttrackcommando##1%
- {\def\docommando####1%
- {\ExpandFirstAfter\resetmarkering[####1]}%
- \processcommacommand[\getvalue{\??se##1\c!markering}]\docommando
- \donexttracklevel{##1}}%
- \donexttracklevel{#1}}%
- {\ExpandFirstAfter\resetmarkering[\hoofdmarkering{#1}]}}
-
-\def\resetsectioncounters[#1]%
- {\def\donexttrackcommando##1%
- {\resetcounter{\??se##1}%
- \donexttracklevel{##1}}%
- \donexttracklevel{#1}}
-
-% bij checken kan geen prefix worden bekeken, anders vallen
-% er titels buiten de inhoudsopgave
-
-\def\makesectionformat%
- {\@EA\edef\@EA\sectionformat\@EA%
- {\@@sectiontype:\getvalue{\lastsection\s!format}}}
-
-\def\dobacktracklevel#1%
- {\doifnot{\previoussection{#1}}{\zerosection}
- {\dobacktrackcommando{\previoussection{#1}}}}
-
-\def\donexttracklevel#1%
- {\doifnot{#1}{\lastsection}
- {\donexttrackcommando{\nextsection{#1}}}}
-
-\newif\ifalllevels
-
-\def\dosetlevel#1%
- {\bgroup
- \doifelse{#1}{\v!vorige}
- {\global\alllevelstrue
- \xdef\currentlevel{}%
- \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
- \xdef\currentlevel{}}
- {\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
- \xdef\currentlevel{}%
- \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}
-
-\def\doifnextlevelelse[#1::#2]#3#4%
- {\ifalllevels
- #3%
- \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}%
- \fi}
-
-\def\doifprevlevelelse[#1::#2]#3#4%
- {\ifalllevels
- #3%
- \else
- \doifelse{\@@sectiontype}{#1}
- {\@EA\doifinstringelse\@EA{\@EA=\currentlevel:}{=:#2:}
- {#3}
- {#4}}
- {#4}%
- \fi}
-
-\def\dosettoclevel{\dosetlevel}
-\def\dosetreglevel{\dosetlevel}
-\def\dosetblklevel{\dosetlevel}
-
-\def\doiftoclevelelse{\doifnextlevelelse}
-\def\doifreglevelelse{\doifprevlevelelse}
-\def\doifblklevelelse{\doifprevlevelelse}
-
-\def\@@longformatnumber#1%
- {\getvalue{\previoussection{#1}\s!format}:\@@shortsectionnumber{#1}}
-
-\def\@@longsectionnumber#1%
- {\ifnum\countervalue{\??se\previoussection{#1}}>0
- \getvalue{\previoussection{#1}\c!nummer}\@@koscheider
- \fi
- \@@shortsectionnumber{#1}}
-
-\def\@@shortsectionnumber#1%
- {\@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax
- \@@sectionvalue{#1}%
- \else
- \@@sectionconversion{#1}{\@@sectionvalue{#1}}%
- \fi}
-
-\def\dodosetlocalsectieblok[#1#2][#3]%
- {\def\@@sectiontype{#1}%
- \def\@@sectieblok{#1#2}%
- \def\@@sectieblokken{#3}}
-
-\def\dosetlocalsectieblok#1#2%
- {\@EA\dodosetlocalsectieblok\@EA[#1][#2]}
-
-\def\doaroundsectieblok#1%
- {\doifvaluesomething{\??sb#1\c!pagina}
- {\ExpandFirstAfter\pagina[\getvalue{\??sb#1\c!pagina}]}%
- \resetsectioncounters[\firstsection]%
- \resetsectionmarks[\firstsection]}
-
-\def\dostartsectieblok#1#2%
- {\begingroup
- \doaroundsectieblok{#1}%
- \dosetlocalsectieblok{#1}{#2}%
- \expandafter\csname#2true\endcsname
-\getvalue{\??sb\@@sectieblok\c!voor}% don't move
- \showmessage{\m!structures}{1}{\@@sectieblokken}}
-
-\def\dostopsectieblok%
- {\showmessage{\m!structures}{2}{\@@sectieblokken}%
-\getvalue{\??sb\@@sectieblok\c!na}% don't move
- \doaroundsectieblok{\@@sectieblok}%
- \endgroup}
-
-\def\dostelsectieblokin[#1][#2]%
- {\getparameters[\??sb#1][#2]}
-
-\def\stelsectieblokin%
- {\dodoubleargument\dostelsectieblokin}
-
-\def\dodefinieersectieblok[#1][#2][#3]%
- {\getparameters
- [\??sb#1]
- [\c!nummer=\v!ja,
- \c!pagina=\v!rechts, % anders worden marks te vroeg gereset !
- %\c!voor=,
- %\c!na=,
- #3]%
- \expandafter\newif\csname if#2\endcsname
- \setvalue{\??sb#1}%
- {\dosetlocalsectieblok{#1}{#2}}%
- \setvalue{\e!start#2}%
- {\dostartsectieblok{#1}{#2}}%
- \setvalue{\e!stop#2}%
- {\dostopsectieblok}}
-
-\def\definieersectieblok%
- {\dotripleargument\dodefinieersectieblok}
-
-\def\sectiebloklabel#1%
- {\@EA\ifx\csname#1\@@sectieblok\c!label\endcsname\relax
- \else
- \labeltext{\getvalue{#1\@@sectieblok\c!label}}%
- \fi}
-
-% BETER:
-
-\def\sectiebloklabel#1%
- {\@EA\ifx\csname\??ko#1\@@sectieblok\c!label\endcsname\relax
- \labeltext{#1}%
- \else
- \labeltext{\getvalue{\??ko#1\@@sectieblok\c!label}}%
- \fi}
-
-\dosetlocalsectieblok{\v!hoofdtekst}{\v!hoofdteksten}
-
-\def\setsectiontype[#1]%
- {\getvalue{\??sb#1}}
-
-\def\writesection#1#2#3%
- {\bgroup
- \convertargument#3\to\ascii
- \edef\!!stringa{#1}%
- \@EA\writestatus\@EA
- {\!!stringa}
- {\ifsectienummer#2\else(#2)\fi\normalspace\ascii}%
- \egroup}
-
-\def\@@koniveau{1} \def\kopniveau{\@@koniveau}
-
-% \def\dohandelpaginaafA#1%
-% {\ifnum\lastpenalty>0
-% \global\paginageblokkeerdtrue
-% \fi
-% \witruimte
-% \flushsidefloats
-% \getvalue{\??ko#1\c!voor}%
-% \ifpaginageblokkeerd
-% \global\paginageblokkeerdfalse
-% \else
-% \!!countb=\getvalue{\??se\@@sectie\c!niveau}\relax
-% \ifnum\!!countb>\@@koniveau\relax
-% \!!counta=20000
-% \multiply\!!countb by 500
-% \advance\!!counta by \!!countb
-% \dosomebreak{\penalty\!!counta}%
-% \else
-% \dosomebreak{\allowbreak}%
-% \fi
-% \fi
-% \xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}}
-%
-% \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}]}}}}
-%
-% \def\handelpaginaaf#1%
-% {\dohandelpaginaafA{#1}%
-% \ifnum\countervalue{\??se\previoussection{\@@sectie}}>0
-% \ifnum\countervalue{\??se\@@sectie}>0
-% \dohandelpaginaafB{#1}%
-% \else
-% \doifnotvalue{\??ko#1\c!doorgaan}{\v!ja}
-% {\dohandelpaginaafB{#1}}%
-% \fi
-% \else
-% \dohandelpaginaafB{#1}%
-% \fi}
-
-\def\dohandelpaginaafAA#1%
- {\ifnum\lastpenalty>0
- \global\paginageblokkeerdtrue
- \fi}
-
-\def\dohandelpaginaafAB#1%
- {\witruimte
- \flushsidefloats
- \getvalue{\??ko#1\c!voor}%
- \ifpaginageblokkeerd
- \global\paginageblokkeerdfalse
- \else
- \!!countb=\getvalue{\??se\@@sectie\c!niveau}\relax
- \ifnum\!!countb>\@@koniveau\relax
- \!!counta=20000
- \multiply\!!countb by 500
- \advance\!!counta by \!!countb
- \dosomebreak{\penalty\!!counta}%
- \else
- \dosomebreak{\allowbreak}%
- \fi
- \fi
- \xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}}
-
-\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}]}}}}
-
-\def\handelpaginaaf#1%
- {\dohandelpaginaafAA{#1}%
- \ifnum\countervalue{\??se\previoussection{\@@sectie}}>0
- \ifnum\countervalue{\??se\@@sectie}>0
- \dohandelpaginaafB{#1}%
- \else
- \doifnotvalue{\??ko#1\c!doorgaan}{\v!ja}
- {\dohandelpaginaafB{#1}}%
- \fi
- \else
- \dohandelpaginaafB{#1}%
- \fi
- \dohandelpaginaafAB{#1}}
-
-%
-
-\def\dolocalkopsetup#1% koppeling met standaard kopcommando
- {\forgetall
- \ExpandFirstAfter\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]%
- \def\\{\crlf\strut}}
-
-\newif\ifplaatskop
-\newif\ifverhoognummer
-\newif\ifkopnummer
-
-\def\setsectieenkoppeling#1%
- {\edef\@@koppeling{\getvalue{\??ko#1\c!koppeling}}%
- \edef\@@sectie{\getvalue{\??ko#1\c!sectie}}%
- \doif{\@@koppeling}{}
- {\edef\@@koppeling{#1}}%
- \doif{\@@sectie}{}
- {\edef\@@sectie{\getvalue{\??ko\@@koppeling\c!sectie}}}}
-
-\newif\ifkopprefix
-
-% \handelpaginaaf komt het eerst omdat eventueel
-% subpaginanummers moeten worden afgehandeld. Vervolgens
-% worden de nummers opgehoogd en referenties geset, dan
-% volgt de kop en tot slot de worden de marks en de prefix
-% geset.
-
-% \hoofdstuk {tekst}
-% \hoofdstuk tekst
-% \hoofdstuk <niets>
-
-\def\dosomekop#1[#2]#3%
- {\doifelsevalue{\??ko#1\c!eigennummer}{\v!ja}
- {\def\next{\doquadruplegroupempty\dodosomekop{#1}{#2}{#3}}}
- {\def\next{\fourthargumentfalse\dodosomekop{#1}{#2}{#3}{}}}%
- \next}
-
-\def\dodosomekop#1#2#3#4%
- {\iffourthargument
- \dododosomekop{#1}[#2]{\sectiebloklabel{#1}}{#3}{#4}%
- \else
- \dododosomekop{#1}[#2]{\sectiebloklabel{#1}}{\getvalue{\@@sectie\c!nummer}}{#3}%
- \fi}
-
-\def\dododosomekop#1[#2]#3#4#5% % pas met \ExpandFirstAfter op bij twee||taligheid
- {\setsectieenkoppeling{#1}%
- \doifelsevalue{\??ko#1\c!prefix}{}
- {\kopprefixfalse}
- {\kopprefixtrue}%
- \doifelsevalue{\??ko#1\c!plaatskop}{\v!ja}
- {\plaatskoptrue}
- {\plaatskopfalse}%
- \doifelsevalue{\??ko#1\c!verhoognummer}{\v!ja}
- {\verhoognummertrue}
- {\verhoognummerfalse}%
- \ifsectienummer
- \doifelsevalue{\??sb\@@sectieblok\c!nummer}{\v!ja}
- {\doifelsevalue{\??ko#1\c!nummer}{\v!ja}
- {\kopnummertrue}
- {\kopnummerfalse}}
- {\kopnummerfalse}%
- \else
- \kopnummerfalse
- \fi
- \ifverhoognummer
- \ifplaatskop
- \handelpaginaaf{#1}%
- \ifkopprefix
- \stelrefererenin[\c!prefix=-]%
- \fi
- \getvalue{\e!volgende\@@sectie}%
- \ifkopnummer
- \doplaatskopnummertekst
- {#1}
- {\setsectionlistreference{\@@sectie}{#1}%
- \ExpandFirstAfter\soortpagina[\@@koppeling]%
- \rawreference{\s!sec}{#2}{#4}%
- \resetsectionmarks[\@@sectie]%
- \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}}%
- {#3#4}
- {#5}
- {\markeer[#1]{#5}}%
- \writesection{#1}{#4}{#5}%
- \else
- \doplaatskoptekst
- {#1}
- {\setsectionlistreference{\@@sectie}{#1}%
- \ExpandFirstAfter\soortpagina[\@@koppeling]%
- \rawpagereference{\s!sec}{#2}%
- \resetsectionmarks[\@@sectie]%
- \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}}
- {#5}
- {\markeer[#1]{#5}}%
- \writesection{#1}{-}{#5}%
- \fi
- \ifkopprefix
- \ExpandFirstAfter\stelrefererenin[\c!prefix=\getvalue{\??ko#1\c!prefix}]%
- \fi
- \dosomebreak\nobreak
- \getvalue{\??ko#1\c!na}%
- \else
-\dohandelpaginaafB{#1}% toegevoegd ivm subpaginanr / tug sheets
- \ifkopprefix
- \stelrefererenin[\c!prefix=-]%
- \fi
- \getvalue{\e!volgende\@@sectie}%
- \setsectionlistreference{\@@sectie}{#1}%
- \resetsectionmarks[\@@sectie]%
- \markeer[#1]{#5}%
- \ExpandFirstAfter\soortpagina[\@@koppeling]%
- \ifkopnummer
- \rawreference{\s!sec}{#2}{#4}%
- \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}%
- \writesection{#1}{#4}{#5}%
- \else
- \rawpagereference{\s!sec}{#2}%
- \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}%
- \writesection{#1}{-}{#5}%
- \fi
- \ifkopprefix
- \ExpandFirstAfter\stelrefererenin[\c!prefix=\getvalue{\??ko#1\c!prefix}]%
- \fi
- \fi
- \else
- \ifplaatskop
- \handelpaginaaf{#1}%
- \doplaatskoptekst
- {#1}
- {\rawpagereference{\s!sec}{#2}}
- {#5}
- {}%
- \writesection{#1}{-}{#5}%
- \dosomebreak\nobreak
- \getvalue{\??ko#1\c!na}%
- \else
- % do nothing
- \fi
- \fi}
-
-\def\doplaatskoptekst#1#2#3#4%
- {\bgroup
- \forgetall
- %\showcomposition
- \mindermeldingen
- \postponefootnotes
- \def\localkopsetup%
- {\dolocalkopsetup{#1}}%
- \startsynchronisatie
- \getvalue{\??ko#1\c!commando}
- {} % no number
- {\doattributes{\??ko#1}{\doattributes{\??ko#1\c!tekst}
- {\dontconvertfont
- \stelinterliniein
- #2%
- \getvalue{\??ko#1\c!voorcommando}%
- \getvalue{\??ko#1\c!tekstcommando}{\setstrut\begstrut#3\endstrut}%
- \getvalue{\??ko#1\c!nacommando}%
- \endgraf}}}%
- \endgraf
- \nointerlineskip
- \dosomebreak\nobreak
- #4%
- \prevdepth\dp\strutbox
- \stopsynchronisatie
- \egroup
- \noindentation}
-
-% \prevdepth\dp\strutbox is belangrijk, vergelijk naast elkaar:
-%
-% \onderwerp{test} \input tufte
-% \onderwerp{test} \strut \input tufte
-% \onderwerp{test} \plaatslijst[...]
-
-\def\doplaatskopnummertekst#1#2#3#4#5%
- {\bgroup
- \forgetall
- %\showcomposition
- \mindermeldingen
- \postponefootnotes
- \def\localkopsetup%
- {\dolocalkopsetup{#1}}%
- \startsynchronisatie
- \getvalue{\??ko#1\c!commando}%
- {\doattributes{\??ko#1}{\doattributes{\??ko#1\c!nummer}
- {\getvalue{\??ko#1\c!voorcommando}%
- \getvalue{\??ko#1\c!nummercommando}{\setstrut\begstrut#3\endstrut}}}}
- {\doattributes{\??ko#1}{\doattributes{\??ko#1\c!tekst}
- {\dontconvertfont
- \stelinterliniein
- #2%
- \getvalue{\??ko#1\c!tekstcommando}{\setstrut\begstrut#4\endstrut}%
- \getvalue{\??ko#1\c!nacommando}%
- \endgraf}}}%
- \endgraf
- \nointerlineskip
- \dosomebreak\nobreak
- #5%
- \prevdepth\dp\strutbox
- \stopsynchronisatie
- \egroup
- \noindentation}
-
-\def\dostelkopnummerin[#1][#2#3]%
- {\bgroup
- \setsectieenkoppeling{#1}%
- \doifinstringelse{#2}{+-}
- {\doifelse{#3}{}
- {\@@nextsectionnumber{\@@sectie}}
- {\!!counta=#2#3\relax
- \advance\!!counta by \@@sectionvalue{\@@sectie}%
- \@@setsectionnumber{\@@sectie}{\!!counta}}}
- {\@@setsectionnumber{\@@sectie}{#2#3}}%
- \egroup}
-
-\def\stelkopnummerin%
- {\dodoubleargument\dostelkopnummerin}
-
-\def\dokopnummer[#1]%
- {\bgroup
- \setsectieenkoppeling{#1}%
- \doifnot{\getvalue{\@@sectie\c!nummer}}{0} % kan effienter
- {\getvalue{\@@sectie\c!nummer}}%
- \egroup}
-
-\def\kopnummer%
- {\dosingleargument\dokopnummer}
-
-\def\alinea%
- {\par}
-
-\def\plaatskopnormaal#1#2%
- {\doifelsenothing{#1}
- {\vbox
- {\localkopsetup
- \noindent
- #2}}%
- {\setbox0=\hbox{{#1}\hskip0.75em}%
- \vbox
- {\localkopsetup
- \hangindent 1\wd0
- \hangafter 1
- \noindent
- \unhbox0 % don't use \strut's here!
- #2}}}
-
-\def\plaatskopinmarge#1#2%
- {\vbox
- {\localkopsetup
- \begstrut % but use one \strut here!
- \doifsomething{#1}
- {\llap{\hbox to 5em{\hfill{#1}\hskip\linkermargeafstand}}}%
- {#2}}}
-
-\def\plaatsgeenkop#1#2%
- {}
-
-% default == instellingen
-% koppeling == koppen, breaks, marks, enz.
-% sectie == nummering
-
-\def\@@kolijst{}
-
-\def\dodefinieerkop[#1][#2]% % don't preset prefix to much
- {\presetlabeltext[#1=]%
- \getparameters
- [\??ko#1]
- [\c!nummerletter=\getvalue{\??ko#1\c!letter},
- \c!tekstletter=\getvalue{\??ko#1\c!letter},
- \c!nummerkleur=\getvalue{\??ko#1\c!kleur},
- \c!tekstkleur=\getvalue{\??ko#1\c!kleur}]%
- \ConvertToConstant\doifinstringelse{=}{#2}
- {\getparameters
- [\??ko#1]
- [\c!sectie=\getvalue{\??ko\getvalue{\??ko#1\c!koppeling}\c!sectie},
- \c!default=,
- \c!koppeling=,
- \c!prefix=,
- \c!voor=,
- \c!na=,
- \c!pagina=,
- \c!hoofd=,
- \c!letter=,
- \c!nummercommando=,
- \c!tekstcommando=,
- \c!eigennummer=\v!nee,
- \c!nummer=\v!ja,
- \c!kleur=,
- \c!doorgaan=\v!ja,
- \c!plaatskop=\v!ja,
- \c!verhoognummer=\v!ja,
- \c!commando=\plaatskop,
- #2]%
- \ConvertToConstant\doifnot{#1}{\getvalue{\??ko#1\c!default}}
- {\doifsomething{\getvalue{\??ko#1\c!default}}
- {%\presetlabeltext[#1=\labeltext{\getvalue{\??ko#1\c!default}}]%
- \copyparameters
- [\??ko#1][\??ko\getvalue{\??ko#1\c!default}]
- [\c!voor,\c!na,\c!commando,\c!pagina,\c!doorgaan,\c!hoofd,
- \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer,\c!letter,\c!kleur,
- \c!nummerletter,\c!tekstletter,\c!nummercommando,\c!tekstcommando]}}%
- \getparameters[\??ko#1][#2]%
- \doifsomething{\getvalue{\??ko#1\c!sectie}}
- {\doifundefined{\??mk#1}
- {\definieermarkering[#1]%
- \koppelmarkering[#1][\getvalue{\??ko#1\c!sectie}]}}%
- \doifundefined{\??li#1}{\definieerlijst[#1]}}
- {\ConvertToConstant\doifelse{#1}{#2}
- {\doifundefined{\??li#1}{\definieerlijst[#1]}}
- {%\presetlabeltext[#1=\labeltext{#2}]%
- \copyparameters
- [\??ko#1][\??ko#2]
- [\c!niveau,\c!sectie,\c!koppeling,\c!prefix,
- \c!voor,\c!na,\c!commando,\c!pagina,\c!doorgaan,\c!hoofd,
- \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer,\c!letter,\c!kleur,
- \c!nummerletter,\c!tekstletter,\c!nummercommando,\c!tekstcommando]%
- \definieermarkering[#1][#2]%
- \doifundefined{\??li#1}{\definieerlijst[#1][#2]}}}%
- \addtocommalist{#1}\@@kolijst
- \setevalue{\??sk#1}%
- {\getvalue{\??ko#1\c!koppeling}}%
- \setevalue{\??by#1}%
- {\getvalue{\??ko#1\c!sectie}}%
- \setevalue{\??by\v!per#1}%
- {\getvalue{\??ko#1\c!sectie}}%
- \setvalue{#1}%
- {\complexorsimpleempty{#1}}%
- \setvalue{\s!complex#1}[##1]%
- {\dowithpargument{\dosomekop{#1}[##1]}}}
-
-\def\definieerkop%
- {\dodoubleemptywithset\dodefinieerkop}
-
-\def\dostelkopin[#1][#2]%
- {\getparameters[\??ko#1][#2]%
- % The next check prevents hard to trace problems. I once
- % set \c!commando to nothing and (quite natural) got the
- % wrong references etc. The whole bunch should be boxed!
- \expandafter\convertcommand\csname\??ko#1\c!commando\endcsname\to\ascii
- \doifnothing{\ascii}
- {\setvalue{\??ko#1\c!commando}{\plaatskop}}}
-
-\def\stelkopin%
- {\dodoubleargumentwithset\dostelkopin}
-
-\newif\ifsectienummer \sectienummertrue
-
-\def\dostelkoppenin[#1]%
- {\getparameters[\??ko][#1]%
- \doifelse{\@@kosectienummer}{\v!ja}
- {\sectienummertrue}
- {\sectienummerfalse}%
- \processaction
- [\@@kovariant]
- [ \v!normaal=>\def\plaatskop{\plaatskopnormaal},
- \v!marge=>\def\plaatskop{\plaatskopinmarge},
- \v!inmarge=>\def\plaatskop{\plaatskopinmarge}]}
-
-\def\stelkoppenin%
- {\dosingleargument\dostelkoppenin}
-
-\def\systemsuppliedchapter {\getvalue{\v!hoofdstuk}}
-\def\systemsuppliedtitle {\getvalue{\v!titel}}
-
-\def\complexbijlage[#1]#2%
- {\pagina[\v!rechts]
- \stelnummeringin[\c!status=\v!stop]
- \systemsuppliedchapter[#1]{#2}
- \pagina[\v!rechts]
- \stelnummeringin[\c!status=\v!start]
- \stelpaginanummerin[\c!nummer=1]}
-
-\setvalue{\v!bijlage}%
- {\complexorsimpleempty{bijlage}}
-
-%I n=Selecteren
-%I c=\soortpagina,\verwerkpagina,\koppelpagina
-%I
-%I Het is mogelijk pagina's te markeren en selectief te
-%I verwerken. Markering vindt plaats met het commando:
-%I
-%I \soortpagina[aanduiding]
-%I
-%I en selecteren vindt plaats met:
-%I
-%I \verwerkpagina[aanduiding,...][instelling]
-%I
-%I waarbij de instelling 'ja' of 'nee' is en meerdere
-%I aanduidingen worden gescheiden door een comma.
-%P
-%I Er kunnen commando's worden gekoppeld aan pagina's:
-%I
-%I \koppelpagina[aanduiding,...][voor=,na=,optie=]
-%I
-%I De opgegeven commando's worden voor respectievelijk na het
-%I vrijgeven van de pagina uitgevoerd.
-
-\newif\ifgeselecteerd
-\geselecteerdtrue
-
-\newif\ifselecteren
-\selecterenfalse
-
-\newif\ifverwerken
-\verwerkentrue
-
-\def\selectie{}
-\def\paginasoort{}
-
-\let\naastpagina=\relax
-\let\napagina=\relax
-\let\voorpagina=\relax
-
-\def\dovoorpagina%
- {\doifsomething{\paginasoort}
- {\def\dododopagina##1%
- {\global\let\voorpagina=\relax
- \getvalue{\??pg##1\c!voor}}%
- \processcommacommand[\paginasoort]\dododopagina}}
-
-\def\dododonapagina#1%
- {\global\let\napagina=\relax
- \gdef\paginasoort{}%
- \getvalue{\??pg#1\c!na}}
-
-\def\donapagina%
- {\doifsomething{\paginasoort}
- {\def\dodopagina##1%
- {\doifelsevalue{\??pg##1\c!optie}{\v!dubbelzijdig}
- {\doifbothsidesoverruled
- \dododonapagina{##1}%
- \orsideone
- \dododonapagina{##1}%
- \orsidetwo
- \od}%
- {\dododonapagina{##1}}}%
- \processcommacommand[\paginasoort]\dodopagina}}
-
-\def\dosoortpagina[#1]%
- {\doglobal\addtocommalist{#1}{\paginasoort}%
- \ifselecteren
- \ExpandBothAfter\doifcommon{#1}{\selectie}
- {\global\geselecteerdtrue}%
- \fi
- \gdef\voorpagina{\dovoorpagina}%
- \gdef\napagina{\donapagina}}
-
-\def\soortpagina%
- {\dosingleargument\dosoortpagina}
-
-\def\dokoppelpagina[#1][#2]%
- {\getparameters
- [\??pg]
- [\c!voor=,
- \c!na=,
- \c!optie=,
- #2]%
- \def\docommando##1%
- {\getparameters
- [\??pg##1]
- [\c!voor=\@@pgvoor,
- \c!na=\@@pgna,
- \c!optie=\@@pgoptie]}%
- \processcommalist[#1]\docommando}%
-
-\def\koppelpagina%
- {\dodoubleargument\dokoppelpagina}
-
-\def\doverwerkpagina[#1][#2]%
- {\processaction
- [#2]
- [ \v!ja=>\global\verwerkentrue,
- \v!nee=>\global\verwerkenfalse]%
- \gdef\selectie{#1}%
- \global\selecterentrue
- \global\geselecteerdfalse}
-
-\def\verwerkpagina%
- {\dodoubleargument\doverwerkpagina}
-
-\def\resetselectiepagina%
- {\ifselecteren
- \doifbothsidesoverruled
- \global\geselecteerdfalse
- \orsideone
- \orsidetwo
- \global\geselecteerdfalse
- \od
- \fi}
-
-%I n=Verwijzingen
-%I c=\in,\op,\referentie,\stelrefererenin,\gebruikreferenties
-%I
-%I In elders gedefinieerde commando's opgegeven referenties
-%I kunnen worden opgeroepen met:
-%I
-%I \in[referentie]
-%I \op[referentie]
-%I
-%I Soms kunnen ook commando's als \infiguur[referentie] en
-%I \inhoofdstuk[referentie] worden gebruikt. Bovendien is
-%I het commando \oppagina[referentie] beschikbaar.
-%I
-%I Een verwijzing naar een pagina kan worden aangemaakt met:
-%I
-%I \tekstreferentie[referentie]{nummer of tekst}
-%I \paginareferentie[referentie]
-%I \referentie[referentie]{nummer of tekst}
-%P
-%I Er kunnen tegelijk meerdere referenties worden opgegeven:
-%I
-%I \tekstreferentie[ref1,ref2,ref3]{nummer of tekst}
-%I
-%I Dit kan overigens overal waar een [referentie] kan worden
-%I meegegeven, bijvoorbeeld bij hoofdstukken.
-%P
-%I Het refereren kan (tijdelijk) worden stopgezet met het
-%I commando:
-%I
-%I \stelrefererenin[status=,<sectie>nummer=,prefix=]
-%I
-%I waarbij 'start' en 'stop' mogelijke waarden zijn voor
-%I status. Een sectienummer (deelnummer, hoofdstuknummer
-%I enz.) kan 'ja of 'nee' zijn.
-%I
-%I Om verwarring te voorkomen kunnen binnen subdocumenten die
-%I niet naar elkaar verwijzen de referenties lokaal worden
-%I gehouden door een 'prefix' in te stellen. Eventueel kan een
-%I '+' wordt gebruikt om automatisch een nieuwe prefix in te
-%I stellen. Met '-' wordt de prefix gereset.
-%P
-%I Referenties van andere teksten kunnen worden geladen met
-%I het commando:
-%I
-%I \gebruikreferenties[filenaam]
-
-% hypertext-commando's
-
-% \gotoexternal {external reference} {text}
-% \gotointernal {internal reference} {text} {real pagenumber}
-% \gotorealpage {real pagenumber} {text}
-%
-% \thisisexternal {external reference}
-% \thisisinternal {internal reference}
-% \thisisrealpage {real pagenumber}
-%
-% \executecommand {command} {text}
-
-\def\gotoexternal #1#2{#2}
-\def\gotointernal #1#2#3{#2}
-\def\gotorealpage #1#2{#2}
-
-\def\thisisexternal #1{}
-\def\thisisinternal #1{}
-\def\thisisrealpage #1{}
-
-\def\executecommand #1#2{#2}
-
-% Het onderstaande commando zoekt zelf uit of sprake is van
-% interne verwijzing, een externe verwijzing of een
-% paginaverwijzing.
-%
-% \gotolocation {reference} {text}
-%
-% Beter is: \setreference{tag}{type}{page}{realpage}{text}
-% standaard extref, intref, pagref of nog anders nu
-% \crossref:...
-
-\newif\iflocation
-
-\def\ifinteractief{\iflocation}
-
-% alternatief 1: externe verwijzingen
-
-\def\gotolocation#1#2%
- {\doifreferencefoundelse{#1}
- {\gettextreference{#1}%
- \doifelse{\currenttextreference}{\r!page}
- {\getrealreference{#1}%
- \gotorealpage{\currentrealreference}{#2}}
- {\gotoexternal{#1}{#2}}}
- {\gotointernal{#1}{#2}{}}}
-
-\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%
- {\paginareferentie[\s!lst:#1\currentsectionformat]%
- \getrealreference{\s!lst:#1\previoussectionformat}%
- \doifnothing{\currentrealreference}{\edef\currentrealreference{\realfolio}}
- \setxvalue{\v!vorige\c!lokale#1}{\currentrealreference}%
- \getrealreference{\s!lst:#1\currentsectionformat}%
- \doifnothing{\currentrealreference}{\edef\currentrealreference{\realfolio}}
- \setxvalue{\c!huidige\c!lokale#1}{\currentrealreference}%
- \setreference{\v!vorige#1}{}{\getvalue{\v!vorige\c!lokale#1}}{\r!page}%
- \def\stoplistreferences{\dostoplistreferences}}
-
-\def\dostoplistreferences#1%
- {\iflijstgeplaatst
- \addtocommalist{#1}\updatedlistreferences % nog global (\doglobal)
- \global\let\updatedlistreferences=\updatedlistreferences % een noodverbandje
- \gdef\updatelistreferences%
- {\def\docommando####1%
- {\setreference
- {\v!vorige####1}{}
- {\getvalue{\c!huidige\c!lokale####1}}{\r!page}}%
- \processcommacommand[\updatedlistreferences]\docommando
- \global\let\updatelistreferences=\relax
- \gdef\updatedlistreferences{}}%
- \fi}
-
-\def\stoplistreferences%
- {\gobbleoneargument}
-
-% alternatief 2: interne verwijzingen
-
-\def\gotolocation#1#2%
- {\doifreferencefoundelse{#1}
- {\gettextreference{#1}%
- \doifelse{\currenttextreference}{\r!page}
- {\getrealreference{#1}%
- \gotorealpage{\currentrealreference}{#2}}
- {\doifelse{\currenttextreference}{\r!exec}
- {\getrealreference{#1}%
- \executecommand{\currentrealreference}{#2}}
- {\doifelse{\currenttextreference}{\r!list} % speciaal
- {\getrealreference{#1}% % voor
- \gotointernal{\currentrealreference}{#2}{}} % lijsten
- {\gotoexternal{#1}{#2}}}}}
- {\gotointernal{#1}{#2}{}}}
-
-\let\gotoinnerlocation=\gotolocation
-
-\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%
- {\thisisinternal{\s!lst:#1\currentsectionformat}%
- \setxvalue{\v!vorige\c!lokale#1}{\s!lst:#1\previoussectionformat}%
- \setxvalue{\c!huidige\c!lokale#1}{\s!lst:#1\currentsectionformat}%
- \doifelse{\currentsectionformat}{}
- {\setreference
- {\v!vorige#1}{}{\realfolio}{}}
- {\setreference
- {\v!vorige#1}{}{\getvalue{\v!vorige\c!lokale#1}}{\r!list}}%
- \def\stoplistreferences{\dostoplistreferences}}
-
-\def\dostoplistreferences#1%
- {\iflijstgeplaatst
- \addtocommalist{#1}\updatedlistreferences % nog global (\doglobal)
- \global\let\updatedlistreferences=\updatedlistreferences % een noodverbandje
- \gdef\updatelistreferences%
- {\def\docommando####1%
- {\setreference
- {\v!vorige####1}{}
- {\getvalue{\c!huidige\c!lokale####1}}{\r!list}}%
- \processcommacommand[\updatedlistreferences]\docommando
- \global\let\updatelistreferences=\relax
- \gdef\updatedlistreferences{}}%
- \fi}
-
-\def\stoplistreferences%
- {\gobbleoneargument}
-
-% de rest
-
-\newcount\prefixteller
-
-\def\referenceprefix{}
-
-\def\showlocation #1{#1}
-\def\showcontrastlocation#1#2#3{#3}
-\def\showcoloredlocation #1#2{#2}
-
-% Interne verwijzingen worden automatisch gegenereerd met
-%
-% \thisisnextinternal {tag}
-
-\newcount\locationcount
-\locationcount=0
-
-\def\nextinternalreference%
- {\the\locationcount}
-
-\def\thisisnextinternal#1%
- {\global\advance\locationcount by 1
-% \thisisinternal{\s!aut:#1:\nextinternalreference}} debugging
- \thisisinternal{\s!aut:\nextinternalreference}}
-
-\def\gotonextinternal#1#2#3#4%
-% {\gotointernal{\s!aut:#1:#2}{#3}{#4}} debugging
- {\gotointernal{\s!aut:#2}{#3}{#4}}
-
-% Als een interne verwijzing ook vanuit elders toegankelijk
-% moet zij, gebruiken we:
-%
-% \thisissomeinternal {tag} {data}
-% \gotosomeinternal {tag} {data} {} {}
-%
-% let op: geen commalist
-
-\def\thisissomeinternal#1#2% tag data
- {\doifsomething{#2}
- {\thisisinternal{#1:#2}}}
-
-\def\gotosomeinternal#1#2#3#4%
- {\gotointernal{#1:#2}{#3}{#4}}
-
-% Om historische redenen en omdat nog niet duidelijk is welke
-% interactieprogramma's zich nog zullen aandienen, worden
-% referenties zowel op naam als op paginanummer afgehandeld.
-%
-% Verwijzingen en ingangen in een inhoudsopgave en index
-% dienen daarom beide mechanismen te ondersteunen.
-%
-% Het wellicht op het eerste gezicht redundante referentie-format
-% ziet er als volgt uit:
-%
-% [formatted page"realpage"text"]
-
-\newif\ifrefereren
-
-\def\referencepagenumber[#1]%
- {\geentest % nodig i.v.m. scannen {tekst} bij [referentie] in \op
- {\paginaprefix\??rf[#1]%
- \translatednumber[#1]}}
-
-\def\getsomereference#1#2%
- {\edef\somereference{\getvalue{\r!cross\referenceprefix#2}}%
- \expandafter#1\expandafter[\somereference""""]}
-
-\def\currentpagereference{}
-\def\currentrealreference{}
-\def\currenttextreference{}
-
-\def\dogetpagereference[#1"#2"#3"#4]%
- {\doifelsenothing{#2}
- {\def\currentpagereference{}}
- {\def\currentpagereference{\referencepagenumber[#1]}}}
-
-\def\dogetrealreference[#1"#2"#3"#4]%
- {\edef\currentrealreference{#2}}
-
-\def\dogettextreference[#1"#2"#3"#4]%
- {\def\currenttextreference{#3}}
-
-\def\getpagereference{\getsomereference\dogetpagereference}
-\def\getrealreference{\getsomereference\dogetrealreference}
-\def\gettextreference{\getsomereference\dogettextreference}
-
-\def\fileprefix{}
-
-\def\setlocalreference#1#2#3#4%
- {\setevalue{\r!cross\fileprefix#1}{#2"#3"#4}}
-
-\def\setreference%
- {\global\setlocalreference}
-
-\def\setreferences%
- {\def\mainreference##1##2##3##4##5%
- {\doifundefinedelse{\r!cross\fileprefix##1##2}
- {\setxvalue{\r!cross\fileprefix##1##2}{##3"##4"##5}}
- {\showmessage{\m!references}{2}{[##1][##2],##4}}}}
-
-\def\resetreferences%
- {\def\mainreference##1##2##3##4##5{}}
-
-\resetreferences
-
-% beetje vreemde plaats, maar ja
-
-\def\setdummycommandreference#1#2%
- {\setreference{#1}{}{#2}{\r!exec}}
-
-% nog anders
-
-\setdummycommandreference {\v!FirstPage} {first}
-\setdummycommandreference {\v!PreviousPage} {previous}
-\setdummycommandreference {\v!NextPage} {next}
-\setdummycommandreference {\v!LastPage} {last}
-\setdummycommandreference {\v!PreviousJump} {backward}
-\setdummycommandreference {\v!NextJump} {forward}
-\setdummycommandreference {\v!SwapViewer} {swap}
-\setdummycommandreference {\v!ExitViewer} {exit}
-\setdummycommandreference {\v!CloseDocument} {close}
-\setdummycommandreference {\v!ViewerHelp} {help}
-\setdummycommandreference {\v!PrintDocument} {print}
-\setdummycommandreference {\v!SearchDocument} {search}
-\setdummycommandreference {\v!SearchAgain} {searchagain}
-
-%\def\writereference#1#2#3#4%
-% {\ifrefereren%
-% \doifsomething{#1}
-% {\bgroup
-% \reassignreferenceprefix{#1}%
-% \ExpandFirstAfter\thisisexternal{\referencevalues}%
-% \edef\dowritereference%
-% {\writeutilitycommand%
-% {\mainreference%
-% {\referenceprefix}%
-% {\referencevalues}%
-% {#2}%
-% {#3}%
-% {#4}}}%
-% \dowritereference
-% \egroup
-% \@EA\referentieinfo\@EA>\@EA{#1}}%
-% \fi}
-
-\def\writereference#1#2#3#4%
- {\ifrefereren
- \doifsomething{#1}
- {\bgroup
- \def\dowritereference##1%
- {\doifinstringelse{-:}{##1}
- {\removesubstring-:\from##1\to\referencevalues
- \def\referenceprefix{}}
- {\def\referencevalues{##1}}%
- \doifsomething{\referencevalues}
- {\thisisexternal{\referenceprefix\referencevalues}%
- \edef\dodowritereference%
- {\writeutilitycommand%
- {\mainreference%
- {\referenceprefix}{\referencevalues}%
- {#2}{#3}{#4}}}%
- \dodowritereference}}%
- \processcommalist[#1]\dowritereference
- \egroup
- \@EA\referentieinfo\@EA>\@EA{#1}}%
- \fi}
-
-\let\lastreference=\empty
-
-\def\rawpagereference#1#2% #1 kan weg
- {\def\lastreference{#2}%
- \makesectionformat
- \writereference
- {#2}%
- {\sectionformat::\noexpand\paginanummer}%
- {\noexpand\realfolio}%
- {}}
-
-\def\rawtextreference#1#2#3% #1 kan weg
- {\def\lastreference{#2}%
- \writereference
- {#2}%
- {}%
- {}%
- {#3}}%
-
-\def\rawreference#1#2#3% #1 kan weg
- {\def\lastreference{#2}%
- \makesectionformat
- \writereference
- {#2}%
- {\sectionformat::\noexpand\paginanummer}%
- {\noexpand\realfolio}%
- {#3}}
-
-\def\referenceprefix {}
-\def\unharmedreferenceprefix {\referenceprefix}
-
-\newif\ifreferencefound
-
-\def\doifreferencefoundelse#1#2#3%
- {\checkreferences
- \bgroup
- \let\unharmedreferenceprefix=\referenceprefix
- \bgroup
- \doifinstringelse{::}{#1}
- {\referencefoundtrue}
- {\doifdefinedelse{\r!cross\referenceprefix#1}
- {\referencefoundtrue}
- {\def\referenceprefix{}%
- \doifdefinedelse{\r!cross#1}
- {\referencefoundtrue}
- {\referencefoundfalse}}}%
- \doifvalue{\r!cross\referenceprefix#1}{""}
- {\referencefoundfalse}%
- \ifreferencefound
- #2%
- \egroup
- \else
- #3%
- \egroup
- \setreference{\referenceprefix#1}{}{}{}% message only once, uses prefix
- \fi
- \egroup}
-
-\def\dowithreferenceprefix#1#2%
- {\doifreferencefoundelse{#1}{#2}{}}
-
-\def\gebruikreferenties[#1]%
- {\doifundefined{\??rf:#1}
- {\setgvalue{\??rf:#1}{}% signal, nog eens '\v!done'
- \doutilities{references}{#1}{}{}{}}}
-
-\def\dostelrefererenin[#1]%
- {\getparameters[\??rf][#1]%
- \preparepaginaprefix{\??rf#1}%
- \processaction
- [\@@rfstatus]
- [ \v!stop=>\refererenfalse,
- \v!start=>\refererentrue]%
- \processaction % should be in cont-01d
- [\@@rfinteractie]
- [ \v!alles=>\let\dowantedreference=\docompletereference,
- \v!label=>\let\dowantedreference=\dolabelonlyreference,
- \v!tekst=>\let\dowantedreference=\dotextonlyreference,
- \v!symbool=>\let\dowantedreference=\dosymbolreference]%
- \doifinstringelse{\@@rfprefix}{#1} % yeah
- {\doifelsenothing{\@@rfprefix}
- {\edef\referenceprefix{}}
- {\processaction
- [\@@rfprefix]
- [ +=>\advance\prefixteller by 1 %
- \edef\referenceprefix{\the\prefixteller:},
- -=>\edef\referenceprefix{},
- \s!unknown=>\edef\referenceprefix{\@@rfprefix:}]%
- \def\@@rfprefix{}}}
- {}}
-
-%\def\reassignreferenceprefix#1%
-% {\doifinsetelse{-:}{#1}%
-% {\def\referenceprefix{}%
-% \aftersplitstring#1\at-:\to\referencevalues}
-% {\def\referencevalues{#1}}}
-
-\def\stelrefererenin%
- {\dosingleargument\dostelrefererenin}
-
-\def\doreferentie[#1]#2%
- {\rawreference{\s!ref}{#1}{#2}}
-
-\def\referentie%
- {\dosingleargument\doreferentie}
-
-\def\dotekstreferentie[#1]#2%
- {\rawtextreference{\s!txt}{#1}{#2}}
-
-\def\tekstreferentie%
- {\dosingleargument\dotekstreferentie}
-
-\def\dopaginareferentie[#1]%
- {\rawpagereference{\s!pag}{#1}}
-
-\def\paginareferentie%
- {\dosingleargument\dopaginareferentie}
-
-% \def\doreferentie[#1]#2%
-% {\bgroup
-% \convertargument#2\to\ascii
-% \rawreference{\s!ref}{#1}{\ascii}%
-% \egroup}
-%
-% \def\referentie%
-% {\dosingleargument\doreferentie}
-%
-% \def\dotekstreferentie[#1]#2%
-% {\bgroup
-% \convertargument#2\to\ascii
-% \rawtextreference{\s!txt}{#1}{\ascii}%
-% \egroup}
-%
-% \def\tekstreferentie%
-% {\dosingleargument\dotekstreferentie}
-
-% \newif\ifreferencesloaded
-% \referencesloadedfalse
-%
-% \def\checkreferences%
-% {\ifreferencesloaded\else
-% \global\referencesloadedtrue
-% {\setbox0=\hbox{\gebruikreferenties[\jobname]}}% get rid of spaces
-% \checkrealpage
-% \fi}
-%
-% efficienter: (scheelt 3 if-macro's)
-
-\def\checkreferences%
- {\bgroup
- \setbox0=\hbox{\gebruikreferenties[\jobname]}% get rid of spaces
- \checkrealpage
- \global\let\checkreferences=\relax
- \egroup}
-
-% Het referentie-mechanisme zal nog worden aangepast:
-%
-% <prefix><tag><keyword>
-%
-% De gebruikte macros krijgen dan de vorm: {}{}{}
-
-\def\unknownreference#1%
- {\ifvoorlopig
- \doifsomething{#1}
- {\inlinker
- {\infofont
- \dimen0=\linkermargebreedte
- \advance\dimen0 by -2em
- \doboundtext{#1}{\dimen0}{..}->}}%
- \fi
- \doifnotvalue{\r!cross#1}{""}
- {\showmessage{\m!references}{1}{[\unharmedreferenceprefix][#1]}}}
-
-\def\dummyreference%
- {{\tttf ??}}
-
-\let\domathmodein=\in
-
-\def\dotextmodein#1[#2]%
- {\doifreferencefoundelse{#2}
- {\gettextreference{#2}%
- \gotolocation
- {#2}
- {\dotextprefix{#1}\currenttextreference}}
- {\unknownreference{#1}%
- \dotextprefix{#1}\dummyreference}%
- \referentieinfo{<}{#2}}
-
-\def\in%
- {\ifmmode % hier nog eens een macro
- \let\next=\domathmodein % voor maken; zie |
- \else
- \let\next=\dotextmodein
- \fi
- \next}
-
-\def\op#1[#2]% er is een probleempje met spaties, zie ook pragma11.tex
- {\ignorespaces
- \bgroup % !! tijdelijk
- \let\ignorespaces=\relax % !! tijdelijk
- \doifreferencefoundelse{#2}
- {\getpagereference{#2}%
- \gotolocation
- {#2}
- {\dotextprefix{#1}\currentpagereference}}
- {\unknownreference{#1}%
- \dotextprefix{#1}\dummyreference}%
- \referentieinfo{<}{#2}%
- \egroup} % !! tijdelijk
-
-\def\oppagina[#1]% kan uit de pas lopen, checken e!!
- {\doifreferencefoundelse{#1}
- {\getrealreference{#1}%
- \doifelse{\realfolio}{\currentrealreference}
- {\v!hier\v!boven}
- {\c!op\ \op{\v!pagina}[#1]}}%
- {\unknownreference{#1}%
- \v!pagina~\dummyreference}}%
-
-%I n=Regels
-%I c=\startregels,\stelregelsin
-%I c=\startregelnummeren,\stelregelnummerenin
-%I c=\crlf
-%I c=\startregel,\stopregel,\eenregel,\inregel
-%I
-%I Het is mogelijk de indeling in regels zoals die in de ruwe
-%I tekst wordt gehanteerd af te dwingen. Er wordt in dit
-%I geval niet ingesprongen. De regels worden gezet tussen de
-%I twee commando's:
-%I
-%I \startregels
-%I
-%I ...................................................
-%I
-%I \stopregels
-%P
-%I Er kan met betrekking tot regels een en ander worden
-%I ingesteld:
-%I
-%I \stelregelsin[voor=,na=,inspringen=]
-%I
-%I Aan 'inspringen' kan men 'ja', 'nee', 'even' of 'oneven'
-%I toekennen.
-%P
-%I Het is mogelijk regels te nummeren door ze tussen de
-%I volgende commando's te plaatsen:
-%I
-%I \startregelnummeren
-%I \stopregelnummeren
-%I
-%I Als de regelovergangen moeten worden gehandhaafd, dan moet
-%I \startregels voor \startregelnummeren worden gegeven.
-%I
-%I Het nummeren begint steeds opnieuw bij 1. Als verder moet
-%I worden genummeren, dan kan achter \startregelnummeren
-%I [verder] worden meegegeven.
-%I
-%I Standaard worden regels alinea-gewijs genummerd. Als men
-%I over een paginagrens wil nummeren, dan moet [opelkaar]
-%I worden meegegeven.
-%P
-%I De wijze van nummeren kan worden ingesteld met:
-%I
-%I \stelregelnummerenin[conversie=,start=,stap=,letter=,
-%I plaats=,breedte=,letter=]
-%I
-%I Als 'conversie' kan worden meegegeven: cijfers, letters,
-%I Letters, romeins of Romeins. Aan 'start' en 'stap' kan
-%I een getal worden toegekend, aan 'letter' een trefwoord,
-%I aan 'breedte' een maat (bij voorkeur in ex) en aan
-%I 'plaats' het trefwoord 'inmarge' of 'intekst'.
-%P
-%I Er kan worden overgegaan naar een nieuwe regel met:
-%I
-%I \crlf
-%P
-%I .... testfase ...
-%I
-%I \startregel[tag] ... \stopregel[tag]
-%I \eenregel[tag]
-%I
-%I \inregel[tag]
-
-\newif\ifinregels
-\newif\ifregelnummersinmarge
-
-\def\stelregelsin%
- {\dodoubleargument\getparameters[\??rg]}
-
-%\def\startregels%
-% {\@@rgvoor
-% \pagina[\v!voorkeur]%
-% \begingroup
-% \inregelstrue
-% \stelinspringenin[\v!geen]%
-% \ignorespaces
-% \stelwitruimtein[\v!geen]%
-% \obeylines
-% \GotoPar}
-
-\def\startregels%
- {\@@rgvoor
- \pagina[\v!voorkeur]%
- \witruimte
- \begingroup
- \def\@@rgstepyes{\parindent\!!zeropoint}%
- \def\@@rgstepno{\parindent\!!zeropoint}%
- \edef\@@rgparindent{\the\parindent}%
- \def\@@rglinesteptoggle{1}%
- \processaction
- [\@@rginspringen]
- [ \v!ja=>\def\@@rgstepyes{\parindent\@@rgparindent}%
- \def\@@rgstepno{\parindent\@@rgparindent},
- \v!oneven=>\def\@@rgstepyes{\parindent\!!zeropoint}%
- \def\@@rgstepno{\parindent\@@rgparindent},
- \v!even=>\def\@@rgstepno{\parindent\!!zeropoint}%
- \def\@@rgstepyes{\parindent\@@rgparindent}]%
- \inregelstrue
- \stelwitruimtein[\v!geen]%
- \obeylines
- \ignorespaces
- \def\obeyedline%
- {\par
- \ifdim\lastskip>\!!zeropoint
- \def\@@rglinesteptoggle{0}%
- \else
- \increment\@@rglinesteptoggle
- \fi
- \ifodd\@@rglinesteptoggle\relax
- \@@rgstepyes
- \else
- \@@rgstepno
- \fi}%
- \GotoPar}
-
-\def\stopregels%
- {\endgroup
- \@@rgna}
-
-\newcount\linenumber
-\newcount\linestepper
-
-% het gebruik van \setlocalreference scheelt een hash entry
-
-\def\regelweergave%
- {\convertnumber\@@rnconversie\linenumber}%
-
-\def\dostelregelnummerenin[#1]%
- {\getparameters
- [\??rn]
- [\c!start=1,
- \c!stap=1,
- #1]%
- \global\linenumber=1\relax}
-
-\def\stelregelnummerenin%
- {\dosingleargument\dostelregelnummerenin}
-
-\def\dostartnummerenLINE% % !! \everypar !!
- {\EveryPar{\schrijfregelnummer}}
-
-\def\dostopnummerenLINE%
- {\egroup}
-
-\def\dodoschrijfregelnummer%
- {\setbox0=\hbox{\regelweergave}%
- \vsmashbox0
- \ifregelnummersinmarge
- \llap{\hbox{\box0\hskip\linkermargeafstand}}%
- \else
- \hsmash{\hbox to \@@rnbreedte{\box0\hss}}%
- \fi}
-
-\def\complexstartregelnummeren[#1]%
- {\doifnotinset{\v!verder}{#1}
- {\global\linenumber=1\relax}%
- \doifinsetelse{\@@rnplaats}{\v!inmarge,\v!marge}
- {\regelnummersinmargetrue}
- {\regelnummersinmargefalse}%
- \ifregelnummersinmarge\else
- \advance\leftskip by \@@rnbreedte\relax
- \fi
- \ifinregels
- \let\dostartnummeren=\dostartnummerenLINE
- \let\stopregelnummeren=\dostopnummerenLINE
- \def\schrijfregelnummer%
- {\doschrijfregelnummer
- \global\advance\linenumber by 1\relax}%
- \else
- \let\dostartnummeren=\dostartnummerenPAR
- \let\stopregelnummeren=\dostopnummerenPAR
- \def\schrijfregelnummer%
- {\global\advance\linenumber by -1\relax
- \doschrijfregelnummer}%
- \fi
- \dostartnummeren}
-
-\def\startregelnummeren%
- {\bgroup
- \complexorsimpleempty{startregelnummeren}}
-
-\def\doschrijfregelnummer%
- {\ifnum\linenumber<\@@rnstart\relax
- \else
- \!!counta=\linenumber
- \divide\!!counta by \@@rnstap\relax
- \multiply\!!counta by \@@rnstap\relax
- \ifnum\!!counta=\linenumber
- \doattributes{\??rn}{\dodoschrijfregelnummer}%
- \fi
- \fi}
-
-\def\regelreferentie#1[#2]%
- {\bgroup
- \dimen0=\dp\strutbox
- \doif{\@@rnrefereren}{\v!aan}
- {\doglobal\increment\linereference
- \setxvalue{lrf:n:\linereference}{\@@rnprefix#2}%
- \setxvalue{lrf:l:\linereference}{0}%
- \setxvalue{lrf:p:\linereference}{#1}%
- \advance\dimen0 by \linereference sp}%
- \prewordbreak
- \vrule \!!width \!!zeropoint \!!depth \dimen0
- \prewordbreak
- \egroup}
-
-\def\eenregel[#1]%
- {\regelreferentie0[#1]\ignorespaces}
-
-\def\startregel[#1]%
- {\regelreferentie1[#1]\ignorespaces}
-
-\def\stopregel[#1]%
- {\unskip\regelreferentie2[#1]}
-
-\def\inregel#1[#2]%
- {\doifelsenothing{#1}
- {\gettextreference{\@@rnprefix#2}%
- \doifinstringelse{--}{\currenttextreference}
- {\in{\labeltext{\v!regels}}[\@@rnprefix#2]}
- {\in{\labeltext{\v!regel}}[\@@rnprefix#2]}}
- {\in{#1}[\@@rnprefix#2]}}
-
-\def\dostartnummerenPAR%
- {\beginofshapebox
- \doglobal\newcounter\linereference}
-
-\def\dostopnummerenPAR%
- {\endofshapebox
- \linestepper=0
- \reshapebox{\global\advance\linestepper by 1\relax}%
- \global\advance\linenumber by \linestepper
- \doifelse{\@@rnrefereren}{\v!aan}
- {\reshapebox % We are going back!
- {\global\advance\linenumber by -1
- \dimen0=\dp\shapebox
- \advance\dimen0 by -\dp\strutbox
- \ifdim\dimen0>\!!zeropoint\relax
- \dostepwiserecurse{1}{\number\dimen0}{1}
- {\setxvalue{lrf:l:\recurselevel}{\the\linenumber}}%
- \fi}%
- \global\advance\linenumber by \linestepper
- \ifnum\linereference>0 % anders vreemde loop in paragraphs+recurse
- \dorecurse{\linereference}
- {\edef\linereferenceplus{\getvalue{lrf:p:\recurselevel}}%
- \ifnum\linereferenceplus=2
- \edef\linereferencename{\getvalue{lrf:n:\recurselevel}}%
- \edef\linereferenceline{\getvalue{lrf:l:\recurselevel}}%
- \setlocalreference{\referenceprefix\linereferencename}{}{}{\linereferenceline}%
- \fi}%
- \dorecurse{\linereference}
- {\edef\linereferenceplus{\getvalue{lrf:p:\recurselevel}}%
- \ifnum\linereferenceplus<2
- \edef\linereferencename{\getvalue{lrf:n:\recurselevel}}%
- \edef\linereferenceline{\getvalue{lrf:l:\recurselevel}}%
- \ifnum\linereferenceplus=1
- \gettextreference{\linereferencename}%
- \ifnum\linereferenceline<0\currenttextreference\relax % 0 prevents error
- \edef\linereferenceline{\linereferenceline--\currenttextreference}%
- \fi
- \fi
- \setlocalreference{\referenceprefix\linereferencename}{}{}{\linereferenceline}%
- \fi}%
- \global\let\scratchline=\linenumber % We are going back!
- \reshapebox
- {\doglobal\decrement\scratchline
- \hbox
- {\dorecurse{\linereference}
- {\edef\linereferencename{\getvalue{lrf:n:\recurselevel}}%
- \gettextreference{\linereferencename}%
- \beforesplitstring\currenttextreference--\at--\to\firstline
- \ifnum\firstline=\scratchline\relax
- \tekstreferentie[\linereferencename]{\currenttextreference}%
- \setlocalreference{\referenceprefix\linereferencename}{}{}{0}% ==done
- \fi}%
- \dimen0=\dp\shapebox
- \advance\dimen0 by -\dp\strutbox
- \ifdim\dimen0>\!!zeropoint\relax
- \dp\shapebox=\dp\strutbox
- \fi
- \schrijfregelnummer\box\shapebox}}%
- \else
- \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}%
- \fi}
- {\reshapebox{\global\advance\linenumber by -1}%
- \global\advance\linenumber by \linestepper
- \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}}%
- \global\advance\linenumber by \linestepper
- \flushshapebox
- \egroup}
-
-\def\crlf%
- {\unskip\hfil\break}
-
-\def\opeenregel%
- {\def\crlf{}%
- \def\\{}}
-
-%I n=Opmaak
-%I c=\definieeropmaak,\testopmaak,\startstandaardopmaak
-%I
-%I Het is mogelijk een lege pagina op te maken. Hiertoe wordt
-%I een blok gereserveerd met het commando:
-%I
-%I \definieeropmaak[naam][breedte=,hoogte=,voffset=,
-%I hoffset=,pagina=,commandos=,voor=,na=,dubbelzijdig=]
-%I
-%I Hierbij wordt bij de eerste vier parameters een getal
-%I meegegeven (5cm, 24pt, enz.). Met 'pagina' geeft men aan
-%I of naar een nieuwe pagina wordt gesprongen (standaard
-%I 'rechts'). Aan de 'commandos' kunnen commando's worden
-%I toekend die tijdens de opmaak gelden. Aan de laatste twee
-%I parameters toegekende commando's worden voor en na het
-%I opmaken van de pagina uitgevoerd. De opgemaakte pagina
-%I kan worden geselecteerd op naam. Met 'dubbelzijdig' geeft
-%I men aan of er een lege achterkant moet worden opgemaakt
-%I (standaard: ja). Dit geldt aleen bij dubbelzijdig zetten.
-%I
-%I Naast het bovenstaande commando is er het commando:
-%I
-%I \stelopmaakin[naam][instellingen]
-%P
-%I Na het geven van dit commando zijn twee commando's
-%I beschikbaar: \startnaamopmaak en \stopnaamopmaak. Tussen
-%I deze twee commando's kunnen zetopdrachten en teksten
-%I worden opgenomen. Een en ander wordt op een lege bladzijde
-%I gezet.
-%I
-%I Met het commando \testopmaak kunnen hulplijnen worden
-%I opgeroepen.
-%I
-%I De commando's \startstandaardopmaak en \stopstandaardopmaak
-%I maken het opmaken binnen de standaard-layout mogelijk.
-%P
-%I Eventueel kunnen de volgende twee commando's worden gebruikt
-%I om een pagina op te maken met hoofd- en voetregels.
-%I
-%I \startopmaak
-%I .....
-%I \stopopmaak
-
-\newbox\opmaak
-
-\def\setopmaaklayout[#1]%
- {\stelvoetin [\c!status=\getvalue{\??do#1\c!voetstatus}]%
- \stelhoofdin[\c!status=\getvalue{\??do#1\c!hoofdstatus}]%
- \steltekstin[\c!status=\getvalue{\??do#1\c!tekststatus}]%
- \stelonderin[\c!status=\getvalue{\??do#1\c!onderstatus}]%
- \stelbovenin[\c!status=\getvalue{\??do#1\c!bovenstatus}]}
-
-\def\dododostartopmaak[#1]%
- {\doifvaluesomething{\??do#1\c!pagina}
- {\ExpandFirstAfter\pagina[\getvalue{\??do#1\c!pagina}]}%
- \soortpagina[#1]%
- \setopmaaklayout[#1]%
- \getvalue{\??do#1\c!commandos}%
- \global\setbox\opmaak=\vbox to \getvalue{\??do#1\c!hoogte}%
- \bgroup
- \hsize=\getvalue{\??do#1\c!breedte}%
- \parskip=\!!zeropoint\relax
- \parindent=\!!zeropoint\relax
- \getvalue{\??do#1\c!boven}}
-
-\def\dododostopopmaak[#1]%
- {\getvalue{\??do#1\c!onder}%
- \egroup}
-
-\def\doshipoutopmaak[#1]%
- {\bgroup
- \dimen0=\getvalue{\??do#1\c!voffset}%
- \dimen2=\getvalue{\??do#1\c!hoffset}%
- \dimen4=\dimen0\advance\dimen4 by \dimen2
- \ifdim\dimen4=\!!zeropoint\relax
- \getvalue{\??do#1\c!voor}%
- \box\opmaak
- \setopmaaklayout[#1]%
- \pagina
- \getvalue{\??do#1\c!na}%
- \ifdubbelzijdig
- \doifvalue{\??do#1\c!dubbelzijdig}{\v!ja}
- {\ifodd\realpageno\else
- \null
- \pagina
- \verlaagpaginanummer
- \fi}%
- \fi
- \verlaagpaginanummer
- \else
- \kopoffset=\dimen0
- \rugoffset=\dimen2
- %\setpagedisplacement
- \myshipout{\box\opmaak}
- \fi
- \egroup}
-
-\def\doflushopmaak[#1]%
- {\ifverwerken
- \ifgeselecteerd
- \doshipoutopmaak[#1]%
- \fi
- \else
- \ifgeselecteerd
- \else
- \doshipoutopmaak[#1]%
- \fi
- \fi
- \ifselecteren
- \global\geselecteerdfalse
- \fi}
-
-\def\dodostartopmaak[#1][#2]%
- {\begingroup
- \stelopmaakin[#1][#2]%
- \dododostartopmaak[#1]}
-
-\def\dodostopopmaak[#1]%
- {\dododostopopmaak[#1]%
- \doflushopmaak[#1]%
- \endgroup}
-
-\def\dostartopmaak[#1][#2]%
- {\iffirstargument
- \dodostartopmaak[#1][#2]%
- \def\stopopmaak%
- {\dodostopopmaak[#1]}%
- \else
- \pagina
- \stelhoofdin[\c!status=\v!leeg]
- \stelvoetin[\c!status=\v!leeg]
- \vbox to \teksthoogte % nog een topskip optie
- \bgroup
- \def\stopopmaak%
- {\egroup
- \eject}%
- \fi}
-
-\def\startopmaak%
- {\dodoubleempty\dostartopmaak}
-
-\def\dodefinieeropmaak[#1][#2]%
- {\getparameters
- [\??do#1]%
- [\c!breedte=\zetbreedte,
- \c!hoogte=\teksthoogte,
- \c!voffset=\!!zeropoint,
- \c!hoffset=\!!zeropoint,
- \c!commandos=,
- \c!pagina=\v!rechts,
- \c!dubbelzijdig=\v!ja,
- \c!voor=,
- \c!boven=\vss,
- \c!onder=\vss,
- \c!na=,
- \c!onderstatus=\v!normaal,
- \c!bovenstatus=\v!normaal,
- \c!tekststatus=\v!normaal,
- \c!hoofdstatus=\v!stop,
- \c!voetstatus=\v!stop,
- #2]%
- \setvalue{\e!start#1\e!opmaak}%
- {\dodoubleempty\dodostartopmaak[#1]}%
- \setvalue{\e!stop#1\e!opmaak}%
- {\dodostopopmaak[#1]}}
-
-\def\definieeropmaak%
- {\dodoubleargument\dodefinieeropmaak}
-
-\def\dostelopmaakin[#1]%
- {\getparameters[\??do#1]}
-
-\def\stelopmaakin%
- {\dodoubleargument\dostelopmaakin}
-
-%I n=Smaller
-%I c=\startsmaller,\stelsmallerin
-%I
-%I Een paragraaf kan smaller gezet worden met behulp van de
-%I commando's:
-%I
-%I \startsmaller[afstand]
-%I \stopsmaller
-%I
-%I Als maat wordt links, rechts, midden of een combinatie
-%I hiervan meegegeven. Eventueel wordt geen afstand meegegeven.
-%I
-%I De linker, rechter of dubbele inspringing kan worden
-%I ingesteld met:
-%I
-%I \stelsmallerin[links=,rechts=,midden=]
-%I
-%I Enkele voorbeelden van smelelr zetten zijn:
-%I
-%I \startsmaller[2*links,rechts]
-%I \stopsmaller
-%I
-%I \startsmaller[midden,rechts]
-%I \stopsmaller
-
-\newskip\linkssmaller
-\newskip\rechtssmaller
-\newskip\middensmaller
-
-\def\dosinglesmaller#1%
- {\dosmaller[#1]}
-
-\def\dosmaller[#1]%
- {\processaction
- [#1]
- [ \v!links=>\global\advance\linkssmaller by \@@sllinks,
- \v!midden=>\global\advance\middensmaller by \@@slmidden,
- \v!rechts=>\global\advance\rechtssmaller by \@@slrechts,
- \s!unknown=>{\herhaalmetcommando[#1]\dosinglesmaller}]}
-
-\def\complexstartsmaller[#1]%
- {\par
- \bgroup
- \global\linkssmaller=\!!zeropoint
- \global\rechtssmaller=\!!zeropoint
- \global\middensmaller=\!!zeropoint
- \processcommalistwithparameters[#1]\dosmaller
- \advance\leftskip by \linkssmaller
- \advance\rightskip by \rechtssmaller
- \advance\leftskip by \middensmaller
- \advance\rightskip by \middensmaller}
-
-\def\simplestartsmaller%
- {\startsmaller[\v!midden]}
-
-\def\startsmaller%
- {\complexorsimple{startsmaller}}
-
-\def\stopsmaller%
- {\par % else skips forgotten
- \egroup}
-
-\def\stelsmallerin%
- {\dodoubleargument\getparameters[\??sl]}
-
-%I n=Boxen
-%I c=\definieerhbox,\cbox,\lbox,\rbox,\sbox
-%I
-%I Het is mogelijk een tekst in een blok met een vaste
-%I omvang te zetten. Dit is vergelijkbaar met het opmaken
-%I van een tabel.
-%I
-%I \hbox?{tekst} (horizontaal blok)
-%I
-%I De box wordt eerst gedefinieerd met:
-%I
-%I \definieerhbox[?][maat]
-%I
-%I Er kan een links, rechts of midden uitgelijnde \vbox worden
-%I gezet met de commando:
-%I
-%I \lbox{tekst\\tekst\\tekst} of \lbox to <maat>{...}
-%I \rbox{tekst\\tekst\\tekst} of \rbox to <maat>{...}
-%I \cbox{tekst\\tekst\\tekst} of \cbox to <maat>{...}
-%I
-%I Het commando \\ forceert een overgang naar een nieuwe regel.
-%I
-%I Een (hoge) box kan een gedwongen hoogte gelijk aan die
-%I van een strut krijgen met:
-%I
-%I \sbox{box}
-
-\def\dodefinieerhbox[#1][#2]%
- {\setvalue{hbox#1}##1%
- {\hbox to #2{\begstrut##1\endstrut\hss}}}
-
-\def\definieerhbox%
- {\dodoubleargument\dodefinieerhbox}
-
-\def\lrcbox#1#2#%
- {\vbox#2\bgroup
- \let\\=\endgraf
- \forgetall#1\let\next=}
-
-\def\lbox%
- {\lrcbox\raggedleft}
-
-\def\rbox%
- {\lrcbox\raggedright}
-
-\def\cbox%
- {\lrcbox\raggedcenter}
-
-\def\dosetraggedbox#1%
- {\processaction
- [#1]
- [ \v!links=>\def\raggedbox{\lbox},
- \v!rechts=>\def\raggedbox{\rbox},
- \v!midden=>\def\raggedbox{\cbox},
- \v!nee=>\def\raggedbox{\vbox\bgroup\raggedright\let\next=},
- \s!default=>\def\raggedbox{\vbox},
- \s!unknown=>\def\raggedbox{\vbox}]}
-
-\def\dosetraggedcommand#1%
- {\processaction
- [#1]
- [ \v!links=>\def\raggedcommand{\raggedleft},
- \v!rechts=>\def\raggedcommand{\raggedright},
- \v!midden=>\def\raggedcommand{\raggedcenter},
- \v!nee=>\def\raggedcommand{\raggedright},
- \s!default=>\def\raggedcommand{\raggedcenter},
- \s!unknown=>\def\raggedcommand{}]}
-
-%I n=Blokken
-%I c=\stelplaatsblokkenin,\stelblokkopjesin
-%I c=\definieerplaatsblok,\stelplaatsblokin
-%I c=\reserveer,\leeg,\plaats,\volledigelijstmet,\plaatslijstmet
-%I
-%I Figuren, tabellen, grafieken enz. kunnen in de tekst
-%I worden geplaatst met het commando:
-%I
-%I \plaats<bloknaam>[voorkeur][referentie]{titel}{blok}
-%I
-%I Als voorkeur kan worden opgegeven:
-%I
-%I hier bij voorkeur op deze plaats in de tekst
-%I forceer per se op deze plaats in de tekst
-%I pagina op een nieuwe pagina
-%I boven bovenaan de huidige pagina
-%I onder onderaan de huidige pagina
-%I
-%I links links in de paragraaf
-%I rechts rechts in de paragraaf
-%I
-%I inlinker in linker marge (gelijke hoogte)
-%I inrechter in rechter marge (gelijke hoogte)
-%I inmarge in linker/rechter marge (gelijke hoogte)
-%I marge in de marge
-%P
-%I Als er op de huidige bladzijde geen plaats is, dan wordt
-%I standaard de figuur verplaatst (eerste vier opties) en/of
-%I wordt overgegaan naar een nieuwe bladzijde (laatste twee
-%I opties.
-%I
-%I Men kan plaatsen afdwingen door het trefwoord altijd
-%I mee te geven: \plaats[hier,altijd][]{}{}. Er zijn dan
-%I twee runs nodig, omdat de nummering van de blokken moet
-%I worden aangepast.
-%I
-%I Als in plaats van een titel 'geen' wordt meegegeven, wordt
-%I geen titel geplaatst.
-%I
-%I Als het blok nog onbekend is, kan in plaats van het blok
-%I een van de volgende commando's worden meegegeven:
-%I
-%I \leeg<bloknaam>
-%I \lege<bloknaam>
-%P
-%I Het is mogelijk ruimte voor een blok te reserveren:
-%I
-%I \reserveer<bloknaam>[hoogte=,breedte=,kader=][voorkeur]
-%I [referentie]{titel}
-%I
-%I Beide commando's kunnen ook gegeven worden zonder [],
-%I dus in de vorm
-%I
-%I \plaats<bloknaam>{titel}{blok}
-%I \reserveer<bloknaam>{titel}
-%I
-%I Ten behoeve van een consistente verwijzing wordt het
-%I commando:
-%I
-%I \in<bloknaam>[referentie]
-%I
-%I gedefinieerd. Dit levert in de tekst op:
-%I
-%I 'in <bloknaam> <nummer>'
-%P
-%I Blokken kunnen worden gedefinieerd met het commando:
-%I
-%I \definieerplaatsblok[blok][blokken]
-%I
-%I Hierna zijn de volgende commando's beschikbaar:
-%I
-%I \plaatsblok[plaats][referentie]{titel}{blok}
-%I \reserveerblok[afmetingen][plaats][referentie]{titel}
-%I \leegblok
-%I
-%I Het is mogelijk een en ander in te stellen met het
-%I commando:
-%I
-%I \stelplaatsblokin[blok][hoogte=,breedte=,kader=,
-%I bovenkader=,onderkader=,linkerkader=,rechterkader=,
-%I paginaovergangen=]
-%I
-%I De hoogte en breedte hebben betrekking op de te reserveren
-%I ruimte.
-%P
-%I Naast de eerder genoemde commando's zijn nog beschikbaar:
-%I
-%I \plaatslijstmetblokken
-%I \volledigelijstmetblokken
-%I
-%I en een (extra) commando om tekst naast een blok (hier met
-%I de naam 'blok') te plaatsen:
-%I
-%I \startbloktekst[plaats][referentie]{kop}{blok}
-%I ...
-%I \stopbloktekst
-%I
-%I Mogelijke plaatsen zijn 'links', 'rechts', 'hoog', 'laag' en
-%I 'midden'. Ook is een combinatie van deze instellingen
-%I mogelijk, bijvoorbeeld [links,hoog]. De instelling 'offset'
-%I resulteert in een verschuiving van 1 regel.
-%P
-%I Blokken die tussen de tekst staan kunnen links, rechts of in
-%I het midden worden uitgelijnd. De plaats wordt ingesteld met:
-%I
-%I \stelplaatsblokkenin[plaats=,breedte=,kader=,bovenkader=,
-%I onderkader=,linkerkader=,rechterkader=,offset=,voorwit=,
-%I nawit=,marge=]
-%I
-%I De genummerde kopjes bij blokken kunnen worden ingesteld
-%I met:
-%I
-%I \stelblokkopjesin[plaats=,voor=,tussen=,na=,letter=,
-%I kopletter=,breedte=,nummer=,uitlijnen=]
-%I
-%I waarbij als plaats kan worden meegegeven: 'boven', 'onder',
-%I 'geen', 'hoog', 'laag' of 'midden'. Als breedte kan 'passend'
-%I of 'max' worden meegegeven. De parameter nummer kan 'ja' of
-%I 'nee' zijn. Als breedte=max, dan wordt het kopje over de
-%I hele breedte geplaatst. In dat geval kan uitlijnen worden
-%I ingesteld: 'links', 'midden' of 'rechts'.
-%P
-%I Als er geen plaats is, worden plaatsblokken tijdelijk
-%I achtergehouden. De opgespaarde blokken worden op de
-%I volgende bladzijde(n) geplaatst. Dit plaatsen is te
-%I beinvloeden met:
-%I
-%I \stelplaatsblokkenin[nboven=,nonder=,nregels=]
-%I
-%I Standaard worden maximaal 2 blokken bovenaan de
-%I bladzijde geplaatst en 0 blokken onder. Er wordt overgegaan
-%I op een nieuwe bladzijde als het aantal regels groter is
-%I dan 4. Deze waarden kunnen worden ingesteld.
-%P
-%I Kopjes boven lijsten en labels voor nummers kunnen worden
-%I ingesteld met de elders beschreven commando's:
-%I
-%I \stellabeltekstin[label=...]
-%I \stelkoptekstin[tekst=...]
-%I
-%I Standaard zijn deze ingesteld op de opgegeven namen.
-
-\def\stelplaatsblokkenin%
- {\dodoubleargument\getparameters[\??bk]}
-
-\def\stelblokkopjesin%
- {\dodoubleargument\getparameters[\??kj]}%
-
-\def\dostelplaatsblokin[#1][#2]%
- {\getparameters[\??fl#1][#2]}
-
-\def\stelplaatsblokin%
- {\dodoubleargument\dostelplaatsblokin}
-
-\def\dostelblokkopjein[#1][#2]%
- {\getparameters[\??kj#1][#2]}
-
-\def\stelblokkopjein%
- {\dodoubleargument\dostelblokkopjein}
-
-\def\doleegblok#1%
- {\localframed
- [\??fl#1][\c!kader=\v!aan]%
- {\getmessage{\m!floatblocks}{12}}}
-
-\def\docomplexplaatsblok[#1][#2][#3]#4%
- {\ifmargeblokken
- \doifinset{\v!marge}{#2}
- {\bgroup
- \everypar{\egroup\the\everypar}%
- \hsize=\@@mbbreedte}%
- \fi
- \global\insidefloattrue
- \dowithnextbox
- {\docompletefloat
- {#1}{#3}{#1}{#2}{\labeltext{#1}}{#4}
- {\box\nextbox}}%
- \vbox}
-
-\def\docomplexstarttekstblok[#1][#2][#3]%
- {\flushsidefloats % hoort eigenlijk niet hier
- \docomplexplaatsblok[#1][\v!tekst,#2,\v!links][#3]}
-
-\def\docomplexreserveerblok[#1][#2][#3][#4]#5%
- {\getvalue{\e!plaats#1}[#3][#4]{#5}{\localframed[\??fl#1][#2]{#1}}}
-
-\def\docomplexstartreserveertekstblok[#1][#2][#3][#4]%
- {\flushsidefloats % hoort eigenlijk niet hier
- \docomplexreserveerblok[#1][#2][\v!tekst,#3,\v!links][#4]}
-
-\def\dodefinieerplaatsblok[#1][#2]% #1=naam #2=meervoud
- {\presetlocalframed[\??fl#1]%
- \stelplaatsblokin
- [#1]
- [\c!breedte=15\korpsgrootte,
- \c!hoogte=10\korpsgrootte,
- \c!kader=\@@bkkader,
- \c!straal=\@@bkstraal,
- \c!hoek=\@@bkhoek,
- \c!achtergrond=\@@bkachtergrond,
- \c!achtergrondraster=\@@bkachtergrondraster,
- \c!achtergrondkleur=\@@bkachtergrondkleur,
- \c!bovenkader=\@@bkbovenkader,
- \c!onderkader=\@@bkonderkader,
- \c!linkerkader=\@@bklinkerkader,
- \c!rechterkader=\@@bkrechterkader,
- \c!paginaovergangen=]%
- \stelblokkopjein
- [#1]
- [\c!plaats=\@@kjplaats,
- %\c!voor=\@@kjvoor,
- \c!tussen=\@@kjtussen,
- %\c!na=\@@kjna,
- \c!breedte=\@@kjbreedte,
- \c!kopletter=\@@kjkopletter,
- \c!letter=\@@kjletter,
- \c!kleur=\@@kjkleur,
- \c!uitlijnen=\@@kjuitlijnen,
- \c!nummer=\@@kjnummer,
- \c!wijze=\@@kjwijze,
- \c!blokwijze=\@@kjblokwijze,
- \c!sectienummer=\@@kjsectienummer,
- \c!conversie=\@@kjconversie]%
- \doorlabelen
- [#1]
- [\c!tekst=#1,
- \c!plaats=\v!intekst,
- \c!wijze=\getvalue{\??kj#1\c!wijze},
- \c!blokwijze=\getvalue{\??kj#1\c!blokwijze},
- \c!sectienummer=\getvalue{\??kj#1\c!sectienummer},
- \c!conversie=\getvalue{\??kj#1\c!conversie}]%
- \presetlabeltext[#1=\Woord{#1}~]%
- \presetheadtext[#2=\Woord{#2}]%
- \definieerlijst[#1]%
- \setvalue{\e!plaats\e!lijstmet#2}%
- {\dodoubleempty\doplaatslijst[#1]}%
- \setvalue{\e!volledige\e!lijstmet#2}%
- {\dotripleempty\dodovolledigelijst[#1][#2]}%
- \setvalue{\e!plaats#1}%
- {\dotripleempty\docomplexplaatsblok[#1]}%
- \setvalue{\e!reserveer#1}%
- {\doquadrupleempty\docomplexreserveerblok[#1]}%
- \setvalue{\e!start#1\e!tekst}%
- {\dotripleempty\docomplexstarttekstblok[#1]}%
- \setvalue{\e!stop#1\e!tekst}%
- {\stoptextfloat{#1}}%
- \setvalue{\e!start\e!reserveer#1\e!tekst}%
- {\doquadrupleempty\docomplexstartreserveertekstblok[#1]}%
- \setvalue{\e!stop\e!reserveer#1\e!tekst}%
- {\stoptextfloat{#1}}%
- \setvalue{\e!lege#1}%
- {\doleegblok{#1}}%
- \setvalue{\e!leeg#1}%
- {\doleegblok{#1}}}
-
-%\setvalue{\c!in#1}[##1]%
-% {\c!in\normalspace\in{\labeltext{#1}}[##1]}}
-
-\def\definieerplaatsblok%
- {\dodoubleargument\dodefinieerplaatsblok}
-
-% De onderstaande macro's ondersteunen het zetten van tekst
-% rond figuren. De macro's zijn ontworpen door Daniel Comenetz
-% en gepubliceerd in TUGBoat Volume 14 (1993), No. 1: Anchored
-% Figures at Either Margin. De macro's zijn slechts op enkele
-% punten door mij aangepast.
-
-% afhankelijke variabelen
-%
-% \overgap vervangen door \floatsidetopskip
-% \sidegap vervangen door \floatsideskip
-% \undergap vervangen door \floatsidebottomskip
-%
-% \prskp vervangen door \tussenwit
-
-% toegevoegde macro's/aanroepen
-%
-% \logsidefloat : loginformatie
-% \flushsidefloats : nodig voor koppen
-
-% recente wijzigingen:
-%
-% namen aangepast: \float... enz. i.p.v. \pic
-
-% Pas op: \EveryPar{\EveryPar{}\margetitel{whatever}}
-% \plaatsfiguur[links]{}{} moet goed gaan. In dat geval
-% begint de tekst terecht wat lager.
-
-\newdimen\sidefloatheight % includes the topskip
-\newdimen\sidefloatwidth
-\newdimen\sidefloathsize
-\newdimen\sidefloatvsize \def\nofloatvsize{-1pt }
-
-\newbox\floatbottom
-
-\newif\ifrightfloat
-\newif\ifmarginfloat
-\newif\ifroomforfloat
-\newif\iffloatshort
-\newif\iffloatflag
-\newif\iffloatrighteqo
-\newif\iffloatlefteqo
-
-\let\floatrighteqo=\eqno
-\let\floatleftleqo=\leqno
-
-% Watch it!
-
-\everypar ={\flushfootnotes\checksidefloat\checkindentation}
-
-% Watch it even more! In inner, gaat't mis omdat daar
-% pagetotal enz niet zijn aangepast. Inner kan overigens niet
-% betrouwbaar worden getest!
-
-\everypar ={\flushfootnotes\ifinner\else\checksidefloat\fi\flushmargincontents\checkindentation}
-\neverypar ={}%\autopostponefootnotes}
-\everydisplay={\flushfootnotes\adjustsidefloatdisplaylines}
-
-\def\flushsidefloats%
- {\par
- \!!heighta=\sidefloatvsize
- \advance\!!heighta by -\pagetotal
- \ifdim\!!heighta>\!!zeropoint\relax
- \witruimte % nog cheken op interferentie
- \kern\!!heighta\relax
- \fi
- \global\sidefloatvsize=\nofloatvsize
- \floatflagfalse}
-
-\def\flushsidefloatsafterpar%
- {\xdef\oldpagetotal{\the\pagetotal}%
- \gdef\checksidefloat%
- {\dochecksidefloat
- \ifdim\oldpagetotal=\pagetotal \else
- \xdef\checksidefloat{\dochecksidefloat}%
- \flushsidefloats
- \fi}}
-
-\let\logsidefloat=\relax
-
-\def\pushpenalties%
- {\let\oldwidowpenalty=\widowpenalty
- \let\oldclubpenalty=\clubpenalty
- \let\oldbrokenpenalty=\brokenpenalty
- \widowpenalty=1
- \clubpenalty=2
- \brokenpenalty=1
- \let\pushpenalties=\relax
- \def\poppenalties%
- {\widowpenalty=\oldwidowpenalty
- \clubpenalty=\oldclubpenalty
- \brokenpenalty=\oldbrokenpenalty}}
-
-\let\poppenalties=\relax
-
-\def\restorepenalties%
- {\ifnum\outputpenalty=\!!tenthousand\relax
- \else
- \penalty\outputpenalty
- \fi}
-
-\def\sidefloatoutput%
- {\iffloatshort
- \unvbox255\relax
- \setbox\floatbottom=\lastbox
- \ifdim\wd\floatbottom>\sidefloathsize
- \penalty-201\relax
- \box\floatbottom
- \else
- \ifvoid\floatbottom
- \else
- \restoreleftindent
- \ifdim\wd\floatbottom<\sidefloathsize
- \parskip=\!!zeropoint
- %\noindent
- \vadjust{\penalty-1}%
- \iffloatlefteqo
- \global\floatlefteqofalse
- \else
- \advance\sidefloathsize by -\wd\floatbottom
- \iffloatrighteqo
- \global\floatrighteqofalse
- \else
- \divide\sidefloathsize by 2\relax
- \fi
- \hskip\sidefloathsize
- \fi
- \fi
- \box\floatbottom
- \restorepenalties
- \fi
- \fi
- \global\holdinginserts=0\relax
- \global\floatshortfalse
- \else
- \finaloutput{\unvbox255}%
- \global\sidefloatvsize=\nofloatvsize
- \poppenalties
- \fi}
-
-\def\restoreleftindent%
- {\ifrightfloat
- \else
- \parskip=\!!zeropoint
- \noindent
- \vadjust{\penalty-1}%
- \hskip\sidefloatwidth
- \fi}
-
-\def\eqno%
- {\iffloatshort
- \global\floatrighteqotrue
- \fi
- \floatrighteqo}
-
-\def\leftmarginfloat#1%
- {\rightfloatfalse\marginfloattrue\putsidefloat{#1}}
-
-\def\rightmarginfloat#1%
- {\rightfloattrue\marginfloattrue\putsidefloat{#1}}
-
-\def\leftfloat#1%
- {\rightfloatfalse\marginfloatfalse\putsidefloat{#1}}
-
-\def\rightfloat#1%
- {\rightfloattrue\marginfloatfalse\putsidefloat{#1}}
-
-\def\putsidefloat#1%
- {\par
- \witruimte
- \previoussidefloat
- \stallsidefloat
- \setbox\floatbox=\hbox{\vbox{\vskip\sidefloattopoffset#1}}
- \measuresidefloat
- \ifroomforfloat
- \setsidefloat
- \else
- \tosssidefloat
- \measuresidefloat
- \stallsidefloat
- \setsidefloat
- \fi}
-
-\def\progresssidefloat%
- {\!!heighta=\sidefloatvsize
- \iffloatflag
- \advance\!!heighta by -\dimen3\relax
- \floatflagfalse
- \else
- \advance\!!heighta by -\pagetotal
- \fi}
-
-\def\tosssidefloat%
- {\vfill\eject}
-
-\def\measuresidefloat%
- {\floatflagtrue
- \dimen3=\pagetotal
- \ifmarginfloat
- \sidefloatwidth=\!!zeropoint
- \else
- \sidefloatwidth=\wd\floatbox
- \advance\sidefloatwidth by \floatsideskip
- \fi
- \sidefloathsize=\hsize
- \advance\sidefloathsize by -\sidefloatwidth
- \sidefloatheight=\ht\floatbox
- %\advance\sidefloatheight by \dp\floatbox % NJET
- \advance\sidefloatheight by \sidefloattopskip
- \global\sidefloatvsize=\sidefloatheight
- \global\advance\sidefloatvsize by \dimen3\relax
- \dimen0=\sidefloatvsize
- \advance\dimen0 by -\baselineskip
- \ifdim\dimen0>.99\pagegoal
- \roomforfloatfalse
- \else
- \dimen0=\pagegoal
- \advance\dimen0 by -\sidefloatvsize
- \ifdim\dimen0<\sidefloatbottomskip
- \global\advance\sidefloatvsize by \dimen0\relax
- \floatshorttrue
- \pushpenalties
- \holdinginserts=1\relax
- \else
- \global\advance\sidefloatvsize\sidefloatbottomskip
- \floatshortfalse
- \fi
- \roomforfloattrue
- \fi}
-
-\def\setsidefloat%
- {\kern\sidefloattopskip
- \oldprevdepth=\prevdepth
- \nointerlineskip
- \bgroup
- \everypar={}\relax
- \parskip=\!!zeropoint
- \logsidefloat
- \ifrightfloat
- \hfill
- \ifmarginfloat
- \rlap{\hskip\rechtermargeafstand\unhbox\floatbox}%
- \else
- \unhbox\floatbox
- \fi
- \else
- \noindent
- \ifmarginfloat
- \llap{\unhbox\floatbox\hskip\linkermargeafstand}%
- \else
- \unhbox\floatbox
- \fi
- \hfill
- \fi
- \egroup
- \par
- \kern-\sidefloatheight
- \penalty10001\relax
- \normalbaselines
- \prevdepth=\oldprevdepth
- %\noindent
- \resetsidefloatparagraph
- \ignorespaces}
-
-\newcount\sidefloatparagraph
-
-\def\iffirstsidefloatparagraph%
- {\ifnum\sidefloatparagraph=1\relax}
-
-\def\setsidefloatparagraph%
- {\global\advance\sidefloatparagraph by 1\relax}
-
-\def\resetsidefloatparagraph%
- {\global\sidefloatparagraph=0\relax}
-
-\def\dochecksidefloat%
- {\progresssidefloat
- \ifdim\!!heighta>\!!zeropoint\relax
- \advance\!!heighta by \sidefloatbottomskip
- \!!counta=\!!heighta\relax
- \divide\!!counta by \baselineskip
- \ifnum\!!counta>0\relax
- \ifrightfloat
- \hangindent=-\sidefloatwidth
- \else
- \hangindent=\sidefloatwidth
- \fi
- \hangafter=-\!!counta
- \fi
- \setsidefloatparagraph
- \else
- \resetsidefloatparagraph
- \fi
- \parskip=\tussenwit}
-
-\def\checksidefloat%
- {\dochecksidefloat}
-
-\def\doadjustsidefloatdisplaylines%
- {\par
- \vskip-\parskip
- \noindent
- \ignorespaces}
-
-\def\adjustsidefloatdisplaylines%
- {\aftergroup\doadjustsidefloatdisplaylines}
-
-\def\previoussidefloat%
- {\progresssidefloat
- \ifdim\!!heighta>\!!zeropoint\relax
- \iffloatshort
- \floatshortfalse
- \tosssidefloat
- \else
- \kern\!!heighta\relax
- \fi
- \fi}
-
-\def\stallsidefloat%
- {\!!counta=\pageshrink
- \divide\!!counta by \baselineskip
- \advance\!!counta by 1\relax
- \parskip=\!!zeropoint
- \dorecurse{\!!counta}{\line{}}
- \kern-\!!counta\baselineskip
- \penalty0\relax}
-
-% De onderstaande macro's zijn verantwoordelijk voor het plaatsen
-% van floats. De macro's moeten nog worden aangepast en
-% uitgebreid:
-%
-% - nofloatpermitted : top, bot en mid counters en geen topins
-% als reeds midfloat of botfloat
-%
-% - links, rechts, midden als niet hangend
-
-\newif\ifsomefloatwaiting \somefloatwaitingfalse
-\newif\ifroomforfloat \roomforfloattrue
-\newif\ifnofloatpermitted \nofloatpermittedfalse
-\newif\iffloatsonpage \floatsonpagefalse
-
-\newcount\totalnoffloats \totalnoffloats=0
-\newcount\savednoffloats \savednoffloats=0
-\newcount\noffloatinserts \noffloatinserts=0
-
-\newbox\floatlist
-
-\newinsert\botins
-
-\skip\botins=\!!zeropoint
-\count\botins=\!!thousand
-\dimen\botins=\maxdimen
-
-\newdimen\topinserted
-\topinserted=\!!zeropoint
-
-\newdimen\botinserted
-\botinserted=\!!zeropoint
-
-\newif\ifflushingfloats
-\flushingfloatsfalse
-
-\newbox\floattext
-
-\newdimen\floattextwidth
-\newdimen\floattextheight
-
-\newbox\floatbox
-
-\newdimen\floatwidth
-\newdimen\floatheight
-
-% Er wordt bij \v!altijd als dat nodig is hernummerd.
-% Daarbij wordt gebruik gemaakt van de opgeslagen nummers en
-% volgorde.
-
-\definetwopasslist{\s!float}
-
-\def\dofloatreference%
- {\doglobal\increment\numberedfloat
- \edef\dodofloatreference%
- {\writeutilitycommand%
- {\twopassentry%
- {\s!float}%
- {\numberedfloat}%
- {\hetnummer}}}%
- \dodofloatreference}
-
-\def\redofloatorder#1%
- {\doglobal\increment\nofplacedfloats\relax
- \gettwopassdata{\s!float}%
- \iftwopassdatafound
- \doifnot{\hetnummer}{\twopassdata}
- {\edef\oldhetnummer{\hetnummer}%
- \xdef\hetnummer{\twopassdata}%
- \showmessage
- {\m!floatblocks}{1}
- {\nofplacedfloats,#1 \oldhetnummer,\hetnummer}}%
- \fi}
-
-% In \dofloatinfomessage wordt {{ }} gebruikt omdat anders
-% binnen \startuitstellen...\stopuitstellen geen goede
-% melding in de marge volgt: \ifinner is dan namelijk true.
-
-\def\dofloatinfomessage#1#2#3%
- {\bgroup
- \showmessage{\m!floatblocks}{#2}{#3}%
- \@EA\floatinfo\@EA#1\@EA{\currentmessagetext}%
- \egroup}
-
-\def\dosavefloatinfo%
- {\dofloatinfomessage{>}{2}{\the\totalnoffloats}}
-
-\def\dofloatflushedinfo%
- {\!!counta=\totalnoffloats\relax
- \advance\!!counta by -\savednoffloats\relax%
- \dofloatinfomessage{<}{3}{\the\!!counta}}
-
-\def\doinsertfloatinfo%
- {\dofloatinfomessage{<}{4}{\the\totalnoffloats}}
-
-% ook voetnoten saven
-
-\def\dosavefloat%
- {\global\setbox\floatlist=\vbox
- {\nointerlineskip
- \box\floatbox\relax
- \unvbox\floatlist}%
- \global\advance\savednoffloats by 1\relax
- \global\somefloatwaitingtrue
- \dosavefloatinfo}
-
-\def\doresavefloat%
- {\global\setbox\floatlist=\vbox
- {\nointerlineskip
- \unvbox\floatlist
- \box\floatbox}%
- \global\advance\savednoffloats by 1\relax
- \global\somefloatwaitingtrue}
-
-\def\doreversesavefloat%
- {\global\setbox\floatlist=\vbox
- {\nointerlineskip
- \unvbox\floatlist
- \box\floatbox}%
- \global\advance\savednoffloats by 1\relax
- \global\somefloatwaitingtrue
- \dosavefloatinfo}
-
-\def\checkwaitingfloats#1%
- {\ifsomefloatwaiting
- \doifinsetelse{\v!altijd}{#1}
- {\showmessage{\m!floatblocks}{5}{}}
- {\doflushfloats}%
- \fi}
-
-\def\doflushfloats%
- {\global\floatsonpagefalse
- \global\flushingfloatstrue
- \ifsomefloatwaiting
- \par
- \ifvmode\prevdepth=\maxdimen\fi % prevents whitespace
- \dodoflushfloats
- \fi
- \global\savednoffloats=0
- \global\somefloatwaitingfalse
- \global\flushingfloatsfalse}
-
-\def\dodoflushfloats% moet nog beter: als precies passend, niet onder baseline
- {\ifsomefloatwaiting
- \bgroup % \box\floatbox can be in use!
- \dogetfloat
- %\forgetall % NJET!
- \witruimte
- \blanko[\@@bkvoorwit]
- \flushfloatbox
- %\ifnum\savednoffloats>1 % REMOVED
- %\else
- \blanko[\@@bknawit]
- %\fi
- \egroup
- \dofloatflushedinfo
- \expandafter\dodoflushfloats
- \fi}
-
-\newbox\globalscratchbox
-
-\def\dogetfloat%
- {\ifsomefloatwaiting
- \global\setbox\floatlist=\vbox
- {\unvbox\floatlist
- \global\setbox\globalscratchbox=\lastbox}%
- \setbox\floatbox=\box\globalscratchbox % local !
- \global\advance\savednoffloats by -1\relax
- \ifnum\savednoffloats=0\relax
- \global\somefloatwaitingfalse
- \fi
- \else
- \global\savednoffloats=0\relax
- \global\setboxfloatbox=\box\voidb@x
- \fi}
-
-\def\dotopfloat%
- {\ifdim\topinserted=\!!zeropoint\relax
- \topofinserttrue
- \else
- \topofinsertfalse
- \fi
- \global\advance\topinserted by \ht\floatbox
- \global\advance\topinserted by \dp\floatbox
- \global\advance\topinserted by \floatbottomskip
- \insert\topins
- {\forgetall
- \iftopofinsert
- \kern-\lineskip\par\prevdepth=\maxdimen
- \else
- %\blanko[-\@@bknawit,\@@bkvoorwit]% inserts can't look back
- \betweenfloatblanko
- \fi
- \flushfloatbox
- \blanko[\@@bknawit]}%
- \doinsertfloatinfo}
-
-% \loop ...\repeat doesn't work here, but why?
-%
-% \def\dosettopinserts%
-% {\ifsomefloatwaiting
-% \noffloatinserts=0\relax
-% \loop
-% \ifnum\noffloatinserts<\noftopfloats
-% ....
-% \repeat
-% \fi}
-%
-% so:
-
-\def\dodosettopinserts%
- {\ifnum\noffloatinserts<\noftopfloats
- \dogetfloat
- \ifdim\topinserted=\!!zeropoint\relax
- \topofinserttrue
- \else
- \topofinsertfalse
- \fi
- \global\advance\topinserted by \ht\floatbox
- \global\advance\topinserted by \dp\floatbox
- \global\advance\topinserted by \floatbottomskip\relax
- \ifdim\topinserted<\teksthoogte\relax
- \xdef\totaltopinserted{\the\topinserted}%
- \insert\topins
- {\forgetall
- \iftopofinsert
- \kern-\lineskip\par\prevdepth=\maxdimen
- \else
- %\blanko[-\@@bknawit,\@@bkvoorwit]% inserts can't look back
- \betweenfloatblanko
- \fi
- \flushfloatbox
- \blanko[\@@bknawit]}%
- \ifsomefloatwaiting
- \advance\noffloatinserts by 1
- \else
- \noffloatinserts=\noftopfloats\relax
- \fi
- \dofloatflushedinfo
- \else
- \doresavefloat
- \noffloatinserts=\noftopfloats\relax
- \fi
- \else
- \ifsomefloatwaiting
- \showmessage{\m!floatblocks}{6}{\the\noftopfloats}%
- \fi
- \let\dodosettopinserts=\relax
- \fi
- \dodosettopinserts}
-
-\def\dosettopinserts%
- {\bgroup
- \ifsomefloatwaiting
- \noffloatinserts=0\relax
- \let\totaltopinserted=\!!zeropoint\relax
- \dodosettopinserts
- \ifnum\@@bknonder=0\relax
- \ifnum\@@bknregels>0\relax
- \ifdim\totaltopinserted>\!!zeropoint\relax
- \dimen0=\lineheight
- \dimen0=\@@bknregels\dimen0\relax
- \advance\dimen0 by \totaltopinserted\relax
- \ifdim\dimen0>\teksthoogte
- \showmessage{\m!floatblocks}{8}{\@@bknregels}%
- \null\vfilll\eject
- \fi
- \fi
- \fi
- \fi
- \fi
- \egroup}
-
-\def\dodosetbotinserts%
- {\ifnum\noffloatinserts<\nofbotfloats\relax
- \dogetfloat
- \global\advance\botinserted by \ht\floatbox\relax
- \global\advance\botinserted by \dp\floatbox\relax
- \global\advance\botinserted by \floattopskip\relax
- \ifdim\botinserted<\pagegoal\relax
- \insert\botins
- {\forgetall
- \blanko[\@@bkvoorwit]%
- \flushfloatbox}%
- \ifsomefloatwaiting
- \advance\noffloatinserts by 1
- \else
- \noffloatinserts=\nofbotfloats
- \fi
- \dofloatflushedinfo
- \else
- \doresavefloat
- \noffloatinserts=\nofbotfloats\relax
- \fi
- \global\nofloatpermittedtrue % vgl topfloats s!
- \else
- \ifsomefloatwaiting
- \showmessage{\m!floatblocks}{7}{\the\nofbotfloats}%
- \fi
- \let\dodosetbotinserts=\relax
- \fi
- \dodosetbotinserts}
-
-\def\dosetbotinserts%
- {\bgroup
- \ifsomefloatwaiting
- \noffloatinserts=0\relax
- \dodosetbotinserts
- \fi
- \egroup}
-
-\def\dobotfloat%
- {\global\advance\botinserted by \ht\floatbox
- \global\advance\botinserted by \dp\floatbox
- \global\advance\botinserted by \floattopskip
- \insert\botins
- {\forgetall
- \blanko[\@@bkvoorwit]%
- \flushfloatbox}%
- %\global\nofloatpermittedtrue
- \doinsertfloatinfo}
-
-\def\dosetbothinserts%
- {\ifflushingfloats
- \global\topinserted=\!!zeropoint\relax
- \global\botinserted=\!!zeropoint\relax
- \else
- \global\topinserted=\!!zeropoint\relax
- \dosettopinserts
- \global\botinserted=\topinserted\relax
- \dosetbotinserts
- \fi}
-
-\def\dotopinsertions%
- {\ifvoid\topins\else
- \unvbox\topins
- \fi
- \global\topinserted=\!!zeropoint\relax}
-
-\def\dobotinsertions%
- {\ifvoid\botins\else
- \ifr@ggedbottom % \vfill is nieuw
- \unvbox\botins\vfill
- \else
- \vfill\unvbox\botins
- \fi
- \fi
- \global\botinserted=\!!zeropoint\relax
- \global\nofloatpermittedfalse}
-
-\newif\iftopofinsert
-\newif\iftestfloatbox %\testfloatboxtrue
-
-\def\flushfloatbox% nog verder doorvoeren en meer info in marge
- {\iftestfloatbox
- \ruledhbox{\box\floatbox}%
- \else
- \box\floatbox
- \fi}
-
-% beter de laatste skip buiten de \insert uitvoeren,
-% bovendien bij volle flush onder baseline.
-
-\def\betweenfloatblanko% assumes that \@@bknawit is present
- {\bgroup
- \setbox0=\vbox{\strut\blanko[\@@bkvoorwit]\strut}%
- \setbox2=\vbox{\strut\blanko[\@@bknawit]\strut}%
- \ifdim\ht0>\ht2
- \blanko[-\@@bknawit,\@@bkvoorwit]
- \fi
- \egroup}
-
-\def\doroomfloat%
- {\ifnofloatpermitted
- \global\roomforfloatfalse
- \else
- \dimen0=\pagetotal
- \advance\dimen0 by \ht\floatbox
- \advance\dimen0 by \dp\floatbox
- \advance\dimen0 by \floattopskip
- \advance\dimen0 by -\pageshrink % toegevoegd
- \ifdim\dimen0>\pagegoal
- \global\roomforfloatfalse
- \else
- \global\roomforfloattrue
- \fi
- \fi}
-
-\def\doexecfloat% spacing between two successive must be better
- {\baselinecorrection
- \witruimte
- \blanko[\@@bkvoorwit]%
- \flushfloatbox
- \blanko[\@@bknawit]%
- \doinsertfloatinfo}
-
-\def\somefixdfloat[#1]%
- {\doroomfloat
- \ifroomforfloat\else
- \goodbreak
- \fi
- \showmessage{\m!floatblocks}{9}{}%
- \doexecfloat}
-
-\def\somesidefloat[#1]% links, rechts NOG TESTEN EN AANPASSEN
- {\checkwaitingfloats{#1}%
- \def\logsidefloat%
- {\doinsertfloatinfo}%
- \setbox\floatbox=\vbox{\box\floatbox}%
- \wd\floatbox=\floatwidth
- \processfirstactioninset
- [#1]
- [ \v!links=>\leftfloat{\box\floatbox},
- \v!rechts=>\rightfloat{\box\floatbox},
- \v!inlinker=>\leftmarginfloat{\box\floatbox},
- \v!inrechter=>\rightmarginfloat{\box\floatbox},
- \v!inmarge=>{\doinmargenormal\leftmarginfloat\rightmarginfloat[]{\box\floatbox}}]%
- \doifinset{\v!lang}{#1}
- {\flushsidefloatsafterpar}}
-
-\def\sometextfloat[#1]% lang, links, rechts, hoog, midden, laag, offset
- {\checkwaitingfloats{#1}%
- \global\floattextwidth=\hsize
- \global\floatwidth=\wd\floatbox
- \global\floatheight=\ht\floatbox
- \global\advance\floattextwidth by -\floatwidth
- \global\advance\floattextwidth by -\@@bkmarge\relax % was \tfskipsize
- \doifinsetelse{\v!lang}{#1}
- {\floattextheight=\pagegoal
- \advance\floattextheight by -\pagetotal
- \advance\floattextheight by -\bigskipamount % lelijk
- \ifdim\floattextheight>\teksthoogte
- \floattextheight=\teksthoogte
- \fi
- \boxmaxdepth=\!!zeropoint\relax % toegevoegd
- \ifdim\floattextheight<\floatheight
- \floattextheight=\floatheight
- \fi
- \setbox\floattext=\vbox to \floattextheight}
- {\setbox\floattext=\vbox}%
- \bgroup
- \blanko[\v!blokkeer]
- \hsize\floattextwidth
- \ignorespaces}
-
-\def\stoptextfloat#1%
- {\egroup
- \doifnotinset{\v!lang}{#1}%
- {\ifdim\ht\floattext<\floatheight
- \floattextheight=\floatheight
- \else
- \floattextheight=\ht\floattext
- \fi}%
- \setbox\floatbox=\vbox to \floattextheight
- {\hsize\floatwidth
- \box\floatbox
- \vfill}%
- \setbox\floattext=\vbox to \floattextheight
- {\hsize\floattextwidth
- \doifinsetelse{\v!laag}{#1}
- {\vfill
- \box\floattext
- \doifinset{\c!offset}{#1}{\witruimte\blanko}}
- {\doifinsetelse{\v!midden}{#1}
- {\vfill
- \box\floattext
- \vfill}
- {\doifinset{\c!offset}{#1}{\witruimte\blanko}%
- \box\floattext
- \vfill}}}%
- \doifinsetelse{\c!rechts}{#1}%
- {\setbox\floatbox=\hbox to \hsize
- {\box\floattext
- \hfill
- \box\floatbox}}
- {\setbox\floatbox=\hbox to \hsize
- {\box\floatbox
- \hfill
- \box\floattext}}%
- \baselinecorrection
- \witruimte
- \blanko[\@@bkvoorwit]%
- \doifnotinset{\v!lang}{#1}%
- {\dp\floatbox=\dp\strutbox}% % toegevoegd
- \box\floatbox
- \blanko[\@@bknawit]%
- \doinsertfloatinfo}
-
-\def\somefacefloat[#1]% links, rechts, midden, hoog, midden, laag
- {\checkwaitingfloats{#1}%
- \startnaast\box\floatbox\stopnaast
- \doinsertfloatinfo}
-
-\def\somepagefloat[#1]% links, rechts, midden, hoog, midden, laag
- {\checkwaitingfloats{#1}%
- \vbox to \teksthoogte
- {\doifnotinset{\v!hoog}{#1}{\vfill}%
- \box\floatbox
- \doifnotinset{\v!laag}{#1}{\vfill}}%
- \doinsertfloatinfo
- \pagina} % toegevoegd
-
-\def\someelsefloat[#1]%
- {\doifinsetelse{\v!hier}{#1}
- {\doifinsetelse{\v!altijd}{#1}
- {\pagina[\v!voorkeur]%
- \doroomfloat
- \ifroomforfloat
- \doexecfloat
- \else
- \showmessage{\m!floatblocks}{9}{}%
- \doreversesavefloat
- \fi}
- {\ifsomefloatwaiting
- \dosavefloat
- \else
- \pagina[\v!voorkeur]%
- \doroomfloat
- \ifroomforfloat
- \doexecfloat
- \else
- \dosavefloat
- \fi
- \fi}}
- {\doifinsetelse{\v!altijd}{#1}
- {\doroomfloat
- \ifroomforfloat
- \processallactionsinset
- [#1]
- [ \v!boven=>\dotopfloat,
- \v!onder=>\dobotfloat,
- \s!default=>\doexecfloat]%
- \else
- \showmessage{\m!floatblocks}{9}{}%
- \doreversesavefloat
- \fi}
- {%\ifsomefloatwaiting % from before the renumbering time
- % \doflushfloats
- %\fi
- \doroomfloat
- \ifroomforfloat
- \processallactionsinset
- [#1]
- [ \v!boven=>%%\ifdim\topinserted=\!!zeropoint\relax
- %\iffloatsonpage
- % \dosavefloat
- %\else
- \dotopfloat
- %\fi
- %%\else
- %% \dosavefloat
- %%\fi
- ,
- \v!onder=>%\ifdim\botinserted=\!!zeropoint\relax
- \dobotfloat
- %\else
- % \dosavefloat
- %\fi
- ,
- \s!default=>\doexecfloat]%
- \else
- \dosavefloat
- \fi}}}
-
-% De onderstaande macro wordt gebruikt bij de macros
-% voor het plaatsen van tabellen en figuren (klopt niet
-% meer).
-%
-% \dofloat {plaats} {label1} {label2} {kader}
-%
-% \docompletefloat {nummer} {referentie} {lijst}
-% {plaats} {label1} {label2} {inhoud}
-%
-% \box\floatbox inhoud+referentie
-%
-% \do???float#1 #1 = boxnummer
-%
-% \ifinsidefloat wordt \true gezet voor \docompletefloat en \false
-% na float plaatsen; kan worden gebruikt om in
-% andere commando's witruimte te onderdrukken
-
-\newdimen\floattopskip \floattopskip=12pt
-\newdimen\floatbottomskip \floatbottomskip=12pt
-\newdimen\floatsideskip \floatsideskip=12pt
-
-\newdimen\sidefloattopskip \sidefloattopskip=\floattopskip
-\newdimen\sidefloatbottomskip \sidefloatbottomskip=\floatbottomskip
-\def\sidefloattopoffset {\dp\strutbox}
-
-\newcount\noftopfloats \noftopfloats=2
-\newcount\nofbotfloats \nofbotfloats=0
-
-\def\calculatefloatskips%
- {{\def\calculatefloatskips##1##2%
- {\doifelsenothing{##2}
- {\global##1=\!!zeropoint}
- {\doifelse{##2}{\v!geen}
- {\global##1=\!!zeropoint}
- {\setbox0=\vbox{\witruimte\@EA\blanko\@EA[##2]}%
- \global##1=\ht0}}}%
- \calculatefloatskips\floattopskip\@@bkvoorwit
- \calculatefloatskips\floatbottomskip\@@bknawit
- \calculatefloatskips\sidefloattopskip\@@bkzijvoorwit
- \calculatefloatskips\sidefloatbottomskip\@@bkzijnawit
- \def\sidefloattopoffset{\dp\strutbox}%
- \global\floatsideskip=\@@bkmarge\relax
- \global\noftopfloats=\@@bknboven\relax
- \global\nofbotfloats=\@@bknonder\relax}}
-
-\newif\ifinsidefloat
-\insidefloatfalse
-
-\def\floatcaptionsuffix{} % an optional suffix
-\def\floatcaptionnumber{} % a logical counter
-
-\def\dosetfloatcaption#1#2#3%
- {\def\dofloattekst%
- {{\doattributes{\??kj#1}{#3}}}%
- \doifelsevalue{\??kj#1\c!nummer}{\v!ja}
- {\def\dofloatnummer%
- {{\xdef\floatcaptionnumber{#1}%
- \hbox{\doattributes{\??kj#1\v!kop}{\strut#2\floatcaptionsuffix}}}%
- \ConvertToConstant\doifnot{#3}{}
- {\tfskip
- \emergencystretch=.5em}}}
- {\def\dofloatnummer%
- {}}}
-
-\def\putborderedfloat#1\in#2\\%
- {\setbox#2=\vbox
- {\localframed
- [\??fl#1]
- [\c!breedte=\@@bkbreedte,
- \c!hoogte=\@@bkhoogte,
- \c!offset=\@@bkoffset]%
- {\box\floatbox}}}
-
-\newbox\captionbox
-
-\def\putcompletecaption%
- {\mindermeldingen
- \begstrut\dofloatnummer\dofloattekst\endstrut}
-
-\def\dosetpagfloat#1#2#3#4%
- {\bgroup
- \forgetall
- %\showcomposition
- \putborderedfloat#4\in4\\%
- \def\locatefloat%
- {\doregelplaats\@@bkplaats}%
- \ConvertToConstant\doifelse{#3}{\v!geen}
- {\global\setbox\floatbox=\vbox
- {\locatefloat{\box4}}}
- {\dosetfloatcaption{#4}{#2}{#3}%
-% at another level, prevents reprocessing of footnotes
-\setbox\captionbox=\hbox{\putcompletecaption}%
-\def\putcompletecaption{\unhcopy\captionbox}%
-%
- \setbox2=\hbox
- {\forgetall
- \putcompletecaption}%
- \doifinsetelse{\@@kjkjplaats}{\v!hoog,\v!midden,\v!laag}
- {\dimen0=\hsize
- \advance\dimen0 by -\wd4\relax
- \advance\dimen0 by -\@@bkmarge\relax % \was tfskipsize\relax
- \ifdim\wd2>\dimen0\relax
- \dimen2=1.3\dimen0\relax
- \ifdim\wd2<\dimen2\relax
- \dimen0=0.8\dimen0\relax
- \fi
- \fi
- \setbox2=\vbox
- {\forgetall
- \hsize=\dimen0\relax
- \raggedright
- \begstrut\dofloatnummer
- \ifx\@@kjkjtussen\empty \else
- \unskip\@@kjkjtussen
- \fi
- \dofloattekst
- \endstrut}}
- {\doifelse{\@@kjkjbreedte}{\v!max}
- {\dosetraggedbox{\@@kjkjuitlijnen}%
- \setbox2=\raggedbox
- {\hsize\wd4\relax
- \putcompletecaption}}
- {\ifdim\wd2>\wd4\relax
- \doifelse{\@@kjkjbreedte}{\v!passend}
- {\ifdim\wd4<15\korpsgrootte\relax
- \dimen0=15\korpsgrootte\relax
- \else
- \dimen0=\wd4\relax
- \fi
- \ifdim\wd4>\hsize
- \setbox0=\vbox
- {\forgetall
- \hsize=1.0\wd4
- \putcompletecaption}%
- \ifdim\ht0>\lineheight\relax
- \setbox2=\vbox
- {\forgetall
- \hsize=0.9\wd4
- \putcompletecaption}%
- \fi
- \else
- \setbox0=\vbox
- {\forgetall
- \dimen2=1.5\dimen0\relax
- \ifdim\dimen2<\hsize
- \hsize=\dimen2\relax
- \fi
- \putcompletecaption}%
- \ifdim\ht0>\lineheight\relax
- \setbox2=\vbox
- {\forgetall
- \dimen2=1.2\dimen0\relax
- \ifdim\dimen2<\hsize
- \hsize=\dimen2\relax
- \fi
- \putcompletecaption}%
- \fi
- \fi}
- {\dosetraggedbox{\@@kjkjuitlijnen}%
- \setbox2=\raggedbox
- {\hsize\@@kjkjbreedte
- \putcompletecaption}}%
- \fi}}%
- \global\setbox\floatbox=\vbox
- {\processaction
- [\@@kjkjplaats]
- [ \v!boven=>\locatefloat{\copy2}%
- \@@kjkjtussen
- \locatefloat{\copy4},
- \v!onder=>\locatefloat{\copy4}%
- \@@kjkjtussen
- \locatefloat{\copy2},
- \v!hoog=>\locatefloat
- {\doifelse{\@@bkplaats}{\v!links}
- {\copy4
- \tfskip
- \vbox to\ht4{\@@kjkjtussen\copy2\vfill}}
- {\vbox to\ht4{\@@kjkjtussen\copy2\vfill}%
- \tfskip
- \copy4}},
- \v!laag=>\locatefloat
- {\doifelse{\@@bkplaats}{\v!links}
- {\copy4
- \tfskip
- \vbox to\ht4
- {\vfill\copy2\@@kjkjtussen}}
- {\vbox to\ht4
- {\vfill\copy2\@@kjkjtussen}%
- \tfskip
- \copy4}},
- \v!midden=>\locatefloat
- {\doifelse{\@@bkplaats}{\v!links}
- {\copy4
- \tfskip
- \vbox to\ht4{\vfill\copy2\vfill}}
- {\vbox to\ht4{\vfill\copy2\vfill}%
- \tfskip
- \copy4}},
- \v!geen=>\locatefloat{\copy4}]}}%
- \ifdim\wd2>\wd4
- \global\wd\floatbox=\wd2
- \else
- \global\wd\floatbox=\wd4
- \fi
- \egroup}
-
-\def\dosetparfloat#1#2#3#4%
- {\bgroup
- %\showcomposition
- \forgetall
- \putborderedfloat#4\in4\\
- \ConvertToConstant\doifelse{#3}{\v!geen}
- {\global\setbox\floatbox=\vbox{\box4}}
- {\dosetfloatcaption{#4}{#2}{#3}%
- \setbox2=\hbox
- {\forgetall
- \putcompletecaption}%
- \doifelse{\@@kjkjbreedte}{\v!max}
- {\dosetraggedbox{\@@kjkjuitlijnen}%
- \setbox2=\raggedbox
- {\hsize\wd4
- \putcompletecaption}}
- {\doifelse{\@@kjkjbreedte}{\v!passend}
- {\ifdim\wd2>\wd4\relax
- \setbox2=\vbox
- {\forgetall
- \hsize\wd4
- \putcompletecaption}%
- \else
- \setbox2=\hbox to \wd4
- {\hss\box2\hss}%
- \fi}
- {\dosetraggedbox{\@@kjkjuitlijnen}%
- \setbox2=\raggedbox
- {\hsize\wd4
- \putcompletecaption}}}%
- \global\setbox\floatbox=\vbox
- {\processaction
- [\@@kjkjplaats]
- [ \v!boven=>\box2
- \@@kjkjtussen
- \box4,
- \v!onder=>\box4
- \@@kjkjtussen
- \box2,
- \v!geen=>\box4]}}%
- \egroup}
-
-\newif\ifparfloat
-
-\long\def\dosetfloatbox#1#2#3#4%
- {\ifvisible
- \par
- \doifcommonelse
- {#1}{\v!links,\v!rechts,\v!inlinker,\v!inrechter,\v!inmarge}
- {\global\parfloattrue}
- {\global\parfloatfalse}%
- \edef\@@kjkjbreedte {\getvalue{\??kj#4\c!breedte}}%
- \def\@@kjkjtussen {\getvalue{\??kj#4\c!tussen}}% geen \edef
- \edef\@@kjkjplaats {\getvalue{\??kj#4\c!plaats}}%
- \edef\@@kjkjuitlijnen {\getvalue{\??kj#4\c!uitlijnen}}%
- \ifparfloat
- \dosetparfloat{#1}{#2}{#3}{#4}%
- \else
- \dosetpagfloat{#1}{#2}{#3}{#4}%
- \fi
- \global\floatheight=\ht\floatbox
- \global\advance\floatheight by \dp\floatbox
- \global\floatwidth=\wd\floatbox
- \global\advance\totalnoffloats by 1\relax
- \doifnotinset{\v!marge}{#1} % gaat namelijk nog fout
- {\setbox\floatbox=\vbox
- {\parindent\!!zeropoint
- \ifvoorlopig
- \inlinker{\framed{\infofont\the\totalnoffloats}}%
- \fi
- \box\floatbox}}%
- \wd\floatbox=\floatwidth
- \dimen0=\floatheight
- \advance\dimen0 by \lineheight
- \ifdim\dimen0<\teksthoogte
- \else
- \global\floatheight=\teksthoogte
- \global\advance\floatheight by -\lineheight
- \ht\floatbox=\floatheight
- \dp\floatbox=\!!zeropoint
- \showmessage{\m!floatblocks}{10}{\the\totalnoffloats}%
- \fi
- \fi}
-
-\def\dogetfloatbox#1%
- {\ifvisible
- \def\next##1{\global\floatsonpagetrue\def\next{##1}}%
- \processfirstactioninset
- [#1]
- [ \v!hier=>\next{\someelsefloat[#1]},
- \v!forceer=>\next{\somefixdfloat[#1]},
- \v!links=>\next{\somesidefloat[#1]},
- \v!rechts=>\next{\somesidefloat[#1]},
- \v!tekst=>\next{\sometextfloat[#1]},
- \v!boven=>\def\next{\someelsefloat[#1]}, % !
- \v!onder=>\next{\someelsefloat[#1]},
- \v!marge=>\def\next{\somenextfloat[#1]}, % !
- \v!pagina=>\next{\somepagefloat[#1]},
- \v!naast=>\next{\somefacefloat[#1]},
- \v!inmarge=>\next{\somesidefloat[#1]},
- \v!inlinker=>\next{\somesidefloat[#1]},
- \v!inrechter=>\next{\somesidefloat[#1]},
- \s!default=>\next{\someelsefloat[\v!hier,#1]},
- \s!unknown=>\next{\someelsefloat[\v!hier,#1]}]%
- \next
- \fi}
-
-\long\def\dofloat#1#2#3#4%
- {\dosetfloatbox{#1}{#2}{#3}{#4}%
- \dogetfloatbox{#1}}%
-
-\long\def\docompletefloat#1#2#3#4#5#6#7%
- {\flushsidefloats
- \calculatefloatskips
- \setbox\floatbox=\vbox{#7}%
- \dimen0=\ht\floatbox
- \advance\dimen0 by \dp\floatbox
- \ifdim\dimen0=\!!zeropoint\relax
- \showmessage{\m!floatblocks}{11}{}%
- \setbox\floatbox=\vbox{\getvalue{\e!lege#3}}%
- \fi
- \ConvertToConstant\doifelse{#6}{\v!geen}
- {\setbox\floatbox=\vbox
- {\unvbox\floatbox
- \rawpagereference{\s!flt}{#2}}%
- \dofloat{#4}{}{#6}{#1}}
- {\doifelsevalue{\??kj#1\c!nummer}{\v!ja}
- {\verhoognummer[#1]%
- \maakhetnummer[#1]%
- \setbox\floatbox=\vbox
- {\unvbox\floatbox
- \dofloatreference
- \redofloatorder{#1}%
- \rawreference{\s!flt}{#2}{\hetnummer}%
- \doschrijfnaarlijst{#3}{\hetnummer}{#6}{#3}}%
- \dofloat{#4}{#5\hetnummer}{#6}{#1}}
- {\setbox\floatbox=\vbox
- {\unvbox\floatbox
- \rawpagereference{\s!flt}{#2}}%
- \dofloat{#4}{}{#6}{#1}}}%
- \global\insidefloatfalse}
-
-\def\plaatsvolledig#1#2#3#4% kop, ref, tit, do
- {#1[#2]{#3}%
- #4%
- \pagina[\v!ja]}
-
-%I n=Figuren
-%I c=\plaatsfiguur,\reserveerfiguur,\startfiguurtekst
-%I c=\leegfiguur,\volledigelijstmetfiguren
-%I c=\plaatstabel,\reserveertabel,\starttabeltekst
-%I c=\legetabel,\volledigelijstmettabellen
-%I
-%I Figuren en tabellen (gebruik ..tabel.. in plaats van
-%I ..figuur..) kunnen in de tekst worden geplaatst met het
-%I commando:
-%I
-%I \plaatsfiguur[plaats][referentie]{titel}{figuur}
-%I
-%I Als voorkeur kan worden opgegeven 'hier', 'forceer',
-%I 'pagina', 'boven', 'onder', 'links' en 'rechts'. In plaats
-%I van een titel kan 'geen' worden meegegeven, in dat geval
-%I wordt geen titel geplaatst. Eventueel kan in combinatie
-%I met links en rechts 'lang' worden opgegeven.
-%I
-%I De volgorde kan worden afgedwongen met 'altijd',
-%I bijvoorbeeld [hier,altijd]. In dat geval wordt bij een
-%I volgende run zonodig de nummering aangepast.
-%I
-%I In plaats van een titel kan {geen} worden ingevuld. In
-%I dat geval blijft de titel achterwege.
-%P
-%I Het is mogelijk ruimte voor een figuur te reserveren:
-%I
-%I \reserveerfiguur[hoogte=,breedte=,kader=][voorkeur]
-%I [referentie]{titel}
-%P
-%I Een lijst met figuren kan worden opgeroepen met:
-%I
-%I \plaatslijstmetfiguren
-%I \volledigelijstmetfiguren
-%I
-%I Men kan een tekst naast een figuur zetten met:
-%I
-%I \startfiguurtekst[plaats][referentie]{kop}{figuur}
-%I ...
-%I \stopfiguurtekst
-%I
-%I Mogelijke plaatsen zijn (combinaties van) 'links', 'rechts',
-%I 'hoog', 'laag' en 'midden'. Met 'offset' dwingt men een
-%I verschuiving omlaag van van 1 regel af.
-%I
-%I Zie verder onder plaatsblokken.
-
-%I n=Tabellen
-%I
-%I Zie figuren.
-
-%I n=Intermezzo
-%I
-%I Zie figuren.
-
-%I n=Grafieken
-%I
-%I Zie figuren.
-
-%T n=figuur
-%T m=fig
-%T a=f
-%T
-%T \plaatsfiguur
-%T [hier]
-%T [fig:]
-%T {}
-%T {\naam{?}}
-%T
-
-\definieernummer
- [\??si]
- [\c!wijze=\v!per\v!tekst,
- \c!conversie=\@@siconversie]
-
-\def\stelplaatsbloksplitsenin%
- {\dodoubleargument\getparameters[\??si]}
-
-\def\dosplitsplaatsblok[#1]#2% nog dubbele refs
- {\ifbinnenkolommen % tzt ook nog figuren splitten
- % not yet supported
- \else
- \bgroup
- \insidefloattrue
- \getparameters[\??si][#1]%
- \resetnummer[\??si]%
- \def\floatcaptionsuffix{\nummer[\??si]}%
- \TableCaptionHeight=\@@siregels\lineheight
- \dowithnextbox
- {\forgetall
- \mindermeldingen
- \doloop
- {\setbox2\vsplit\nextbox to \lineheight
- \setbox2=\vbox{\unvbox2}
- \ifdim\ht2>\lineheight
- \verhoognummer[\??si]%
- \bgroup
- #2{\unvbox2}
- \egroup
- \pagina
- \ifdim\ht\nextbox>\!!zeropoint
- \verlaagnummer[\floatcaptionnumber]%
- \fi
- \fi
- \ifdim\ht\nextbox>\!!zeropoint\else
- \expandafter\exitloop
- \fi}%
- \egroup}
- \vbox
- \fi}
-
-\def\splitsplaatsblok%
- {\dosingleempty\dosplitsplaatsblok}
-
-%I n=Formules
-%I c=\plaatsformule,\plaatssubformule,\stelformulesin
-%I
-%I Formules kunnen in de tekst worden geplaatst met
-%I het commando:
-%I
-%I \plaatsformule[referentie]subnummer$$formule$$
-%I
-%I Dit commando handelt de witruimtes om de formules af en
-%I plaatst nummers. Als geen nummer nodig is, en dus ook
-%I geen referentie, dan moet met het commando als volgt
-%I gebruiken:
-%I
-%I \plaatsformule-$$...$$ of \plaatsformule[-]$$...$$
-%I
-%I Als het nummer niet moet worden opgehoogd, gebruikt men
-%I
-%I \plaatssubformule[referentie]subnummer$$formule$$
-%P
-%I PAS OP:
-%I
-%I Binnen een aantal wiskundige commando's, zoals
-%I \displaylines, moet men het nummer zelf plaatsen. Dit
-%I kan gebeuren met: \formulenummer of \subformulenummer.
-%I Ook hier kan een [referentie] en een {subnummer} worden
-%I meegegeven.
-%I
-%I \plaatsformule
-%I $$\displaylines
-%I {x \hfill\formulenummer[eerste]{}\cr
-%I y \hfill\cr
-%I z \hfill\formulenummer[derde]{}\cr}
-%I $$
-%P
-%I De wijze waarop formules worden genummerd kan worden
-%I be‹nvloed door het commando:
-%I
-%I \stelformulesin[links=,rechts=,plaats=]
-%I
-%I De nummers kunnen links en rechts worden gezet. Standaard
-%I worden de symbolen ( en ) gebruikt.
-%I
-%I Tussen twee formules kan witruimte worden geforceerd met
-%I het commando:
-%I
-%I \blanko[formule]
-
-\abovedisplayskip = \!!zeropoint\relax
-\abovedisplayshortskip = \!!zeropoint\relax % evt. 0pt minus 3pt
-\belowdisplayskip = \!!zeropoint\relax
-\belowdisplayshortskip = \!!zeropoint\relax % evt. 0pt minus 3pt
-
-\predisplaypenalty = 0
-\postdisplaypenalty = 0 % -5000 gaat mis, zie penalty bij \paragraaf
-
-\doorlabelen
- [\v!formule]
- [\c!tekst=\v!formule,
- \c!wijze=\@@fmwijze,
- \c!blokwijze=\@@fmblokwijze,
- \c!plaats=\v!intekst]
-
-\def\stelformulesin%
- {\dodoubleargument\getparameters[\??fm]}
-
-\def\dodoplaatsformule#1[#2]#3$$#4$$%
- {\begingroup
- \setdisplayskips
- \!!doneafalse
- \doif{#2}{-}{\!!doneatrue}%
- \doif{#3}{-}{\!!doneatrue}%
- \if!!donea % no number
- \def\complexformulenummer[##1]##2%
- {}%
- \def\formulenummer%
- {\complexorsimpleempty{formulenummer}}%
- \def\subformulenummer%
- {\formulenummer}%
- $$#4$$
- \else
- \doifelse{#1}{\v!ja}
- {\def\verhoogformulenummer{\verhoognummer[\v!formule]}}
- {\let\verhoogformulenummer=\relax}%
- \def\simpleformulenummer%
- {\gdef\doeqno{}%
- \gdef\doleqno{}%
- \gdef\formulenummer{\doformulenummer}%
- \doformulenummer[#2]{#3}}%
- \def\complexformulenummer%
- {\gdef\doeqno{}%
- \gdef\doleqno{}%
- \gdef\formulenummer{\doformulenummer}%
- \doformulenummer}%
- \def\formulenummer%
- {\complexorsimple{formulenummer}}%
- \def\subformulenummer%
- {\let\verhoogformulenummer=\relax
- \complexorsimple{formulenummer}}%
- \gdef\doleqno{\leqno{\formulenummer}}%
- \gdef\doeqno{\eqno{\formulenummer}}%
- \doifelse{\@@fmplaats}{\v!links}
- {$$#4\doleqno$$}
- {$$#4\doeqno$$}
- \fi
- \par
- \ignorespaces
- \endgroup}
-
-\def\complexdoformulenummer[#1]#2%
- {\verhoogformulenummer
- \doifelse{#2}{ }
- {\def\hetsubnummer{}}
- {\def\hetsubnummer{#2}}%
- {\rm\strut\@@fmlinks\lossenummer[\v!formule]\hetsubnummer\@@fmrechts}%
- \rawreference{\s!for}{#1}{\hetnummer\hetsubnummer}}
-
-\letvalue{\e!start\e!formule}=\undefined
-\letvalue{\e!stop \e!formule}=\undefined
-
-%\def\dodoplaatsstartformule#1[#2]#3\startformule#4\stopformule%
-% {\dodoplaatsformule#1[#2]#3$$#4$$}
-
-\expanded
- {\def\noexpand\dodoplaatsstartformule##1[##2]##3\csname\e!start\e!formule\endcsname##4\csname\e!stop\e!formule\endcsname%
- {\noexpand\dodoplaatsformule##1[##2]##3$$##4$$}}
-
-\setvalue{\e!start\e!formule}{$$}
-\setvalue{\e!stop \e!formule}{$$}
-
-\def\doplaatsformule#1[#2]#3% % #3 gobbles spaces between [] and $$ or \startformule
- {\def\redoplaatsformule% % we can't lose {} after $$
- {\expandafter\ifx\csname\e!start\e!formule\endcsname\next
- \let\next=\dodoplaatsstartformule
- \else
- \let\next=\dodoplaatsformule
- \fi
- \next#1[#2]}%
- \futurelet\next\redoplaatsformule#3}
-
-\def\complexplaatsformule%
- {\doplaatsformule{\v!ja}}
-
-\def\complexplaatssubformule%
- {\doplaatsformule{\v!nee}}
-
-\definecomplexorsimpleempty\doformulenummer
-\definecomplexorsimpleempty\plaatsformule
-\definecomplexorsimpleempty\plaatssubformule
-
-%I n=Naast
-%I c=\startnaast,\stelnaastplaatsenin
-%I
-%I Experiment:
-%I
-%I \startnaast
-%I ...
-%I \stopnaast
-%I
-%I \stelnaastplaatsenin[status=]
-%I
-
-\newbox\facingbox
-\newbox\facingpage
-
-\newdimen\facingboxsize
-\newdimen\facingpagetotal
-
-\facingpagetotal=\!!zeropoint
-
-\newif\iffacingpages \facingpagesfalse
-\newif\iffirstpagedone \firstpagedonefalse
-
-\def\shipoutfacingpage%
- {\iffacingpages
- \iffirstpagedone
- \setbox\facingpage=\vbox to \zethoogte
- {\kern\hoofdhoogte
- \kern\ht\topins % ?
- \kern\dp\topins % ?
- \kern\dp\strutbox % checken
- \box\facingpage
- \vfill}%
- \myshipout{\box\facingpage}%
- \fi
- \fi
- \global\setbox\facingpage=\box\voidb@x
- \global\firstpagedonetrue
- \global\facingpagetotal=\!!zeropoint\relax}
-
-\def\flushfacingpage%
- {\penalty-\!!tenthousand
- \global\facingpagetotal=\facingboxsize
- \setbox\facingpage=\vbox{\box\facingbox}}
-
-\def\startnaast#1\stopnaast%
- {\iffacingpages
- \setbox\facingbox=\vbox
- {\hsize=\zetbreedte\relax
- #1}%
- \global\facingboxsize=\ht\facingbox
- \global\advance\facingboxsize by \dp\facingbox
- \ifdim\pagetotal<\facingpagetotal
- \dimen2=\facingpagetotal
- \advance\dimen2 by -\pagetotal
- \vskip\dimen2\relax
- \else
- \dimen2=\!!zeropoint\relax
- \fi
- \dimen0=\pagetotal
- \advance\dimen0 by \facingboxsize
- \ifdim\dimen0>\pagegoal
- \flushfacingpage
- \else
- \global\advance\facingpagetotal by \facingboxsize
- \ifdim\facingpagetotal>\pagegoal
- \flushfacingpage
- \else
- \setbox\facingpage=\vbox
- {\offinterlineskip
- \mindermeldingen
- \ht\facingpage=\!!zeropoint
- \ifdim\pagetotal=\topskip
- \vskip-\topskip
- \fi
- \box\facingpage
- \advance\dimen2 by \pagetotal
- \vskip\dimen2\relax
- \ifdim\facingpagetotal>\facingboxsize
- \vskip\tussenwit
- \fi
- \box\facingbox}%
- \fi
- \fi
- \fi}
-
-\def\dostelnaastplaatsenin[#1]%
- {\getparameters[\??np][#1]%
- \doifelse{\@@npstatus}{\v!start}
- {\global\facingpagestrue}
- {\global\facingpagesfalse}}
-
-\def\stelnaastplaatsenin%
- {\dosingleargument\dostelnaastplaatsenin}
-
-\def\naastpagina%
- {\shipoutfacingpage}
-
-\def\facefloat% redefined
- {\startnaast\box\floatbox\stopnaast}
-
-%I n=Lijsten
-%I c=\definieerlijst,\stellijstin,\plaatslijst
-%I
-%I Er kunnen lijsten worden aangemaakt en opgeroepen. Een
-%I lijst wordt gedefinieerd met:
-%I
-%I \definieerlijst[naam]
-%I
-%I en zonodig ingesteld met:
-%I
-%I \stellijstin[naam][status=,variant=,marge=,breedte=,
-%I scheider=,afstand=,paginanummer=,deelnummer=,
-%I titeluitlijnen=,label=,letter=,tekstletter=,nummerletter=,
-%I paginaletter=,paginaovergangen=,voor=,na=,niveau=,
-%I criterium=,symbool=,prefix=,links=,rechts=]
-%I
-%I De instellingen mogen ook direkt worden opgegeven:
-%I
-%I \definieerlijst[naam][instellingen]
-%I
-%I Ook kunnen kenmerken van andere lijsten worden overgenomen:
-%I
-%I \definieerlijst[naam][andere naam]
-%P
-%I De vorm van de lijst wordt onder meer bepaald door de variant
-%I (a,b,c). In grote lijnen ziet een lijst er als volgt uit:
-%I
-%I <marge+breedte+scheider+afstand> <variant>
-%I
-%I Mogelijke varianten zijn:
-%I
-%I variant a : nummer - titel - pagina
-%I variant b : nummer - titel - spaties - pagina
-%I variant c : nummer - titel - punten - pagina
-%I variant d : nummer - titel - pagina (doorlopend)
-%P
-%I Een of meer lijsten kunnen wordt opgeroepen met:
-%I
-%I \plaatslijst[naam,naam,...]
-%I
-%I Standaard zijn lijsten gedefinieerd voor deel, hoofdstuk,
-%I paragraaf, subparagraaf en subsubparagraaf. Deze lijsten
-%I zijn dus afzonderlijk in te stellen. Deze lijsten zijn
-%I gegroepeerd tot een samengestelde lijst (zie elders).
-%I
-%I De layout van een lijst kan worden beinvloed door
-%I commando's tussen te voegen met:
-%I
-%I \schrijftussenlijst[naam]{commandos}
-%I
-%I Voor eigen gebruik is \iflijstgeplaatst beschikbaar.
-%P
-%I Gevorderde gebruikers kunnen eigen lijstcommando's maken.
-%I Deze commando's kunnen worden toegekend met:
-%I
-%I [...,nummercommando=,tekstcommando=,paginacommando=,...]
-%I
-%I en hebben de vorm
-%I
-%I \commando{argument}
-%I
-%I bijvoorbeeld
-%I
-%i nummercommando=\omlijnd
-%I
-%I Volledige vrijheid krijgt men met de instelling
-%I
-%I variant=geen
-
-% \getlistlevel[hoofdstuk]\test{0} \test
-
-\def\getlistlevel[#1]#2#3% [list] \variable \default
- {\doifdefinedelse{\??ko#1\c!sectie}
- {\edef#2{\getvalue{\??ko#1\c!sectie}}%
- \doifdefinedelse{\??se#2\c!niveau}
- {\edef#2{\getvalue{\??se#2\c!niveau}}}
- {\edef#2{#3}}}
- {\edef#2{#3}}}
-
-\def\doschrijfnaarlijst#1#2#3#4%
- {\doifvalue{\??li#1\c!status}{\v!start}
- {\begingroup
- \thisisnextinternal{#1}%
- %
- % Dit gaat goed als #2 geen commando's bevat. Dit is
- % bij interactieve teksten echter soms wel het geval.
- % Vandaar dat we dit optioneel moeten maken, bijvoorbeeld
- % met \stellijstin[referentie=ja].
- %
- \ExpandFirstAfter\processaction
- [\getvalue{\??li#1\c!expansie}]
- [ \v!ja=>{\edef\ascii{#3}},
- \v!commando=>{\convertcommand#3\to\ascii},
- \s!unknown=>{\convertargument#3\to\ascii}]%
- \makesectionformat
- \doifelse{\@@nmstatus}{\v!start}
- {\def\dopaginanummer{\noexpand\paginanummer}}
- {\def\dopaginanummer{0}}%
- \edef\schrijfwegnaarlijst%
- {\writeutilitycommand%
- {\listentry%
- {#1}%
- {\nextinternalreference}%
- {#2}%
- {\ascii}%
- {\sectionformat::\dopaginanummer}%
- {\noexpand\realfolio}}}%
- \schrijfwegnaarlijst
- \endgroup}}
-
-\def\doschrijftussenlijst#1#2%
- {\doif{\getvalue{\??li#1\c!status}}{\v!start}
- {\begingroup
- \convertargument#2\to\ascii
- \makesectionformat
- \doifelse{\@@nmstatus}{\v!start}
- {\def\dopaginanummer{\noexpand\paginanummer}}
- {\def\dopaginanummer{0}}%
- \edef\schrijfwegnaarlijst%
- {\writeutilitycommand%
- {\listbetween%
- {#1}%
- {\ascii}%
- {\sectionformat::\dopaginanummer}%
- {\noexpand\realfolio}}}%
- \schrijfwegnaarlijst
- \endgroup}}
-
-\def\listentry#1%
- {\executeifdefined{#1\c!lijst}\gobblefivearguments}
-
-\def\listbetween#1%
- {\executeifdefined{#1\c!tussen}\gobblethreearguments}
-
-\def\@@livarianta% nr - tit - pag
- {\def\lijstfill{\hskip 1.25em}%
- \def\lijstskip{0em}}
-
-\def\@@livariantb% nr - tit - fill - pag
- {\def\lijstfill{\hfill}%
- \def\lijstskip{5em}}
-
-\def\@@livariantc% nr - tit - dots - pag
- {\def\lijstfill{\leaders\hbox to .5em{\hss.\hss}\hfill\hskip.5em}%
- \def\lijstskip{5em}}
-
-\def\@@livariant%
- {\lijstvariantb}
-
-\@@livariantb
-
-\def\dostellijstin[#1][#2]%
- {\def\docommando##1%
- {\getparameters[\??li##1][#2]
- \preparepaginaprefix{\??li##1}}%
- \processcommalist[#1]\docommando}
-
-\def\stellijstin%
- {\dodoubleargument\dostellijstin}
-
-\def\dodosetlijst#1%
- {\setvalue{#1\c!tussen}{\dotussenlijst{#1}}%
- \setvalue{#1\c!lijst}{\dolijstelement{#1}}}
-
-\def\dodoresetlijst#1%
- {\setvalue{#1\c!tussen}{\gobblefourarguments{#1}}%
- \setvalue{#1\c!lijst}{\gobblesixarguments{#1}}}
-
-%\def\dodoresetlijst#1%
-% {\setvalue{#1\c!tussen}{\gobblethreearguments}%
-% \setvalue{#1\c!lijst}{\gobblefivearguments}}
-
-\def\dodefinieerlijst[#1][#2][#3]%
- {\presetlocalframed[\??li#1]%
- \getparameters
- [\??li#1]
- [\c!hoogte=\v!ruim,
- \c!diepte=\v!ruim,
- \c!offset=0.25em,
- %
- \c!status=\v!start,
- \c!koppeling=\v!uit,
- \c!criterium=\v!lokaal,
- \c!breedte=3em,
- \c!variant=\c!b,
- \c!letter=\v!normaal,
- \c!tekstletter=\getvalue{\??li#1\c!letter},
- \c!nummerletter=\getvalue{\??li#1\c!letter},
- \c!paginaletter=\getvalue{\??li#1\c!letter},
- \c!kleur=,
- \c!tekstkleur=\getvalue{\??li#1\c!kleur},
- \c!nummerkleur=\getvalue{\??li#1\c!kleur},
- \c!paginakleur=\getvalue{\??li#1\c!kleur},
- \c!nummercommando=\lijstnummercommando,
- \c!tekstcommando=\lijsttekstcommando,
- \c!paginacommando=\lijstpaginacommando,
- \c!paginanummer=\v!ja,
- \c!paginaovergangen=,
- \c!marge=\!!zeropoint,
- \c!titeluitlijnen=,
- \c!voor=,
- \c!na=,
- \c!symbool=,
- \c!interactie=\v!sectienummer,
- \v!deel\c!nummer=\v!ja, % nodig ?
- \c!label=\v!nee,
- \c!afstand=\!!zeropoint,
- \c!scheider=]%
- \ConvertToConstant\doifinstringelse{=}{#2}
- {\getparameters[\??li#1][#2]}
- {\ConvertToConstant\doifnot{#2}{}
- {\copyparameters
- [\??li#1][\??li#2]
- [\c!status,\c!breedte,\c!variant,\c!letter,\c!kleur,
- \c!tekstletter,\c!tekstkleur,\c!tekstcommando,
- \c!paginaletter,\c!paginacommando,\c!paginakleur,
- \c!nummerletter,\c!nummerkleur,\c!nummercommando,
- \c!paginanummer,\c!paginaovergangen,\c!marge,\c!symbool,
- \c!titeluitlijnen,\c!voor,\c!na,\v!deel\c!nummer,\c!label]%
- \getparameters[\??li#1][#3]}}%
- \addutilityreset{#1}%
- \setvalue{\s!set#1}%
- {\dodosetlijst{#1}}%
- \setvalue{\s!reset#1}%
- {\dodoresetlijst{#1}}}
-
-\def\definieerlijst%
- {\dotripleempty\dodefinieerlijst}
-
-\def\iflijstgeplaatst{\ifutilitydone}
-
-\def\doplaatslijst[#1][#2]%
- {\begingroup
- \startopelkaar[\v!blanko]%
- \getfromcommalist[#1][1]%
- \let\firstlistelement=\commalistelement
- \dostellijstin[#1][#2]%
- \doifvalue{\??li\firstlistelement\c!koppeling}{\v!aan}
- {\startlistreferences{#1}}%
- \dosettoclevel{\getvalue{\??li\firstlistelement\c!criterium}}%
- \doutilities{#1}{\jobname}{#1}{}{\par}%
- \stoplistreferences{#1}%
- \stopopelkaar
- \endgroup}
-
-\def\plaatslijst%
- {\dodoubleempty\doplaatslijst}
-
-\def\dodovolledigelijst[#1][#2][#3]% enkelvoud, meervoud, instellingen
- {\systemsuppliedtitle[#2]{\headtext{#2}}
- \doplaatslijst[#1][#3]}
-
-\def\dovolledigelijst[#1][#2]%
- {\dodovolledigelijst[#1][#1][#2]}
-
-\def\volledigelijst%
- {\dodoubleempty\dovolledigelijst}
-
-\def\lijstelementen{} % bevat lijst met paginaovergangen
-\def\lijstnummercommando#1{#1} % geen strut i.v.m. intractieve versie
-\def\lijsttekstcommando#1{\begstrut#1\endstrut}
-\def\lijstpaginacommando#1{\strut#1}
-
-\def\doassigndimen#1#2#3%
- {\doifinsetelse{#2}{\v!passend,\v!ruim}
- {#1=#3\relax}
- {#1=#2\relax}}
-
-\def\dosetlistsymbol#1#2%
- {\processaction
- [\getvalue{\??li#1\c!symbool}]
- [ \v!geen=>\def\listsymbol%
- {\doassigndimen{\dimen0}{\getvalue{\??li#1\c!breedte}}{1.5em}%
- \hbox to \dimen0{}},
- 1=>\def\listsymbol%
- {\strut$\bullet$},
- 2=>\def\listsymbol%
- {\vrule\!!width1em\!!height1ex\!!depth\!!zeropoint},
- 3=>\def\listsymbol% very slow
- {{\doassigndimen{\dimen0}{\getvalue{\??li#1\c!breedte}}{1.5em}%
- \doassigndimen{\dimen2}{\getvalue{\??li#1\c!hoogte}}{1ex}%
- \doassigndimen{\dimen4}{\getvalue{\??li#1\c!diepte}}{0pt}%
- \vrule\!!width\dimen0\!!height\dimen2\!!depth\dimen4}},
- \s!unknown=>\def\listsymbol{\getvalue{\??li#1\c!symbool}},
- \s!default=>\doifelsevalue{\??li#1\c!prefix}{\v!nee}
- {\aftersplitstring#2\at.\to\splitlistsymbol}
- {\def\splitlistsymbol{#2}}% geen \edef ivm enz
- \def\listsymbol%
- {\doifvalue{\??li#1\c!label}{\v!ja}{\labeltext{#1}}%
- \strut\splitlistsymbol
- \getvalue{\??li#1\c!scheider}}]}
-
-\def\dosomelijstelement#1#2#3{#1 #2 \translatednumber[#3]}
-
-\def\dodolijstelementa{\let\dosomelijstelement\dodofixdlijstelementABC}
-\def\dodolijstelementb{\let\dosomelijstelement\dodofixdlijstelementABC}
-\def\dodolijstelementc{\let\dosomelijstelement\dodofixdlijstelementABC}
-\def\dodolijstelementd{\let\dosomelijstelement\dodofixdlijstelementD}
-\def\dodolijstelemente{\let\dosomelijstelement\dodofixdlijstelementE}
-\def\dodolijstelementf{\let\dosomelijstelement\dodofixdlijstelementF}
-\def\dodolijstelementg{\let\dosomelijstelement\dodofixdlijstelementG}
-
-\setvalue{dodolijstelement\v!geen}{\let\dosomelijstelement\dodofreelijstelement}
-
-% Here I learned something new: \leftskip can be changed
-% within a paragraph and the last one counts. Therefore we
-% cannot use \bgroup's! The placement of the \leftskip
-% assignment and the \endgraf's may not be changed. We have to
-% end the preceding paragraph before changing \leftskip. This is
-% because every listelement sets the \leftskip.
-
-% \strippedcsname\dodolijstelement
-
-\def\dolijstelement#1#2#3#4#5#6% pas op: wordt ook elders gedefinieerd
- {\doiftoclevelelse[#5]
- {\getvalue{dodolijstelement\getvalue{\??li#1\c!variant}}%
- %\showcomposition
- \let\@@iabreedte=\!!zeropoint % moet boolean worden
- \bgroup
- \edef\lijstelementen%
- {\getvalue{\??li#1\c!paginaovergangen}}%
- \ExpandSecondAfter\doifinset{#3}{\lijstelementen}%
- {\showmessage{\m!systems}{14}{#3}%
- \pagina}%
- \egroup
- \mindermeldingen
- \dosetlistsymbol{#1}{#3}%
- \dosomelijstelement{#1}{#2}{#3}{#4}{#5}{#6}%
- \global\utilitydonetrue}
- {}}
-
-\def\dolistattributes#1#2#3%
- {\doifvaluesomething{\??li#1#2}
- {\stelinteractiein[\c!kleur=,\c!contrastkleur=]}%
- \doattributes
- {\??li#1#3}}
-
-\def\dodofreelijstelement#1#2#3#4#5#6%
- {\def\makelijstelement##1##2%
- {\hbox
- {\doifelsevalue{\??li#1\c!interactie}{##1}
- {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}%
- \gotonextinternal{#1}{#2}{\copy0}{#6}}
- {##2}}}%
- \getvalue{\??li#1\c!voor}% can be \hskip
- \doifdefinedelse{\??li#1\c!commando}
- {\makelijstelement{\getvalue{\??li#1\c!interactie}}% this forces all
- {\getvalue{\??li#1\c!commando}%
- {#3}% geen conversies etc
- {#4}% geen conversies etc
- {\paginaprefix\??li#1[#5]%
- \translatednumber[#5]}}}
- {\ifvmode\nointerlineskip\fi % recently added
- \vbox
- {\forgetall
- \makelijstelement\v!alles
- {\makelijstelement\v!sectienummer
- {\dolistattributes{#1}\c!nummerkleur\c!nummer
- {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}%
- \makelijstelement\v!tekst
- {\dolistattributes{#1}\c!tekstkleur\c!tekst
- {\def\\{ }%
- \dontconvertfont
- \getvalue{\??li#1\c!tekstcommando}{#4}}}%
- \doifvalue{\??li#1\c!paginanummer}{\v!ja}
- {\doifsomething{#5}
- {\makelijstelement\v!paginanummer
- {\dolistattributes{#1}\c!paginakleur\c!pagina
- {\getvalue{\??li#1\c!paginacommando}
- {\paginaprefix\??li#1[#5]%
- \translatednumber[#5]}}}}}}}%
-\nointerlineskip % anders verkeerde spatiering bij multi-line
- \endgraf}%
- \getvalue{\??li#1\c!na}}
-
-\def\dodofixdlijstelementABC#1#2#3#4#5#6% weeden
- {\endgraf
- \leftskip=\getvalue{\??li#1\c!marge}% na de \endgraf !
- \getvalue{\??li#1\c!voor}%
- \doifelsenothing{#3}
- {\doifelsevalue{\??li#1\c!titeluitlijnen}{\v!ja}
- {\!!widtha=\!!zeropoint}
- {\!!widtha=\getvalue{\??li#1\c!breedte}}}
- {\!!widtha=\getvalue{\??li#1\c!breedte}}%
- \getvalue{\??li\c!variant\getvalue{\??li#1\c!variant}}%
- \endgraf
- \def\makelijstelement##1##2%
- {\doifelsevalue{\??li#1\c!interactie}{##1}
- {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}%
- \gotonextinternal{#1}{#2}{\copy0}{#6}}
- {\hbox{##2}}}%
- \doifvalue{\??li#1\c!interactie}{\v!tekst} % not supported
- {\doassign[\??li#1][\c!interactie=\v!alles]}%
- \makelijstelement\v!alles
- {\hbox to \hsize
- {\!!widthb=\hsize
- \setbox2=\hbox \ifdim\!!widtha>\!!zeropoint to \!!widtha \fi
- {\makelijstelement\v!sectienummer
- {\dolistattributes{#1}\c!nummerkleur\c!nummer
- {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}%
- \hfill}}%
- \setbox4=\hbox
- {\doifvalue{\??li#1\c!paginanummer}{\v!ja}
- {\doifsomething{#5}
- {\hbox to 2em
- {\hfill
- \makelijstelement\v!paginanummer
- {\dolistattributes{#1}\c!paginakleur\c!pagina
- {\getvalue{\??li#1\c!paginacommando}
- {\paginaprefix\??li#1[#5]%
- \translatednumber[#5]}}}}}}}%
- \vbox
- {\hsize\!!widthb
- \ifdim\!!widtha<\hsize
- \hangindent=\wd2
- \dimen2=\getvalue{\??li#1\c!afstand}%
- \advance\hangindent by \dimen2
- \hangafter=1
- \ifvoid4
- % we kunnen gewoon afbreken aan het eind
- \else
- \ifdim\lijstskip>\!!zeropoint\relax
- \rightskip=\lijstskip\!!plus10em\relax
- \parfillskip=-\rightskip
- \fi
- \fi
- \else
- \dimen2=\!!zeropoint
- \fi
- \parindent=\!!zeropoint\relax
- \leavevmode
- \box2\relax
- \hskip\dimen2
- \bgroup
- \dolistattributes{#1}\c!tekstkleur\c!tekst
- {\def\\{ }%
- \dontconvertfont
- \getvalue{\??li#1\c!tekstcommando}{#4}}%
- \egroup
- \ifvoid4
- \ifdim\!!widtha<\hsize
- \hfill\strut
- \fi
- \else
- \nobreak\hskip.5em\lijstfill
- \box4\relax
- \relax
- \fi}%
- \hss}}%
-\nointerlineskip % anders verkeerde spatiering bij multi-line
- \endgraf
- \getvalue{\??li#1\c!na}}
-
-% overrulen interactie kan sneller, bv door hulpconstanten
-% te gebruiken en die te letten
-
-\def\dodofixdlijstelementD#1#2#3#4#5#6%
- {\leftskip=\getvalue{\??li#1\c!marge}%
- \bgroup
- \ifvmode
- \noindent\leavevmode
- \fi
- \doifvalue{\??li#1\c!interactie}{\v!tekst} % not supported
- {\doassign[\??li#1][\c!interactie=\v!sectienummer]}%
- \doifvalue{\??li#1\c!interactie}{\v!alles} % not supported
- {\doassign[\??li#1][\c!interactie=\v!sectienummer]}%
- \def\makelijstelement##1##2%
- {\doifelsevalue{\??li#1\c!interactie}{##1}
- {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}%
- \gotonextinternal{#1}{#2}{\copy0}{#6}}
- {\hbox{##2}}}%
- \setbox4=\hbox
- {\doifvalue{\??li#1\c!paginanummer}{\v!ja}
- {\doifsomething{#5}
- {\makelijstelement\v!paginanummer
- {\dolistattributes{#1}\c!paginakleur\c!pagina
- {\getvalue{\??li#1\c!paginacommando}
- {\paginaprefix\??li#1[#5]%
- \translatednumber[#5]}}}}}}%
- \hbox
- {\getvalue{\??li#1\c!links}%
- \makelijstelement\v!sectienummer
- {\dolistattributes{#1}\c!nummerkleur\c!nummer
- {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}%
- \getvalue{\??li#1\c!rechts}%
- \hskip.5em}%
- \nobreak
- \tolerance3500
- \dolistattributes{#1}\c!tekstkleur\c!tekst
- {\def\\{ }%
- \dontconvertfont
- \getvalue{\??li#1\c!tekstcommando}{#4}}%
- \ifvoid4\else
- \nobreak
- \hskip.75em\relax
- \nobreak
- \box4
- \fi
- \dimen0=\getvalue{\??li#1\c!afstand}\relax
- \ifdim\dimen0<1em\relax
- \hskip1em\!!plus1em\!!minus.25em\relax
- \else
- \hskip\dimen0\!!plus.5\dimen0\!!minus.25\dimen0\relax
- \fi
- \egroup}
-
-\def\dodofixdlijstelementE#1%
- {\dodofixdlijstelementEFG{\localframed[\??li#1][\c!kleur=]}{#1}}
-
-\def\dodofixdlijstelementF%
- {\dodofixdlijstelementEFG\relax}
-
-\def\dodofixdlijstelementG#1%
- {\dodofixdlijstelementEFG\regelmidden{#1}}
-
-\def\dodofixdlijstelementEFG#1#2#3#4#5#6#7%
- {\hbox
- {\let\\=\relax
- \dontconvertfont
- \setbox0=\hbox
- {#1{\dolocationattributes{\??li#2}
- {\ignorespaces\showcontrastlocation{\??ia}{#7}{#5}}}}%
- \gotonextinternal{#2}{#3}{\copy0}{#7}}}
-
-\def\schrijfnaarlijst[#1]#2#3%
- {\doifsomething{#1}
- {\convertargument#2\to\firstlistelement
- \@EA\doschrijfnaarlijst\@EA{#1}{\firstlistelement}{#3}{\v!kop}}}
-
-\def\dotussenlijst#1#2#3#4% pas op: wordt ook elders gedefinieerd
- {\doiftoclevelelse[#3]
- {#2}
- {}}
-
-\def\schrijftussenlijst[#1]#2%
- {\@EA\doschrijftussenlijst\@EA{#1}{#2}} % #2 weg en \expanded
-
-% NOG ENGELS MAKEN
-
-\def\lijstlengte {\utilitylistlength}
-\def\lijstbreedte {\utilitylistwidth}
-\def\lijsthoogte {\utilitylistheight}
-
-\def\utilitylistlength {0}
-\def\utilitylistwidth {0pt}
-\def\utilitylistheight {0pt}
-
-\def\dobepaallijstkenmerken[#1][#2]%
- {\begingroup
- \doglobal\newcounter\utilitylistlength
- \def\dolijstelement##1##2##3##4##5##6%
- {\doiftoclevelelse[##5]
- {\doglobal\increment\utilitylistlength
- \hbox
- {\doattributes
- {\??li##1\c!tekst}
- {\def\\{ }%
- \dontconvertfont
- \getvalue{\??li##1\c!tekstcommando}{##4}}}%
- \global\utilitydonetrue}
- {}}%
- \dostellijstin[#1][#2]%
- \getfromcommalist[#1][1]%
- \dosettoclevel{\getvalue{\??li\commalistelement\c!criterium}}%
- \setbox0=\vbox
- {\doutilities{#1}{\jobname}{#1}{}{\par}}%
- \xdef\utilitylistheight {\the\ht0}%
- \xdef\utilitylistwidth {\the\wd0}%
- \endgroup}
-
-\def\bepaallijstkenmerken%
- {\dodoubleempty\dobepaallijstkenmerken}
-
-% \definieerreferentielijst
-% [externalfigure]
-% [commando=\toongrootfiguur,
-% voor=\pagina,
-% na=\pagina]
-%
-% \definieerreferentielijst
-% [externaltable]
-% [commando=\toongrotetabel,
-% voor=\pagina,
-% na=\pagina]
-%
-% \def\toongrootfiguur#1%
-% {\externfiguur[#1][kader=aan,factor=max]}
-%
-% \def\toongrotetabel#1%
-% {\switchtocorps[12pt]\haalbuffer[#1]}
-%
-% \schrijfnaarreferentielijst[externalfigure]{koe}{\externfiguur[koe][breedte=3cm,kader=aan]}
-% \schrijfnaarreferentielijst[externalfigure]{paard}{\externfiguur[paard][breedte=3cm,kader=aan]}
-%
-% \startbuffer[kanweg]
-% \starttabel[|||]
-% \HL
-% \VL test \VL test \VL\SR
-% \HL
-% \VL test \VL test \VL\FR
-% \VL test \VL test \VL\MR
-% \VL test \VL test \VL\LR
-% \HL
-% \stoptabel
-% \stopbuffer
-%
-% \schrijfnaarreferentielijst[externaltable]{kanweg}{\switchtcorps[5pt]\haalbuffer[kanweg]}
-%
-% \plaatsreferentielijst
-% [externalfigure,externaltable]
-
-% algemeen
-
-\def\referentiebutton#1[#2]%
- {\bgroup
- \def\referenceprefix{}%
- \setbox0=\hbox{\ignorespaces#1}%
- \doifreferencefoundelse{#2}
- {\hbox{\gotolocation{#2}{\copy0}}}
- {\unknownreference{#2}%
- \hbox{\copy0}}%
- \egroup}
-
-\newcounter\referencecounter
-
-\def\doreferentielijstelement#1#2#3#4#5%
- {\doiftoclevelelse[#4]
- {\getvalue{\??rl#1\c!voor}%
- \referentiebutton%
- {\getvalue{\??rl#1\c!commando}{#3}%
- \paginareferentie[\r!to#2]}%
- [\r!from#2]%
- \global\utilitydonetrue
- \getvalue{\??rl#1\c!na}}
- {}}
-
-\def\doplaatsreferentielijst[#1][#2]%
- {\begingroup
-% \let\doschrijfnaarreferentielijst=\gobblethreearguments
- \stelreferentielijstin[#1][#2,\c!status=\v!stop]%
- \getfromcommalist[#1][1]%
- \dosettoclevel{\getvalue{\??rl\commalistelement\c!criterium}}%
- \doutilities{#1}{\jobname}{#1}{}{\par}%
- \endgroup}
-
-\def\plaatsreferentielijst%
- {\dodoubleempty\doplaatsreferentielijst}
-
-\def\doschrijfnaarreferentielijst#1#2#3%
- {\doifvalue{\??rl#1\c!status}{\v!start}
- {\begingroup
- \makesectionformat
- \doifelse{\@@nmstatus}{\v!start}
- {\def\dopaginanummer{\noexpand\paginanummer}}
- {\def\dopaginanummer{0}}%
- \edef\schrijfwegnaarlijst%
- {\writeutilitycommand%
- {\referencelistentry%
- {#1}% tag
- {#2}% number
- {#3}% data
- {\sectionformat::\dopaginanummer}%
- {\noexpand\realfolio}}}%
- \schrijfwegnaarlijst
- \endgroup}}
-
-\def\schrijfnaarreferentielijst[#1]#2#3% #1=class #2=data #3=visualization
- {\doifelsevalue{\??rl#1\c!status}{\v!start}
- {\referentiebutton%
- {#3%
- \doglobal\increment\referencecounter
- \paginareferentie[\r!from\referencecounter]%
- \doschrijfnaarreferentielijst{#1}{\referencecounter}{#2}}%
- [\r!to\referencecounter]}
- {#3}}
-
-\def\referencelistentry#1%
- {\executeifdefined{#1\c!lijst}\gobblefourarguments}
-
-\def\dodosetreferentielijst#1%
- {\setvalue{#1\c!lijst}{\doreferentielijstelement{#1}}}
-
-\def\dodoresetreferentielijst#1%
- {\setvalue{#1\c!lijst}{\gobblefourarguments}}
-
-\def\dodefinieerreferentielijst[#1][#2]%
- {\stelreferentielijstin[#1]
- [\c!commando=,
- \c!status=\v!start,
- \c!criterium=\v!alles,
- \c!voor=,
- \c!na=,
- #2]
- \setcounter{#1}{0}%
- \addutilityreset{#1}%
- \setvalue{\s!set#1}%
- {\dodosetreferentielijst{#1}}%
- \setvalue{\s!reset#1}%
- {\dodoresetreferentielijst{#1}}}
-
-\def\definieerreferentielijst%
- {\dodoubleempty\dodefinieerreferentielijst}
-
-\def\dostelreferentielijstin[#1][#2]%
- {\getparameters[\??rl#1][#2]}
-
-\def\stelreferentielijstin%
- {\dodoubleempty\dostelreferentielijstin}
-
-%I n=Inhoudsopgave
-%I c=\volledigeinhoud,\plaatsinhoud
-%I c=\stelinhoudin
-%I
-%I Er kan een inhoudsopgave worden opgeroepen met:
-%I
-%I \plaatsinhoud
-%I \volledigeinhoud
-%I
-%I De wijze waarop de inhoudsopgave wordt aangemaakt wordt
-%I ingesteld met:
-%I
-%I \stelinhoudin[instellingen]
-%I
-%I De instellingen komen overeen met de van lijsten.
-%P
-%I Een inhoudsopgave is een zogenaamde samengestelde lijst.
-%I Op termijn komt het mechanisme van samengestelde lijsten
-%I ook voor de gebruiker beschikbaar. Vooralsnog werkt het
-%I achter de schermen.
-%I
-%I De commando's zijn slim genoeg om meestal automatisch de
-%I juiste lijsten te genereren. Men kan echter met 'criterium'
-%I het niveau specificeren. Met 'niveau' geeft men aan tot welk
-%I niveau de inhoudsopgave moet worden weergegeven.
-
-\def\dostelsamengesteldelijstin[#1][#2]%
- {\getparameters[\??ih#1][#2]%
- \ExpandFirstAfter\stellijstin[\getvalue{\??ih#1\c!lijst}][#2]}
-
-\def\stelsamengesteldelijstin%
- {\dodoubleargument\dostelsamengesteldelijstin}
-
-\def\doplaatssamengesteldelijst[#1][#2]%
- {\begingroup
- \getparameters[\??ih#1][#2]%
- \dosettoclevel{\getvalue{\??ih#1\c!criterium}}%
- \edef\samengesteldelijst{\getvalue{\??ih#1\c!lijst}}% om voorlopig nog
- \stripspaces\from\samengesteldelijst\to\samengesteldelijst % compatible te
- \ExpandFirstAfter\doifnumberelse{\getvalue{\??ih#1\c!niveau}}% blijven
- {\!!counta=\getvalue{\??ih#1\c!niveau}% met de vorige implementatie
- \advance\!!counta by 1\relax% accepteren we ook nummers (0==deel)
- \getfromcommacommand[\samengesteldelijst][\!!counta]%
- \edef\maximumlijst{\commalistelement}}%
- {\edef\maximumlijst{\getvalue{\??ih#1\c!niveau}}}%
- \!!counta=\getvalue{\??se\getvalue{\??ko\maximumlijst \c!sectie}\c!niveau}%
- \let\!!stringa=\samengesteldelijst
- \let\samengesteldelijst=\empty
- \def\docommando##1%
- {\ifnum\getvalue{\??se\getvalue{\??ko##1\c!sectie}\c!niveau}>\!!counta
- \else
- \addtocommalist{##1}\samengesteldelijst
- \fi}%
- \processcommacommand[\!!stringa]\docommando
- \doifvalue{\??ih#1\c!koppeling}{\v!aan}
- {\startlistreferences{#1}}%
- \ExpandFirstAfter\dodoplaatssamengesteldelijst[\samengesteldelijst][#2]%
- \stoplistreferences{#1}%
- \endgroup}
-
-\def\dodoplaatssamengesteldelijst[#1][#2]%
- {\startopelkaar[\v!blanko]%
- \dostellijstin[#1][#2]%
- \doutilities{#1}{\jobname}{#1}{}{\par}%
- \stopopelkaar}
-
-\def\dovolledigesamengesteldelijst[#1][#2]%
- {\systemsuppliedtitle[#1]{\headtext{#1}}%
- \doplaatssamengesteldelijst[#1][#2]}
-
-\def\dodefinieersamengesteldelijst[#1][#2][#3]%
- {\setvalue{\??ih#1\c!lijst}{#2}%
- \getcommalistsize[#2]%
- \getfromcommalist[#2][\commalistsize]%
- \doeassign[\??ih#1][\c!niveau=\commalistelement]%
- \getparameters
- [\??ih#1]
- [\c!criterium=\v!lokaal,
- #3]%
- \setvalue{\e!stel#1\e!in}%
- {\dodoubleempty\dostelsamengesteldelijstin[#1]}%
- \setvalue{\e!plaats#1}%
- {\dodoubleempty\doplaatssamengesteldelijst[#1]}%
- \setvalue{\e!volledige#1}%
- {\dodoubleempty\dovolledigesamengesteldelijst[#1]}}
-
-\def\definieersamengesteldelijst%
- {\dotripleempty\dodefinieersamengesteldelijst}
-
-%I n=Synoniemen
-%I c=\definieersynoniemen,\stelsynoniemenin
-%I
-%I Er kunnen meerdere lijsten worden gedefinieerd door middel
-%I van het commando:
-%I
-%I \definieersynoniemen[naam][namen][commando]
-%I
-%I Na dit commando zijn de volgende commando's beschikbaar:
-%I
-%I \naam{tekst}{synoniem}
-%I \commando{tekst}
-%I \volledigelijstmetnamen
-%I \plaatslijstmetnamen
-%P
-%I De commando's rond de lijst met afkortingen zijn gedefinieerd
-%I met de waarden: [afkorting][afkortingen][\voluit]. Beschikbare
-%I commando's zijn dus:
-%I
-%I \afkorting{afkorting}{betekenis}
-%I \voluit{afkorting}
-%I \volledigelijstmetafkortingen
-%I \plaatslijstmetafkortingen
-%I
-%I De betekenis kan worden opgeroepen met \voluit{afkorting}.
-%P
-%I De wijze van zetten kan worden ingesteld met het commando:
-%I
-%I \stelsynoniemenin[naam][synoniemletter=,tekstletter=,
-%I status=,plaats=,breedte=,criterium=,conversie=,
-%I expansie=]
-%I
-%I Als de status 'stop' is, dan worden geen synoniemen naar
-%I de lijst weggeschreven. Als het criterium 'alles' is,
-%I dan worden alle synoniemen in het overzicht opgenomen, zoniet,
-%I dan worden alleen gebruikte synoniemen opgenomen. Omdat
-%I standaard 'conversie' op 'nee' staat, worden afkortingen
-%I getoond.
-%P
-%I In principe is een synoniem pas beschikbaar als het is
-%I gedefinieerd. Het is echter mogelijk synoniemen te laden,
-%I mits de tekst tenminste eenmaal is verwerkt. Het is dus
-%I mogelijk synoniemen op te roepen die pas later worden
-%I gedefinieerd. Alleen de omschrijvingen zijn beschikbaar,
-%I dus niet de commando's (doordenkertje). Het laden vindt
-%I plaats met:
-%I
-%I \laadnamen
-%I
-%I of, zoals bij afkortingen:
-%I
-%I \laadafkortingen
-
-% Formaat tex-utility-input-file <jobname.tui>:
-%
-% synonym entry {tag} {pure} {text} {synonym}
-%
-% Deze file wordt met het programma TeXUtil omgezet in een
-% in te lezen TeXFile met de commando's:
-%
-% \synonymentry {tag} {pure} {text} {synonym}
-
-\newif\ifsynonymmeaning
-
-\def\dostelsynoniemenin[#1][#2]%
- {\getparameters[\??sm#1][#2]}
-
-\def\stelsynoniemenin%
- {\dodoubleargument\dostelsynoniemenin}
-
-\def\doresetsynonym#1%
- {\letvalue{#1\s!entry}=\gobblethreearguments}
-
-\def\dohandlesynonymentry#1#2#3%
- {\bgroup
- \syndef
- {\doattributes{\??sm#1\c!tekst}{#2}}
- \ConvertToConstant\doifelse{#3}{}{\onbekend}{#3}
- \par
- \egroup}
-
-\def\synonymentry#1%
- {\executeifdefined{#1\s!entry}\gobblethreearguments}
-
-\def\dosetsynonym#1%
- {\doifdefinedelse{\??sm#1\c!commando}
- {\global\utilitydonetrue
- \setvalue{#1\s!entry}{\getvalue{\??sm#1\c!commando}}}
- {\global\utilitydonetrue
- \setvalue{#1\s!entry}{\dohandlesynonymentry}}%
- \doordefinieren
- [syndef]
- [\c!plaats=\synplaats,
- \c!breedte=\synbreedte,
- \c!kopletter=,
- \c!voor=,
- \c!tussen=,
- \c!na=]}
-
-\def\doplaatslijstmetsynoniemen#1#2%
- {\witruimte
- \begingroup
- \def\currentsynonym{#1}%
- \def\synplaats{\getvalue{\??sm#1\c!plaats}}%
- \def\synbreedte{\getvalue{\??sm#1\c!breedte}}%
- \stelwitruimtein[\v!geen]%
- \doutilities{#1}{\jobname}{#2}{}{\par}%
- \endgroup
- \ifutilitydone\else\geenwitruimte\fi}
-
-\def\dovolledigelijstmetsynoniemen#1#2%
- {\plaatsvolledig
- {\systemsuppliedchapter}{#1}{\headtext{#2}}%
- {\doplaatslijstmetsynoniemen{#1}{#2}}}
-
-\def\processsynonym#1#2#3%
- {\begingroup % anders in mathmode lege \hbox, zie eenheden
- \ifsynonymmeaning
- \doattributes{\??sm#1\c!synoniem}{\synonymmeaningfalse#3}%
- \else
- \explicithmode
- \doattributes{\??sm#1\c!tekst}{#2}%
- \fi
- \endgroup}
-
-\def\getsynonymmeaning#1#2%
- {\doifdefinedelse{#2}
- {{\synonymmeaningtrue\getvalue{#2}}}
- {\showmessage{\m!systems}{18}{#1,#2}}}
-
-\def\dowritesynonym#1#2#3#4%
- {\begingroup % anders in mathmode lege \hbox
- \doifelsevalue{\??sm#1\c!expansie}{\v!ja}
- {\immediate\write\uti{s e {#1} {#2} {#3} {#4}}}
- {\convertargument#3\to\asciia
- \convertargument#4\to\asciib
- \immediate\write\uti{s e {#1} {#2} {\asciia} {\asciib}}}%
- \endgroup}
-
-\def\preexecutesynonym#1#2#3#4%
- {\ifdoinpututilities \else
- \dowritesynonym{#1}{#2}{#3}{#4}%
- \setgvalue{#2}{\donottest\processsynonym{#1}{#3}{#4}}%
- \fi}
-
-\def\executesynonym#1#2#3#4%
- {\preexecutesynonym{#1}{#2}{#3}{#4}%
- \processsynonym{#1}{#3}{#4}}
-
-\def\expandsynonym#1#2#3#4%
- {{\synonymmeaningtrue
- \processsynonym{#1}{#3}{#4}}}
-
-\def\dodoloadsynonym#1#2#3#4%
- {\setgvalue{#2}{\executesynonym{#1}{#2}{#3}{#4}}}
-
-\def\doloadsynonym#1%
- {\setvalue{#1\s!entry}##1##2##3%
- {\doifelsenothing{##1}
- {\dodoloadsynonym{#1}{##2}{##2}{##3}}
- {\dodoloadsynonym{#1}{##1}{##2}{##3}}%
- \global\utilitydonetrue}}
-
-\def\dolaadsynoniemen#1#2%
- {\bgroup
- \let\dosetsynonym=\doloadsynonym
- \showmessage{\m!systems}{19}{#2}%
- \doutilities{#1}{\jobname}{}{}{}%
- \egroup
- \setvalue{\s!check#1}##1{}}
-
-\def\dodocomplexsynonym[#1][#2]#3#4%
- {\getvalue{\s!check#1}{#2}%
- \doifelsevalue{\??sm#1\c!conversie}{\v!ja}
- {\setgvalue{#2}{\geentest\expandsynonym{#1}{#2}{#3}{#4}}}
- {\doifelsevalue{\??sm#1\c!status}{\v!start}
- {\doifelsevalue{\??sm#1\c!criterium}{\v!alles}
- {\preexecutesynonym{#1}{#2}{#3}{#4}}
- {\setgvalue{#2}{\donottest\executesynonym{#1}{#2}{#3}{#4}}}}
- {\setgvalue{#2}{\donottest\processsynonym{#1}{#3}{#4}}}}}
-
-\def\docomplexsynonym[#1][#2][#3]#4#5%
- {\ifthirdargument
- \dodocomplexsynonym[#2][#1#3]{#4}{#5}%
- \else
- \dodocomplexsynonym[#2][#1#4]{#4}{#5}%
- \fi}
-
-\def\dodefinieersynoniemen[#1][#2][#3][#4]%
- {\stelsynoniemenin
- [#1]
- [\c!synoniemletter=,
- \c!tekstletter=,
- \c!status=\v!start,
- \c!plaats=\v!links,
- \c!criterium=,
- \c!breedte=5em]%
- \presetheadtext
- [#2=\Woord{#2}]%
- \setvalue{\e!stel#2\e!in}%
- {\dodoubleargument\getparameters[\??sm#1]}%
- \iffourthargument
- \def#4##1%
- {\geentest\getsynonymmeaning{#1}{\??sm:#1:##1}}%
- \def#3##1%
- {\geentest\getvalue{\??sm:#1:##1}}%
- \setvalue{#1}%
- {\dotripleempty\docomplexsynonym[\??sm:#1:][#1]}%
- \else
- \def#3##1%
- {\geentest\getsynonymmeaning{#1}{##1}}%
- \setvalue{#1}%
- {\dotripleempty\docomplexsynonym[][#1]}%
- \fi
- \setvalue{\s!set#1}%
- {\dosetsynonym{#1}}%
- \setvalue{\s!reset#1}%
- {\doresetsynonym{#1}}%
- \setvalue{\s!check#1}##1%
- {\checkdefined{synoniemen}{#1}{##1}}%
- \addutilityreset{#1}%
- \setvalue{\e!laad#2}%
- {\dolaadsynoniemen{#1}{#2}}%
- \setvalue{\e!plaats\e!lijstmet#2}%
- {\doplaatslijstmetsynoniemen{#1}{#2}}%
- \setvalue{\e!volledige\e!lijstmet#2}%
- {\dovolledigelijstmetsynoniemen{#1}{#2}}}
-
-\def\definieersynoniemen%
- {\doquadrupleempty\dodefinieersynoniemen}
-
-%I n=Sorteren
-%I c=\definieersorteren,\stelsorterenin
-%I
-%I Sorteren is een vereenvoudigde variant van 'synoniemen':
-%I
-%I \definieersorteren[naam][namen]
-%I
-%I Na dit commando zijn de volgende commando's beschikbaar:
-%I
-%I \naam{tekst}
-%I \volledigelijstmetnamen
-%I \plaatslijstmetnamen
-%P
-%I De wijze van zetten kan worden ingesteld met het commando:
-%I
-%I \stelsorterenin[naam][status=,commando=,voor=,na=,
-%I letter=,criterium=,expansie=]
-%I
-%I Met 'commando' kan met een bewerking uitvoeren op de
-%I onderdelen van een lijst.
-%I
-%I Als de status 'stop' is, dan worden geen sorteringen naar
-%I de lijst weggeschreven. Als het criterium 'alles' is,
-%I dan worden alle sorteringen in het overzicht opgenomen,
-%I zoniet, dan worden alleen gebruikte opgenomen.
-%P
-%I In principe is een item pas beschikbaar als het is
-%I gedefinieerd. Het is echter mogelijk items te laden,
-%I mits de tekst tenminste eenmaal is verwerkt. Het is dus
-%I mogelijk items op te roepen die pas later worden
-%I gedefinieerd.
-%I
-%I \laadnamen
-%I
-%I of, zoals bij logo's:
-%I
-%I \laadlogos
-%I
-%I Bij een eerste run zijn de commando's nog niet
-%I beschikbaar. Een logo kan dus het best worden opgeroepen
-%I met: \naam{...}, bijvoorbeeld \naam{PRAGMA} in plaats van
-%I \PRAGMA.
-
-% Formaat tex-utility-input-file <jobname.tui>:
-%
-% synonym entry {tag} {pure} {text} {}
-%
-% Deze file wordt met het programma TeXUtil omgezet in een
-% in te lezen TeXFile met de commando's:
-%
-% \synonymentry {tag} {pure} {text} {}
-
-\def\dostelsorterenin[#1][#2]%
- {\getparameters[\??so#1][#2]}
-
-\def\stelsorterenin%
- {\dodoubleargument\dostelsorterenin}
-
-\def\doresetsorteren#1%
- {\letvalue{#1\s!entry}=\gobblethreearguments}
-
-\def\dosetsorteren#1%
- {\setvalue{#1\s!entry}##1##2##3%
- {\def\dowritesort####1####2####3{}%
- \global\utilitydonetrue
- \bgroup
- \doifdefinedelse{\??so#1\c!commando}
- {\getvalue{\??so#1\c!commando}{##2}}
- {\getvalue{\??so#1\c!voor}%
- \doattributes{\??so#1}{##2}%
- \getvalue{\??so#1\c!na}}%
- \egroup}}
-
-\def\doplaatslijstmetsorteren#1% NOG EEN RUWE VERSIE MAKEN
- {\witruimte % ZONDER WITRUIMTE ETC ETC
- \begingroup
- \stelwitruimtein[\v!geen]%
- \doutilities{#1}{\jobname}{#1}{}{\par}%
- \endgroup
- \ifutilitydone\else\geenwitruimte\fi}
-
-\def\dovolledigelijstmetsorteren#1#2%
- {\plaatsvolledig
- {\systemsuppliedchapter}{#1}{\headtext{#2}}
- {\doplaatslijstmetsorteren{#1}}}
-
-\def\processsort#1#2#3%
- {\explicithmode
- \bgroup
- \doattributes{\??so#1}{#2}%
- \egroup}
-
-\def\dowritesort#1#2#3%
- {\bgroup
- \doifelsevalue{\??so#1\c!expansie}{\v!ja}
- {\immediate\write\uti{s e {#1} {#2} {#3} {}}}
- {\convertargument#3\to\asciia
- \immediate\write\uti{s e {#1} {#2} {\asciia} {}}}%
- \egroup}
-
-\def\synonymentry#1%
- {\executeifdefined{#1\s!entry}\gobblethreearguments}
-
-\def\preexecutesort#1#2#3%
- {\ifdoinpututilities \else
- \dowritesort{#1}{#2}{#3}%
- \setgvalue{#2}{\donottest\processsort{#1}{#3}{#2}}%
- \fi}
-
-\def\executesort#1#2#3%
- {\preexecutesort{#1}{#2}{#3}%
- \processsort{#1}{#3}{#2}}
-
-\def\doloadsort#1%
- {\setvalue{#1\s!entry}##1##2##3%
- {\setgvalue{##1}{##2}%
- \global\utilitydonetrue}}
-
-\def\dolaadsorteren#1#2%
- {\bgroup
- \let\dosetsorteren=\doloadsort
- \showmessage{\m!systems}{20}{#2}%
- \doutilities{#1}{\jobname}{}{}{}%
- \egroup
- \setvalue{\s!check#1}##1{}}
-
-\def\dodocomplexsort[#1][#2]#3%
- {\getvalue{\s!check#1}{#2}%
- \doifelsevalue{\??so#1\c!status}{\v!start}
- {\doifelsevalue{\??so#1\c!criterium}{\v!alles}
- {\preexecutesort{#1}{#2}{#3}}
- {\setgvalue{#2}{\donottest\executesort{#1}{#2}{#3}}}}
- {\setgvalue{#2}{\donottest\processsort{#1}{#3}{#2}}}}
-
-\def\docomplexsort[#1][#2][#3]#4%
- {\ifthirdargument
- \dodocomplexsort[#2][#1#3]{#4}
- \else
- \dowritesort{#2}{#4}{#4}%
- \fi}
-
-\def\dodefinieersorteren[#1][#2][#3]%
- {\getparameters[\??so#1]
- [\c!commando=,
- \c!status=\v!start,
- \c!criterium=,
- \c!letter=,
- \c!voor=,
- \c!na=\endgraf]%
- \presetheadtext[#2=\Woord{#2}]%
- \setvalue{\e!stel#2\e!in}[##1]%
- {\getparameters[\??so#1][##1]}%
- \ifthirdargument
- \def#3##1%
- {\getvalue{\??so:#1:##1}}
- \setvalue{#1}%
- {\dotripleempty\docomplexsort[\??so:#1:][#1]}%
- \else
- \setvalue{#1}%
- {\dotripleempty\docomplexsort[][#1]}%
- \fi
- \setvalue{\s!set#1}%
- {\dosetsorteren{#1}}%
- \setvalue{\s!reset#1}%
- {\doresetsorteren{#1}}%
- \addutilityreset{#1}%
- \setvalue{\e!laad#2}%
- {\dolaadsorteren{#1}{#2}}%
- \setvalue{\s!check#1}##1%
- {\checkdefined{sorteren}{#1}{##1}}%
- \setvalue{\e!plaats\e!lijstmet#2}%
- {\doplaatslijstmetsorteren{#1}}%
- \setvalue{\e!volledige\e!lijstmet#2}%
- {\dovolledigelijstmetsorteren{#1}{#2}}}
-
-\def\definieersorteren%
- {\dotripleempty\dodefinieersorteren}
-
-%I n=Afkortingen
-%I c=\afkorting,\volledigelijstmetafkortingen
-%I
-%I Een afkorting wordt gedefinieerd met:
-%I
-%I \afkorting{afkorting}{betekenis}
-%I
-%I en opgeroepen met:
-%I
-%I \voluit{afkorting}
-%I
-%I Een lijst met afkortingen wordt gegenereerd met:
-%I
-%I \plaatslijstmetafkortingen
-%I \volledigelijstmetafkortingen
-
-%T n=afkorting
-%T m=afk
-%T a=a
-%T
-%T \afkorting {?} {}
-
-%I n=Eenheden
-%I c=\eenheid,\betekenis,\wiskunde
-%I
-%I Een afkorting wordt gedefinieerd met:
-%I
-%I \eenheid [eenheid] {dimensie} {betekenis}
-%I
-%I en opgeroepen met:
-%I
-%I \betekenis {eenheid}
-%I
-%I Een voorbeeld van een definitie is:
-%I
-%I \eenheid [KUUB] {m^3} {inhoud}
-%I
-%I Een lijst met eenheden wordt gegenereerd met:
-%I
-%I \plaatslijstmeteenheden
-%I \volledigelijstmeteenheden
-%P
-%I Aanvullend zijn twee commando's beschikbaar die worden
-%I gebruikt bij het zetten van eenheden:
-%I
-%I \wiskunde{wiskundige commando's}
-%I \dimensie{wiskundige eenheid}
-%I
-%I Het eerste commando maakt $ binnen $ mogelijk, het
-%I laatste commando handelt ook de spatiering af.
-%I
-%I Een teveel aan spatiering kan ongedaan worden voorkomen
-%I met:
-%I
-%I \geendimensie{wiskundige eenheid}
-
-% documenteren \bmath ..\emath
-
-\def\bmath%
- {\begingroup
- \ifmmode
- \let\emath=\endgroup
- \else
- $\def\emath{$\endgroup}%
- \fi}
-
-\def\mathematics#1% % \bmath ...\emath kan ook maar
- {\ifmmode#1\else$#1$\fi} % dit alternatief scheelt grouping
-
-\def\dimensionsignal{0.000058pt}
-
-\def\dimension#1%
- {\def\dodimensionsignal{\kern\dimensionsignal}%
- \ifdim\lastskip=\!!zeropoint\relax
- \ifdim\lastkern=\!!zeropoint\relax
- \ifmmode
- \mathematics{\,\,\tf#1}%
- \else
- \mathematics{\tf#1}%
- \fi
- \else\ifdim\lastkern=\dimensionsignal
- \mathematics{\,\tf#1}%
- \else
- \unkern\mathematics{\,\,\tf#1}%
- \fi\fi
- \else
- \unskip\mathematics{\,\,\tf#1}%
- \fi
- \dodimensionsignal}
-
-\def\nodimension#1%
- {\unskip#1\gdef\dodimensionsignal{}}
-
-%I n=Registers
-%I c=\definieerregister,\stelregisterin
-%I c=\volledigregister,\plaatsregister
-%I
-%I Er kunnen registers worden gedefinieerd met het commando:
-%I
-%I \definieerregister[naam][namen]
-%I
-%I Vanaf dat moment zijn de volgende commando's beschikbaar:
-%I
-%I \naam[ascii]{ingang+ingang+ingang}
-%I \zienaam[ascii]{ingang+ingang+ingang}{andere ingang}
-%I \plaatsnaam
-%I \volledigenaam
-%I
-%I of
-%I
-%I \plaatsregister[naam]
-%I \volledigregister[naam]
-%I
-%I De commando's rond de standaard index zijn gedefinieerd
-%I met de waarden: [index][indices]
-%P
-%I In de tekst dient een registerverwijzing voor het woord
-%I te staan, dus: we verwijzen naar \index{woord}woord.
-%I
-%I Bij koppen daarentegen plaatsen we \index na de kop:
-%I
-%I \subparagraaf{dat is dat}
-%I \index{ziezo}
-%I
-%I ........... tekst .....
-%I
-%I of
-%I
-%I \margewoord{ziezo}
-%I \index{ziezo}
-%I
-%I ........... tekst .....
-%I
-%I Ongewenste spaties na \index worden verwijderd! Wil men
-%I dus een spatie, dan moet dit worden afgedwongen met \ .
-%P
-%I Mocht het hierboven beschreven mechanisme interfereren
-%I met andere mechanismen, dan kan ook het volgende commando
-%I worden gebruikt:
-%I
-%I \schrijfnaarregister[naam][ascii]{ingang+ingang+ingang}
-%I
-%I waarbij [ascii] optioneel is.
-%P
-%I De registers kunnen worden ingesteld met het commando:
-%I
-%I \stelregisterin[naam][letter=,aanduiding=,n=,
-%I balanceren=,uitlijnen=,criterium=,afstand=,symbool=,
-%I expansie=]
-%I
-%I waarbij 'aanduiding' betrekking heeft op het al dan niet
-%I plaatsen van een letter ('ja' of 'nee') en 'letter' op de
-%I weergave van de letter.
-%I
-%I Met 'criterium' kan een subindex worden opgeroepen,
-%I bijvoorbeeld 'deel' of 'hoofdstuk', of als het niveau
-%I onbekend is: 'lokaal'. Standaard wordt een volledige index
-%I gegenereerd ('alles').
-%I
-%I In plaats van een paginanummer kan een symbool worden
-%I gezet: n (1,2,3,..), a (a,b,c,..), 1 (bolletjes) en
-%I 2 (rechthoekjes). Een symbool heeft alleen zin bij
-%I interactieve teksten.
-%I
-%I Voor eigen gebruik is \ifregistergeplaatst beschikbaar.
-%P
-%I In plaats van een + als scheider kan ook & worden
-%I gebruikt. Bovendien kan als eerste karakter worden opgegeven
-%I wat de scheider is:
-%I
-%I \index[abcformule]{&formule&$ax^2+bx+c$}
-%I
-%I Overigens gaat de & voor de +, zodat hier de specificatie
-%I niet per se nodig is. Let wel: dit is een kenmerk van
-%I texutil, en niet zozeer van ConTeXt.
-
-% Formaat tex-utility-input-file <jobname.tui>:
-%
-% i e {tag} {loc} {pure} {entry+..} {p:c:p:sp:ssp=>page} {realpage}
-% i s {tag} {loc} {pure} {entry+..} {other entry}
-%
-% In plaats van + kan een & worden gebruikt. Ook kan als
-% eerste karakter worden opgegeven wat de scheider is.
-%
-% Deze file wordt met het programma TeXUtil omgezet in
-% een in te lezen TeXFile met de commando's:
-%
-% \registerentrya {tag} {ingang}
-% \registerentryb {tag} {subingang}
-% \registerentryc {tag} {subsubingang}
-%
-% \registerpage {tag} {volgnummer} {paginanummer} {volgnummer}
-%
-% \registersee {tag} {andere ingang}
-%
-% \registerentry {tag} {letter}
-
-\def\dostelregisterin[#1][#2]%
- {\getparameters[\??id#1][#2]%
- \preparepaginaprefix{\??id#1}}
-
-\def\stelregisterin%
- {\dodoubleargumentwithset\dostelregisterin}
-
-\def\getlastregisterentry#1%
- {\def\docommando##1%
- {\def\!!stringa{##1}}%
- \processconcanatedlist[#1][+]\docommando
- \!!stringa}
-
-\def\doprocessregister[#1]#2%
- {\begingroup
- \thisisnextinternal{\s!ind}%
- \ifduplicate\getlastregisterentry{#2}\fi
- \doifelsevalue{\??id\currentregister\c!expansie}{\v!ja}
- {\edef\ascii{#2}}
- {\convertargument#2\to\ascii}%
- \makesectionformat
- \edef\schrijfwegnaarregister%
- {\write\uti%
- {r e %
- {\currentregister} %
- {\nextinternalreference} %
- {#1} %
- {\ascii} %
- {\sectionformat::\noexpand\paginanummer} %
- {\noexpand\realfolio}}}%
- \schrijfwegnaarregister
- \getfirstcharacter\currentregister
- \registerinfo{> \firstcharacter}{#2}%
- \endgroup}
-
-\def\complexdoregister[#1]#2%
- {\doprocessregister[#1]{#2}%
- \ifvmode\nobreak\fi
- \GotoPar}
-
-\def\doregister#1%
- {\def\currentregister{#1}%
- \complexorsimpleempty{doregister}}
-
-\def\complexdozieregister[#1]#2#3%
- {\begingroup
- \thisisnextinternal{\s!ind}%
- \ifduplicate\getlastregisterentry{#2}\fi
- \doifelsevalue{\??id\currentregister\c!expansie}{\v!ja}
- {\edef\ascii{#2}}
- {\convertargument#2\to\ascii}%
- \makesectionformat
- \edef\schrijfwegnaarregister%
- {\write\uti%
- {r s %
- {\currentregister} %
- {\nextinternalreference} %
- {#1} %
- {\ascii} %
- {#3} %
- {\sectionformat}}}%
- \schrijfwegnaarregister
- \endgroup
- \registerinfo{> zie}{#2}%
- \GotoPar}
-
-\def\dozieregister#1%
- {\def\currentregister{#1}%
- \complexorsimpleempty{dozieregister}}
-
-\def\doschrijfnaarregister[#1]% % de twee-traps-aanroep is nodig
- {\edef\currentregister{#1}% % om gebruik van \ExpandBothAfter
- \doprocessregister} % mogelijk te maken
-
-\def\schrijfnaarregister%
- {\dodoubleempty\doschrijfnaarregister}
-
-\def\ifregistergeplaatst{\ifutilitydone}
-
-\newif\iffirstregisterpage
-
-\def\c!entrya{}
-\def\c!entryb{}
-\def\c!entryc{}
-
-\def\nextregisterpage%
- {\iffirstregisterpage
- \doglobal\newcounter\registerpagenumber
- \fi
- \doglobal\increment\registerpagenumber}
-
-\def\doregisterpagelocation#1%
- {\nextregisterpage
- \hbox to 1em{\hss#1\hss}}
-
-\def\setregisterpage#1%
- {\let\registerpageseparator=\relax
- \processaction
- [\getvalue{\??id#1\c!symbool}]
- [ \c!n=>{\def\doregisterpage##1[##2]%
- {\doregisterpagelocation{\sl\registerpagenumber}\/}},
- \c!a=>{\def\doregisterpage##1[##2]%
- {\doregisterpagelocation{\sl\character{\registerpagenumber}\/}}},
- 1=>{\def\doregisterpage##1[##2]%
- {\doregisterpagelocation{$\bullet$}}},
- 2=>{\def\doregisterpage##1[##2]%
- {\doregisterpagelocation{\vrule\!!width1em\!!height1ex\!!depth\!!zeropoint}}},
- \s!unknown=>{\def\registerpagesymbol{\getvalue{\??id#1\c!symbool}}%
- \def\doregisterpage##1[##2]%
- {\doregisterpagelocation{\registerpagesymbol}}},
- \s!default=>{\def\registerpageseparator%
- {{\sl,}}%
- \def\doregisterpage##1[##2]%
- {{\strut\sl\paginaprefix{\??id##1}[##2]\translatednumber[##2]}}}]}
-
-\def\doresetregister#1%
- {\letvalue{#1\s!entrya}=\gobbleoneargument
- \letvalue{#1\s!entryb}=\gobbleoneargument
- \letvalue{#1\s!entryc}=\gobbleoneargument
- \letvalue{#1\s!see}=\gobbletwoarguments
- \letvalue{#1\s!page}=\gobblethreearguments
- \letvalue{#1\s!entry}=\gobbleoneargument}
-
-\def\registerentrya#1{\executeifdefined{#1\s!entrya}\gobbleoneargument}
-\def\registerentryb#1{\executeifdefined{#1\s!entryb}\gobbleoneargument}
-\def\registerentryc#1{\executeifdefined{#1\s!entryc}\gobbleoneargument}
-\def\registersee #1{\executeifdefined{#1\s!see}\gobbletwoarguments}
-\def\registerpage #1{\executeifdefined{#1\s!page}\gobblethreearguments}
-\def\registerentry #1{\executeifdefined{#1\s!entry}\gobbleoneargument}
-
-\newif\iffirstsubentry
-\newif\iffirstsubsubentry
-
-\newcounter\currententrylevel
-
-\def\dosetpageregister#1%
- {\dosetreglevel{\getvalue{\??id#1\c!criterium}}%
- \setregisterpage{#1}%
- \setvalue{#1\s!entrya}##1%
- {\edef\currententrylevel{1}%
- \global\let\c!entryb=\relax
- \global\let\c!entryc=\relax
- \gdef\c!entrya%
- {\global\firstregisterpagetrue
- \endgraf
- \hangindent1em\noindent
- \dohandleregisterentry{##1}%
- \global\firstsubentrytrue
- \global\firstsubsubentrytrue}}%
- \setvalue{#1\s!entryb}##1%
- {\edef\currententrylevel{2}%
- \global\let\c!entryc=\relax
- \global\def\c!entryb%
- {\global\firstregisterpagetrue
- \endgraf
- \iffirstsubentry\nobreak\fi
- \hangindent2em\noindent\hskip1em\relax
- \dohandleregisterentry{##1}%
- \global\firstsubentryfalse
- \global\firstsubsubentrytrue}}%
- \setvalue{#1\s!entryc}##1%
- {\edef\currententrylevel{3}%
- \gdef\c!entryc%
- {\global\firstregisterpagetrue
- \endgraf
- \iffirstsubsubentry\nobreak\fi
- \hangindent3em\noindent\hskip2em\relax
- \dohandleregisterentry{(##1)}%
- \global\firstsubsubentryfalse}}%
- \setvalue{#1\s!page}##1##2##3%
- {\doifreglevelelse[##2]
- {\global\utilitydonetrue
- \c!entryletter
- \def\dohandleregisterentry####1%
- {\bgroup
- \if!!donea
- \setbox0=\hbox{\showlocation{\getvalue{\??id#1\c!tekstcommando}{####1}}}%
- \gotonextinternal{\s!ind}{##1}{\copy0}{##3}%
- \else
- \getvalue{\??id#1\c!tekstcommando}{####1}%
- \fi
- \egroup
- \!!doneafalse}%
- \!!doneafalse
- \doifelsevalue{\??id#1\c!interactie}{\v!tekst}
- {\ifcase\currententrylevel
- \or
- \!!doneatrue\c!entrya\c!entryb\c!entryc
- \or
- \c!entrya\!!doneatrue\c!entryb\c!entryc
- \or
- \c!entrya\c!entryb\!!doneatrue\c!entryc
- \fi}
- {\c!entrya\c!entryb\c!entryc}%
- \global\let\c!entrya=\relax
- \global\let\c!entryb=\relax
- \global\let\c!entryc=\relax
- \global\let\c!entryletter=\relax
- \iffirstregisterpage
- \expandafter\hskip\getvalue{\??id#1\c!afstand}\relax
- \else
- \registerpageseparator % || Moet anders
- |\spatie|\relax % \relax needed because | looks ahead
- \fi
- \doifelsevalue{\??id#1\c!interactie}{\v!paginanummer}
- {\bgroup
- \setbox0=\hbox{\showlocation{\doregisterpage{#1}[##2]}}%
- \gotonextinternal{\s!ind}{##1}{\copy0}{##3}%
- \egroup}
- {\hbox{\doregisterpage{#1}[##2]}}%
- \ignorespaces
- \global\firstregisterpagefalse}
- {}}%
- \setvalue{#1\s!see}##1##2%
- {\doifreglevelelse[##2::0]
- {{\global\utilitydonetrue
- \endgraf
- \noindent\hskip\getvalue{\??id#1\c!afstand}%
- \sl\e!zie: ##1}}
- {}}%
- \setvalue{#1\s!entry}##1%
- {\gdef\c!entryletter%
- {\global\let\c!entryletter=\relax
- \global\utilitydonetrue
- \getvalue{\??id#1\c!voor}%
- %\vskip\lineheight\vskip-\lineheight\goodbreak
- \vskip\lineheight\goodbreak\vskip-\lineheight
- \doifelsevalue{\??id#1\c!aanduiding}{\v!ja}
- {\ifhmode\unskip\else\noindent\fi
- \getvalue{\??id#1\c!commando}% % needed
- {\doattributes{\??id#1}
- {\doifvalue{\??id#1\c!refereren}{\v!aan}
- {\paginareferentie[#1:##1]}%
- \strut\ignorespaces##1}}%
- \getvalue{\??id#1\c!na}%
- \par\nobreak} % don't use \string##1, other hack
- {\goodbreak % needed ##1 can be \string...
- \doifvalue{\??id#1\c!refereren}{\v!aan}
- {\paginareferentie[#1:##1]}}}}}
-
-\def\getalllistreferences#1#2%
- {\convertargument#2\to\currentregisterentry
- \doifdefinedelse{\??id#1\??id\currentregisterentry}
- {\edef\alllistreferences%
- {\getvalue{\??id#1\??id\currentregisterentry}}%
- \beforesplitstring\alllistreferences\at::\to\internallistreference
- \aftersplitstring\alllistreferences\at::\to\alllistreferences}
- {\let\alllistreferences=\empty
- \def\internallistreference{0}}}
-
-\def\dosetlinkregister#1%
- {\dosetreglevel{\getvalue{\??id#1\c!criterium}}%
- \setregisterpage{#1}%
- \setvalue{#1\s!entrya}##1%
- {\global\utilitydonetrue
- \c!entryletter
- \iflocation
- \getalllistreferences{#1}{##1}%
- \endgraf\hangindent1em\noindent
- %
- %\thisisinternal{\s!lin:\internallistreference}%
- %
- \paginareferentie[\s!lin:\internallistreference]%
- %
- \getcommacommandsize[\alllistreferences]%
- \getfromcommacommand[\alllistreferences][1]%
- \ifnum\commalistsize=1
- \let\firstlistreference=\empty
- \let\midlistreference=\commalistelement
- \let\lastlistreference=\empty
- \else
- \let\firstlistreference=\commalistelement
- \getfromcommacommand[\alllistreferences][\commalistsize]%
- \let\lastlistreference=\commalistelement
- \ifnum\commalistsize=2
- \let\midlistreference=\empty
- \else
- \!!counta=\commalistsize
- \divide\!!counta by 2
- \getfromcommacommand[\alllistreferences][\!!counta]%
- \let\midlistreference=\commalistelement
- \fi
- \fi
- \hskip-.25em\relax
- \getvalue{\??id#1\c!tekstcommando}{##1}%
- \hskip\getvalue{\??id#1\c!afstand}%
- \def\dodocommando[####1-####2]%
- {\gotonextinternal{\s!ind}{####1}{\copy0}{####2}}%
- \def\docommando####1####2%
- {\setbox0=\hbox{\showlocation{\hbox to 1em{\hss####2\hss}}}%
- \ifx####1\empty
- % \hskip\wd0 % (optioneel maken)
- \else
- \expandafter\dodocommando\expandafter[####1]%
- \fi}%
- {\docommando\firstlistreference\gobackwardcharacter}%
- {\docommando\midlistreference\gotosomewherecharacter}%
- {\docommando\lastlistreference\goforwardcharacter}%
- \else
- ##1%
- \fi}%
- \setvalue{#1\s!entry}##1% hetzelfde dus gemeenschappelijk
- {\gdef\c!entryletter%
- {\global\utilitydonetrue
- \global\let\c!entryletter=\relax
- \getvalue{\??id#1\c!voor}%
- %\vskip\lineheight\vskip-\lineheight\goodbreak
- \vskip\lineheight\goodbreak\vskip-\lineheight
- \doifelsevalue{\??id#1\c!aanduiding}{\v!ja}
- {\ifhmode\unskip\else\noindent\fi
- \getvalue{\??id#1\c!commando}% % needed
- {\doattributes{\??id#1}
- {\doifvalue{\??id#1\c!refereren}{\v!aan}
- {\paginareferentie[#1:##1]}%
- \strut##1}}%
- \getvalue{\??id#1\c!na}%
- \par\nobreak} % don't use \string##1, other hack
- {\goodbreak % needed ##1 can be \string...
- \doifvalue{\??id#1\c!refereren}{\v!aan}
- {\paginareferentie[#1:##1]}}}}}
-
-\def\dosetregister#1%
- {\doifelsevalue{\??id#1\c!koppeling}{\v!ja}
- {\dosetlinkregister{#1}}
- {\dosetpageregister{#1}}}
-
-\newcounter\internallistreference
-
-\def\doloadregisterlinks#1%
- {\dosetreglevel{\getvalue{\??id#1\c!criterium}}%
- \setregisterpage{#1}%
- \setvalue{#1\s!entrya}##1%
- {\global\firstregisterpagetrue
- \doglobal\convertargument##1\to\currentregisterentry % \doglobal nodig?
- \doglobal\increment\internallistreference}%
- \setvalue{#1\s!page}##1##2##3%
- {\doifreglevelelse[##2]
- {\global\utilitydonetrue
- \iffirstregisterpage
- \global\firstregisterpagefalse
- \setxvalue{\??id#1\??id\currentregisterentry}%
- {\internallistreference::##1-##3}%
- \else
- \setxvalue{\??id#1\??id\currentregisterentry}%
- {\getvalue{\??id#1\??id\currentregisterentry},##1-##3}%
- \fi}
- {}}}
-
-\def\dokoppelregister[#1][#2]%
- {\iflocation
- \begingroup
- \let\dosetregister=\doloadregisterlinks
- \stelregisterin[#1][#2]%
- \doutilities{#1}{\jobname}{#1}{}{}%
- \endgroup
- \fi}
-
-\def\koppelregister%
- {\dodoubleempty\dokoppelregister}
-
-\def\doprocesslinkedregister[#1][#2]#3%
- {\hbox
- {\doprocessregister[#2]{#3}%
- \let\firstlistreference=\empty
- \let\lastlistreference=\empty
- \let\selflistreference=\empty
- \let\prevlistreference=\empty
- \let\nextlistreference=\empty
- \getalllistreferences{#1}{#3}%
- \doifnot{\alllistreferences}{}
- {\def\dodocommando[##1-##2]%
- {\ifx\firstlistreference\empty
- \def\firstlistreference{##1-##2}%
- \fi
- \def\lastlistreference{##1-##2}%
- \ifnum##1<\nextinternalreference\relax
- \def\prevlistreference{##1-##2}%
- \else\ifnum##1>\nextinternalreference\relax
- \def\nextlistreference{##1-##2}%
- \def\dodocommando[####1-####2]%
- {\def\lastlistreference{####1-####2}}%
- \else
- \def\selflistreference{##1-##2}%
- \fi\fi}%
- \def\docommando##1%
- {\dodocommando[##1]}%
- \processcommacommand[\alllistreferences]\docommando}%
- \ifx\prevlistreference\empty
- \let\prevlistreference=\lastlistreference
- %\let\gobackwardcharacter=\gotoendcharacter
- \fi
- \ifx\nextlistreference\empty
- \let\nextlistreference=\firstlistreference
- %\let\goforwardcharacter=\gotobegincharacter
- \fi
- \ifx\prevlistreference\selflistreference
- \let\prevlistreference=\empty
- \let\nextlistreference=\empty
- \fi
- \def\dodocommando[##1-##2]%
- {\gotonextinternal{\s!ind}{##1}{\copy0}{##2}}%
- \def\docommando##1##2%
- {\setbox0=\hbox to 1em{\hss\showlocation{##2}\hss}%
- \ifx##1\empty
- \hskip\wd0 % (optioneel maken)
- \else
- \expandafter\dodocommando\expandafter[##1]%
- \fi}%
- \bgroup
- \docommando\prevlistreference{\gobackwardcharacter}%
- \egroup
- \bgroup
- \doifreferencefoundelse{\s!lin:\internallistreference}
- {\getrealreference{\s!lin:\internallistreference}%
- \gotointernal
- {\s!lin:\internallistreference}
- {\showlocation{#3}}
- {\currentrealreference}}
- {\hbox{#3}}%
- \egroup
- \bgroup
- \docommando\nextlistreference{\goforwardcharacter}%
- \egroup}}
-
-\def\dodolinkedregister[#1][#2]#3%
- {\bgroup
- \def\currentregister{#1}%
- \iflocation
- \doifelsevalue{\??id#1\c!koppeling}{\v!ja}
- {\def\next{\doprocesslinkedregister[#1][#2]{#3}}}
- {\def\next{\doprocessregister[#2]{#3}}}% ook hier [#1]
- \else
- \def\next{\doprocessregister[#2]{#3}}%
- \fi
- \next
- \egroup
- \ifvmode\nobreak\fi
- \GotoPar}
-
-\def\dolinkedregister#1%
- {\dodoubleempty\dodolinkedregister[#1]}
-
-\def\complexdoplaatsregister[#1]%
- {\begingroup
- \stelregisterin[\currentregister][#1]%
- \raggedright
- \startkolommen
- [\c!n=\getvalue{\??id\currentregister\c!n},
- \c!balanceren=\getvalue{\??id\currentregister\c!balanceren},
- \c!uitlijnen=\getvalue{\??id\currentregister\c!uitlijnen}]%
- \mindermeldingen
- \startopelkaar[\v!blanko]%
- \doutilities{\currentregister}{\jobname}{\currentregister}{}{\par}%
- \stopopelkaar
- \stopkolommen
- \endgroup}
-
-\def\doplaatsregister[#1]%
- {\def\currentregister{#1}%
- \complexorsimpleempty{doplaatsregister}}
-
-\def\plaatsregister%
- {\dosingleargument\doplaatsregister}
-
-\def\complexdovolledigregister[#1]% \@EA's kunnen weg
- {\@EA\plaatsvolledig\@EA{\@EA\systemsuppliedchapter\@EA}%
- \@EA{\@EA\currentregister\@EA}%
- \@EA{\@EA\headtext\@EA{\currentregister}}%
- {\complexdoplaatsregister[#1]}}
-
-\def\dovolledigregister[#1]%
- {\def\currentregister{#1}%
- \complexorsimpleempty{dovolledigregister}}
-
-\def\volledigregister%
- {\dosingleargument\doplaatsregister}
-
-\def\dodefinieerregister[#1][#2]%
- {\stelregisterin[#1]%
- [\c!n=2,
- \c!balanceren=\v!ja, % \v!nee komt niet zo vaak voor
- \c!uitlijnen=\v!nee,
- \c!voor=\blanko, % binnen kolommen: \blanko[\v!regel]
- \c!na=,
- \c!symbool=,
- \c!interactie=\v!paginanummer,
- \c!afstand=1em,
- \c!letter=\v!vet,
- \c!aanduiding=\v!ja,
- \v!deel\c!nummer=\v!ja,
- \v!hoofdstuk\c!nummer=\v!nee,
- \c!criterium=\v!alles,
- \c!commando=,
- \c!refereren=\v!aan]%
- \presetheadtext[#1=\Woord{#1}]%
- \setvalue{#1}%
- {\doregister{#1}}%
- \setvalue{\e!gekoppelde#1}%
- {\dolinkedregister{#1}}%
- \setvalue{\s!set#1}%
- {\dosetregister{#1}}%
- \setvalue{\s!reset#1}%
- {\doresetregister{#1}}%
- \addutilityreset{#1}%
- \setvalue{\e!zie#1}%
- {\dozieregister{#1}}%
- \setvalue{\e!plaats#1}%
- {\doplaatsregister[#1]}%
- \setvalue{\e!volledige#1}%
- {\dovolledigregister[#1]}%
- \setvalue{\e!stel#1\e!in}[##1]%
- {\getparameters[\??id#1][##1]}}
-
-\def\definieerregister%
- {\dodoubleargument\dodefinieerregister}
-
-\def\registerlengte {\utilityregisterlength}
-
-\def\utilityregisterlength {0}
-
-\def\dobepaalregisterkenmerken[#1][#2]%
- {\begingroup
- \stelregisterin[#1][#2]%
- \dosetreglevel{\getvalue{\??id#1\c!criterium}}%
- \setvalue{#1\s!page}##1##2##3%
- {\doifreglevelelse[##2]
- {\doglobal\increment\utilitylistlength
- \global\utilitydonetrue}
- {}}%
- \doglobal\newcounter\utilityregisterlength
- \setbox0=\vbox
- {\doutilities{#1}{\jobname}{#1}{}{}}%
- \endgroup}
-
-\def\bepaalregisterkenmerken%
- {\dodoubleempty\dobepaalregisterkenmerken}
-
-%I n=Index
-%I c=\index,\zieindex,\volledigeindex
-%I
-%I Een ingang naar de index wordt gecreeerd met:
-%I
-%I \index[ascii]{ingang+ingang+ingang}
-%I
-%I Een verwijzing wordt gecreerd met:
-%I
-%I \zieindex[ascii]{ingang+ingang+ingang}{andere ingang}
-%I
-%I Een index kan (vooralsnog) alleen een eenvoudig
-%I zetcommando afhandelen, bijvoorbeeld: \index{\bf{test}} of
-%I \index{\kap{anwb}}. Meer is vaak niet nodig.
-%I
-%I Als een ingang niet goed gesorteerd wordt, dient [ascii]
-%I te worden meegegeven: \index[anwb]{\kap{anwb}}.
-%I
-%I Een index wordt gegenereerd met:
-%I
-%I \plaatsindex
-%I \volledigeindex
-
-%T n=index
-%T m=ind
-%T a=i
-%T
-%T \index{?}
-
-%I n=Buffers
-%I c=\startbuffer,\haalbuffer,\typebuffer
-%I
-%I Een stuk tekst kan in een buffer worden opgeslagen en
-%I later worden opgeroepen. Dit kan de opbouw van de
-%I ruwe ASCII-file ten goede komen.
-%I
-%I \startbuffer[naam]
-%I \stopbuffer
-%I
-%I Een buffer is eigenlijk een tijdelijke file. Deze file
-%I heeft de extensie 'tmp' en overschrijft dus een file met
-%I dezelfde naam!
-%I
-%I Een buffer kan worden opgeroepen met:
-%I
-%I \haalbuffer[naam]
-%I \typebuffer[naam]
-%I
-%I In alle gevallen is de naam optioneel en mag dus worden
-%I weggelaten.
-%P
-%I Voor en na het wegschrijven kunnen commando's worden
-%I uitgevoerd. Deze worden ingesteld met:
-%I
-%I \stelbufferin[voor=,na=]
-%P
-%I Omdat het argument optioneel is, wat moet worden getest,
-%I worden alle spaties tot het eerste woord onderdrukt. Dit
-%I betekent dat als er moet worden getypt (\typebuffer) en
-%I terwijl voor het eerste woord spaties moeten staan, er
-%I bewust wel (!) een naam moet worden opgegeven.
-
-% nog \definieerbuffer[naam]
-%
-% \startnaam == \startbuffer[#1][naam]
-
-% \EveryPar%
-% {\doglobal\newcounter\NOfLines}
-%
-% \EveryLine%
-% {\doglobal\increment\NOfLines%
-% \hskip-3em%
-% \hbox to 3em{\hss\NOfLines\hskip1em}}
-
-\def\dostartbuffer[#1][#2]%
- {\showmessage{\m!systems}{15}{#1}%
- \doifelse{#2}{}
- {\let\stopbuffer=\relax % \undefined
- \convertargument\stopbuffer\to\endofblock}
- {\letvalue{#2}=\relax % \undefined
- \@EA\convertargument\csname#2\endcsname\to\endofblock}%
- \def\closeblock%
- {\immediate\closeout\tmpblocks
- \egroup
- \getvalue{#2}}%
- \doifelsenothing{#1}
- {\immediate\openout\tmpblocks=\jobname.\f!temporaryextension}
- {\immediate\openout\tmpblocks=#1.\f!temporaryextension}%
- \setupcopyblock
- \def\writeoutblocks##1{}%
- \copyblockline}
-
-\def\startbuffer%
- {\bgroup
- \obeylines % nodig, anders gaat 't fout als direct \starttabel (bv)
- \dodoubleempty\dostartbuffer}
-
-\def\dobuffer[#1]#2%
- {\doifelsenothing{#1}
- {#2{\jobname.\f!temporaryextension}{}{}}
- {#2{#1.\f!temporaryextension}{}{}}}
-
-\def\dohaalbuffer[#1]%
- {\@@buvoor
-\beginrestorecatcodes
- \showmessage{\m!systems}{16}{#1}%
- \dobuffer[#1]\readjobfile
-\endrestorecatcodes
- \@@buna}
-
-\def\haalbuffer%
- {\dosingleempty\dohaalbuffer}
-
-\def\dotypebuffer[#1]%
- {\bgroup
- % no, just like \starttyping % \setuptyping[\c!voor=\@@buvoor,\c!na=\@@buna]%
- \showmessage{\m!systems}{17}{#1}%
- \dobuffer[#1]\typefile
- \egroup}
-
-\def\typebuffer%
- {\dosingleempty\dotypebuffer}
-
-\def\stelbufferin%
- {\dodoubleargument\getparameters[\??bu]}
-
-%I n=Tekstblokken
-%I c=\definieerblok,\verbergblokken,\handhaafblokken
-%I c=\gebruikblokken,\selecteerblokken,\stelblokin
-%I
-%I Het is mogelijk blokken tekst te verbergen en op andere
-%I plaatsen in de tekst op te roepen. Voorbeelden hiervan
-%I zijn vragen en antwoorden. De antwoorden kunnen onder de
-%I vragen worden ingetypt en bijvoorbeeld in een apart
-%I hoofdstuk worden opgenomen.
-%I
-%I Een tekstblok wordt gedefinieerd met het commando
-%I
-%I \definieerblok[naam]
-%I
-%I en wordt vervolgens steeds omringd door de commando's
-%I
-%I \beginvannaam
-%I tekst
-%I \eindvannaam
-%P
-%I Het zetten van blokken kan worden onderdrukt met het
-%I commando
-%I
-%I \verbergblokken[naam,naam,...]
-%I
-%I wat weer ongedaan gemaakt kan worden met:
-%I
-%I \handhaafblokken[naam,naam,...]
-%I
-%I Blokken kunnen worden opgeroepen met de commando's
-%I
-%I \gebruikblokken[naam,naam,...]
-%I \selecteerblokken[naam,naam,...][criterium=]
-%I
-%I Als criterium kan worden opgegeven: alles of hoofdstuk. In het
-%I laatste geval worden alleen de bij het actulele hoofdstuk horende
-%I blokken tussengevoegd.
-%P
-%I Men moet zonodig eerst het (opnieuw) aanmaken van referenties
-%I onderdrukken met het commando \stelrefererenin[status=stop].
-%I
-%I Genummerde tekstonderdelen (b.v. \doornummeren[vraag]) moeten
-%I desgewenst worden gereset (b.v.\resetvraag)
-%P
-%I De met het volgende commando in te stellen parameters hebben
-%I betrekking op het gebruiken van blokken:
-%I
-%I \stelblokin[naam][voor=,na=,binnen=,letter=]
-%I
-%I Een blok wordt altijd binnen een groep uitgevoerd ({ }).
-%I Zowel 'voor' als 'na' worden buiten deze groep
-%I uitgevoerd, en 'binnen' binnen de groep.
-%P
-%I Soms is het wenselijk tijdens \gebruikblokken sommige blokken
-%I wel 'uit te voeren' maar niet (nogmaals) in de tekst op te
-%I nemen. Als een blok wordt definieerd met:
-%I
-%I \beginvannaam[-]
-%I tekst
-%I \eindvannaam
-%I
-%I dan wordt het ter plaatse al dan niet gezet en bij het later
-%I oproepen wel verwerkt maar niet gezet.
-%I
-%I Als in de tekst een blok wel moet worden verwerkt, maar niet
-%I gezet, dan kan [+] worden opgegeven.
-%P
-%I Het handhaven, verbergen en gebruiken van blokken kan door
-%I de hele tekst plaatsvinden. Binnen ieder hoofdstuk kunnen
-%I bijvoorbeeld blokken worden gedefinieerd die aan het eind van
-%I het hoofdstuk worden opgeroepen. Dit mechanisme noodzaakt
-%I tenminste twee maal verwerken van de file met TeX.
-%I
-%I Een tweede pass is echter niet nodig als na het gebruik geen
-%I nieuwe blokken meer worden gedefinieerd. In dat geval kan
-%I vlak voordat de blokken worden opgeroepen, het commando
-%I
-%I \geenblokkenmeer
-%I
-%I worden gegeven. Dit scheelt tijd.
-
-% In eerste instantie is gebruik gemaakt van een utilityfile. Dit
-% is echter niet perse noodzakelijk. Wellicht dat als er blokken
-% moeten worden gesorteerd, toch weer texutil moet worden
-% gebruikt.
-
-% In de block-move variant hieronder wordt gebruik gemaakt van
-% de in de \answer-macro van Knuth gebruikte copieermethode.
-% Blokken kunnen worden
-%
-% \gehandhaafd : in de tekst worden opgenomen ‚n gecopieerd
-% \verborgen : alleen worden gecopieerd
-% \gebruikt : later in de tekst worden opgenomen
-% \geselecteerd : later selectief in de tekst worden opgenomen
-%
-% Ieder blok wordt gecopieerd naar de file 'jobname.tmp'.
-% Daarnaast wordt een blok tijdelijk opgeslagen in de file
-% 'texutil.tmp'. Handhaven kom tneer op het opnieuw inlezen van
-% deze file.
-%
-% De file 'jobname.tmp' wordt later gecopieerd naar de file
-% 'jobname.tum'. Dit is nodig om in een eerdere run verzamelde
-% blokken te kunnen verwerken.
-
-% Werken met \copie gaat fout. Bovendien zijn de spaties
-% belangrijk!
-%
-% \def\c!copie{copie} % vervalt, verkeerde catcodes
-
-% The use of \string prevents spaces kreeping in when
-% converting the string. Although we can use \meaning in a
-% more direct way, we prfer to use \convertargument, because
-% this way the macro's are more readible.
-
-\def\blockversion {1996.03.10}
-
-\def\@@blockerrormessage%
- {\showmessage{\m!textblocks}{1}{}%
- \global\let\@@blockerrormessage=\relax}
-
-\def\thisisblockversion#1%
- {\doifnot{\blockversion}{#1}%
- {\@@blockerrormessage
- \endinput}}
-
-\def\stopcopyingblocks%
- {\ifcopyingblocks
- \immediate\closeout\outblocks
- \copyblockfile
- \global\copyingblocksfalse
- \fi}
-
-\def\dodosetblockcounters[#1:#2]#3%
- {\setvalue{\??se\s!old#3}{#1}%
- \doifnot{#3}{\lastsection}
- {\dodosetblockcounters[#2:0]{\getvalue{\??se#3\c!na}}}}
-
-\def\dosetblockcounters[#1#2::#3]%
- {\ifblockpermitted
- \dodosetblockcounters[#3:0]\firstsection
- \setsectiontype[#1]%
- \def\@@sectionvalue##1{\getvalue{\??se\s!old##1}}%
- \def\@@sectionconversion##1##2{##2}% to get rid of {##2}
- \fi}
-
-\def\setblockcounters%
- {\@EA\dosetblockcounters\@EA[\blockstatus]}
-
-\def\getblockstatus#1%
- {\dosetblklevel{\getvalue{\??by\@@bscriterium}}%
- \doifblklevelelse[#1]
- {\global\blockpermittedtrue}
- {\global\blockpermittedfalse}%
- \def\blockstatus{#1}}
-
-\newwrite\outblocks
-\newread\inpblocks
-\newwrite\tmpblocks
-
-\newif\ifcopyingblocks
-
-\newbox\blockbox
-
-\newif\ifvisible
-\visibletrue
-
-\newif\ifblockpermitted
-
-\newcount\blocklevel
-\blocklevel=0
-
-\newif\ifoldinbijlagen
-
-\def\opentmpblock%
- {\immediate\openout\tmpblocks=\f!utilityfilename.\f!temporaryextension}
-
-\def\closetmpblock%
- {\immediate\write\tmpblocks{}% een lege regel is handig voor \par commando's
- \immediate\closeout\tmpblocks}
-
-\newif\iftmpblockstarted
-
-\def\writetmpblock#1%
- {\iftmpblockstarted
- \immediate\write\tmpblocks{#1}%
- \else
- \doifsomething{#1}
- {\tmpblockstartedtrue
- \immediate\write\tmpblocks{\string#1}}%
- \fi}
-
-\def\startcopyingblocks%
- {\global\copyingblocksfalse}
-
-\def\checkcopyingblocks%
- {\ifcopyingblocks
- \else
- \immediate\openout\outblocks\f!utilityfilename.\f!blockextension
- \immediate\write\outblocks{\string\thisisblockversion{\blockversion}}%
- \global\copyingblockstrue
- \fi}
-
-\def\stopcopyingblocks%
- {\ifcopyingblocks
- \immediate\closeout\outblocks
- \copyblockfile
- \global\copyingblocksfalse
- \fi}
-
-\def\geenblokkenmeer%
- {\stopcopyingblocks}
-
-\def\copyblockfile
- {\ifcopyingblocks
- \begingroup
- \showmessage{\m!textblocks}{2}{\jobname.\f!blockextension}%
- \openlocin{\inpblocks}{\f!utilityfilename.\f!blockextension}%
- \immediate\openout\outblocks\jobname.\f!blockextension
- \setupcopyblock
- \catcode`\^^M=\@@ignore\relax
- \def\copynextline
- {\read\inpblocks to \!!stringa
- \immediate\write\outblocks{\!!stringa}%
- \ifeof\inpblocks
- \def\copynextline{}%
- \fi
- \copynextline}%
- \copynextline
- \immediate\closein\inpblocks
- \immediate\closeout\outblocks
- \immediate\openout\tmpblocks\f!utilityfilename.\f!blockextension
- \immediate\closeout\tmpblocks
- \endgroup
- \fi}
-
-\def\loadallblocks#1%
- {\beginrestorecatcodes
-\catcode`\^^M=\@@endofline\relax
- \readjobfile{#1.\f!blockextension}
- {\showmessage{\m!textblocks}{3}{#1.\f!blockextension}}
- {\showmessage{\m!textblocks}{4}{}}%
- \endrestorecatcodes}
-
-\def\setupcopyblock%
- {\!!counta=1\relax
- \loop
- \catcode\!!counta=\@@other
- \advance\!!counta by 1\relax
- \ifnum\!!counta<255\relax
- \repeat
- \obeylines}
-
-\def\writeoutblocks%
- {\immediate\write\outblocks}
-
-\def\processnextblocklineAB#1#2#3%
- {\convertargument#1 \to\next
- \doifinstringelse{\endofblockA}{\next}
- {\def\next{#2}}
- {\doifinstringelse{\endofblockB}{\next}
- {\def\next{#2}}
- {\def\next{#3}}}%
- \next}
-
-\bgroup
-\obeylines
-\gdef\copyblocklineAB#1
- {\processnextblocklineAB{#1}%
- {\closeblock}%
- {\writeoutblocks{#1}%
- \writetmpblock{#1}%
- \copyblocklineAB}}
-\gdef\skipblocklineAB#1
- {\processnextblocklineAB{#1}%
- {\closeblock}%
- {\skipblocklineAB}}
-\egroup
-
-\def\processnextblockline#1#2#3%
- {\convertargument#1 \to\next
- \doifinstringelse{\endofblock}{\next}
- {\def\next{#2}}
- {\def\next{#3}}%
- \next}
-
-\bgroup
-\obeylines
-\gdef\copyblockline#1
- {\processnextblockline{#1}%
- {\closeblock}%
- {\writeoutblocks{#1}%
- \writetmpblock{#1}%
- \copyblockline}}
-\gdef\skipblockline#1
- {\processnextblockline{#1}%
- {\closeblock}%
- {\skipblockline}}
-\egroup
-
-\def\skipblock#1%
- {\checkcopyingblocks
- \@EA\convertargument\string\thiswasblock{#1}\to\endofblock
-%testen : \expanded{\convertargument\string\thiswasblock{#1}\noexpand\to\noexpand\endofblock}%
- \let\openblock=\begingroup
- \let\closeblock=\endgroup
- \openblock
- \setupcopyblock
- \skipblockline}
-
-\def\doafterblock#1#2{}
-\def\dobeforeblock#1#2{}
-
-\def\thisisblock#1%
- {\executeifdefined{\s!thisisblock#1}{\skipblock{#1}}}
-
-\def\thiswasblock#1%
- {\getvalue{\s!thiswasblock#1}}
-
-\def\saveblock#1#2%
- {\checkcopyingblocks
- \obeylines
- %\@EA\convertargument\string\eindvan#1\to\endofblockA
- \@EA\@EA\@EA\convertargument\@EA\string\csname\e!eindvan#1\endcsname\to\endofblockA
-%testen: \expanded{\convertargument\string\csname\e!eindvan#1\endcsname\to\endofblockA}%
- \@EA\convertargument\string\eindvanblok[#1]\to\endofblockB % MULTI LINGUAL MAKEN
- \def\openblock%
- {\dobeforeblock{#1}{#2}%
- \opentmpblock
- \begingroup
- \makesectionformat
- \immediate\write\outblocks{}%
- \immediate\write\outblocks{\string\thisisblock{#1}{\sectionformat}[#2]}}%
- \def\closeblock%
- {\immediate\write\outblocks{}% handig voor \par commando's
- \immediate\write\outblocks{\string\thiswasblock{#1}}%
- \endgroup
- \closetmpblock
- \doafterblock{#1}{#2}%
- \egroup}%
- \openblock
- \setupcopyblock
- \copyblocklineAB}
-
-\def\copyblock%
- {\def\opentmpblock{}%
- \def\closetmpblock{}%
- \def\writetmpblock##1{}%
- \saveblock}
-
-\def\loadoneblock%
- {\readjobfile{\f!utilityfilename.\f!temporaryextension}{}{}}
-
-\def\dodefinieerblok[#1]%
- {\passeerblok[#1]%
- \handhaafblokken[#1]%
- \stelblokin
- [#1]
- [\c!voor=\blanko,
- \c!na=\blanko,
- \c!binnen=,
- \c!letter=,
- \c!file=\jobname]}
-
-\def\definieerblok%
- {\dosingleargument\dodefinieerblok}
-
-\def\dostelblokin[#1][#2]%
- {\getparameters[\??tb#1][#2]}
-
-\def\stelblokin%
- {\dodoubleargument\dostelblokin}
-
-\def\passeerblok[#1]%
- {\setvalue{\s!thisisblock#1}##1[##2]%
- {\skipblock{#1}}}
-
-\def\doverbergblok[#1][#2][#3]%
- {\doifelsenothing{#2}
- {\global\blockpermittedfalse
- \edef\bloktitel{#1}}
- {\doifelsenothing{#3}
- {\global\blockpermittedtrue
- \edef\bloktitel{#1}}
- {\doifcommonelse{#2}{#3}
- {\global\blockpermittedfalse
- \edef\bloktitel{#1:#2}}
- {\global\blockpermittedtrue
- \edef\bloktitel{#1:#3}}}}%
- \ifblockpermitted
- \showwarning{\m!textblocks}{5}{\bloktitel}%
- \def\next%
- {\def\dobeforeblock####1####2%
- {\begingroup}%
- \def\doafterblock####1####2%
- {\endgroup
- \doexecuteloadedblock{#1}}%
- \saveblock{#1}{#3}}%
- \else
- \doifinsetelse{+}{#3}
- {\showwarning{\m!textblocks}{6}{\bloktitel}%
- \def\next%
- {\def\dobeforeblock####1####2%
- {\begingroup
- \global\visiblefalse}%
- \def\doafterblock####1####2%
- {{\setbox0=\vbox
- {\catcode`\^^M=\@@endofline\relax
- \loadoneblock
- \par}}%
- \endgroup}%
- \saveblock{#1}{#3}}}%
- {\showwarning{\m!textblocks}{7}{\bloktitel}%
- \def\next%
- {\def\dobeforeblock####1####2%
- {\begingroup
- \globaldefs=-1\relax}%
- \def\doafterblock####1####2%
- {\endgroup}%
- \copyblock{#1}{#3}}}%
- \fi
- \next}
-
-\def\doverbergblokken[#1][#2]%
- {\def\docommando##1%
- {\setvalue{\e!beginvan##1}%
- {\bgroup\obeylines\dotripleempty\doverbergblok[##1][#2]}}%
- \processcommalist[#1]\docommando}
-
-\def\verbergblokken%
- {\dodoubleempty\doverbergblokken}
-
-\def\doexecuteloadedblock#1%
- {\blockpermittedtrue % ?
- \getvalue{\??tb#1\c!voor}%
- \bgroup
- \doattributes{\??tb#1}{}%
- \visibletrue
- \catcode`\^^M=\@@endofline\relax
- \getvalue{\??tb#1\c!binnen}%
- \loadoneblock
- \par
- \egroup
- \getvalue{\??tb#1\c!na}}
-
-\def\dohandhaafblok[#1][#2][#3]%
- {\doifelsenothing{#2}
- {\global\blockpermittedtrue
- \edef\bloktitel{#1}}
- {\doifcommonelse{#2}{#3}
- {\global\blockpermittedtrue
- \edef\bloktitel{#1:#2}}
- {\doifinsetelse{\v!alles}{#2}
- {\doifelse{#3}{}
- {\global\blockpermittedtrue
- \edef\bloktitel{#1}}
- {\global\blockpermittedfalse
- \edef\bloktitel{#1:#3}}}
- {\global\blockpermittedfalse
- \doifelse{#3}{}
- {\edef\bloktitel{#1}}
- {\edef\bloktitel{#1:#3}}}}}%
- \ifblockpermitted
- \showwarning{\m!textblocks}{8}{\bloktitel}%
- \def\dobeforeblock##1##2%
- {\begingroup}%
- \def\doafterblock##1##2%
- {\endgroup
- \doexecuteloadedblock{#1}}%
- \else
- \showwarning{\m!textblocks}{9}{\bloktitel}%
- \fi
- \saveblock{#1}{#3}}
-
-\def\dohandhaafblokken[#1][#2]%
- {\def\docommando##1%
- {\setvalue{\e!beginvan##1}%
- {\bgroup\obeylines\dotripleempty\dohandhaafblok[##1][#2]}}%
- \processcommalist[#1]\docommando}
-
-\def\handhaafblokken%
- {\dodoubleempty\dohandhaafblokken}
-
-\def\dodogebruikblok#1#2#3#4%
- {\getblockstatus{#2}%
- \ifblockpermitted%
- \doifelsenothing{#4}
- {\edef\bloktitel{#1}}
- {\doifnotcommon{#3}{#4}
- {\global\blockpermittedfalse}%
- \edef\bloktitel{#1:#3}}%
- \else
- \edef\bloktitel{#1}%
- \fi
- \ifblockpermitted
- \def\next%
- {\global\advance\blocklevel by 1\relax
- \doifinsetelse{-}{#3}
- {\showwarning{\m!textblocks}{10}{\bloktitel}%
- \setvalue{\s!thiswasblock#1}%
- {\par\egroup}%
- \setbox0=\vbox\bgroup}
- {\showwarning{\m!textblocks}{11}{\bloktitel}%
- \setvalue{\s!thiswasblock#1}%
- {\par
- \egroup
- \getvalue{\??tb#1\c!na}%
- \global\advance\blocklevel by -1\relax}%
- \getvalue{\??tb#1\c!voor}%
- \bgroup
- \doattributes{\??tb#1}{}%
- \visibletrue
- \getvalue{\??tb#1\c!binnen}}}%
- \else
- \def\next%
- {\showwarning{\m!textblocks}{12}{\bloktitel}%
- \skipblock{#1}}%
- \fi
- \next}
-
-\def\dogebruikblok[#1][#2]%
- {\setvalue{\s!thisisblock#1}##1[##2]%
- {\dodogebruikblok{#1}{##1}{##2}{#2}}}
-
-\def\dogebruikblokken[#1][#2]%
- {\def\docommando##1%
- {\dogebruikblok[##1][#2]}%
- \processcommalist[#1]\docommando
- \getfromcommalist[#1][1]%
- \doifdefined{\??tb\commalistelement\c!file}
- {\loadallblocks{\getvalue{\??tb\commalistelement\c!file}}}%
- \endgroup}
-
-\def\gebruikblokken%
- {\begingroup
- \doassign[\??bs][\c!criterium=\v!alles]%
- \dodoubleempty\dogebruikblokken}
-
-\def\doselecteerblokken[#1][#2][#3]%
- {\doifelsenothing{#3}
- {\getparameters[\??bs][#2]%
- \dogebruikblokken[#1][]}
- {\getparameters[\??bs][#3]%
- \dogebruikblokken[#1][#2]}}%
-
-\def\selecteerblokken%
- {\begingroup
- \doassign[\??bs][\c!criterium=\v!alles]%
- \dotripleempty\doselecteerblokken}
-
-\def\beginvanblok[#1]% % er wordt ook gechecked op \eindvanblok[..]
- {\getvalue{\e!beginvan#1}}
-
-%I n=Achtergronden
-%I c=\stelachtergrondenin
-%I
-%I Achter de tekst kan een achtergrond worden geplaatst.
-%I Voor de afzonderlijke elementen van een tekst wordt een
-%I achtergrond gedefinieerd met het commando:
-%I
-%I \stelachtergrondenin
-%I [boven,hoofd,tekst,voet,onder]
-%I [linkerrand,rechterrand,linkermarge,reachtermarge,tekst]
-%I [achtergrond=,kleur=,raster=]
-%I
-%I Voor de hele bladzijde gebruiken we:
-%I
-%I \stelachtergrondenin
-%I [pagina]
-%I [achtergrond=,kleur=,raster=]
-%P
-%I Het is mogelijk elk blok iets ruimer om de tekst te
-%I plaatsen met:
-%I
-%I \stelachtergrondenin
-%I [pagina]
-%I [offset=,diepte=]
-%I
-%I Een offset van .25\korpsgrootte en een diepte van
-%I .5\korpsgrootte voldoen aardig.
-%I
-%I Er kunnen ronde hoeken worden gezet met:
-%I
-%I \stelachtergrondenin
-%I [pagina]
-%I [hoek=,straal=]
-%I
-%I Hierbij kan voor hoek de instelling rond of recht worden
-%I meegegeven en voor straal een dimensie.
-
-% Don't use \@@mawhatevercommand directly, use \getvalue instead.
-
-\newif\ifnewbackground
-\newif\ifsomebackground
-
-\newbox\leftbackground
-\newbox\rightbackground
-
-\def\addpagebackground#1%
- {\doifvaluesomething{\??ma\v!pagina\c!achtergrond}
- {\setbox2=\vbox
- {\offinterlineskip
- \localframed
- [\??ma\v!pagina]
- [\c!breedte=\papierbreedte,\c!hoogte=\papierhoogte]%, \c!offset=\v!overlay]
- {\getvalue{\??ma\v!pagina\c!commando}}}%
- \wd2=\!!zeropoint
- \dp2=\!!zeropoint
- \setbox#1=\vbox
- {\hbox{\box2\box#1}}}}
-
-\let\pagebackgroundhoffset = \!!zeropoint
-\let\pagebackgroundvoffset = \!!zeropoint
-\let\pagebackgrounddepth = \!!zeropoint
-
-% #1 = breedte
-% #2 = hoogte
-% #3 = pos
-% #4 = pos
-
-\def\dododopagebodybackground#1#2#3#4%
- {\doifelsevaluenothing{\??ma#3#4\c!achtergrond}
- {\doifelsevalue{\??ma#3#4\c!kader}{\v!aan} % niet waterdicht, ook deelkaders
- {\!!doneatrue}
- {\!!doneafalse}}
- {\!!doneatrue}%
- \if!!donea
- \localframed
- [\??ma#3#4]
- [\c!breedte=#1,\c!hoogte=#2,\c!offset=\v!overlay]
- {\getvalue{\??ma#3#4\c!commando}}%
- \else
- \hskip#1%
- \fi}
-
-\def\dodopagebodybackground#1#2%
- {\setbox0=\vbox to #2
- \bgroup\hbox\bgroup
- \swapmargins
- \goleftonpage
- \dododopagebodybackground\linkerrandbreedte#2#1\v!linkerrand
- \hskip\linkerrandafstand
- \hskip\pageseparation
- \dododopagebodybackground\linkermargebreedte#2#1\v!linkermarge
- \hskip\linkermargeafstand
- \dododopagebodybackground\zetbreedte#2#1\v!tekst
- \hskip\rechtermargeafstand
- \dododopagebodybackground\rechtermargebreedte#2#1\v!rechtermarge
- \hskip\pageseparation
- \hskip\rechterrandafstand
- \dododopagebodybackground\rechterrandbreedte#2#1\v!rechterrand
- \egroup\egroup
- \wd0=\!!zeropoint\relax
- \box0\relax}
-
-\def\setbackgroundbox#1#2%
- {\global\setbox#1=\vbox
- {\offinterlineskip
- \mindermeldingen
- \calculatereducedvsizes
- #2\relax
- \vskip-\bovenhoogte
- \vskip-\bovenafstand
- \dodopagebodybackground\v!boven\bovenhoogte
- \vskip\bovenafstand
- \dodopagebodybackground\v!hoofd\hoofdhoogte
- \vskip\hoofdafstand
- \dodopagebodybackground\v!tekst\teksthoogte
- \vskip\voetafstand
- \dodopagebodybackground\v!voet\voethoogte
- \vskip\onderafstand
- \dodopagebodybackground\v!onder\onderhoogte
- \vfilll}%
- \smashbox#1}
-
-\def\setbackgroundboxes%
- {\ifsomebackground\ifnewbackground
- \showmessage{\m!layouts}{8}{}%
- \docheckbackgrounddefinitions
- \setbackgroundbox\leftbackground\relax
- \ifdubbelzijdig
- \setbackgroundbox\rightbackground\doswapmargins
- \fi
- \global\newbackgroundfalse
- \doifelsevaluenothing{\??ma\v!tekst\v!tekst\c!achtergrond}
- {\global\let\pagebackgroundhoffset=\!!zeropoint
- \global\let\pagebackgroundvoffset=\!!zeropoint
- \global\let\pagebackgrounddepth=\!!zeropoint}
- {\bgroup
- \dimen0=\getvalue{\??ma\v!pagina\c!offset}%
- \doifnothing
- {\getvalue{\??ma\v!boven\v!tekst\c!achtergrond}%
- \getvalue{\??ma\v!onder\v!tekst\c!achtergrond}}
- {\xdef\pagebackgroundhoffset{\the\dimen0}}%
- \doifnothing
- {\getvalue{\??ma\v!tekst\v!rechterrand\c!achtergrond}%
- \getvalue{\??ma\v!tekst\v!linkerrand\c!achtergrond}}
- {\xdef\pagebackgroundvoffset{\the\dimen0}%
- \dimen0=\getvalue{\??ma\v!pagina\c!diepte}%
- \xdef\pagebackgrounddepth{\the\dimen0}}%
- \egroup}%
- \fi\fi}
-
-\def\getbackgroundbox%
- {\ifsomebackground
- \setbackgroundboxes
- \startinteractie
- \doifmarginswapelse
- {\copy\leftbackground}
- {\copy\rightbackground}%
- \stopinteractie
- \fi}
-
-% saves us hundreds of unused hash entries if not needed
-
-\def\docheckbackgrounddefinitions% allocates about 1000 hash-entries
- {\doifdefined{\??ma\v!pagina\c!achtergrond}% skip first pass
- {\def\dodocommando##1##2%
- {\copylocalframed[\??ma##1##2][\??ma\v!pagina]%
- \getparameters[\??ma##1##2]
- [\c!achtergrond=,\c!kader=,\c!kleur=,\c!raster=]%
- \copyparameters
- [\??ma##1##2\c!kader][\??ma##1##2]
- [\c!kleur,\c!raster]%
- \copyparameters
- [\??ma##1##2\c!achtergrond][\??ma##1##2]
- [\c!kleur,\c!raster]}%
- \def\docommando##1%
- {\dodocommando##1\v!linkerrand \dodocommando##1\v!linkermarge
- \dodocommando##1\v!tekst
- \dodocommando##1\v!rechtermarge \dodocommando##1\v!rechterrand}%
- \docommando\v!boven \docommando\v!hoofd
- \docommando\v!tekst
- \docommando \v!voet \docommando\v!onder
- \def\docheckbackgrounddefinitions%
- {\global\somebackgroundtrue}}}
-
-\def\dostelachtergrondenin[#1][#2][#3]%
- {\docheckbackgrounddefinitions
- \global\newbackgroundtrue
- \iffirstargument % \dostelachtergrondenin zonder arg mag
- \ifthirdargument
- \def\docommando##1%
- {\doifelse{##1}{\v!pagina}
- {\getparameters[\??ma\v!pagina][#3]%
- \dosetpageseparation}
- {\def\dodocommando####1%
- {\getparameters[\??ma##1####1][#3]}
- \processcommalist[#2]\dodocommando}}%
- \processcommalist[#1]\docommando
- \else
- \doifelse{#1}{\v!pagina}
- {\getparameters[\??ma\v!pagina][#2]%
- \dosetpageseparation}
- {\dostelachtergrondenin
- [#1]
- [\v!linkerrand,\v!linkermarge,\v!tekst,\v!rechtermarge,\v!rechterrand]
- [#2]}%
- \fi
- \fi}
-
-\def\stelachtergrondenin%
- {\dotripleempty\dostelachtergrondenin}
-
-% a lot of setups, including short ones
-
-\presetlocalframed [\??ma\v!pagina]
-
-\copyparameters
- [\??ma\v!pagina\c!kader][\??ma\v!pagina]
- [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
-
-\copyparameters
- [\??ma\v!pagina\c!achtergrond][\??ma\v!pagina]
- [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
-
-\def\@@pageseparation {6pt}
-\def\pageseparation {0pt}
-
-\def\paginascheiding {\pageseparation}
-
-\def\dosetpageseparation%
- {\let\pageseparation=\!!zeropoint
- \let\showpageseparation=\relax
- \processaction
- [\getvalue{\??ma\v!pagina\c!scheider}]
- [ \v!ruim=>\let\pageseparation=\@@pageseparation
- \let\showpageseparation=\showloosepageseparation,
- \v!passend=>\let\pageseparation=\@@pageseparation
- \let\showpageseparation=\showtightpageseparation]}
-
-\def\showloosepageseparation%
- {\ifdim\pageseparation>\!!zeropoint\relax
- \bgroup
- \setbox0=\hbox
- {\vrule
- \!!width\pageseparation
- \!!depth\papierhoogte
- \!!height\papierhoogte}%
- \ht0=\!!zeropoint
- \dp0=\!!zeropoint
- \box0
- \egroup
- \fi}
-
-\def\showtightpageseparation%
- {\ifdim\pageseparation>\!!zeropoint\relax
- \bgroup
- \dimen0=\teksthoogte
- \advance\dimen0 by \kopwit
- \doifsometextlineelse{\v!hoofd}
- {\advance\dimen0 by \hoofdhoogte
- \advance\dimen0 by \hoofdafstand}
- {}%
- \dimen2=\papierhoogte
- \advance\dimen2 by -\dimen0
-%\advance\dimen0 by -1cm % nog eens optie
-%\advance\dimen2 by -1cm % nog eens optie
- \setbox0=\hbox
- {\vrule
- \!!width\pageseparation
- \!!depth\dimen2
- \!!height\dimen0}%
- \ht0=\!!zeropoint
- \dp0=\!!zeropoint
- \box0
- \egroup
- \fi}
-
-%I n=File-management
-%I c=\starttekst,\startprojekt,\startonderdeel,\startprodukt
-%I c=\startomgeving,\startdeelomgeving
-%I
-%I Een eenvoudige tekst wordt gestart en gestopt met de
-%I commando's:
-%I
-%I \starttekst
-%I \stoptekst
-%P
-%I Het is mogelijk een projektstructuur op te zetten. Per
-%I projekt wordt een file aangemaakt waarin de volgende
-%I commando's voorkomen:
-%I
-%I \startprojekt naam
-%I \stopprojekt
-%I
-%I Als deze file in TeX wordt geladen, dan worden alle
-%I produkten achter elkaar gezet.
-%I
-%I Een produkt wordt gedefinieerd met:
-%I
-%I \startprodukt naam
-%I \stopprodukt
-%I
-%I Deze file kan zelfstandig door TeX worden gehaald.
-%P
-%I Een omgeving wordt gedefinieerd door:
-%I
-%I \startomgeving naam
-%I \stopomgeving
-%I
-%I Een onderdeel wordt gedefinieerd door:
-%I
-%I \startonderdeel naam
-%I \stoponderdeel
-%I
-%I Files worden eerst gezocht op het actuele gebied. Als een
-%I file niet aanwezig is wordt op de 'roots' gezocht.
-%I
-%I Een onderdeel kan zelfstandig door TeX worden gehaald.
-%P
-%I Binnen een projekt, produkt, omgeving of onderdeel komen
-%I de volgende instellingen voor (tussen haakjes=facultatief):
-%I
-%I projekt omgeving produkt onderdeel
-%I
-%I \projekt naam * *
-%I \omgeving naam (*) (*) (*) (*)
-%I \produkt naam *
-%I \onderdeel naam (*) (*)
-%I
-%I Binnen een omgeving kunnen deelomgevingen worden gedefinieerd
-%I die alleen voor bepaalde produkten, onderdelen enz. gelden.
-%I
-%I \startdeelomgeving[naam,...,naam]
-%I commando's
-%I \stopdeelomgeving
-%P
-%I Het programma TeXEdit doorzoekt bij het aanmaken van een
-%I file-menu de hele tekst op de genoemde commando's. Bij een
-%I lange tekst kan dit misschien 'te' lang duren. Met het
-%I commando:
-%I
-%I \geenfilesmeer
-%I
-%I kan worden aangegeven dat er geen structuurcommando's meer
-%I volgen.
-%I
-%I Ten behoeve van TeXUtil moet in plaats van het commando
-%I \input het commando \verwerkfile{naam} worden gebruikt.
-%P
-%I Als men standaard een en ander wil instellen, dan kan men
-%I dit doen in de file 'cont-sys.tex'. Deze file wordt direkt
-%I na het opstarten geladen cq. uitgevoerd. Daarnaast wordt,
-%I indien aanwezig, de file 'cont-new.tex' geladen.
-
-%T n=starttekst
-%T m=sta
-%T a=x
-%T
-%T \starttekst
-%T
-%T ?
-%T
-%T \stoptekst
-
-\def\currentproject {}
-\def\currentproduct {}
-\def\currentenvironment {}
-\def\currentcomponent {}
-
-\def\loadedfiles {}
-\def\processedfiles {}
-
-\let\geenfilesmeer=\relax
-
-\newcounter\textlevel
-\newcounter\fileprocesslevel
-
-\setvalue{\c!file::0}{\jobname}
-
-\def\processedfile%
- {\getvalue{\c!file::\fileprocesslevel}}
-
-\def\processfile#1%
- {\doglobal\increment\fileprocesslevel
- \setxvalue{\c!file::\fileprocesslevel}{#1}%
- \@EA\doglobal\@EA\addtocommalist\@EA{#1}\processedfiles
- \readlocfile{#1}{}{}
- \doglobal\decrement\fileprocesslevel}
-
-\def\registreerfileinfo#1#2%
- {\immediate\write\uti{f #1 {#2}}}
-
-\doifundefined{preloadfonts} {\let\preloadfonts=\relax}
-\doifundefined{preloadspecials} {\let\preloadspecials=\relax}
-
-\def\loadsystemfiles%
- {\readsysfile{\f!newfilename}
- {\showmessage{\m!systems}{2}{\f!newfilename}}{}%
- \readsysfile{\f!oldfilename}
- {\showmessage{\m!systems}{2}{\f!oldfilename}}{}%
- \readsysfile{\f!systemfilename}
- {\showmessage{\m!systems}{2}{\f!systemfilename}}{}}
-
-% \newevery \everyjob \EveryJob
-% \appendtoks ... \to \everyjob
-
-\appendtoks \meldaanmaakdatum \to \everyjob
-\appendtoks \loadsystemfiles \to \everyjob
-\appendtoks \preloadfonts \to \everyjob
-\appendtoks \settopskip \to \everyjob
-\appendtoks \preloadspecials \to \everyjob
-\appendtoks \openspecialfile \to \everyjob
-\appendtoks \checkutilityfile \to \everyjob
-\appendtoks \openutilities \to \everyjob
-\appendtoks \loadtwopassdata \to \everyjob
-
-\def\starttekst%
- {\ifnum\textlevel=0\relax
- \registreerfileinfo{b}{\jobname}%
- \startcopyingblocks
- \fi
- \doglobal\increment\textlevel\relax}
-
-\let\normalend=\end
-\newevery \everybye \EveryBye
-
-\def\end%
- {\the\everybye
- \normalend}
-
-\appendtoks \pagina[\v!laatste] \to \everybye
-\appendtoks \pagina \to \everybye % nodig voor \startuitstellen...\stopuitstellen
-\appendtoks \registreerfileinfo{e}{\jobname} \to \everybye
-\appendtoks \stopcopyingblocks \to \everybye
-\appendtoks \closeutilities \to \everybye
-\appendtoks \closespecialfile \to \everybye
-
-\def\stoptekst%
- {\doglobal\decrement\textlevel\relax
- \ifnum\textlevel>0\relax
- \let\next=\relax
- \else
- \let\next=\end
- \fi
- \next}
-
-\def\doexecutefileonce#1%
- {\beforesplitstring#1\at.\to\currentfile
- \ExpandBothAfter\doifnotinset{\currentfile}{\loadedfiles}%
- {\ExpandFirstAfter\addtocommalist{\currentfile}\loadedfiles
- \doexecutefile{#1}}}
-
-\def\doexecutefile#1%
- {\registreerfileinfo{b}{#1}
- \processfile{#1}%
- \registreerfileinfo{e}{#1}}
-
-\def\donotexecutefile#1%
- {}
-
-\def\verwerkfile#1 %
- {\doexecutefile{#1}}
-
-\def\omgeving #1 % at outermost level only
- {\def\startomgeving ##1 {}%
- \let\stopomgeving=\relax
- \readlocfile{#1}{}{}}
-
-\newcounter\filelevel
-
-\def\!!donextlevel#1#2#3#4#5#6\\%
- {\beforesplitstring#6\at.\to#1
- \ifnum\filelevel=0\relax
- \starttekst
- \def\projekt ##1 {#2{##1}}%
- \def\omgeving ##1 {#3{##1}}%
- \def\produkt ##1 {#4{##1}}%
- \def\onderdeel ##1 {#5{##1}}%
- \fi
- \increment\filelevel\relax
- \ExpandFirstAfter\addtocommalist{#1}\loadedfiles}
-
-\def\doprevlevel%
- {\ifnum\filelevel=1\relax
- \let\next=\stoptekst
- \else
- \decrement\filelevel\relax
- \let\next=\endinput
- \fi
- \next}
-
-\def\startprojekt #1 %
- {\!!donextlevel\currentproject
- \donotexecutefile\doexecutefileonce
- \doexecutefileonce\doexecutefile#1\\}
-
-\def\stopprojekt%
- {\doprevlevel}
-
-\def\startprodukt #1 %
- {\!!donextlevel\currentproduct
- \doexecutefileonce\doexecutefileonce
- \donotexecutefile\doexecutefile#1\\}
-
-\def\stopprodukt%
- {\doprevlevel}
-
-\def\startonderdeel #1 %
- {\!!donextlevel\currentcomponent
- \doexecutefileonce\doexecutefileonce
- \donotexecutefile\doexecutefile#1\\}
-
-\def\stoponderdeel%
- {\doprevlevel}
-
-\def\startomgeving #1 %
- {\!!donextlevel\currentenvironment
- \donotexecutefile\doexecutefileonce
- \donotexecutefile\donotexecutefile#1\\}
-
-\def\stopomgeving%
- {\doprevlevel}
-
-\long\def\skipdeelomgeving#1\stopdeelomgeving%
- {}
-
-\def\startdeelomgeving[#1]%
- {\def\partialenvironments{}%
- \def\docommando##1%
- {\beforesplitstring##1\at.\to\someevironment
- \ExpandFirstAfter\addtocommalist{\someevironment}\partialenvironments}%
- \processcommalist[#1]\docommando
- \ExpandBothAfter\doifcommonelse
- {\currentproject,\currentproduct,
- \currentcomponent,\currentenvironment}
- {\partialenvironments}
- {\let\stopdeelomgeving=\relax
- \let\next=\relax}
- {\let\next=\skipdeelomgeving}%
- \next}
-
-\def\startproduct{\startproduct}
-\def\stopproduct {\stopproduct}
-\def\startproject{\startprojekt}
-\def\stopproject {\stopprojekt}
-
-\def\project{\projekt}
-\def\product{\produkt}
-
-\def\deelomgeving #1 %
- {\doexecutefileonce{#1}}
-
-%I n=Macrofiles
-%I c=\gebruikmodules
-%I
-%I Extra modules kunnen worden geladen met het commando:
-%I
-%I \gebruikmodules[file,file,...]
-
-% Why does all tex's handle 8+3 different.
-
-\def\makeshortmodulename[#1#2#3#4#5#6#7#8#9]%
- {\def\modulename{#1#2#3#4#5#6#7#8.}%
- \expandafter\beforesplitstring\modulename\at.\to\modulename}
-
-\def\dodousemodules#1%
- {\makeshortmodulename[m-#1........]%
- \doifundefinedelse{\modulename\v!aan}
- {\setgvalue{\modulename\v!aan}{}%
- \readsysfile{\modulename}%
- {\showmessage{\m!systems}{5}{#1}}%
- {\showmessage{\m!systems}{6}{#1}}}
- {\showmessage{\m!systems}{7}{#1}}}
-
-\def\dousemodules[#1]%
- {\doifsomething{#1}
- {\processcommalist[#1]\dodousemodules}}
-
-\def\usemodules%
- {\dosingleargument\dousemodules}
-
-\let\usemodule=\usemodules
-
-\newif\ifvoorlopig
-\voorlopigfalse
-
-\newif\ifconcept
-\conceptfalse
-
-\def\infofont%
- {\getvalue{7pttttf}}
-
-%\def\mathinfofont%
-% {\eightpoint\tt}
-
-\edef\utilityversion {1996.03.15}
-\edef\contextversion {\the\normalyear.\the\normalmonth.\the\normalday\normalspace}
-\edef\copyrightversion {Copyright 1990-\the\normalyear\normalspace / PRAGMA / J. Hagen - A.F. Otten}
-
-\def\meldaanmaakdatum%
- {\writeline
- \writestring{This is CONTEXT version <\contextversion>
- interface <\currentinterface>
- responses <\currentresponses>}%
- \writeline
- \writestring{This package is based on Plain TeX. It uses an adapted version of the}%
- \writestring{extended mark mechanism of J. Fox (1987) and a few parts of the sidefloat}%
- \writestring{mechanism of D. Comenetz (1993). Most of D.E. Knuth's Plain TeX}%
- \writestring{(\fmtversion) is available and can be used without problems. This package}%
- \writestring{uses TaBlE, a package designed and copyrighted by M.J. Wichura (1988).}%
- \writestring{Only a few auxiliary files are generated, of which some must be processed}%
- \writestring{by TeXUtil (\utilityversion). The current blockversion is \blockversion.}%
- \writeline
- \writestring{\copyrightversion}%
- \writeline}
-
-\startinterface dutch
-
-\def\meldaanmaakdatum%
- {\writeline
- \writestring{Dit is CONTEXT versie <\contextversion>
- interface <\currentinterface>
- meldingen <\currentresponses>}%
- \writeline
- \writestring{Dit pakket is gebaseerd op Plain TeX. Er wordt gebruik gemaakt van een}%
- \writestring{aangepaste versie van het mark mechanisme van J. Fox (1987) en onderdelen}%
- \writestring{van het sidefloat mechanisme van D. Comenetz (1993). De functionaliteit}%
- \writestring{van D.E. Knuth's Plain TeX (\fmtversion) is grotendeels beschikbaar en kan}%
- \writestring{zonder problemen worden gebruikt. Dit pakket gebruikt TaBlE, ontworpen door}%
- \writestring{M.J. Wichura (1988), die ook het auteursrecht bezit. Er worden slechts een}%
- \writestring{paar hulpfiles gegenereerd, waarvan er enkele moeten worden bewerkt door}%
- \writestring{TeXUtil (\utilityversion). Het blokmechanisme heeft versienummer \blockversion.}%
- \writeline
- \writestring{\copyrightversion}%
- \writeline}
-
-\stopinterface
-
-\startinterface german
-
-\def\meldaanmaakdatum%
- {\writeline
- \writestring{Dies ist CONTEXT Version <\contextversion>
- Interface <\currentinterface>
- Meldungen <\currentresponses>}%
- \writeline
- \writestring{Dieses Paket basiert auf Plain-TeX und benutzt eine angepasste Version}%
- \writestring{des erweiterten mark-Mechanismus von J. Fox (1987) und einige Teile des}%
- \writestring{sidefloat-Mechanismus von D. Comenetz (1993). Ein Grossteil D.E. Knuths}%
- \writestring{Plain-TeX (\fmtversion) ist verfuegbar und kann ohne Probleme benutzt werden.}%
- \writestring{Dieses Paket benutzt TaBlE, ein von M.J. Wichura (1988) erstelltes und}%
- \writestring{geschuetztes Paket. Nur einige Hilfsdateien werden erstellt; einige davon}%
- \writestring{muessen von TeXUtil (\utilityversion) bearbeitet werden. Die aktuelle Block-}%
- \writestring{version ist \blockversion.}%
- \writeline
- \writestring{\copyrightversion}%
- \writeline}
-
-\stopinterface
-
-\def\doplaatsversieaanduiding#1#2%
- {\doifsomething{#2}
- {\@EA\convertargument#2\to\ascii
- \ #1: \ascii\
- \!!doneatrue}}
-
-\def\plaatsversieaanduiding%
- {\ifvoorlopig
- \vskip\!!sixpoint
- \hbox to \zetbreedte
- {\infofont
- Versie: \currentdate\
- \doplaatsversieaanduiding{Project}\currentproject
- \doplaatsversieaanduiding{Produkt}\currentproduct
- \doplaatsversieaanduiding{Onderdeel}\currentcomponent
- \if!!donea\else\ File: \jobname\fi
- \hss\reportpagedimensions}%
- \fi
- \ifconcept
- \vskip\!!sixpoint
- \hbox to \zetbreedte
- {\infofont
- Concept: \currentdate
- \hss\reportpagedimensions}%
- \fi}
-
-% tot hier
-
-\def\doversie[#1]%
- {\voorlopigfalse
- \conceptfalse
- \overfullrule=\!!zeropoint
- \processaction
- [#1]
- [\v!voorlopig=>\voorlopigtrue
- \overfullrule=5pt,
- \v!concept=>\concepttrue]}
-
-\def\versie%
- {\dosingleargument\doversie}
-
-\newbox\referentieinfobox
-\newbox\registerinfobox
-\newbox\floatinfobox
-
-\def\dotestinfo#1#2#3%
- {\ifvoorlopig
- \begingroup
- \convertargument#3\to\ascii
- \xdef\extratestinfo%
- {#2 \ascii}%
- \gdef\totaltestinfo%
- {\global\setbox#1=\vbox
- {\unvbox#1\relax
- \hbox
- {\infofont
- \strut
- \expandafter\doboundtext\expandafter
- {\extratestinfo}
- {\rechtermargebreedte}
- {..}%
- \quad}}}%
- \endgroup
- \ifinner
- \aftergroup\totaltestinfo
- \else
- \totaltestinfo
- \fi
- \fi}
-
-\def\referentieinfo%
- {\dotestinfo\referentieinfobox}
-
-\def\registerinfo%
- {\dotestinfo\registerinfobox}
-
-\def\floatinfo%
- {\dotestinfo\floatinfobox}
-
-\def\plaatstestinfo%
- {\setbox0=\vbox to \teksthoogte
- {\forgetall
- \hsize\rechtermargebreedte
- \ifvoid\floatinfobox\else
- \infofont\strut Plaatsblokken
- \vskip\!!sixpoint
- \unvbox\floatinfobox
- \vskip\!!twelvepoint
- \fi
- \ifvoid\referentieinfobox\else
- \infofont\strut Verwijzingen
- \vskip\!!sixpoint
- \unvbox\referentieinfobox
- \vskip\!!twelvepoint
- \fi
- \ifvoid\registerinfobox\else
- \infofont\strut Registers
- \vskip\!!sixpoint
- \unvbox\registerinfobox
- \fi
- \vss}%
- \wd0=\!!zeropoint
- \box0\relax}
-
-%I n=Commando's
-%I c=\definieer,\naam
-%I c=\gebruikcommandos
-%I
-%I Het is mogelijk eigen commando's te definieren met behulp
-%I van het commando:
-%I
-%I \definieer[aantal argumenten]\commando{betekenis}
-%I
-%I Een argument kan worden opgeroepen door een # gevolgd
-%I een nummer, bijvoorbeeld #2.
-%I
-%I \definieer\test{ziezo} \ziezo
-%I \definieer[1]\test{ziezo #1} \ziezo{}
-%I \definieer[2]\test{ziezo #1 en #2} \ziezo{}{}
-%P
-%I In commandonamen mogen alleen karakters voorkomen. Mocht
-%I onverhoopt een cijfer nodig zijn, dan kunnen dergelijke
-%I commando's worden opgeroepen met:
-%I
-%I \naam{}
-%I
-%I In een aantal gevallen, bijvoorbeeld bij het wegschrijven
-%I naar lijsten, worden commando's \noexpand-ed. Dit is
-%I bijvoorbeeld het geval bij synoniemen en sorteren, als
-%I het criterium ongelijk is aan 'alles'. Dergelijke (zelf)
-%I gedefinieerde commando's dienen eerst te worden
-%I geactiveerd met :
-%I
-%I \gebruikcommandos{\commando}
-%I
-%I Er mogen meerdere commando's tegelijk worden opgegeven:
-%I
-%I \gebruikcommandos{\alfa,\beta,gamma}
-%I
-%I waarbij de \ facultatief is. Er wordt niets gezet!
-
-% \docommando kan niet worden gebruikt omdat deze macro
-% soms lokaal wordt gebruikt
-
-% te zijner tijd:
-%
-% \definevariable {pc} % ProtectedCommand
-%
-% \def\executeprotected#1%
-% {\csname\??pc\string#1\endcsname}
-%
-% \def\defineprotected#1#2%
-% {\expandafter\def\csname\??pc\string#2\endcsname}
-%
-% \def\defineunprotected#1%
-% {\def#1}
-%
-% \def\doprotected%
-% {\ifx\next\define
-% \let\next=\defineprotected
-% \else
-% \let\next=\executeprotected
-% \fi
-% \next}
-%
-% \def\unexpanded%
-% {\futurelet\next\doprotected}
-%
-% \unexpanded\define\ziezo{ziezo}
-%
-% \unexpanded\ziezo
-
-\def\complexdodefinieer[#1]#2#3%
- {\ifx#2\undefined
- \else
- \showmessage{\m!systems}{4}{\string#2}%
- \fi
- \ifcase0#1\def#2{#3}%
- \or\def#2##1{#3}%
- \or\def#2##1##2{#3}%
- \or\def#2##1##2##3{#3}%
- \or\def#2##1##2##3##4{#3}%
- \or\def#2##1##2##3##4##5{#3}%
- \or\def#2##1##2##3##4##5##6{#3}%
- \or\def#2##1##2##3##4##5##6##7{#3}%
- \or\def#2##1##2##3##4##5##6##7##8{#3}%
- \or\def#2##1##2##3##4##5##6##7##8##9{#3}%
- \else\def#2{#3}%
- \fi}
-
-\def\definieer%
- {\complexorsimpleempty{dodefinieer}}
-
-\def\naam#1%
- {\geentest\getvalue{#1}}
-
-\def\gebruikcommandos#1%
- {\bgroup
- \def\docommando##1%
- {\setbox0=\hbox{\getvalue{\string##1}##1}}%
- \processcommalist[#1]\docommando
- \egroup}
-
-%I n=Groeperen
-%I c=\start,\definieerstartstop
-%I
-%I Met behulp van de volgende commando's kan de werking van
-%I andere commando's worden beperkt:
-%I
-%I \start[label]
-%I \stop[label]
-%I
-%I Men is vrij in de keuze van het commentaar. Het gebruik
-%I van deze commando's komt overeen met het gebruiken van {}.
-%P
-%I Er kunnen \start-\stop-paren worden gedefinieerd en
-%I ingesteld met:
-%I
-%I \definieerstartstop[label][voor=,na=,commandos=,
-%I letter=]
-%I
-%I De aan 'voor' en 'na' toegekende commando's worden voor
-%I \start en na \stop uitgevoerd; de aan 'commando'
-%I toegekende commando's direct na \start.
-%I
-%I Naast het \start-\stop-paar is ook het verkorte commando
-%I beschikbaar:
-%I
-%I \label{tekst}
-
-\def\complexstart[#1]% % bgroup toegevoegd
- {\bgroup\getvalue{\e!start#1}}
-
-\def\simplestart%
- {\bgroup}
-
-\def\complexstop[#1]%
- {\getvalue{\e!stop#1}\egroup} % egroup toegevoegd
-
-\def\simplestop%
- {\egroup}
-
-\def\start%
- {\complexorsimple{\e!start}}
-
-\def\stop%
- {\complexorsimple{\e!stop}}
-
-\def\dodefinieerstartstop[#1][#2]%
- {\getparameters
- [\??be#1]
- [\c!voor=,
- \c!na=,
- \c!commandos=,
- \c!letter=,
- #2]%
- \setvalue{#1}##1%
- {\bgroup
- \getvalue{\??be#1\c!commandos}%
- \doattributes{\??be#1}{##1}%
- \egroup}%
- \setvalue{\e!start#1}%
- {\getvalue{\??be#1\c!voor}%
- \bgroup
- \getvalue{\??be#1\c!commandos}%
- \dostartattributes{\??be#1}}%
- \setvalue{\e!stop#1}%
- {\dostopattributes
- \egroup
- \getvalue{\??be#1\c!na}}}
-
-\def\definieerstartstop%
- {\dodoubleargument\dodefinieerstartstop}
-
-%I n=Verbergen
-%I c=\startverbergen
-%I
-%I Een deel van de tekst kan (tijdelijk) worden
-%I overgeslagen door deze te omhullen met de commando's:
-%I
-%I \startverbergen
-%I \stopverbergen
-
-\long\def\startverbergen#1\stopverbergen{}
-
-% gejat van Knuth (zie \copyright, p356)
-
-\def\omcirkeld#1%
- {{\ooalign{\hfil\raise0.07ex\hbox{{\tfx#1}}\hfil\crcr\mathhexbox20D}}}
-
-\def\copyright
- {\omcirkeld{c}}
-
-%I n=Systeem
-%I c=\stelsysteemin
-%I
-%I Systeemvariabelen kunnen worden ingesteld met het
-%I commando:
-%I
-%I \stelsysteemin[resolutie=,korps=]
-%I
-%I Aan 'resolutie' dient het aantal dpi (300).
-
-\def\dostelsysteemin[#1]%
- {\getparameters[\??sv][#1]%
- \beforesplitstring\@@svresolutie\at dpi\to\@@svresolutie
- \let\outputresolution=\@@svresolutie}
-
-\def\stelsysteemin%
- {\dosingleargument\dostelsysteemin}
-
-% Default-instellingen (verborgen)
-
-\resetutilities
-
-% Uitgestelde instellingen
-
-\def\dooutput{\sidefloatoutput} % redefinition of \dooutput
-
-% Default-instellingen (zichtbaar)
-
-\stelsysteemin
- [\c!resolutie=300dpi,
- \c!korps=\normalizedlocalcorpssize] % of iets anders
-
-% Pas op:
-%
-% Omdat er geen fonts geladen zijn kunnen we bij de maten geen
-% em's gebruiken. Bij afstanden is dit geen probleem, omdat
-% deze pas een rol spelen als er al een font geladen is.
-
-\stellayoutin
- [ \c!kopwit=.08417508418\papierhoogte, % .08333 2.5cm
- %\c!boven=.03367003367\papierhoogte, % .03331 1.0cm
- \c!boven=\!!zeropoint,
- \c!bovenafstand=\!!zeropoint,
- \c!hoofd=.06734006734\papierhoogte, % .06667 2.0cm
- \c!hoofdafstand=\!!zeropoint,
- \c!hoogte=.84175084175\papierhoogte, % .83333 25.0cm
- \c!voetafstand=\@@lyhoofdafstand,
- \c!voet=.06734006734\papierhoogte, % .06667 2.0cm
- \c!onderafstand=\@@lybovenafstand,
- \c!onder=\!!zeropoint,
- \c!rugwit=.11904761905\papierbreedte, % 2.5cm
- %\c!rand=.14285714286\papierbreedte, % 3.0cm
- \c!rand=\!!zeropoint,
- \c!randafstand=\@@lymargeafstand,
- %\c!marge=\@@lyrugwit,
- %\c!marge=.07888078409\papierbreedte, % rugwit-2*afstand
- \c!marge=.12649983170\papierbreedte, % snijwit-2*afstand
- \c!margeafstand=.02008341748\papierbreedte, % 12.0pt
- \c!linkerrand=\@@lyrand,
- \c!linkerrandafstand=\@@lyrandafstand,
- \c!linkermarge=\@@lymarge,
- \c!linkermargeafstand=\@@lymargeafstand,
- \c!breedte=.71428571429\papierbreedte, % 15.0cm
- \c!rechtermargeafstand=\@@lymargeafstand,
- \c!rechtermarge=\@@lymarge,
- \c!rechterrandafstand=\@@lyrandafstand,
- \c!rechterrand=\@@lyrand,
- \c!kopoffset=\!!zeropoint,
- \c!rugoffset=\!!zeropoint,
- \c!letter=,
- \c!markering=\v!uit,
- \c!plaats=\v!enkelzijdig]
-
-% instellingen hierop terugvallen, bijvoorbeeld de volgende:
-
-\definieerpapierformaat [A0] [\c!breedte=841mm, \c!hoogte=1189mm]
-\definieerpapierformaat [A1] [\c!breedte=594mm, \c!hoogte=841mm]
-\definieerpapierformaat [A2] [\c!breedte=420mm, \c!hoogte=594mm]
-\definieerpapierformaat [A3] [\c!breedte=297mm, \c!hoogte=420mm]
-\definieerpapierformaat [A4] [\c!breedte=210mm, \c!hoogte=297mm]
-\definieerpapierformaat [A5] [\c!breedte=148mm, \c!hoogte=210mm]
-\definieerpapierformaat [A6] [\c!breedte=105mm, \c!hoogte=148mm]
-\definieerpapierformaat [A7] [\c!breedte=74mm, \c!hoogte=105mm]
-\definieerpapierformaat [A8] [\c!breedte=52mm, \c!hoogte=74mm]
-\definieerpapierformaat [A9] [\c!breedte=37mm, \c!hoogte=52mm]
-
-\definieerpapierformaat [B0] [\c!breedte=1000mm,\c!hoogte=1414mm]
-\definieerpapierformaat [B1] [\c!breedte=707mm, \c!hoogte=1000mm]
-\definieerpapierformaat [B2] [\c!breedte=500mm, \c!hoogte=707mm]
-\definieerpapierformaat [B3] [\c!breedte=354mm, \c!hoogte=500mm]
-\definieerpapierformaat [B4] [\c!breedte=250mm, \c!hoogte=354mm]
-\definieerpapierformaat [B5] [\c!breedte=177mm, \c!hoogte=250mm]
-\definieerpapierformaat [B6] [\c!breedte=125mm, \c!hoogte=177mm]
-\definieerpapierformaat [B7] [\c!breedte=88mm, \c!hoogte=125mm]
-\definieerpapierformaat [B8] [\c!breedte=63mm, \c!hoogte=88mm]
-\definieerpapierformaat [B9] [\c!breedte=44mm, \c!hoogte=63mm]
-
-\definieerpapierformaat [C0] [\c!breedte=917mm, \c!hoogte=1297mm]
-\definieerpapierformaat [C1] [\c!breedte=649mm, \c!hoogte=917mm]
-\definieerpapierformaat [C2] [\c!breedte=459mm, \c!hoogte=649mm]
-\definieerpapierformaat [C3] [\c!breedte=324mm, \c!hoogte=459mm]
-\definieerpapierformaat [C4] [\c!breedte=229mm, \c!hoogte=324mm]
-\definieerpapierformaat [C5] [\c!breedte=162mm, \c!hoogte=229mm]
-\definieerpapierformaat [C6] [\c!breedte=115mm, \c!hoogte=162mm]
-\definieerpapierformaat [C7] [\c!breedte=81mm, \c!hoogte=115mm]
-\definieerpapierformaat [C8] [\c!breedte=57mm, \c!hoogte=81mm]
-\definieerpapierformaat [C9] [\c!breedte=40mm, \c!hoogte=57mm]
-
-\definieerpapierformaat [S3] [\c!breedte=300pt, \c!hoogte=225pt]
-\definieerpapierformaat [S4] [\c!breedte=400pt, \c!hoogte=300pt]
-\definieerpapierformaat [S5] [\c!breedte=500pt, \c!hoogte=375pt]
-\definieerpapierformaat [S6] [\c!breedte=600pt, \c!hoogte=450pt]
-
-\definieerpapierformaat [CD] [\c!breedte=120mm, \c!hoogte=120mm]
-
-\definieerpapierformaat [letter] [\c!breedte=8.5in, \c!hoogte=11in]
-\definieerpapierformaat [legal] [\c!breedte=8.5in, \c!hoogte=14in]
-\definieerpapierformaat [folio] [\c!breedte=8.5in, \c!hoogte=13in]
-\definieerpapierformaat [executive] [\c!breedte=7.25in, \c!hoogte=10.5in]
-
-\definieerpapierformaat [envelope 9] [\c!breedte=8.88in, \c!hoogte=3.88in]
-\definieerpapierformaat [envelope 10] [\c!breedte=9.5in, \c!hoogte=4.13in]
-\definieerpapierformaat [envelope 11] [\c!breedte=10.38in,\c!hoogte=4.5in]
-\definieerpapierformaat [envelope 12] [\c!breedte=11.0in, \c!hoogte=4.75in]
-\definieerpapierformaat [envelope 14] [\c!breedte=11.5in, \c!hoogte=5.0in]
-\definieerpapierformaat [monarch] [\c!breedte=7.5in, \c!hoogte=3.88in]
-\definieerpapierformaat [check] [\c!breedte=8.58in, \c!hoogte=3.88in]
-\definieerpapierformaat [DL] [\c!breedte=220mm, \c!hoogte=110mm]
-
-% Let op: na \stellayoutin (omdat dit wordt aangeroepen).
-
-\stelpapierformaatin
- [A4][A4]
-
-\stelkolommenin
- [\c!n=2,
- \c!lijn=\v!uit,
- \c!tolerantie=\v!soepel,
- \c!afstand=1.5\korpsgrootte, % influenced by switching
- \c!hoogte=,
- \c!balanceren=\v!ja,
- \c!uitlijnen=\v!tekst,
- \c!blanko={\v!regel,\v!vast},
- \c!optie=,
- \c!lijndikte=\linewidth,
- \c!offset=.5\korpsgrootte]
-
-\stelhoofdtekstenin [\v!tekst] [] []
-\stelhoofdtekstenin [\v!marge] [] []
-\stelhoofdtekstenin [\v!rand] [] []
-
-\stelvoettekstenin [\v!tekst] [] []
-\stelvoettekstenin [\v!marge] [] []
-\stelvoettekstenin [\v!rand] [] []
-
-\stelteksttekstenin [\v!tekst] [] []
-\stelteksttekstenin [\v!marge] [] []
-\stelteksttekstenin [\v!rand] [] []
-
-\stelondertekstenin [\v!tekst] [] []
-\stelondertekstenin [\v!marge] [] []
-\stelondertekstenin [\v!rand] [] []
-
-\stelboventekstenin [\v!tekst] [] []
-\stelboventekstenin [\v!marge] [] []
-\stelboventekstenin [\v!rand] [] []
-
-\stelhoofdin [\c!status=\v!normaal,\c!voor=,\c!na=]
-\stelvoetin [\c!status=\v!normaal,\c!voor=,\c!na=]
-\steltekstin [\c!status=\v!normaal,\c!voor=,\c!na=]
-\stelbovenin [\c!status=\v!normaal,\c!voor=,\c!na=]
-\stelonderin [\c!status=\v!normaal,\c!voor=,\c!na=]
-
-\stelhoofdin [\c!na=\vss]
-\steltekstin [\c!voor=\vss,\c!na=\vss]
-\stelvoetin [\c!voor=\vss]
-
-\stelbovenin [\c!voor=\vss,\c!na=\vss]
-\stelonderin [\c!voor=\vss,\c!na=\vss]
-
-\stelhoofdin
- [\v!tekst]
- [\c!strut=\v!ja,
- \c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!hoofd\v!tekst\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!hoofd\v!tekst\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!hoofd\v!tekst\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!hoofd\v!tekst\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelhoofdin
- [\v!marge]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!hoofd\v!marge\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!hoofd\v!marge\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!hoofd\v!marge\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!hoofd\v!marge\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelhoofdin
- [\v!rand]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!hoofd\v!rand\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!hoofd\v!rand\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!hoofd\v!rand\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!hoofd\v!rand\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelvoetin
- [\v!tekst]
- [\c!strut=\v!ja,
- \c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!voet\v!tekst\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!voet\v!tekst\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!voet\v!tekst\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!voet\v!tekst\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelvoetin
- [\v!marge]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!voet\v!marge\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!voet\v!marge\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!voet\v!marge\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!voet\v!marge\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelvoetin
- [\v!rand]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!voet\v!rand\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!voet\v!rand\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!voet\v!rand\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!voet\v!rand\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelbovenin
- [\v!tekst]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!boven\v!tekst\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!boven\v!tekst\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!boven\v!tekst\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!boven\v!tekst\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelbovenin
- [\v!marge]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!boven\v!marge\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!boven\v!marge\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!boven\v!marge\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!boven\v!marge\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelbovenin
- [\v!rand]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelonderin
- [\v!tekst]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelonderin
- [\v!marge]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!onder\v!marge\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!onder\v!marge\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!onder\v!marge\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!onder\v!marge\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelonderin
- [\v!rand]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!onder\v!rand\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!onder\v!rand\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!onder\v!rand\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!onder\v!rand\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\steltekstin
- [\v!tekst]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!tekst\v!tekst\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!tekst\v!tekst\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!tekst\v!tekst\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!tekst\v!tekst\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\steltekstin
- [\v!marge]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!tekst\v!marge\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!tekst\v!marge\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!tekst\v!marge\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!tekst\v!marge\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\steltekstin
- [\v!rand]
- [\c!letter=,
- \c!kleur=,
- \c!linkertekst=,
- \c!middentekst=,
- \c!rechtertekst=,
- \c!kantlijntekst=,
- \c!margetekst=,
- \c!linkerletter=\getvalue{\??tk\v!tekst\v!rand\c!letter},
- \c!rechterletter=\getvalue{\??tk\v!tekst\v!rand\c!letter},
- \c!linkerkleur=\getvalue{\??tk\v!tekst\v!rand\c!kleur},
- \c!rechterkleur=\getvalue{\??tk\v!tekst\v!rand\c!kleur},
- \c!linkerbreedte=,
- \c!rechterbreedte=]
-
-\stelnummeringin
- [\c!variant=\v!enkelzijdig,
- \c!plaats={\v!hoofd,\v!midden},
- \c!conversie=\v!cijfers,
- \c!links=,
- \c!rechts=,
- \c!wijze=\v!per\v!deel,
- \c!tekst=,
- \v!hoofdstuk\c!nummer=\v!nee,
- \v!deel\c!nummer=\v!ja,
- \c!nummerscheider=--,
- \c!tekstscheider=\tfskip,
- \c!status=\v!start,
- \c!commando=,
- \c!letter=\v!normaal,
- \c!kleur=]
-
-\stelblankoin
- [\v!standaard,
- \v!groot]
-
-\stelkoppenin
- [\c!variant=\v!normaal,
- \c!sectienummer=\v!ja,
- \c!scheider=.,
- \c!commando=]
-
-\definieersectieblok [\v!hoofdtekst] [\v!hoofdteksten] [\c!nummer=\v!ja]
-\definieersectieblok [\v!bijlage] [\v!bijlagen] [\c!nummer=\v!ja]
-\definieersectieblok [\v!inleiding] [\v!inleidingen] [\c!nummer=\v!nee]
-\definieersectieblok [\v!uitleiding] [\v!uitleidingen] [\c!nummer=\v!nee]
-
-\definieersectie[\v!sectie-1] % deel
-\definieersectie[\v!sectie-2] % hoofdstuk
-\definieersectie[\v!sectie-3] % paragraaf
-\definieersectie[\v!sectie-4] % subparagraaf
-\definieersectie[\v!sectie-5] % subsubparagraaf
-\definieersectie[\v!sectie-6] % subsubsubparagraaf
-\definieersectie[\v!sectie-7] % subsubsubsubparagraaf
-
-% \c!eigennummer ook hier?
-
-\definieerkop
- [\v!deel]
- [\c!sectie=\v!sectie-1]
-
-\definieerkop
- [\v!hoofdstuk]
- [\c!sectie=\v!sectie-2]
-
-\definieerkop
- [\v!paragraaf]
- [\c!sectie=\v!sectie-3]
-
-\definieerkop
- [\v!sub\v!paragraaf]
- [\c!sectie=\v!sectie-4,
- \c!default=\v!paragraaf]
-
-\definieerkop
- [\v!sub\v!sub\v!paragraaf]
- [\c!sectie=\v!sectie-5,
- \c!default=\v!paragraaf]
-
-\definieerkop
- [\v!sub\v!sub\v!sub\v!paragraaf]
- [\c!sectie=\v!sectie-6,
- \c!default=\v!paragraaf]
-
-\definieerkop
- [\v!sub\v!sub\v!sub\v!sub\v!paragraaf]
- [\c!sectie=\v!sectie-7,
- \c!default=\v!paragraaf]
-
-\definieerkop
- [\v!titel]
- [\c!koppeling=\v!hoofdstuk,
- \c!default=\v!hoofdstuk,
- \c!verhoognummer=\v!nee]
-
-\definieerkop
- [\v!onderwerp]
- [\c!koppeling=\v!paragraaf,
- \c!default=\v!paragraaf,
- \c!verhoognummer=\v!nee]
-
-\definieerkop
- [\v!sub\v!onderwerp]
- [\c!koppeling=\v!sub\v!paragraaf,
- \c!default=\v!sub\v!paragraaf,
- \c!verhoognummer=\v!nee]
-
-\definieerkop
- [\v!sub\v!sub\v!onderwerp]
- [\c!koppeling=\v!sub\v!sub\v!paragraaf,
- \c!default=\v!sub\v!sub\v!paragraaf,
- \c!verhoognummer=\v!nee]
-
-\definieerkop
- [\v!sub\v!sub\v!sub\v!onderwerp]
- [\c!koppeling=\v!sub\v!sub\v!sub\v!paragraaf,
- \c!default=\v!sub\v!sub\v!sub\v!paragraaf,
- \c!verhoognummer=\v!nee]
-
-\definieerkop
- [\v!sub\v!sub\v!sub\v!sub\v!onderwerp]
- [\c!koppeling=\v!sub\v!sub\v!sub\v!sub\v!paragraaf,
- \c!default=\v!sub\v!sub\v!sub\v!sub\v!paragraaf,
- \c!verhoognummer=\v!nee]
-
-\stelsectiein
- [\v!sectie-2]
- [\v!bijlage\c!conversie=\v!Letter,
- \c!vorigenummer=\v!nee]
-
-\stelkopin
- [\v!deel]
- [\c!plaatskop=\v!nee]
-
-\stelkopin
- [\v!hoofdstuk]
- [\v!bijlage\c!label=\v!bijlage,
- \v!hoofdtekst\c!label=\v!hoofdstuk] % bijlageconversie=\Character
-
-\stelkopin
- [\v!paragraaf]
- [\v!bijlage\c!label=\v!paragraaf,
- \v!hoofdtekst\c!label=\v!paragraaf] % bijlageconversie=\Character
-
-\stelkopin
- [\v!sub\v!paragraaf]
- [\v!bijlage\c!label=\v!sub\v!paragraaf,
- \v!hoofdtekst\c!label=\v!sub\v!paragraaf] % bijlageconversie=\Character
-
-\stelkopin
- [\v!sub\v!sub\v!paragraaf]
- [\v!bijlage\c!label=\v!sub\v!sub\v!paragraaf,
- \v!hoofdtekst\c!label=\v!sub\v!sub\v!paragraaf] % bijlageconversie=\Character
-
-\stelkopin
- [\v!deel,\v!hoofdstuk]
- [\c!uitlijnen=\v!normaal,
- \c!doorgaan=\v!nee,
- \c!pagina=\v!rechts,
- \c!hoofd=,
- \c!letter=\tfc,
- \c!voor={\blanko[2*\v!groot]},
- \c!na={\blanko[2*\v!groot]}]
-
-\stelkopin
- [\v!paragraaf]
- [\c!uitlijnen=\v!normaal,
- \c!letter=\tfa,
- \c!voor={\blanko[2*\v!groot]},
- \c!na=\blanko]
-
-\definieersamengesteldelijst
- [\v!inhoud]
- [\v!deel,
- \v!hoofdstuk,
- \v!paragraaf,
- \v!sub\v!paragraaf,
- \v!sub\v!sub\v!paragraaf,
- \v!sub\v!sub\v!sub\v!paragraaf,
- \v!sub\v!sub\v!sub\v!sub\v!paragraaf]
- [\c!niveau=\v!sub\v!sub\v!sub\v!sub\v!paragraaf,
- \c!criterium=\v!lokaal]
-
-\stelblokkopjesin
- [\c!plaats=\v!onder,
- \c!voor=\blanko,
- \c!tussen={\blanko[\v!middel]},
- \c!na=\blanko,
- \c!breedte=\v!passend,
- \c!kopletter=\v!vet,
- \c!letter=\v!normaal,
- \c!kleur=,
- \c!uitlijnen=,
- \c!nummer=\v!ja,
- \c!wijze=\@@nrwijze,
- \c!blokwijze=\@@nrblokwijze,
- \c!sectienummer=\@@nrsectienummer,
- \c!conversie=\v!cijfers]
-
-\stelplaatsblokkenin
- [\c!plaats=\v!midden,
- \c!breedte=\v!passend,
- \c!hoogte=\v!passend,
- \c!offset=\v!overlay,
- \c!kader=\v!uit,
- \c!straal=.5\korpsgrootte,
- \c!hoek=\v!recht,
- \c!achtergrond=,
- \c!achtergrondraster=\@@rsraster,
- \c!achtergrondkleur=,
- \c!bovenkader=,
- \c!onderkader=,
- \c!linkerkader=,
- \c!rechterkader=,
- \c!voor=,
- \c!na=,
- \c!voor\c!wit=\v!groot,
- \c!na\c!wit=\v!groot,
- \c!zij\c!voor\c!wit=\@@bkvoorwit,
- \c!zij\c!na\c!wit=\@@bknawit,
- \c!marge=1em,
- \c!nboven=2,
- \c!nonder=0,
- \c!nregels=4]
-
-\stelplaatsbloksplitsenin
- [\c!conversie=\v!letter, % \v!romeins
- \c!regels=3]
-
-\stelwitruimtein
- [\v!geen]
-
-\inspringen
- [\v!nooit]
-
-\stelinspringenin
- [\v!geen]
-
-\stelopsommingenin % undocumented
- [\c!niveaus=6,
- \c!marge=\!!zeropoint,
- \c!breedte=1.5em,
- \c!factor=0,
- \c!afstand=.5em,
- \c!marletter=\c!type,
- \c!symletter=,
- \c!kopletter=,
- \c!markleur=,
- \c!symkleur=,
- \c!kopkleur=,
- \c!kopvoor=,
- \c!kopna=\blanko,
- \c!voor=\blanko,
- \c!tussen=\blanko,
- \c!na=\blanko,
- \c!afsluiter=.,
- \c!plaatsafsluiter=\v!ja,
- \c!binnen=,
- \c!n=2,
- \c!items=4,
- \c!symbool=\itemlevel]
-
-\steldoorspringenin
- [\c!letter=\v!normaal,
- \c!kopletter=\v!normaal,
- \c!kleur=,
- \c!kopkleur=,
- \c!breedte=\v!passend,
- \c!tekst=...,
- \c!monster=,
- \c!voor=\blanko,
- \c!na=\blanko,
- \c!scheider={ :}]
-
-\stelnummerenin
- [\c!wijze=\v!per\v!hoofdstuk,
- \c!blokwijze=,
- \c!sectienummer=\v!ja,
- \c!status=\v!start]
-
-\stelformulesin
- [\c!wijze=\@@nrwijze,
- \c!blokwijze=,
- \c!sectienummer=\@@nrsectienummer,
- \c!plaats=\v!rechts,
- \c!links=(,
- \c!rechts=)]
-
-\stelreferentielijstin
- [\c!letter=\v!normaal]
-
-\stelinmargein
- [\c!letter=\v!vet,
- \c!kleur=,
- \c!plaats=\v!beide,
- \c!uitlijnen=\v!binnen,
- \c!voor=,
- \c!na=]
-
-\stelinmargein
- [\v!links]
- [\c!plaats=\v!links,
- \c!uitlijnen=\v!links]
-
-\stelinmargein
- [\v!rechts]
- [\c!plaats=\v!rechts,
- \c!uitlijnen=\v!rechts]
-
-\versie
- [\v!definitief]
-
-\stelpaginanummerin
- [\c!nummer=1]
-
-\stelsubpaginanummerin
- [\c!wijze=\v!per\v!deel,
- \c!status=\v!stop]
-
-\stelsmallerin
- [\c!links=1.5em,
- \c!rechts=1.5em,
- \c!midden=1.5em]
-
-\stelrefererenin
- [\c!status=\v!start,
- \v!deel\c!nummer=\v!ja,
- \v!hoofdstuk\c!nummer=\v!nee,
- \c!interactie=\v!alles,
- \c!prefix=]
-
-\stelregelnummerenin
- [\c!conversie=\v!cijfers,
- \c!start=1,
- \c!stap=1,
- \c!plaats=\v!inmarge,
- \c!letter=,
- \c!kleur=,
- \c!breedte=2em,
- \c!prefix=,
- \c!refereren=\v!aan]
-
-\definieeropmaak
- [\v!standaard]
- [\c!breedte=\zetbreedte,
- \c!hoogte=\teksthoogte,
- \c!voffset=\!!zeropoint,
- \c!hoffset=\!!zeropoint,
- \c!pagina=\v!rechts,
- \c!dubbelzijdig=\v!ja]
-
-\stelpositionerenin
- [\c!eenheid=\s!cm,
- \c!factor=1,
- \c!schaal=1,
- \c!xstap=\v!absoluut,
- \c!ystap=\v!absoluut,
- \c!offset=\v!ja,
- \c!xoffset=\!!zeropoint,
- \c!yoffset=\!!zeropoint]
-
-\stelregelsin
- [\c!voor=\blanko,
- \c!na=\blanko,
- \c!inspringen=\v!nee]
-
-\steldoordefinierenin
- [\c!plaats=\v!links,
- \c!kopletter=\v!vet,
- \c!letter=\v!normaal,
- \c!kleur=,
- \c!kopkleur=,
- \c!breedte=8em,
- \c!hang=,
- \c!monster=,
- \c!uitlijnen=,
- \c!inspringen=\v!nee,
- \c!voor=\blanko,
- \c!tussen=\blanko,
- \c!na=\blanko,
- \c!commando=]
-
-\steldoornummerenin
- [\c!plaats=\v!boven,
- \c!kopletter=\v!vet,
- \c!kopkleur=,
- \c!letter=\v!normaal,
- \c!kleur=,
- \c!breedte=8em,
- \c!hang=,
- \c!monster=,
- \c!uitlijnen=,
- \c!inspringen=\v!nee,
- \c!voor=\blanko,
- \c!tussen=\blanko,
- \c!na=\blanko,
- \c!tekst=,
- \c!niveaus=3, % to be upward compatible
- \c!conversie=, % to be upward compatible
- \c!wijze=\v!per\v!tekst,
- \c!sectienummer=\v!ja,
- \c!scheider=.,
- \c!afsluiter=,
- \c!nummer=]
-
-\stelkoppeltekenin
- [\c!teken=\compoundhyphen]
-
-\stelnaastplaatsenin
- [\c!status=\v!stop]
-
-\steltolerantiein
- [\v!horizontaal,\v!zeerstreng]
-
-\steltolerantiein
- [\v!vertikaal,\v!streng]
-
-\steluitlijnenin
- [\v!onder,
- \v!breedte]
-
-\stelspatieringin
- [\v!opelkaar]
-
-\definieerregister
- [\v!index]
- [\v!indices]
-
-\definieerplaatsblok
- [\v!figuur]
- [\v!figuren]
-
-\definieerplaatsblok
- [\v!tabel]
- [\v!tabellen]
-
-\stelplaatsblokin
- [\v!tabel]
- [\c!kader=\v!uit]
-
-\definieerplaatsblok
- [\v!intermezzo]
- [\v!intermezzos]
-
-\definieerplaatsblok
- [\v!grafiek]
- [\v!grafieken]
-
-\definieersynoniemen
- [\v!afkorting]
- [\v!afkortingen]
- [\voluit]
-
-\stelsynoniemenin
- [\v!afkorting]
- [\c!tekstletter=\v!kapitaal,
- \c!synoniemletter=,
- \c!tekstkleur=,
- \c!synoniemkleur=,
- \c!plaats=\v!links,
- \c!breedte=5em,
- \c!status=\v!start]
-
-\definieersorteren
- [\v!logo]
- [\v!logos]
-
-\definieersynoniemen
- [\v!eenheid]
- [\v!eenheden]
- [\betekenis]
-
-\stelsynoniemenin
- [\v!eenheid]
- [\c!tekstletter=\geentest\dimension]
-
-\stelmargeblokkenin
- [\c!status=\v!start,
- \c!plaats=\v!inmarge,
- \c!breedte=\rechtermargebreedte,
- \c!letter=,
- \c!kleur=,
- \c!uitlijnen=,
- \c!links=,
- \c!rechts=,
- \c!boven=,
- \c!tussen=\blanko,
- \c!onder=\vfill,
- \c!voor=,
- \c!na=]
-
-\stelachtergrondenin
- [\v!pagina]
- [\c!kader=\v!uit,
- \c!straal=.5\korpsgrootte,
- \c!hoek=\v!recht,
- \c!achtergrond=,
- \c!raster=\@@rsraster,
- \c!kleur=,
- \c!kaderoffset=\getvalue{\??ma\v!pagina\c!offset},
- \c!achtergrondoffset=\getvalue{\??ma\v!pagina\c!offset},
- \c!offset=\!!zeropoint,
- \c!diepte=\!!zeropoint,
- \c!scheider=\v!nee]
-
-\stelbufferin
- [\c!voor=,
- \c!na=]
-
-\stellijstin
- [\v!deel]
- [\c!breedte=0em,
- \c!voor={\blanko\pagina[\v!voorkeur]},
- \c!na=\blanko,
- \c!label=\v!ja,
- \c!scheider=:,
- \c!afstand=1em]
-
-\stellijstin
- [\v!hoofdstuk]
- [\c!breedte=2em,
- \c!voor={\blanko\pagina[\v!voorkeur]},
- \c!na=]
-
-\stellijstin
- [\v!paragraaf]
- [\c!breedte=3em]
-
-\stellijstin
- [\v!sub\v!paragraaf]
- [\c!breedte=4em]
-
-\stellijstin
- [\v!sub\v!sub\v!paragraaf]
- [\c!breedte=5em]
-
-\stellijstin
- [\v!sub\v!sub\v!sub\v!paragraaf]
- [\c!breedte=6em]
-
-\stellijstin
- [\v!sub\v!sub\v!sub\v!sub\v!paragraaf]
- [\c!breedte=7em]
-
-\def\documentstyle%
- {\showmessage{\m!systems}{3}{}
- \stoptekst}
-
-\protect
-
-\endinput
- \ No newline at end of file
+%D \module
+%D [ file=core-01a,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=1A (to be split),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. Non||commercial use is
+%C granted.
+
+% nog oplossen: voetnoot setten ivm later veranderde
+% witruimte; probleem: als lijn graphic
+
+% \ifinfloat \ifinpagebody \ifintable \ifincolumns etc naar
+% core-sta(tus)
+% nieuw/nb:
+%
+% in handleiding: eerste in set float [hier..] telt!
+% [hier,altijd] en niet [altijd,hier]
+%
+% \switchnaarkorps[globaal] voor bv grote figuren in klein
+% \interactiebuttons[][]
+% lijstalternatieven: e, f,g
+% \lastreference
+% \pagina[ja,blanko,rechts]
+% \stelkopin[tussen] % precies aangeven waar voor/tussen/na
+% \stelpapierformaatin[liggend,A4][liggend,A4]
+
+% kopletter: letter=,tekstletter=\bfa,nummerletter=\bf (anders ook \bfa)
+
+% in handleiding vermelden dat \definieerinteractiemenu 3 args behoeft!
+% in handleiding: \steloffsetin vervangen door \stellayoutin
+% in handleiding: \stellayoutin optie [markering=aan]
+% in handleiding: \stellayoutin schaalt naar paginamaten
+% in handleiding: \stellayoutin optie [plaats=midden|..zijdig]
+% in handleiding: \stelinteractieschermin optie [..wit=, ..=passend]
+% in handleiding: \stelinteractieschermin optie [..offset=, ..=passend]
+% in handleiding: \definieerpapierformaat [A3,S3456][..]
+% in handleiding: \stellayoutin optie [breedte|hoogte=passend]
+% in handleiding: meer achtergrond opties
+% in handleiding: \stelregelsin[inspringen=ja,nee,even,oneven]
+% in handleiding: \stelkolommenin[optie=achtergrond]
+% in handleiding: \omlijnd[breedte=passend,uitlijnen=midden] (auto mode)
+% in handleiding: \omlijnd[achtergrondcommando ...]
+% in handleiding: \stelhoofdin[status=hoog]
+% in handleiding: \stellijstin[koppeling=aan] % interactieve optie, was standaard aan, nu uit
+% in handleiding: \stelvoetin[voor=,na=,strut=]
+% in handleiding: \stelmenuin[][links=,rechts=,midden=,voor=,...]
+
+% in handleiding: \definecolorgroup[a][b]
+% \stelinteractiebalkin[symbool=ja|nee]
+% \stelinteractiemenuin[zelfdepagina|onbekendeverwijzing=ja|nee|leeg|geen]
+% \definieerconversie[aa][*,**,***]
+% \stelkopin[eigennummer=ja]
+% \stel...tekstenin (zonder argumenten == reset)
+
+% in handleiding: \definieeroverlay[naam]{commando}
+% in handleiding: \plaatsonderelkaar
+%
+% in handleiding preview bij figuren
+
+% nb: als subpage: dan ook op eerste pag nummer ophogen (i.g.v. \standaardopmaak)
+% execute command interactive commands
+
+% \stelsubpaginanummerin[reset]
+% \bepaallijstkenmerken
+% \bepaalregisterkenmerken
+
+% in handleiding cmyk/rgb/k
+% in handleiding: \raggedright etc fontswitch afhankelijk (em)
+
+\newevery \everybodyfont \Everybodyfont % just to be sure
+
+\appendtoks \setnormalbaselines \to \everybodyfont
+\appendtoks \setstrut \to \everybodyfont
+\appendtoks \settopskip \to \everybodyfont
+\appendtoks \setmaxdepth \to \everybodyfont
+\appendtoks \stelinspringenin \to \everybodyfont
+\appendtoks \stelblankoin \to \everybodyfont
+\appendtoks \stelwitruimtein \to \everybodyfont
+% \appendtoks \setupfootnotes \to \everybodyfont
+
+% \appendtoks .. \to \everypar
+% \appendtoks .. \to \everypar
+% \appendtoks .. \to \everypar
+
+% kan elders ook worden gebruikt i.i.g ongeveer
+% \v!tekst EN \c!tekst etc checken
+
+\unprotect
+
+\def\gobbleassigndimen#1\\{}
+
+\def\assigndimen#1#2%
+ {\afterassignment\gobbleassigndimen#1=#2\!!zeropoint\\}
+
+\protect
+
+\writestatus{loading}{Context Core Macros (a)}
+
+\unprotect
+
+\startmessages dutch library: systems
+ title: systeem
+ 1: laden hulpfile uitgesteld (typemode)
+ 2: -- geladen
+ 3: probeer LaTeX eens
+ 4: commando -- is al gedefinieerd
+ 5: macro's uit -- geladen
+ 6: geen macro's in -- gevonden
+ 7: macro's uit -- reeds geladen
+ 8: nieuwe versie hulpfile, tweede run nodig
+ 9: -- niet gevonden/geplaatst
+ 10: gebruik geen em in --
+ 11: aanmaken basale hulpfile
+ 12: de hulpfile is niet gesorteerd, gebruik texutil
+ 13: markering -- gedefinieerd --
+ 14: geforceerde paginaovergang in lijst voor --
+ 15: wegschrijven buffer --
+ 16: inlezen buffer --
+ 17: verbatim inlezen buffer --
+ 18: synoniem -- -- bestaat niet
+ 19: betekenissen (synoniemen) van -- geladen
+ 20: betekenissen (sorteren) van -- geladen
+ 21: de hulpfile is niet geladen
+ 22: gebruik een goede hulpfile
+ 23: -- gearrangeerd op --
+\stopmessages
+
+\startmessages english library: systems
+ title: system
+ 1: loading utility-file postponed (typemode)
+ 2: -- loaded
+ 3: try LaTeX
+ 4: command -- is already defined
+ 5: macros of -- loaded
+ 6: no macros found in --
+ 7: macros of -- already loaded
+ 8: new version of utility file, second pass needed
+ 9: -- not found/processed
+ 10: don't use em in --
+ 11: building simple utility-file
+ 12: the utility-file is not sorted, use texutil
+ 13: mark -- defined --
+ 14: forced newpage in list at --
+ 15: saving buffer --
+ 16: typesetting buffer --
+ 17: typesetting verbatim buffer --
+ 18: synonym -- -- does not exist
+ 19: meaning (synonyms) of -- loaded
+ 20: meaning (sorts) of -- loaded
+ 21: no utility data is loaded
+ 22: use a valid utilityfile
+ 23: -- arranged at --
+\stopmessages
+
+% - TOBIAS: check 21/22/23
+
+\startmessages german library: systems
+ title: system
+ 1: Laden der Hilfsdatei verschoben (tippenmodus)
+ 2: -- geladen
+ 3: Versuche LaTeX
+ 4: Befehl -- ist bereits definiert
+ 5: Makros in -- geladen
+ 6: Keine Makros in -- gefunden
+ 7: Makros in -- bereits geladen
+ 8: Neue Version der Hilfsdatei, zweiter Durchlauf benoetigt
+ 9: -- nicht gefunden/verarbeitet
+ 10: Benutzte kein em in --
+ 11: Erstelle einfache Hilfdatei
+ 12: Die Hilfdatei ist nicht sortiert, verwende texutil
+ 13: Beschriftung -- definiert --
+ 14: Erzwungendes Seitenumbruch in Liste bei --
+ 15: Speichere Buffer --
+ 16: Setzte Buffer --
+ 17: Setzte tippen-Buffer --
+ 18: Synonym -- -- existiert nicht
+ 19: Bedeutung (synonyme) von -- geladen
+ 20: Bedeutung (sortieren) von -- geladen
+ 21: Die Hilfsdatei ist nicht geladen
+ 22: Brauche gute Hilfsdateien
+ 23: -- arrangiert auf --
+\stopmessages
+
+\startmessages dutch library: textblocks
+ title: tekstblokken
+ 1: nieuwe versie, tweede run nodig
+ 2: wegschrijven blokken naar --
+ 3: inlezen blokken uit --
+ 4: er is een tweede run nodig
+ 5: -- niet verborgen
+ 6: -- verborgen en verwerkt
+ 7: -- verborgen
+ 8: -- gehandhaafd
+ 9: -- niet gehandhaafd
+ 10: -- geladen en verwerkt
+ 11: -- geladen en geplaatst
+ 12: -- overgeslagen
+\stopmessages
+
+\startmessages english library: textblocks
+ title: textblocks
+ 1: new version, second pass needed
+ 2: writing blocks to --
+ 3: reading blocks from --
+ 4: second pass needed
+ 5: -- not hidden
+ 6: -- hidden and processed
+ 7: -- hidden
+ 8: -- typeset
+ 9: -- not typeset
+ 10: -- loaded and processed
+ 11: -- loaded and typeset
+ 12: -- skipped
+\stopmessages
+
+\startmessages german library: textblocks
+ title: textblock
+ 1: neue Version, zweiter Durchlauf benoetigt
+ 2: schreibe Bloecke zu --
+ 3: lese Bloecke von --
+ 4: zweiter Durchlauf benoetigt
+ 5: -- nicht verborgen
+ 6: -- verborgen und verarbeitet
+ 7: -- verborgen
+ 8: -- gesetzt
+ 9: -- nicht gesetzt
+ 10: -- geladen und verarbeitet
+ 11: -- geladen und gesetzt
+ 12: -- ausgelassen
+\stopmessages
+
+\startmessages dutch library: floatblocks
+ title: plaatsblokken
+ 1: -- hernummerd / -- => --
+ 2: -- bewaard
+ 3: -- verplaatst
+ 4: -- geplaatst
+ 5: volgorde aangepast
+ 6: maximaal -- boven
+ 7: maximaal -- onder
+ 8: minder dan -- regels
+ 9: volgorde verstoord
+ 10: -- begrensd
+ 11: geen blok opgegeven
+ 12: niet gedefinieerd
+\stopmessages
+
+\startmessages english library: floatblocks
+ title: floatblocks
+ 1: -- renumbered / -- => --
+ 2: -- saved
+ 3: -- moved
+ 4: -- placed
+ 5: order adapted
+ 6: n of top floats limited to --
+ 7: n of bottom floats limited to --
+ 8: less than -- lines
+ 9: order disturbed
+ 10: -- limited
+ 11: no block given
+ 12: undefined
+\stopmessages
+
+\startmessages german library: floatblocks
+ title: Gleitobjektbloecke
+ 1: -- neu nummeriert / -- => --
+ 2: -- gespeichert
+ 3: -- verschoben
+ 4: -- plaziert
+ 5: Reihenfolge angepasst
+ 6: Anz. der oberen Gleitobjekte beschraengt auf --
+ 7: Anz. der unteren Gleitobjekte beschraengt auf --
+ 8: weniger als -- zeilen
+ 9: Reigenfolge gestoert
+ 10: -- begrenzt
+ 11: kein Block gegeben
+ 12: undefiniert
+\stopmessages
+
+\startmessages dutch library: layouts
+ title: layout
+ 1: teksthoogte aangepast met -- op pagina --
+ 2: -- maal uitgestelde tekst tussengevoegd
+ 3: -- maal tekst plaatsen uitstellen
+ 4: margeblokken actief
+ 5: margeblokken inactief
+ 6: subpagina reeks -- verwerkt (aantal --)
+ 7: beeldmerken berekenen
+ 8: achtergronden berekenen
+ 9: momenteen maximaal -- niveaus in opsommingen
+ 10: -- en -- tellen niet op tot 1.0
+ 11: interlinie -- niet toegestaan in gridmode
+\stopmessages
+
+\startmessages english library: layouts
+ title: layout
+ 1: textheight adapted with -- at page --
+ 2: -- times postponed text placed
+ 3: -- times text postponed
+ 4: marginblocks active
+ 5: marginblocks inactive
+ 6: subpage set -- processed (size --)
+ 7: calculating logospace
+ 8: calculating backgrounds
+ 9: currently no more than -- levels in itimezations
+ 10: -- and -- don't add up to 1.0
+ 11: spacing -- not permitted in gridmode
+\stopmessages
+
+% TOBIAS: 10 and 11!
+
+\startmessages german library: layouts
+ title: Layout
+ 1: Texthoehe angepasst mit -- auf Seite --
+ 2: -- mal verschobener Text plaziert
+ 3: -- mal Text verschoben
+ 4: marginalbloecke aktiv
+ 5: marginalbloecke inaktiv
+ 6: Unterseitenfolge -- verarbeitet (Groesse --)
+ 7: berechne Platz des Logo
+ 8: berechne Hintergrund
+ 9: z.Z. nicht mehr als -- Niveaus in Posten
+ 10: -- and -- don't add up to 1.0
+ 11: spacing -- not permitted in gridmode
+\stopmessages
+
+\startmessages dutch library: structures
+ title: structuur
+ 1: begin van sectieblok --
+ 2: eind van sectieblok --
+\stopmessages
+
+\startmessages english library: structures
+ title: structure
+ 1: begin of sectionblock --
+ 2: end of sectionblock --
+\stopmessages
+
+\startmessages german library: structures
+ title: struktur
+ 1: Begin des Abschnittsblock --
+ 2: Ende des Abschnittsblock --
+\stopmessages
+
+% \CONTEXTtrue % Now we know that we can use ConTeXt commands.
+
+% \def\teststatus{stop}
+%
+% \def\doiftrue {\iftrue}
+% \def\doiffalse {\iffalse}
+%
+% \def\setstatus#1#2%
+% {\doifelse{\getvalue{#1\c!status}}{\v!start}
+% {\let#2=\doiftrue}
+% {\let#2=\doiffalse}}
+%
+% \setstatus{test}\iftest
+%
+% \iftest
+% \message{JA}
+% \else
+% \message{NEE}
+% \fi
+
+% om problemen te voorkomen:
+%
+% \ascii => \@@ascii@@
+% \asciiA => \@@ascii@@A
+% \asciiB => \@@ascii@@B
+
+% Nodig i.v.m. inspringen eerste alineas
+
+\def\explicithmode%
+ {\unhbox\voidb@x}
+
+% Nodig voor gebruikers
+
+\def\geentest{\donottest}
+
+% Dit moet nog ergens een plaats krijgen:
+
+\def\stelfactorenin%
+ {\stelwitruimtein
+ \stelblankoin
+ \settopskip
+ \setmaxdepth}
+
+% Nog doen:
+%
+% \goodbreak -> \allowbreak en \dosomebreak{..} in koppen
+%
+% bij koppen zowieso: \blanko[reset]
+
+% Nog in commando verwerken:
+%
+% \voorkeur … la \blanko
+%
+% Om ongewenste witruimte te voorkomen kan met \dosomebreak{\break}
+% een \penalty v¢¢r witruimte worden geplaatst.
+
+\def\dosomebreak#1%
+ {\skip0=\lastskip
+ \removelastskip
+ %\type{#1}%
+ #1\relax
+ \ifdim\skip0=\!!zeropoint
+ \else
+ \vskip\skip0
+ \fi}
+
+% beter, vooral in \vbox; nog in \pagina toepassen s!
+
+\def\doifoutervmode#1%
+ {\ifvmode\ifinner\else#1\fi\fi}
+
+\def\dosomebreak#1%
+ {\doifoutervmode
+ {\skip0=\lastskip
+ \removelastskip
+ %\leavevmode\type{#1}%
+ #1\relax
+ \ifdim\skip0=\!!zeropoint % else interference with footnotes
+ \else
+ \vskip\skip0
+ \fi}}
+
+% Idem:
+%
+% \springin
+
+%\def\noindentation% vervallen
+% {\EveryPar
+% {\ifdim\parindent=\!!zeropoint
+% \else
+% \bgroup
+% \setbox0=\lastbox
+% \egroup
+% \fi
+% \EveryPar{}}}
+
+\newif\ifindentation \indentationtrue % documenteren, naar buiten
+
+\let\checkindentation=\relax
+
+\def\donoindentation%
+ {\ifdim\parindent=\!!zeropoint
+ \else
+ \bgroup
+ \setbox0=\lastbox
+ \egroup
+ \fi}
+
+\def\noindentation%
+ {\indentationfalse
+ \def\checkindentation%
+ {\donoindentation
+ \let\checkindentation=\indentationtrue}}
+
+\def\indentation%
+ {\ifvmode
+ \ifdim\parindent=\!!zeropoint
+ \else
+ \hskip\parindent
+ \fi
+ \fi}
+
+% vergeten
+
+% \def\forgetall%
+% {\everypar{}% % i.v.m. sidefloats
+% \let\par=\endgraf % i.v.m. getpar etc
+% \stelwitruimtein[\v!geen]%
+% \stelinspringenin[\v!geen]%
+% \leftskip\!!zeropoint
+% \rightskip\!!zeropoint
+% \relax}
+%
+% \def\forgetparindent%
+% {\everypar{}%
+% \voorwit\!!zeropoint % toegevoegd
+% \parindent\!!zeropoint}
+
+\def\forgeteverypar%
+ {\everypar{}}
+
+\def\forgeteverypar%
+ {\everypar{\the\neverypar}}
+
+\def\forgetparindent%
+ {\forgeteverypar
+ \stelinspringenin[\v!geen]}
+
+\def\forgetparskip%
+ {\stelwitruimtein[\v!geen]}
+
+\def\forgetbothskips%
+ {\tolerance=1500
+ \leftskip\!!zeropoint
+ \rightskip\!!zeropoint\relax}
+
+\def\forgetspacing%
+ {\emergencystretch\!!zeropoint\relax}
+
+\def\forgetall%
+ {\let\par=\endgraf % i.v.m. getpar etc
+ \forgetparskip
+ \forgetparindent
+ \forgetbothskips
+ \forgetspacing} % i.v.m. funny spacing in pagebody
+
+\def\localvbox#1#%
+ {\vbox#1\bgroup
+ \forgetparskip
+ \setlocalhsize
+ \hsize=\localhsize
+ \forgetparindent
+ \forgetbothskips
+ \forgeteverypar
+ \let\next=}
+
+% ach ja
+
+\unexpanded\def\dostartattributes#1%
+ {\begingroup % geen \bgroup, anders in mathmode lege \hbox
+ \doifdefinedelse{#1\c!kleur}
+ {\def\colorattribute{\getvalue{#1\c!kleur}}}
+ {\let\colorattribute=\empty}%
+ \doifdefinedelse{#1\c!letter}
+ {\def\fontattribute{\getvalue{#1\c!letter}}}
+ {\let\fontattribute=\empty}%
+ \startcolor[\colorattribute]%
+ \doconvertfont{\fontattribute}}
+
+\unexpanded\def\dostopattributes%
+ {\stopcolor
+ \endgroup}
+
+\unexpanded\def\doattributes#1#2%
+ {\dostartattributes{#1}{#2}\dostopattributes}
+
+% \dotextprefix{tekst}
+%
+% als {tekst} niet leeg is: tekst~
+
+\def\dotextprefix#1%
+ {\ConvertToConstant\doifnot{#1}{}{#1~}}
+
+\def\herhaal {\dorepeat}
+\def\herhaler {\repeater}
+\def\herhaalmetcommando {\dorepeatwithcommand}
+
+% This permits things like ^\index{hans}^, where hans is
+% duplicated in the text.
+
+\newif\ifduplicate
+
+\bgroup
+\gdef\checkduplication% in line with Knuth
+ {\ifmmode
+ \def\next{^}%
+ \else
+ \let\next=\startduplication
+ \fi
+ \next}
+\gdef\insideduplication%
+ {\ifmmode
+ \def\next{^}%
+ \else
+ \let\next=\egroup
+ \fi
+ \next}
+\catcode`\^=\@@active
+\gdef\enableduplication%
+ {\catcode`\^=\@@active
+ \let^=\checkduplication}
+\gdef\disableduplication%
+ {\catcode`\^=\@@superscript}
+\gdef\startduplication%
+ {\bgroup
+ \duplicatetrue
+ \let^=\insideduplication}
+\egroup
+
+\def\verbatim#1%
+ {\convertargument#1\to\ascii\ascii}
+
+% mogelijke optimalisaties:
+%
+% \ifx ...\else ...\fi
+% \ifvisible ... \fi
+
+% De opbouw van deze file
+%
+% Deze file bevat naast de verschillende Pragma-Macro's ook
+% helpinformatie bij deze macro's en templates. Een blok
+% helpinformatie wordt gekenmerkt door een %I.
+%
+% Een blok kan zijn opgedeeld in pagina's. In dat geval is
+% %I vervangen door %P. De eerste regel van een blok bevat
+% de titel van de informatie.
+%
+% Een template (voorgedefinieerde structuur) wordt gekenmerkt
+% door %T. Ook hier bevat de eerste regel een titel,
+% eventueel gevolgd door een mnemonic.
+%
+% Zowel de helpinformatie als de templates zijn in het
+% programma TeXEdit oproepbaar.
+%
+% Het programma TeXEdit kan t.z.t. worden ingesteld met
+% behulp van de onderstaande, door %S voorafgegane,
+% setupcommando's. Vooralsnog is een en ander 'hard' in het
+% programma geprogrammeerd.
+
+%S InputFile \input
+%S InputFile \omgeving \environment
+%S InputFile \projekt \project
+%S InputFile \produkt \product
+%S InputFile \onderdeel \component
+%S
+%S CheckStrings \start \stop
+%S CheckStrings \begin \end
+%S CheckStrings \begin \eind
+%S
+%S CheckChars { }
+%S CheckChars [ ]
+%S CheckChars ( )
+%S
+%S CheckChar $
+
+% Het <pagina>-karakter (FormFeed), wordt omgezet in \par
+
+\edef\oldlinefeed{\the\catcode`\^^L}
+
+\catcode`\^^L=\oldlinefeed
+
+\catcode`\^^L=\@@endofline
+
+%I n=Struts
+%I c=\strut,\setnostrut,\setstrut,\toonstruts
+%I
+%I Struts zijn onzichtbare 'karakters' met alleen een hoogte
+%I en diepte. De volgende commando's hebben betrekking op
+%I struts
+%I
+%I \strut
+%I \setstrut
+%I \setnostrut
+%I \toonstruts
+
+\def\toonstruts%
+ {\setteststrut}
+
+% Hieronder volgen enkele instellingen en macro's ten behoeve
+% van de interlinie en \strut. De waarden 2.8, 0.07, 0.72 en
+% 0.28 zijn ooit eens ontleend aan INRS-TEX en moeten wellicht
+% nog eens instelbaar worden.
+%
+% \lineheight : de hoogte van een regel
+% \spacing{getal} : instellen interlinie
+% \normalbaselines : instellen regelafstend
+%
+% \setstrut : instellen \strut
+% \setnostrut : resetten \strut, \endstrut, \begstrut
+%
+% \setteststrut : instellen zichtbare struts
+% \resetteststrut : instellen onzichtbare struts
+%
+% \setfontparameters : instellen na fontset
+%
+% De hoogte van een regel (\lineheight) is gelijk aan de
+% som van de hoogte (\ht) en diepte (\dp) van \strutbox.
+%
+% \strut : denkbeeldig blokje met hoogte en diepte
+%
+% Een \hbox kan als deze aan het begin van een regel staat
+% een breedte \hsize krijgen. Dit is soms te voorkomen met het
+% commando \leavevmode. Binnen een \vbox geeft dit echter
+% niet altijd het gewenste resultaat, vandaar het commando
+%
+% \leaveoutervmode
+
+% Pas op: niet zomaar \topskip en \baselineskip aanpassen
+% en zeker niet \widowpenalty. Dit kan ernstige gevolgen
+% hebben voor kolommen.
+%
+% Enige glue kan op zich geen kwaad, echter als blanko=vast,
+% dan moet ook de rek 0 zijn. Binnen kolommen is rek ook
+% niet bepaald mooi. Een hele kleine waarde (0.025) voldoet,
+% omdat een positieve glue eindeloos rekbaar is.
+
+\newdimen\strutdimen
+\newdimen\lineheight
+\newdimen\openlineheight
+\newdimen\openstrutheight
+\newdimen\openstrutdepth
+
+\def\strutheightfactor {.72}
+\def\strutdepthfactor {.28}
+
+\def\baselinefactor {2.8}
+\def\baselinegluefactor {0}
+
+\def\normallineheight {\baselinefactor ex}
+
+\def\strutheight {0pt}
+\def\strutdepth {0pt}
+\def\strutwidth {0pt}
+
+\def\spacingfactor {1}
+
+\def\topskipfactor {1.0}
+\def\maxdepthfactor {0.4}
+
+\def\systemtopskipfactor {\topskipfactor}
+\def\systemmaxdepthfactor {\maxdepthfactor}
+
+% De onderstaande definitie wordt in de font-module overruled
+
+\ifx\globalbodyfontsize\undefined
+ \newdimen\globalbodyfontsize \globalbodyfontsize=12pt
+\fi
+
+% door een \dimen. Dit is geen probleem omdat (1) de default
+% korpsgrootte 12pt is en (2) de fonts nog niet geladen zijn
+% en de instellingen bij het laden nogmaals plaatsvinden.
+
+\def\settopskip% the extra test is needed for the lbr family
+ {\topskip=\systemtopskipfactor\globalbodyfontsize
+ \ifgridsnapping \else
+ \ifr@ggedbottom\!!plus5\globalbodyfontsize\fi
+ \fi
+ \relax % the skip
+ \ifdim\topskip<\strutheightfactor\openlineheight
+ \topskip=\strutheightfactor\openlineheight\relax
+ \fi}
+
+\def\setmaxdepth%
+ {\maxdepth=\systemmaxdepthfactor\globalbodyfontsize}
+
+\def\normalbaselines%
+ {\baselineskip\normalbaselineskip
+ \lineskip\normallineskip
+ \lineskiplimit\normallineskiplimit}
+
+\def\setnormalbaselines%
+ {\lineheight=\normallineheight
+ \openlineheight=\spacingfactor\lineheight
+\openstrutheight=\strutheightfactor\openlineheight
+\openstrutdepth =\strutdepthfactor \openlineheight
+ \normalbaselineskip=
+ \openlineheight
+ \!!plus\baselinegluefactor\openlineheight
+ \!!minus\baselinegluefactor\openlineheight
+ \normallineskip\!!onepoint\relax
+ \normallineskiplimit\!!zeropoint\relax
+ \normalbaselines}
+
+\def\setspacingfactor#1\to#2\by#3\\%
+ {\strutdimen=#2pt\relax
+ \strutdimen=#3\strutdimen
+ \edef#1{\withoutpt{\the\strutdimen}}}
+
+\def\spacing#1%
+ {\ifgridsnapping
+ \edef\spacingfactor{1}%
+ \showmessage{\m!layouts}{11}{#1}%
+ \else
+ \edef\spacingfactor{#1}%
+ \fi
+ \setspacingfactor\systemtopskipfactor\to\topskipfactor\by#1\\%
+ \setspacingfactor\systemmaxdepthfactor\to\maxdepthfactor\by#1\\%
+ \setnormalbaselines
+ \setstrut}
+
+\def\setstrutdimen#1#2#3% % een strut is n.m maal ex
+ {\strutdimen=\normallineheight % wat niet per se \lineheight
+ \strutdimen=#2\strutdimen % is omdat een strut lokaal
+ \strutdimen=#3\strutdimen % kan afwijken van de globale
+ \edef#1{\the\strutdimen}} % strut
+
+\let\normalstrut=\strut
+
+% The double \hbox construction enables us to \backtrack
+% boxes.
+
+\def\setstrut%
+ {\setstrutdimen\strutheight\strutheightfactor\spacingfactor
+ \setstrutdimen\strutdepth \strutdepthfactor \spacingfactor
+ \let\strut=\normalstrut
+ \setbox\strutbox=\normalhbox
+ {\normalhbox
+ {\vrule
+ \!!width \strutwidth
+ \!!height \strutheight
+ \!!depth \strutdepth
+ \normalkern-\strutwidth}}}
+
+\def\setteststrut%
+ {\def\strutwidth{.8pt}%
+ \setstrut}
+
+\def\begstrut%
+ {\relax\ifdim\ht\strutbox=\!!zeropoint \else
+ \strut
+ \normalpenalty\!!tenthousand
+ \normalhskip\!!zeropoint
+ \ignorespaces
+ \fi}
+
+\def\endstrut%
+ {\relax\ifdim\ht\strutbox=\!!zeropoint \else
+ \unskip
+ \normalpenalty\!!tenthousand
+ \normalhskip\!!zeropoint
+ \strut
+ \fi}
+
+\def\setnostrut%
+ {\setbox\strutbox=\normalhbox{\normalhbox{}}%
+ \let\strut=\empty
+ \let\endstrut=\empty
+ \let\begstrut=\empty}
+
+\def\resetteststrut%
+ {\let\strutwidth=\!!zeropoint
+ \setstrut}
+
+\def\setfontparameters%
+ {\the\everybodyfont}
+
+% \setnormalbaselines
+% \setstrut
+% \settopskip
+% \setmaxdepth
+% \the\EveryFontSwitch
+
+%D We need \type{\normaloffinterlineskip} because the new
+%D definition contains an assignment, and |<|don't ask me
+%D why|>| this assignment gives troubles in for instance the
+%D visual debugger.
+
+\ifx\undefined\normaloffinterlineskip
+ \let\normaloffinterlineskip=\offinterlineskip % knuth's original
+\fi
+
+% \newskip\oldbaselineskip
+% \newskip\oldlineskip
+% \newskip\oldlineskiplimit
+%
+% \newif\ifinterlineskipoff
+%
+% \def\offinterlineskip%
+% {\ifinterlineskipoff\else
+% \interlineskipofftrue
+% \oldbaselineskip=\baselineskip
+% \oldlineskip=\lineskip
+% \oldlineskiplimit=\lineskiplimit
+% \fi
+% \normaloffinterlineskip}
+%
+% \def\oninterlineskip%
+% {\ifinterlineskipoff
+% \baselineskip=\oldbaselineskip
+% \lineskip=\oldlineskip
+% \lineskiplimit=\oldlineskiplimit
+% \fi}
+
+\def\offinterlineskip%
+ {\edef\oninterlineskip%
+ {\baselineskip=\the\baselineskip
+ \lineskip=\the\lineskip
+ \lineskiplimit=\the\lineskiplimit
+ \noexpand\let\noexpand\offinterlineskip=\noexpand\normaloffinterlineskip}%
+ \normaloffinterlineskip}
+
+\let\oninterlineskip=\relax
+
+\def\leaveoutervmode%
+ {\ifvmode\ifinner\else
+ \leavevmode
+ \fi\fi}
+
+% We passen ook de \displayskip's wat aan (nog eens uitzoeken):
+
+\def\displayskipsize#1#2%
+ {#1\lineheight\!!plus#2\lineheight\!!minus#2\lineheight}
+
+\def\displayskipfactor {1.0}
+\def\displayshortskipfactor {0.8}
+
+\def\displayskipgluefactor {0.3}
+\def\displayshortskipgluefactor {0.2}
+
+\def\abovedisplayskipsize% doet niets ?
+ {\displayskipsize\displayskipfactor\displayskipgluefactor}
+
+\def\belowdisplayskipsize% doet niets ?
+ {\displayskipsize\displayskipfactor\displayskipgluefactor}
+
+\def\abovedisplayshortskipsize%
+ {\displayskipsize\displayshortskipfactor\displayshortskipgluefactor}
+
+\def\belowdisplayshortskipsize%
+ {\displayskipsize\displayshortskipfactor\displayshortskipgluefactor}
+
+\def\setdisplayskip#1#2#3%
+ {#1=#2\relax
+ \advance#1 by -\parskip
+ \advance#1 by -#3\relax}
+
+\def\setdisplayskips%
+ {\setdisplayskip\abovedisplayskip\abovedisplayskipsize\baselineskip
+ \setdisplayskip\belowdisplayskip\belowdisplayskipsize\!!zeropoint
+ \setdisplayskip\abovedisplayshortskip\abovedisplayshortskipsize\baselineskip
+ \setdisplayskip\belowdisplayshortskip\belowdisplayshortskipsize\!!zeropoint}
+
+% We stellen enkele penalties anders in dan Plain TEX:
+
+\widowpenalty=2000 % was: 1000
+\clubpenalty=2000 % was: 800
+
+% Bovendien definieren we enkele extra \fill's:
+
+\def\hfilll%
+ {\hskip\!!zeropoint\!!plus1filll}
+
+\def\vfilll%
+ {\vskip\!!zeropoint\!!plus1filll}
+
+% De onderstaande hulpmacro's moeten nog eens instelbaar worden
+% gemaakt.
+
+\def\tfskipsize{1em\relax}
+
+\def\tfkernsize{1ex\relax}
+
+\def\tfskip%
+ {{\tf\hskip\tfskipsize}}
+
+\def\tfkern%
+ {{\tf\kern\tfkernsize}}
+
+% Dit hoort eigenlijk thuis onder het kopje boodschappen cq,
+% meldingen.
+
+\def\mindermeldingen%
+ {\hbadness=10000
+ \hfuzz=\maxdimen
+ \vbadness=10000
+ \vfuzz=\maxdimen}
+
+% Utility-file
+%
+% De onderstaande macro's ondersteunen het gebruik van de
+% zogeheten utility-file. Alle extern onder te brengen
+% informatie wordt opgeslagen in de file \jobname.tui, tenzij
+% er selectief pagina's worden gezet. In dat geval wordt de
+% file \jobname.tmp gebruikt. Informatie wordt ingelezen uit
+% de file \jobname.tuo, welke door TeXUtil wordt aangemaakt.
+
+% Bepaalde commando's worden als string weggeschreven. Deze
+% zijn aan het eind van deze file gedefinieerd.
+
+% Om een opbouw van spaties te voorkomen (???) moet ^^M een
+% andere betekenis krijgen:
+%
+% \catcode`\^^M=14 (comment)
+%
+% read file
+%
+% \catcode`\^^M=5 (end of line)
+
+\newwrite\uti
+\newif\ifutilitydone
+
+\def\@@utilityerrormessage%
+ {\showmessage{\m!systems}{8}{}%
+ \global\let\@@utilityerrormessage=\relax}
+
+\def\thisisutilityversion#1%
+ {\doifnot{\utilityversion}{#1}%
+ {\@@utilityerrormessage
+ \resetutilities
+ \endinput}}
+
+\def\writeutility%
+ {\write\uti}
+
+\def\immediatewriteutility%
+ {\immediate\write\uti}
+
+\def\writeutilitycommand#1%
+ {\writeutility{c \string#1}}
+
+\def\immediatewriteutilitycommand#1%
+ {\immediatewriteutility{c \string#1}}
+
+\def\openutilities%
+ {\immediate\openout\uti=\jobname.\f!inputextension
+ \immediatewriteutilitycommand%
+ {\thisisutilityversion{\utilityversion}}}
+
+\def\closeutilities%
+ {\savenofsubpages
+ \savenofpages
+ \immediate\closeout\uti
+ \reportutilityproblems}
+
+\def\abortutilitygeneration%
+ {\immediatewriteutilitycommand{\utilitygenerationaborted}%
+ \immediatewriteutility{q {quit}}}
+
+\def\utilitygenerationaborted%
+ {\showmessage{\m!systems}{21}{}%
+ \global\let\utilitygenerationaborted=\endinput
+ \gdef\reportutilityproblems{\showmessage{\m!systems}{22}{}}%
+ \endinput}
+
+\let\reportutilityproblems=\relax
+
+\let\utilityresetlist=\empty
+
+\def\addutilityreset#1%
+ {\addtocommalist{\s!reset#1}\utilityresetlist}
+
+\def\resetutilities%
+ {\processcommacommand[\utilityresetlist]\getvalue}
+
+% #1=type
+% #2=file
+% #3=melding
+
+% #4=voor
+% #5=na
+
+% Er wordt gegroepeerd. Als binnen een lijst (bijvoorbeeld) de
+% \leftskip is aangepast, maar nog geen \par is gegeven, dan
+% geldt buiten de groep de oude \leftskip. Aan #5 kan dan
+% ook \par worden meegegeven om de paragraaf af te sluiten.
+
+\newif\ifdoinpututilities
+\newif\ifunprotectutilities % voor't geval er \v!xxxxxx's zijn
+
+\def\utilitycheckmessage%
+ {\showmessage{\m!systems}{12}{}%
+ \global\let\utilitycheckmessage=\relax}
+
+\def\saveutilityline#1 #2\txen% tricky maar ok, want achter \command
+ {\if #1c% commands % in \ascii staat een spatie; #1 kan
+ \write\scratchwrite{#2}% % \par in stringvorm zijn (eof)!
+ \else\if#1s% synoniems
+ \utilitycheckmessage
+ \else\if#1r% registers
+ \utilitycheckmessage
+ \fi\fi\fi}
+
+\def\checkutilityfile%
+ {\doiflocfileelse{\jobname.\f!outputextension}
+ {}
+ {\doiflocfileelse{\jobname.\f!inputextension}
+ {\bgroup
+ \showmessage{\m!systems}{11}{}%
+ \openout\scratchwrite=\jobname.\f!outputextension
+ \openlocin\scratchread{\jobname.\f!inputextension}%
+ \def\doprocessline%
+ {\ifeof\scratchread
+ \def\doprocessline{\closein\scratchread}%
+ \else
+ \read\scratchread to \ascii
+ \convertcommand\ascii\to\ascii
+ \expandafter\saveutilityline\ascii\txen
+ \fi
+ \doprocessline}%
+ \doprocessline
+ \closeout\scratchwrite
+ \egroup}
+ {}}}
+
+\long\def\doutilities#1#2#3#4#5% % introduceren in utility file
+ {%\ifprocessingverbatim
+ % \showmessage{\m!systems}{1}{}%
+ %\else
+\restorecatcodes
+ \resetutilities
+ \def\docommando##1% % zo kunnen meerdere dingen
+ {\getvalue{\s!set##1}}% % in een pass worden gedaan,
+ \processcommacommand[#1]\docommando % zie bijvoorbeeld lijsten
+ \begingroup
+ \footnotesenabledfalse
+ \doinpututilitiestrue
+ \global\utilitydonefalse
+ \catcode`\%=\@@comment\relax
+ \pushendofline % geeft problemen zodra andere file wordt ingelezen
+ \ifunprotectutilities % nog nodig ?
+ \unprotect
+ \fi
+ \ifnum\catcode`\@=\@@active \else
+ \catcode`\@=\@@letter % permits expanded commands with \@'s
+ \fi
+ \ifnum\catcode`\!=\@@active \else
+ \catcode`\!=\@@letter % permits multilingual constants
+ \fi
+ #4\readjobfile{#2.\f!outputextension}{}{}#5%
+ \relax
+ \ifunprotectutilities
+ \protect
+ \fi
+ \popendofline
+ \ifutilitydone\else
+ \doifnot{#3}{}
+ {\showmessage{\m!systems}{9}{{#3}}%
+ \ifvoorlopig
+ \blanko
+ \type{[\currentmessagetext]}%
+ \blanko
+ \fi}%
+ \fi
+ \endgroup
+ }%\fi}
+
+% Commando's ten behoeve van two-pass lists. In principe
+% kan alles in een keer worden ingelezen. Omdat de macro's
+% groeien is de kans groot dat het (main) geheugen door
+% (de)allocatie volloopt. Vandaar dat we het toch maar niet
+% doen.
+%
+% \definetwopasslist{\s!xxx}
+%
+% \gettwopassdata{\s!xxx}
+% \getfrompassdata{\s!xxx}{n} n=index (getal)
+% \findtwopassdata{\s!xxx}{tag} bijvoorbeeld {label:}
+% \iftwopassdatafound
+% \twopassdata
+%
+% \twopassentry{\s!xxx}{nr}{data} nr alleen voor testdoeleinden
+
+\def\alltwopasslists{}
+
+\newif\iftwopassdatafound
+
+\def\twopassentry#1%
+ {\executeifdefined{@@#1\s!pass}\gobbletwoarguments}
+
+\def\definetwopasslist#1%
+ {\doifundefined{#1:\s!list}
+ {\addtocommalist{#1}\alltwopasslists
+ \doglobal\addutilityreset{#1\s!pass}%
+ \setgvalue{\s!set#1\s!pass}%
+ {\setgvalue{@@#1\s!pass}####1####2%
+ {\debuggerinfo{\m!systems}{twopass data #1 - ####1 = ####2}%
+ \setxvalue{#1:\s!list}{\getvalue{#1:\s!list}####2,}}}%
+ \setgvalue{\s!reset#1\s!pass}%
+ {\setgvalue{@@#1\s!pass}####1####2{}}%
+ \getvalue{\s!reset#1\s!pass}}}
+
+\def\doloadtwopassdata#1%
+ {\doifundefined{#1:\s!list}
+ {\setgvalue{#1:\s!list}{}%
+ \doutilities{#1\s!pass}{\jobname}{}{}{}%
+ \setxvalue{#1:\s!list}{\getvalue{#1:\s!list}0,0}}}
+
+\def\loadtwopassdata%
+ {\processcommacommand[\alltwopasslists]\doloadtwopassdata}
+
+\def\twopassdata{}
+
+\def\dogettwopassdata[#1,#2]#3%
+ {\doifelse{#1}{0}
+ {\twopassdatafoundfalse}
+ {\twopassdatafoundtrue
+ \setxvalue{#3:\s!list}{#2}%
+ \edef\twopassdata{#1}}}
+
+\def\gettwopassdata#1%
+ {\edef\!!stringa{\getvalue{#1:\s!list}}%
+ \debuggerinfo{\m!systems}{twopass get #1 - \!!stringa}%
+ \expandafter\dogettwopassdata\expandafter[\!!stringa]{#1}}
+
+\def\dofindtwopassdata#1#2%
+ {\edef\!!stringa{,\getvalue{#1:\s!list}}%
+ \debuggerinfo{\m!systems}{twopass find #2 - \!!stringa}%
+ \def\dodofindtwopassdata[##1,##2#2##3,##4]%
+ {\def\twopassdata{##3}%
+ \doifelse{##3}{}
+ {\twopassdatafoundfalse}
+ {\twopassdatafoundtrue}}%
+ \@EA\dodofindtwopassdata\@EA[\!!stringa,#2,#2,]}
+
+\def\findtwopassdata%
+ {\ExpandBothAfter\dofindtwopassdata}
+
+\def\dogetfirsttwopassdata[#1,#2]#3%
+ {\doifelse{#1}{0}
+ {\twopassdatafoundfalse}
+ {\twopassdatafoundtrue
+ \edef\twopassdata{#1}}}
+
+\def\getfirsttwopassdata#1%
+ {\edef\!!stringa{\getvalue{#1:\s!list}}%
+ \expandafter\dogetfirsttwopassdata\expandafter[\!!stringa]{#1}}
+
+\def\getlasttwopassdata#1%
+ {\edef\twopassdata{0}\twopassdatafoundfalse
+ \newcounter\noftwopassitems
+ \def\docommando##1%
+ {\doifnot{##1}{0}
+ {\increment\noftwopassitems
+ \edef\twopassdata{##1}\twopassdatafoundtrue}}%
+ \processcommacommand[\getvalue{#1:\s!list}]\docommando}
+
+\def\getfromtwopassdata#1#2%
+ {\getfromcommacommand[\getvalue{#1:\s!list}][#2]%
+ \doifelsenothing{\commalistelement}
+ {\twopassdatafoundfalse}
+ {\twopassdatafoundtrue
+ \let\twopassdata=\commalistelement}}
+
+% Maten
+%
+% De onderstaande instellingen worden gebruikt voor het
+% vastleggen van de zetspiegel en marges.
+
+\voffset=0pt % setting this to -1in let's go metapost crazy
+\hoffset=0pt % setting this to -1in let's go metapost crazy
+
+\newdimen\papierhoogte
+\newdimen\papierbreedte
+
+\newdimen\printpapierhoogte
+\newdimen\printpapierbreedte
+
+\newdimen\zethoogte
+\newdimen\zetbreedte
+
+\newdimen\teksthoogte
+\newdimen\tekstbreedte
+
+\newdimen\kopwit \kopwit=2cm
+\newdimen\rugwit \rugwit=2cm
+
+\newdimen\hoofdhoogte \hoofdhoogte=2cm
+\newdimen\voethoogte \voethoogte=2cm
+
+%\newdimen\kopkopwit \kopkopwit=0cm
+
+\newdimen\kopoffset \kopoffset=\!!zeropoint
+\newdimen\rugoffset \rugoffset=\!!zeropoint
+
+\newdimen\linkermargebreedte \linkermargebreedte=3cm
+\newdimen\rechtermargebreedte \rechtermargebreedte=\linkermargebreedte
+
+\newdimen\linkerrandbreedte \linkerrandbreedte=3cm
+\newdimen\rechterrandbreedte \rechterrandbreedte=\linkerrandbreedte
+
+\newdimen\bovenhoogte \bovenhoogte=1cm
+\newdimen\onderhoogte \onderhoogte=\bovenhoogte
+
+\def\margeafstand%
+ {\@@lymargeafstand}
+
+\def\randafstand%
+ {\@@lyrandafstand}
+
+\def\margebreedte%
+ {\@@lymarge}
+
+\def\randbreedte%
+ {\@@lyrand}
+
+\def\linkerrandafstand%
+ {\ifdim\!!zeropoint<\linkerrandbreedte
+ \@@lylinkerrandafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\def\rechterrandafstand%
+ {\ifdim\!!zeropoint<\rechterrandbreedte
+ \@@lyrechterrandafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\def\linkermargeafstand%
+ {\ifdim\!!zeropoint<\linkermargebreedte
+ \@@lylinkermargeafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\def\rechtermargeafstand%
+ {\ifdim\!!zeropoint<\rechtermargebreedte
+ \@@lyrechtermargeafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\def\bovenafstand%
+ {\ifdim\!!zeropoint<\bovenhoogte
+ \@@lybovenafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\def\hoofdafstand%
+ {\ifdim\!!zeropoint<\hoofdhoogte
+ \@@lyhoofdafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\def\voetafstand%
+ {\ifdim\!!zeropoint<\voethoogte
+ \@@lyvoetafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\def\onderafstand%
+ {\ifdim\!!zeropoint<\onderhoogte
+ \@@lyonderafstand
+ \else
+ \!!zeropoint
+ \fi}
+
+\newif\ifdubbelzijdig
+\dubbelzijdigfalse
+
+\newif\ifenkelzijdig
+\enkelzijdigtrue
+
+\def\doifsometextlineelse#1#2#3% ! omgekeerd !
+ {\doifinsetelse{\getvalue{\??tk#1\v!tekst\c!status}}{\v!geen,\v!hoog}
+ {#3}{#2}}
+
+\def\calculatevsizes% global needed in \resetlayoutregel
+ {\redoglobal\teksthoogte=\zethoogte
+ %\redoglobal\kopkopwit=\kopwit
+ %\redoglobal\advance\kopkopwit by \hoofdhoogte
+ %\redoglobal\advance\kopkopwit by \hoofdafstand
+ \doifsometextlineelse{\v!hoofd}
+ {\redoglobal\advance\teksthoogte by -\hoofdhoogte
+ \redoglobal\advance\teksthoogte by -\hoofdafstand}
+ {}%
+ \doifsometextlineelse{\v!voet}
+ {\redoglobal\advance\teksthoogte by -\voethoogte
+ \redoglobal\advance\teksthoogte by -\voetafstand}
+ {}%
+ \resetglobal
+ \setvsize}
+
+\def\calculatereducedvsizes%
+ {\teksthoogte=\zethoogte
+ \doifsometextlineelse{\v!hoofd}
+ {\advance\teksthoogte by -\hoofdhoogte
+ \advance\teksthoogte by -\hoofdafstand}
+ {\hoofdhoogte=\!!zeropoint}%
+ \doifsometextlineelse{\v!voet}
+ {\advance\teksthoogte by -\voethoogte
+ \advance\teksthoogte by -\voetafstand}
+ {\voethoogte=\!!zeropoint}}
+
+\def\calculatehsizes%
+ {\tekstbreedte=\zetbreedte
+ \sethsize}
+
+\def\sethsize%
+ {\global\hsize=\tekstbreedte}
+
+\def\setvsize%
+ {\ifdim\vsize=\teksthoogte
+ \else
+ \bgroup
+ \dimen0=-\vsize
+ \advance\dimen0 by \teksthoogte
+ \global\advance\vsize by \dimen0
+ \ifdim\pagegoal<\maxdimen
+ \advance\dimen0 by \pagegoal
+ \global\pagegoal=\dimen0
+ \fi
+ \egroup
+ \fi}
+
+% Algemeen
+%
+% De Pragma-macros zijn samengesteld met behulp van de
+% commandos van PlainTeX- en enkele TugBoat routines.
+%
+% Voor de volledigheid zijn in de definitie steeds de
+% {}-haakjes vermeld. Deze haakjes zijn niet altijd
+% nodig, Als bijvoorbeeld een paragraaf bewerkt wordt,
+% kunnen ze achterwege blijven.
+%
+% Instellingen worden opgegeven tussen []-haakjes,
+% meestal direct na het commando. Instellingen mogen
+% soms achterwege blijven.
+%
+% Een aantal veelgebruikte macro's zijn in TeXEdit op
+% naam en/of door middel van een mnemonic oproepbaar.
+
+% %I n=Offset
+% %I c=\steloffsetin
+% %I
+% %I De totale bladzijde kan verschoven worden ten opzichte
+% %I van de linkerbovenhoek met:
+% %I
+% %I \steloffsetin[rug=,kop=]
+% %I
+% %I Dit commando moet worden gegeven aan het begin van de
+% %I pagina waarvoor het moet gelden. Er kunnen positieve
+% %I en negatieve waarden worden ingevuld: -10pt, 1.5cm.
+%
+% \def\dosteloffsetin[#1]%
+% {\getparameters
+% [\??os]
+% [\c!rug=\rugoffset,
+% \c!kop=\kopoffset,
+% #1]%
+% \rugoffset=\@@osrug
+% \kopoffset=\@@oskop}
+%
+% \def\steloffsetin%
+% {\dosingleargument\dosteloffsetin}
+
+% De onderstaande macro voert commando's uit, afhankelijk van
+% het karakter van het paginanummer.
+%
+% \doifonevenpaginaelse{then-commando}{else-commando}
+
+% NB \userpageno vervangen door \realpageno
+
+\def\doifonevenpaginaelse#1#2%
+ {\ifodd\realpageno#1\else#2\fi}
+
+\def\doifbothsidesoverruled#1\orsideone#2\orsidetwo#3\od%
+ {\ifdubbelzijdig
+ \ifodd\realpageno#2\relax\else#3\relax\fi
+ \else
+ #1\relax
+ \fi}
+
+\def\doifbothsides#1\orsideone#2\orsidetwo#3\od%
+ {\ifdubbelzijdig
+ \ifenkelzijdig
+ #1\relax
+ \else
+ \ifodd\realpageno#2\relax\else#3\relax\fi
+ \fi
+ \else
+ #1\relax
+ \fi}
+
+\def\dostartglobaldefs#1#2%
+ {\edef\!!stringa{\the\globaldefs}%
+ \ifnum\globaldefs#10
+ \globaldefs=-\globaldefs
+ \fi
+ \advance\globaldefs by #21
+ \setevalue{@gd@\the\globaldefs}{\!!stringa}}
+
+\def\dostopglobaldefs%
+ {\doifdefinedelse{@gd@\the\globaldefs}
+ {\globaldefs=\getvalue{@gd@\the\globaldefs}\relax}
+ {\globaldefs=0\relax}}
+
+\def\startlocal {\dostartglobaldefs>-}
+\def\stoplocal {\dostopglobaldefs}
+\def\startglobal {\dostartglobaldefs<+}
+\def\stopglobal {\dostopglobaldefs}
+
+%I n=Zetspiegel
+%I c=\stellayoutin,\definieerpapierformaat,\stelpapierformaatin
+%I c=\paslayoutaan
+%I
+%I De zetspiegel is het door de tekst gevormde vlak.
+%I Hiertoe behoren ¢¢k de hoofd- en voetmarge. De zetspiegel
+%I wordt ingesteld met:
+%I
+%I \stellayoutin[breedte=,hoogte=,rugwit=,kopwit=]
+%I
+%I Er dienen maten te worden ingevuld, waarbij de eenheid
+%I direkt achter het getal staat: 10pt, 100mm, 5cm, 3.5in.
+%I
+%I De parameters hebben de volgende betekenis:
+%I
+%I breedte breedte van het tekstvlak, inclusief marges
+%I hoogte hoogte van het tekstvlak, inclusief marges
+%I rugwit witruimte aan de binnenzijde, zonder marge
+%I kopwit witruimte aan de bovenzijde, zonder marge
+%P
+%I Rond de zetspiegel vinden we marges, randen, het hoofd en
+%I de voet. Ook deze worden ingesteld met:
+%I
+%I \stellayoutin[breedte=,hoogte=,rugwit=,kopwit=]
+%I
+%I hoofd hoogte van de bovenmarge binnen de zetspiegel
+%I voet hoogte van de ondermarge binnen de zetspiegel
+%I marge breedte van de marge naast de zetspiegel
+%I
+%I en
+%I
+%I rand breedte van de rand naast de marge
+%I boven hoogte van de rand boven het hoofd
+%I onder hoogte van de rand onder de voet
+%I
+%I Alleen het hoofd en de voet hangen dus samen met de
+%I zetspiegel.
+%P
+%I Eventueel kunnen de linker- en rechtermarge en apart
+%I worden ingesteld:
+%I
+%I \stellayoutin[linkermarge=,rechtermarge=]
+%I
+%I Het zelfde geldt voor de randen. In dat geval wordt bij
+%I dubbelzijdig zetten gespiegeld. Oppassen dus!
+%I
+%I De afstanden tussen marges, randen enz. kunnen worden
+%I ingesteld met:
+%I
+%I bovenafstand, onderafstand
+%I hoofdafstand,voetafstand
+%I linkermargeafstand,rechtermargeafstand,
+%I linkerrandafstand,rechterrandafstand
+%P
+%I De zetspiegel kan (tijdelijk) worden aangepast met het
+%I commando:
+%I
+%I \paslayoutaan[hoogte=]
+%I
+%I Men dient een positieve (+) of negatieve (-) maat op te
+%I geven. De zethoogte blijft gelijk, maar de teksthoogte
+%I wordt aangepast ten koste van de voethoogte. Eventueel
+%I kan 'max' worden opgegeven.
+%I
+%I Er kan een reeks aanpassingen worden opgegeven:
+%I
+%I \paslayoutaan[nr,nr,nr,...][hoogte=]
+%I
+%I Hierbij is staat nr voor het paginanummer, dat wil
+%I zeggen: het volgnummer in de tekst.
+%I
+%I Bij voorlopige versies wordt onderaan de pagina de
+%I aanpassing weergegeven.
+%P
+%I Beeldmerken en achtergronden worden uit oogpunt van
+%I verwerkingssnelheid niet vaker berekend dan nodig. Mocht
+%I om een of andere reden een beeldmerk of achtergrond niet
+%I overeenkomen komen met de wensen, dan kan herberekenen
+%I worden geforceerd met:
+%I
+%I \stellayoutin[reset]
+%P
+%I Het papierformaat is in te stellen met het commando
+%I
+%I \stelpapierformaatin[DIN-formaat]
+%I
+%I Mogelijke DIN-formaten zijn A4 tot en met A9. De
+%I afmetingen van een A4 zijn:
+%I
+%I breedte : 21.0cm = 8.18in = 589pt
+%I hoogte : 29.7cm = 11.58in = 834pt
+%I
+%I Optioneel kan men het printer papierformaat instellen door
+%I een tweede argument mee te geven. Standaard wordt
+%I uitgegaan van A4.
+%I
+%I \stelpapierformaatin[A5][A4]
+%I
+%P Men kan zelf een papierformaat definieren met
+%I
+%I \definieerpapierformaat [naam] [hoogte=,breedte=]
+%I
+%I waarbij de offset betrekking heeft op dubbelzijdig zetten.
+
+\def\dodefinieerpapierformaat[#1][#2]%
+ {\getparameters
+ [\??pp#1] % geen \c!schaal, scheelt hash ruimte
+ [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte,#2]}
+
+\def\definieerpapierformaat%
+ {\dodoubleargument\dodefinieerpapierformaat}
+
+\definieerpapierformaat[][\c!breedte=210mm,\c!hoogte=297mm]
+
+\chardef\papermirror =0
+\chardef\printmirror =0
+\chardef\paperrotation =0
+\chardef\paperreverse =0
+\chardef\printrotation =0
+\chardef\printreverse =0
+\chardef\paperlandscape=0
+\chardef\printlandscape=0
+
+\def\papierschaal{1}
+
+\newif\ifnegateprintbox
+
+\def\dostelpapierrichtingin#1#2#3#4#5%
+ {\global\chardef#2=0
+ \global\chardef#5=0
+ \gdef#3{0}%
+ \gdef#4{0}%
+ \global\negateprintboxfalse
+ \processallactionsinset
+ [#1]
+ [ \v!liggend=>\global\chardef#2=1,
+ \v!gespiegeld=>\global\chardef#5=1,
+ \v!geroteerd=>\gdef#3{90}\gdef#4{270},
+ \v!negatief=>\global\negateprintboxtrue,
+ 90=>\gdef#3{90}\gdef#4{270},
+ 180=>\gdef#3{180}\gdef#4{0},
+ 270=>\gdef#3{270}\gdef#4{90}]}
+
+\def\dostelpapierformaatin[#1][#2]%
+ {\dostelpapierrichtingin{#1}\paperlandscape\paperrotation\paperreverse\papermirror
+ \dostelpapierrichtingin{#2}\printlandscape\printrotation\printreverse\printmirror
+ \def\docommando##1%
+ {\doifsomething{##1}{\doifdefined{\??pp##1\c!breedte}
+ {\gdef\papierformaat{##1}%
+ \global\papierbreedte=\getvalue{\??pp##1\c!breedte}%
+ \global\papierhoogte=\getvalue{\??pp##1\c!hoogte}}}}%
+ \processcommalist[#1]\docommando
+ \doifdefinedelse{\??pp#1\c!schaal}
+ {\edef\papierschaal{\getvalue{\??pp#1\c!schaal}}}
+ {\edef\papierschaal{1}}%
+ \def\docommando##1%
+ {\doifsomething{##1}{\doifdefined{\??pp##1\c!breedte}
+ {\global\printpapierbreedte=\getvalue{\??pp##1\c!breedte}%
+ \global\printpapierhoogte=\getvalue{\??pp##1\c!hoogte}}}}%
+ \processcommalist[#2]\docommando
+ \ifnum\paperlandscape>0
+ \doglobal\swapdimens\papierbreedte\papierhoogte
+ \fi
+ \ifnum\printlandscape>0
+ \doglobal\swapdimens\printpapierbreedte\printpapierhoogte
+ \fi
+ \ifdim\papierhoogte>\printpapierhoogte
+ \global\printpapierhoogte=\papierhoogte
+ \fi
+ \ifdim\papierbreedte>\printpapierbreedte
+ \global\printpapierbreedte=\papierbreedte
+ \fi
+ \calculatehsizes
+ \calculatevsizes
+ \global\newlogostrue
+ \global\newbackgroundtrue
+ \resetlayout}
+
+\def\stelpapierformaatin%
+ {\dodoubleempty\dostelpapierformaatin}
+
+\def\checkforems[#1]%
+ {\def\docommando##1%
+ {\beforesplitstring##1\at em\to\asciia
+ \doifnot{\asciia}{##1}
+ {\aftersplitstring\asciia\at=\to\asciia
+ \doifsomething{\asciia}
+ {\showmessage{\m!systems}{10}{##1}}}}%
+ \processcommalist[#1]\docommando}
+
+\def\resetlayout%
+ {\global\linkermargebreedte=\@@lylinkermarge
+ \global\rechtermargebreedte=\@@lyrechtermarge
+ \global\linkerrandbreedte=\@@lylinkerrand
+ \global\rechterrandbreedte=\@@lyrechterrand
+ \global\hoofdhoogte=\@@lyhoofd
+ \global\voethoogte=\@@lyvoet
+ \global\onderhoogte=\@@lyonder
+ \global\bovenhoogte=\@@lyboven
+ \global\rugwit=\@@lyrugwit
+ \global\kopwit=\@@lykopwit
+ \doifelse{\@@lygrid}{\v!ja}
+ {\gridsnappingtrue}
+ {\gridsnappingfalse}%
+ \stelwitruimtein
+ \stelblankoin
+ \doifelse{\@@lybreedte}{\v!midden}
+ {\global\zetbreedte=\papierbreedte
+ \global\advance\zetbreedte by -2\rugwit}
+ {\doifelse{\@@lybreedte}{\v!passend}
+ {\global\zetbreedte=\papierbreedte
+ \global\advance\zetbreedte by -\rugwit
+ \scratchdimen=\rugwit
+ \advance\scratchdimen by -\linkerrandbreedte
+ \advance\scratchdimen by -\linkerrandafstand
+ \advance\scratchdimen by -\paginascheiding
+ \advance\scratchdimen by -\linkermargebreedte
+ \advance\scratchdimen by -\linkermargeafstand
+ \ifdim\scratchdimen<\!!zeropoint
+ \scratchdimen=\!!zeropoint
+ \fi
+ \global\advance\zetbreedte by -\rechtermargeafstand
+ \global\advance\zetbreedte by -\rechtermargebreedte
+ \global\advance\zetbreedte by -\paginascheiding
+ \global\advance\zetbreedte by -\rechterrandafstand
+ \global\advance\zetbreedte by -\rechterrandbreedte
+ \global\advance\zetbreedte by -\scratchdimen}
+ {\global\zetbreedte=\@@lybreedte}}%
+ \doifelse{\@@lyregels}{}
+ {\doifelse{\@@lyhoogte}{\v!midden}
+ {\global\zethoogte=\papierhoogte
+ \global\advance\zethoogte by -2\kopwit}
+ {\doifelse{\@@lyhoogte}{\v!passend}
+ {\global\zethoogte=\papierhoogte
+ \global\advance\zethoogte by -\kopwit
+ \scratchdimen=\kopwit
+ \advance\scratchdimen by -\bovenhoogte
+ \advance\scratchdimen by -\bovenafstand
+ \ifdim\scratchdimen<\!!zeropoint
+ \scratchdimen=\!!zeropoint
+ \fi
+ \global\advance\zethoogte by -\onderafstand
+ \global\advance\zethoogte by -\onderhoogte
+ \global\advance\zethoogte by -\scratchdimen}
+ {\global\zethoogte=\@@lyhoogte}}}
+ {\global\zethoogte=\@@lyregels\baselineskip
+ \global\advance\zethoogte by \hoofdhoogte
+ \global\advance\zethoogte by \voethoogte}%
+ \rugoffset=\@@lyrugoffset
+ \kopoffset=\@@lykopoffset
+ \calculatehsizes
+ \calculatevsizes
+ \global\newlogostrue
+ \global\newbackgroundtrue}
+
+\newif\ifdoublesidedprint
+
+\def\setcenterpagebox#1#2#3#4%
+ {\let\leftpagebox =#1%
+ \let\rightpagebox =#2%
+ \let\toppagebox =#3%
+ \let\bottompagebox=#4}%
+
+\def\presetcenterpagebox% in \stellayoutin !!!!!!!!!!!!!!!!
+ {\setcenterpagebox\relax\hss\relax\vss
+ \doublesidedprintfalse
+ \ExpandFirstAfter\processallactionsinset
+ [\@@lyplaats]
+ [ \v!midden=>\setcenterpagebox\hss\hss\vss\vss,
+ \v!links=>\setcenterpagebox\relax\hss\toppagebox\bottompagebox,
+ \v!rechts=>\setcenterpagebox\hss\relax\toppagebox\bottompagebox,
+ \v!onder=>\setcenterpagebox\leftpagebox\rightpagebox\vss\relax,
+ \v!boven=>\setcenterpagebox\leftpagebox\rightpagebox\relax\vss,
+ \v!dubbelzijdig=>\doublesidedprinttrue,
+ \v!enkelzijdig=>\doublesidedprintfalse]}
+
+\def\complexstellayoutin[#1]%
+ {\ConvertToConstant\doifnot{#1}{\v!reset}
+ {\getparameters[\??ly][#1]%
+ \checkforems[#1]}%
+ \resetlayout
+ \presetcenterpagebox}
+
+\def\simplestellayoutin%
+ {\resetlayout
+ \presetcenterpagebox}
+
+\def\stellayoutin%
+ {\complexorsimpleempty{stellayoutin}}
+
+\let\@@zahoogte=\!!zeropoint
+
+\def\dopushpagedimensions%
+ {\xdef\oldteksthoogte{\the\teksthoogte}%
+ \xdef\oldvoethoogte{\the\voethoogte}%
+ \global\let\@@zahoogte=\@@zahoogte}
+
+\def\dopoppagedimensions%
+ {\global\teksthoogte=\oldteksthoogte
+ \global\voethoogte=\oldvoethoogte
+ \resetlayout
+ \global\let\pushpagedimensions=\dopushpagedimensions
+ \global\let\poppagedimensions=\relax}
+
+\let\poppagedimensions=\relax
+\let\pushpagedimensions=\dopushpagedimensions
+
+% Elke \csname ... \endcsname wordt ook aangemaakt, dus ook
+% in een test met \doifdefined. Bij veel bladzijden kan dit
+% te veel macro's kosten. Vandaar de set \adaptedpages. Het
+% kost tijd, maar scheelt macro's.
+
+\def\adaptedpages{}
+
+\def\adaptpagedimensions%
+ {\rawdoifinsetelse{\realfolio}{\adaptedpages}
+ {\getvalue{\??za\realfolio}%
+ \letvalue{\??za\realfolio}=\relax}
+ {}}
+
+\def\checkpagedimensions%
+ {\poppagedimensions
+ \adaptpagedimensions}
+
+\def\reportpagedimensions%
+ {\ifx\poppagedimensions\relax
+ \else
+ \spatie\@@zahoogte\spatie-
+ \fi
+ \realfolio}
+
+\def\dodopaslayoutaan[#1]%
+ {\getparameters[\??za][\c!hoogte=,\c!regels=,#1]%
+ \pushpagedimensions
+ \doifelsenothing{\@@zaregels}
+ {\showmessage{\m!layouts}{1}{\@@zahoogte,\realfolio}}
+ {\showmessage{\m!layouts}{1}{\@@zaregels\space\v!regels,\realfolio}%
+ \def\@@zahoogte{\@@zaregels\openlineheight}}%
+ \doifelse{\@@zahoogte}{\v!max}
+ {\balancedimensions{\teksthoogte}{\voethoogte}{\voethoogte}}
+ {\balancedimensions{\teksthoogte}{\voethoogte}{\@@zahoogte}}%
+ \ifdim\voethoogte<\!!zeropoint
+ \global\advance\teksthoogte by \voethoogte
+ \global\voethoogte=\!!zeropoint
+ \global\xdef\@@zahoogte{\@@lyvoet\spatie(\v!max)}%
+ \fi
+ \setvsize
+ \global\pagegoal=\vsize % nog corrigeren voor insertions ?
+ \global\newlogostrue
+ \global\newbackgroundtrue
+ \global\let\pushpagedimensions=\relax
+ \global\let\poppagedimensions=\dopoppagedimensions}
+
+\def\dopaslayoutaan[#1][#2]%
+ {\doifelsenothing{#2}
+ {\dodopaslayoutaan[#1]}
+ {\def\docommando##1%
+ {\addtocommalist{##1}\adaptedpages
+ \setgvalue{\??za##1}{\dodopaslayoutaan[#2]}}%
+ \processcommalist[#1]\docommando
+ \adaptpagedimensions}}
+
+\def\paslayoutaan%
+ {\dodoubleempty\dopaslayoutaan}
+
+%I n=Margeblokken
+%I c=\startmargeblok,\stelmargeblokkenin
+%I
+%I voorlopig:
+%I
+%I \stelmargeblokkenin
+%I [plaats=,breedte,letter=,uitlijnen=,
+%I voor=,na=,links=,rechts=,boven=,onder=,tussen=]
+%I
+%I plaats = inmarge, links, rechts, midden
+%I links, rechts, voor, na = rule
+%I boven, onder, tussen = skip
+%I status=
+%I
+%I \startmargeblok
+%I \stopmargeblok
+
+\newif\ifmargeblokken
+
+\def\dostelmargeblokkenin[#1]%
+ {\getparameters[\??mb][#1]%
+ \doifelse{\@@mbstatus}{\v!start}%
+ {\showmessage{\m!layouts}{4}{}%
+ \margeblokkentrue
+ \let\somenextfloat=\dosomenextfloat
+ \let\startmargeblok=\dostartmargeblok
+ \let\stopmargeblok=\dostopmargeblok}%
+ {\showmessage{\m!layouts}{5}{}%
+ \margeblokkenfalse
+ \def\somenextfloat[##1]%
+ {\someelsefloat[##1,\v!hier]}%
+ \let\startmargeblok=\dontstartmargeblok
+ \let\stopmargeblok=\dontstopmargeblok}}
+
+\def\stelmargeblokkenin%
+ {\dosingleargument\dostelmargeblokkenin}
+
+\newbox\marginbox
+
+\def\dosomenextfloat[#1]%
+ {\global\setbox\marginbox=\vbox
+ {\hsize\@@mbbreedte
+ \unvbox\marginbox
+ \ifvoid\marginbox\else
+ \@@mbtussen
+ \fi
+ \box\floatbox\filbreak}%
+ \ifdim\ht\marginbox>\teksthoogte
+ \dosavefloatinfo
+ \else
+ \doinsertfloatinfo
+ \fi}
+
+\newbox\preparedmarginbox
+
+\def\reshapemargin%
+ {\beginofshapebox
+ \unvbox\preparedmarginbox
+ \endofshapebox
+ \reshapebox
+ {\box\shapebox}%
+ \setbox\preparedmarginbox=\vbox to \teksthoogte
+ {\@@mbboven
+ \flushshapebox
+ \@@mbonder}}
+
+\def\plaatsrechtermargeblok%
+ {\hskip\rechtermargebreedte}
+
+\def\plaatslinkermargeblok%
+ {\hskip\linkermargebreedte}
+
+\def\checkmargeblokken%
+ {\setbox\preparedmarginbox=\vbox
+ {\forgetall
+ \splittopskip\topskip
+ \ifvoid\marginbox\else
+ \ifdim\ht\marginbox>\teksthoogte
+ \vsplit\marginbox to \teksthoogte
+ \else
+ \unvbox\marginbox
+ \fi
+ \fi}%
+ \reshapemargin
+ \setbox\preparedmarginbox=\vbox
+ {\@@mbvoor\box\preparedmarginbox\@@mbna}%
+ \def\rightmarginbox%
+ {\def\plaatsrechtermargeblok%
+ {\setbox\preparedmarginbox=\hbox to \rechtermargebreedte
+ {\@@mblinks\box\preparedmarginbox\@@mbrechts}%
+ \vsmashbox\preparedmarginbox
+ \box\preparedmarginbox}}%
+ \def\leftmarginbox%
+ {\def\plaatslinkermargeblok%
+ {\setbox\preparedmarginbox=\hbox to \linkermargebreedte
+ {\@@mbrechts\box\preparedmarginbox\@@mblinks}%
+ \vsmashbox\preparedmarginbox
+ \box\preparedmarginbox}}%
+ \processaction
+ [\@@mbplaats]
+ [ \v!inmarge=>\doifbothsidesoverruled
+ \rightmarginbox
+ \orsideone
+ \rightmarginbox
+ \orsidetwo
+ \leftmarginbox
+ \od,
+ \v!midden=>\doifbothsidesoverruled
+ \rightmarginbox
+ \orsideone
+ \leftmarginbox
+ \orsidetwo
+ \rightmarginbox
+ \od,
+ \v!links=>\leftmarginbox,
+ \v!rechts=>\rightmarginbox,
+ \s!unknown=>\setbox\preparedmarginbox=\hbox{}]}
+
+\def\dostartmargeblok% % 2 maal \vbox ivm \unvbox elders
+ {\global\setbox\marginbox=\vtop\bgroup\vbox\bgroup
+ \hsize\@@mbbreedte
+ \ifvoid\marginbox\else
+ \unvbox\marginbox
+ \@@mbtussen
+ \fi
+ \steluitlijnenin[\@@mbuitlijnen]%
+ \dostartattributes{\??mb}{}%
+ \begstrut\ignorespaces}
+
+\def\dostopmargeblok%
+ {\unskip\endstrut
+ \dostopattributes
+ \egroup
+ \egroup}
+
+\def\dontstartmargeblok%
+ {\@@mbvoor
+ \bgroup
+ \dostartattributes{\??mb}{}}
+
+\def\dontstopmargeblok%
+ {\dostopattributes
+ \egroup
+ \@@mbna}
+
+%I n=Uitstellen
+%I c=\startuitstellen
+%I
+%I Zetcommando's kunnen in een wachtrij worden gezet en na
+%I een pagina worden uitgevoerd. Dit gebeurt met het commando:
+%I
+%I \startuitstellen
+%I ...
+%I \stopuitstellen
+%I
+%I Dit kan handig zijn bij bijvoorbeeld grote tussen te voegen
+%I figuren, tabellen, formulieren enz.
+%I
+%I \startuitstellen
+%I \plaatsfiguur[pagina][]{...}{...}
+%I \stopuitstellen
+%I
+%I Er kunnen meerdere commando's in de wachtrij worden
+%I geplaatst.
+%P
+%I Het mechanisme werkt nog niet vlekkeloos. Zo wordt
+%I nog gerekend met waarden van de vorige pagina. Dit heeft
+%I bijvoorbeeld als gevolg dat figuren kunnen worden
+%I opgespaard.
+%I
+%I Het kan gebeuren dat een (te) groot figuur er voor zorgt
+%I dat ook andere figuren worden verplaatst. De volgorde
+%I blijft immers gehandhaafd. In dat geval kan zo'n groot
+%I figuur worden verplaatst naar de eerstvolgende voor de
+%I handliggende pagina:
+%I
+%I \startuitstellen
+%I \plaatsfiguur[pagina][]{...}{...}
+%I \pagina
+%I \stopuitstellen
+
+\newcounter\nofpostponedblocks
+
+\def\douitstellen%
+ {\dorecurse{\nofpostponedblocks}
+ {\haalbuffer[buf-\recurselevel]}%
+ \doglobal\newcounter\nofpostponedblocks}
+
+\setvalue{\e!start\e!uitstellen}%
+ {\doglobal\increment\nofpostponedblocks
+ \showmessage{\m!layouts}{3}{\nofpostponedblocks}%
+ \startbuffer[buf-\nofpostponedblocks]
+ [\e!start\e!uitstellen][\e!stop\e!uitstellen]}
+
+%I n=Nummeren
+%I c=\stelnummerenin
+%I
+%I Automatische nummering kan worden ingesteld met het
+%I commando:
+%I
+%I \stelnummerenin[wijze=,blok=,status=]
+%I
+%I Mogelijke wijzen van nummeren zijn: 'pertekst',
+%I 'perhoofdstuk' en 'perparagraaf'. Als status kan worden
+%I meegegeven 'start' of 'stop'. Met blok wordt aangegeven
+%I of moet worden uitgegaan van het huidige hoofdstuk ('nee')
+%I of het blokhoofdstuk ('ja').
+
+% Commando's ten behoeve van nummeren:
+%
+% \definieernummer[naam]
+% \stelnummerin[naam][wijze=,blok=,tekst=plaats=,conversie=,start=]
+% \setnummer[naam]{waarde}
+% \resetnummer[naam]
+% \verhoognummer[naam]
+% \verlaagnummer[naam]
+% \volgendenummer[naam][tag][referentie]
+% \nummer[naam]
+% \huidigenummer[naam]
+% \innummer[naam][referentie]
+% \opnummer[naam][referentie]
+% \savenumber[naam]
+% \restorenumber[naam]
+
+\newif\ifnummeren
+
+\def\dostelnummerenin[#1]% globaal
+ {\getparameters[\??nr][#1]%
+ \doifelse{\@@nrstatus}{\v!start}
+ {\global\nummerentrue}
+ {\global\nummerenfalse}}%
+
+\def\stelnummerenin%
+ {\dosingleargument\dostelnummerenin}
+
+\def\dostelnummerin[#1][#2]%
+ {\getparameters[\s!number#1][#2]}
+
+\def\stelnummerin%
+ {\dodoubleargument\dostelnummerin}
+
+\def\dodefinieernummer[#1][#2]% ook overal class als localframed
+ {\makecounter{\s!number#1}%
+ \getparameters
+ [\s!number#1]
+ [\s!check=,
+ \c!wijze=\@@nrwijze,
+ \c!wijze\c!lokaal=\getvalue{\s!number#1\c!wijze},
+ \c!sectienummer=\v!ja,
+ \c!tekst=,
+ \c!plaats=, % was: \c!zetwijze
+ \c!conversie=\v!cijfers,
+ \c!start=0,
+ #2]%
+ \setcounter{\s!number#1}{\getvalue{\s!number#1\c!start}}}
+
+\def\definieernummer%
+ {\dodoubleempty\dodefinieernummer}
+
+\def\setnummer[#1]#2%
+ {\setcounter{\s!number#1}{#2}}
+
+\def\resetnummer[#1]%
+ {\setcounter{\s!number#1}{0\getvalue{\s!number#1\c!start}}}
+
+\def\dodoreset#1%
+ {\getvalue{\s!reset#1}}%
+
+\def\doreset[#1]%
+ {\processcommalist[#1]\dodoreset}
+
+\def\reset%
+ {\dosingleargument\doreset}
+
+\def\verhoognummer[#1]%
+ {\checknummer{#1}%
+ \ifnummeren
+ \else
+ \resetcounter{\s!number#1}%
+ \fi
+ \pluscounter{\s!number#1}}
+
+\def\savenumber[#1]%
+ {\savecounter{\s!number#1}}
+
+\def\restorenumber[#1]%
+ {\restorecounter{\s!number#1}}
+
+% nieuw, maar kan dit (i.v.m. (sub)page?)
+
+\def\verhoognummer[#1]%
+ {\checknummer{#1}%
+ \ifnummeren
+ \pluscounter{\s!number#1}%
+ \else
+ \setcounter{\s!number#1}{0\getvalue{\s!number#1\c!start}}%
+ \fi}
+
+\def\verlaagnummer[#1]%
+ {\minuscounter{\s!number#1}}
+
+\def\dodochecknummer#1#2#3%
+ {\bgroup
+ \doifinstringelse{.0}{.#2} % waarom \instring en \@koscheider
+ {\doifnot{#3}{\v!per}
+ {\debuggerinfo{\m!systems}{number #1 #3 becomes \getvalue{\s!number#1\c!wijze}}%
+ \setevalue{\s!number#1\c!wijze}% geen \xdef, gaat mis met \subpage
+ {#3}%
+ \dochecknummer{#1}}} % tricky and ugly
+ {\doifnotvalue{\s!number#1\s!check}{#2}
+ {\setcounter{\s!number#1}{0\getvalue{\s!number#1\c!start}}%
+ \setxvalue{\s!number#1\c!wijze\c!lokaal}%
+ {\getvalue{\s!number#1\c!wijze}}%
+ \setxvalue{\s!number#1\s!check}%
+ {#2}}}%
+ \egroup}
+
+\def\dochecknummer#1%
+ {\edef\currentsection{\getvalue{\??by\getvalue{\s!number#1\c!wijze}}}%
+ \doifsomething{\currentsection}
+ {\dodochecknummer
+ {#1}
+ {\getvalue{\currentsection\c!nummer}}
+ {\v!per\previoussection{\currentsection}}}}
+
+\def\checknummer#1%
+ {\bgroup
+ \ifnum\blocklevel>0
+ \doifelsevalue{\s!number#1\c!blokwijze}{\v!nee}
+ {\dochecknummer{#1}}
+ {\setblockcounters % dit kan sneller omdat de waarden
+ \dochecknummer{#1}}% % en het type bekend zijn
+ \else
+ \dochecknummer{#1}%
+ \fi
+ \egroup}
+
+\def\domaakvoorafgaandenummer[#1]%
+ {\gdef\voorafgaandenummer{}%
+ \ifsectienummer
+ \doifvalue{\??sb\@@sectieblok\c!nummer}{\v!ja} % toegevoegd
+ {\doifvalue{\s!number#1\c!sectienummer}{\v!ja}
+ {\edef\currentsection%
+ {\getvalue{\??by\getvalue{\s!number#1\c!wijze\c!lokaal}}}%
+ \doifnot{\currentsection}{\zerosection}
+ {\doifnot{\@@sectionvalue{\currentsection}}{0}
+ {\xdef\voorafgaandenummer%
+ {\getvalue{\currentsection\c!nummer}.}}}}}%
+ \fi}
+
+\def\maakvoorafgaandenummer[#1]%
+ {\bgroup
+ \ifnum\blocklevel>0
+ \doifelsevalue{\s!number#1\c!blokwijze}{\v!nee}
+ {\domaakvoorafgaandenummer[#1]}%
+ {\setblockcounters % dit kan sneller omdat de waarden
+ \domaakvoorafgaandenummer[#1]}% % en het type bekend zijn
+ \else
+ \domaakvoorafgaandenummer[#1]%
+ \fi
+ \egroup}
+
+\def\nummer[#1]%
+ {\convertnumber
+ {\getvalue{\s!number#1\c!conversie}}
+ {\countervalue{\s!number#1}}}
+
+\def\ruwenummer[#1]%
+ {\countervalue{\s!number#1}}
+
+\def\maakhetnummer[#1]%
+ {\maakvoorafgaandenummer[#1]%
+ \global\edef\hetnummer%
+ {\voorafgaandenummer\nummer[#1]}}%
+
+\def\lossenummer[#1]%
+ {\maakhetnummer[#1]%
+ \hetnummer}
+
+\def\huidigenummer[#1]%
+ {%\getvalue{\getvalue{\s!number#1\c!zetwijze}}%
+ \getvalue{\getvalue{\s!number#1\c!plaats}}%
+ {\dotextprefix{\getvalue{\s!number#1\c!tekst}}\lossenummer[#1]}}
+
+\def\volgendenummer[#1][#2][#3]%
+ {\verhoognummer[#1]%
+ \huidigenummer[#1]%
+ \rawreference{#2}{#3}{\hetnummer}}
+
+\def\innummer[#1][#2]%
+ {\c!in \in{\getvalue{\s!number#1\c!tekst}}[#2]}%
+
+\def\opnummer[#1][#2]%
+ {\c!op \op{\getvalue{\s!number#1\c!tekst}}[#2]}%
+
+% \gotonextsubpage : voor de pagebody
+% \subpaginanummer : alleen in de voet/kopregels
+% \aantalsubpaginas : alleen in de voet/kopregels
+
+% \firstsubpage : eerste \realpageno, voor interne doeleinden
+% \prevsubpage : vorige \realpageno, voor interne doeleinden
+% \nextsubpage : volgende \realpageno, voor interne doeleinden
+% \lastsubpage : laatste \realpageno, voor interne doeleinden
+% \nofsubpages : laatste subpage (in berekeningen)
+% \subpageno : huidige subpage (in berekeningen)
+
+\newif\ifsubpaging
+\newif\ifshowingsubpage
+
+\definieernummer
+ [\s!subpage]
+
+\stelnummerin
+ [\s!subpage]
+ [\c!wijze=\@@snwijze]
+
+\def\resetsubpaginanummer%
+ {\resetnummer[\s!subpage]%
+ \global\subpageno=\ruwenummer[\s!subpage]}
+
+\def\dostelsubpaginanummerin[#1]%
+ {\doifelse{#1}{\v!reset}
+ {\resetnummer[\s!subpage]}
+ {\getparameters[\??sn][#1]%
+ \processaction
+ [\@@snstatus]
+ [ \v!stop=>\ifsubpaging
+ \else
+ \subpagingfalse
+ \fi
+ \showingsubpagefalse,
+ \v!start=>\subpagingtrue
+ \showingsubpagetrue,
+ \v!geen=>\subpagingtrue
+ \showingsubpagefalse]}}
+
+\def\aantalsubpaginas%
+ {\ifshowingsubpage
+ \nofsubpages
+ \else
+ 0%
+ \fi}
+
+\def\subpaginanummer%
+ {\ifshowingsubpage
+ \the\subpageno
+ \else
+ 0%
+ \fi}
+
+\def\stelsubpaginanummerin%
+ {\dosingleargument\dostelsubpaginanummerin}
+
+\def\newnofsubpages {0}
+\def\nofsubpages {0}
+\def\firstsubpage {1}
+\def\prevsubpage {1}
+\def\nextsubpage {1}
+\def\lastsubpage {1}
+
+\def\nextpage {1}
+\def\prevpage {1}
+
+\definetwopasslist{\s!subpage}
+
+\def\savenofsubpages%
+ {\ifsubpaging
+ \showmessage{\m!layouts}{6}{\newnofsubpages,\the\subpageno}%
+ \immediatewriteutilitycommand%
+ {\twopassentry%
+ {\s!subpage}%
+ {\newnofsubpages}%
+ {\the\subpageno}}%
+ \fi}
+
+\def\setsubpagenumbers%
+ {\iftwopassdatafound
+ \bgroup
+ \xdef\nofsubpages{\twopassdata}%
+ \xdef\firstsubpage{\realfolio}%
+ \advance\realpageno by \nofsubpages
+ \advance\realpageno by -1
+ \xdef\lastsubpage{\realfolio}%
+ \egroup
+ \else
+ \xdef\nofsubpages{0}%
+ \fi}
+
+\def\gotonextsubpage%
+ {\global\let\checksubpages=\relax
+ \ifsubpaging
+ \edef\oldsubpage{\the\subpageno}%
+ \verhoognummer[\s!subpage]%
+ \global\subpageno=\ruwenummer[\s!subpage]\relax
+ \ifnum\subpageno=1
+ \gettwopassdata{\s!subpage}%
+ \setsubpagenumbers
+ \ifnum\oldsubpage>0
+ \showmessage{\m!layouts}{6}{\newnofsubpages,\oldsubpage}%
+ \edef\next%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!subpage}%
+ {\newnofsubpages}%
+ {\oldsubpage}}}%
+ \next
+ \fi
+ \doglobal\increment\newnofsubpages\relax
+ \fi
+ \setglobalsystemreference\rt!page{\v!eerste\v!sub\v!pagina}\firstsubpage
+ \setglobalsystemreference\rt!page{\v!laatste\v!sub\v!pagina}\lastsubpage
+ \bgroup
+ \ifnum\realpageno=\firstsubpage\relax
+ \global\let\prevsubpage=\firstsubpage
+ \else
+ \xdef\prevsubpage{\realfolio}%
+ \doglobal\decrement\prevsubpage
+ \fi
+ \setglobalsystemreference\rt!page{\v!vorige\v!sub\v!pagina}\prevsubpage
+ \ifnum\realpageno=\lastsubpage\relax
+ \global\let\nextsubpage=\lastsubpage
+ \else
+ \xdef\nextsubpage{\realfolio}%
+ \doglobal\increment\nextsubpage
+ \fi
+ \setglobalsystemreference\rt!page{\v!volgende\v!sub\v!pagina}\nextsubpage
+ \egroup
+ \fi}
+
+\def\checksubpages%
+ {\getfromtwopassdata{\s!subpage}{1}%
+ \setsubpagenumbers
+ \global\let\checksubpages=\relax}
+
+% Omdat \gotonextrealpage gebruik maakt van de hulpfile,
+% moet het initialiseren van \realpageno plaatsvinden in
+% een later stadium, namelijk zodra referenties worden
+% gebruikt (anders gaat het mis op nog niet gedefinieerde
+% lijstcommando's e.d.). De eerst aanroep vindt dan ook
+% plaats vlak nadat de hulpfile voor de eerste maal is
+% ingelezen.
+
+\countdef\realpageno = 0 \realpageno = 1
+\countdef\userpageno = 1 \userpageno = 1
+\countdef\subpageno = 2 \subpageno = 0 % !!
+\countdef\arrangeno = 3 \arrangeno = 0 % !!
+
+% we don't want conflicts when \pageno is used by other
+% packages, like CWEB, so we redefine \pageno
+
+\newcount\pageno \pageno = 1
+
+\def\setuserpageno#1%
+ {\global\userpageno=#1\relax
+ \global\pageno=\userpageno}
+
+\def\realfolio {\the\realpageno}
+\def\folio {\the\userpageno}
+\def\firstpage {1}
+\def\lastpage {1}
+\def\currentpage {\the\realpageno}
+
+\def\gotonextrealpage%
+ {\global\advance\realpageno by 1
+ \ifnum\realpageno>\lastpage
+ \xdef\lastpage{\realfolio}%
+ \fi
+ \setglobalsystemreference\rt!page{\v!eerste\v!pagina}\firstpage
+ \setglobalsystemreference\rt!page{\v!laatste\v!pagina}\lastpage
+ \bgroup
+ \ifnum\realpageno>1
+ \advance\realpageno by -1
+ \xdef\prevpage{\realfolio}%
+\setglobalsystemreference\rt!page{\v!achteruit}\prevpage
+ \else
+ \global\let\prevpage=\firstpage
+\setglobalsystemreference\rt!page{\v!achteruit}\lastpage
+ \fi
+ \setglobalsystemreference\rt!page{\v!vorige\v!pagina}\realfolio
+ \egroup
+ \bgroup
+ \ifnum\realpageno<\lastpage\relax
+ \advance\realpageno by 1
+ \xdef\nextpage{\realfolio}%
+ \setglobalsystemreference\rt!page{\v!pagina}\realfolio
+\setglobalsystemreference\rt!page{\v!vooruit}\realfolio
+ \else
+ \global\let\nextpage=\lastpage
+ \setglobalsystemreference\rt!page{\v!pagina}\firstpage
+\setglobalsystemreference\rt!page{\v!vooruit}\firstpage
+ \fi
+ \setglobalsystemreference\rt!page{\v!volgende\v!pagina}\realfolio
+ \egroup}
+
+\def\checkrealpage%
+ {\global\realpageno=0
+ \gotonextrealpage
+ \global\let\checkrealpage=\relax}
+
+\def\realnumberofpages#1% meteen laden, voor andere files (met refs)
+ {\gdef\lastpage{#1}%
+ \global\let\realnumberofpages=\gobbleoneargument}
+
+\def\savenofpages%
+ {\advance\realpageno by -1
+ \immediatewriteutilitycommand{\realnumberofpages{\realfolio}}}%
+
+\def\totaalaantalpaginas%
+ {\lastpage}
+
+\def\myshipout#1%
+ {\voorpagina
+ \dontshowcomposition
+ \dosetuppaper{\papierformaat}{\the\papierbreedte}{\the\papierhoogte}%
+ \ifarrangingpages
+ \actualarrange
+ {\thisisrealpage{\realfolio}#1}%
+ \else
+ \actualshipout
+ {\thisisrealpage{\realfolio}#1}%
+ \fi
+ \gotonextrealpage
+ \napagina}
+
+\newbox\postponedcontent
+
+\def\flushatshipout%
+ {\dowithnextbox
+ {\global\setbox\postponedcontent=\hbox
+ {\box\postponedcontent\box\nextbox}%
+ \global\ht\postponedcontent=\!!zeropoint
+ \global\dp\postponedcontent=\!!zeropoint
+ \global\wd\postponedcontent=\!!zeropoint}%
+ \hbox}
+
+\def\actualshipout#1%
+ {\shipout\vbox
+ {\forgetall
+ \offinterlineskip
+ \mindermeldingen
+ \vskip-1in
+ \hskip-1in
+ \hbox
+ {\setbox0=\hbox{#1}% just in case there are objects there
+ \setbox\scratchbox=\hbox{\the\everyshipout}%
+ \smashbox\scratchbox
+ \box\scratchbox
+ \box\postponedcontent % evt ver naar links !
+ \box0}}}
+
+\def\actualarrange#1%
+ {\setbox0=\hbox{\thisisrealpage{\realfolio}#1}%
+ \pusharrangedpage0
+ \deadcycles=0}
+
+\def\goleftonpage%
+ {\hskip-\linkermargeafstand
+ \hskip-\linkermargebreedte
+ \hskip-\paginascheiding
+ \hskip-\linkerrandafstand
+ \hskip-\linkerrandbreedte}
+
+\def\doswapmargins%
+ {\let\doswapmargins=\relax % to prevent local swapping
+ \swapmacros\@@lylinkermargeafstand\@@lyrechtermargeafstand
+ \swapmacros\@@lylinkerrandafstand\@@lyrechterrandafstand
+ \swapdimens\linkermargebreedte\rechtermargebreedte
+ \swapdimens\linkerrandbreedte\rechterrandbreedte}
+
+\def\doifmarginswapelse#1#2%
+ {\doifbothsides#1\orsideone#1\orsidetwo#2\od}
+
+\def\swapmargins%
+ {\doifmarginswapelse{}{\doswapmargins}}
+
+% Output routines
+%
+% \dopagecontents#1#2 : tekst, floats en footnotes
+% \dopagebody#1#2 : hoofd, \pagecontents, voet
+% \dooutput : outputroutine
+%
+% \ifinpagebody
+
+\def\doejectpage#1%
+ {\bgroup % de \ifdim is nodig omdat
+ \par % anders een eventuele
+ \ifdim\pagetotal>\pagegoal\else % laatste regel boven de
+ %\normalvfill % baseline te staan terwijl
+ \normalvfil % baseline te staan terwijl
+ \fi % de vorige bladzijden op
+ #1% % de baseline staan
+ \egroup}
+
+% ^^ NOG NETTER MAKEN, TEGELIJK MET MULTI COLUMNS EN ACHTERGRONDEN!
+
+\def\ejectpage%
+ {\doejectpage\eject}
+
+\def\superejectpage%
+ {\doejectpage\supereject}
+
+\def\ejectinsert%
+ {\flushfootnotes
+ \bgroup
+ \noftopfloats=\!!thousand
+ \doflushfloats
+ \egroup}
+
+% De volgende macro's worden gedefinieerd in de module
+% colo-ini. Om resetten bij twee maal laden te voorkomen
+% checken we wel even. Anders krijgen we een mark-build-up.
+
+\newif\ifinpagebody
+
+\doifundefined{pushcolor} {\def\pushcolor{}}
+\doifundefined{popcolor} {\def\popcolor{}}
+\doifundefined{startcolorpage} {\def\startcolorpage{}}
+\doifundefined{stopcolorpage} {\def\stopcolorpage{}}
+
+% bewaren tvb documentatie
+%
+% \hbox to \hsize
+% {\en
+% \switchnaarkorps[5pt]%
+% \emergencystretch2em
+% \dimen0=\baselineskip
+% \baselineskip=\dimen0 plus 1pt
+% \hsize=.2\hsize
+% \vsize=2\hsize
+% \ruledvbox to \vsize{\input tufte \par}\hss
+% \ruledvbox to \vsize{\input tufte \par\kern-\prevdepth}\hss
+% \ruledvbox to \vsize{\input tufte \par\kern0pt}\hss
+% \ruledvbox to \vsize{\input tufte \par\vfill}\hss
+% \ruledvbox to \vsize{\input tufte \par\kern-\prevdepth\vfill}}
+%
+% \hbox to \hsize
+% {\en
+% \switchnaarkorps[5pt]%
+% \emergencystretch2em
+% \dimen0=\baselineskip
+% \baselineskip=\dimen0 plus 1pt
+% \hsize=.18\hsize
+% \vsize=2.5\hsize
+% \setbox0=\vbox{\input tufte\relax}%
+% \ruledvbox to \vsize{\unvcopy0}\hss
+% \ruledvbox to \vsize{\unvcopy0\kern-\dp0}\hss
+% \ruledvbox to \vsize{\unvcopy0\kern0pt}\hss
+% \ruledvbox to \vsize{\unvcopy0\vfill}\hss
+% \ruledvbox to \vsize{\unvcopy0\kern-\dp0\vfill}}
+
+% \def\dopagecontents#1#2%
+% {\dotopinsertions
+% \bgroup
+% \forgetall
+% \boxmaxdepth=\maxdepth
+% \dimen0=\dp#2%
+% \bgroup
+% #1#2\relax
+% \pushcolor
+% \dobotinsertions
+% \egroup
+% \ifr@ggedbottom
+% \kern-\dimen0
+% \vfil
+% \fi
+% \ifb@selinebottom
+% \kern-\dimen0
+% \kern\maxdepth
+% \fi
+% \egroup
+% \placefootnotes}
+
+\def\dopagecontents#1#2% \box<n> \unvbox<n>
+ {\bgroup
+ \forgetall
+ \boxmaxdepth=\maxdepth
+ \setbox0=\vbox to \teksthoogte
+ {\edef\currentpagedepth{\the\dp#2}% still to be derived from #1
+ \dotopinsertions
+ #1#2\relax
+ \pushcolor
+ \ifgridsnapping
+ \vskip-\currentpagedepth
+ \vskip\openstrutdepth % \dp\strutbox
+ \prevdepth\openstrutdepth % \dp\strutbox
+ \dobotinsertions
+ \vfil
+ \else\ifr@ggedbottom
+ \vskip-\currentpagedepth
+ \vskip\openstrutdepth % \dp\strutbox
+ \prevdepth\openstrutdepth % \dp\strutbox
+ \dobotinsertions
+ \vfil
+ \else\ifb@selinebottom
+ \kern-\currentpagedepth
+ \kern\maxdepth
+ \dobotinsertions
+ \fi\fi\fi
+ \ifdim\ht\footins>\!!zeropoint % beter dan \ifvoid\footins\else
+ \kern\skip\footins
+ \kern\ht\footins
+ \fi}%
+ \ifgridsnapping
+ \getnoflines\teksthoogte
+ \advance\noflines by -1
+ \scratchdimen=\noflines\lineheight
+ \advance\scratchdimen by \topskip
+ \else
+ \scratchdimen=\ht0
+ \fi
+ \setbox2=\hbox
+ {\ifvoid\savedfootins \else
+ \setbox\footins=\box\savedfootins
+ \fi
+ \lower\scratchdimen\vbox{\placefootnotes}}%
+ \smashbox2
+ \ht0=\!!zeropoint
+ \vbox to \teksthoogte
+ {\box0\box2}%
+ \egroup}
+
+\def\dodummypageskip#1%
+ {\getvalue{\s!dummy\c!commando#1}}
+
+\setvalue{\s!dummy\c!commando\v!links}%
+ {\hskip\linkerrandbreedte}
+
+\setvalue{\s!dummy\c!commando\v!rechts}%
+ {\hskip\rechterrandbreedte}
+
+\setvalue{\s!dummy\c!commando\v!boven}%
+ {} % \vbox to \bovenhoogte{\vss}}
+
+\setvalue{\s!dummy\c!commando\v!onder}%
+ {} % \vbox to \onderhoogte{\vss}}
+
+\def\plaatslinkerrandblok {\dodummypageskip\v!links}
+\def\plaatsrechterrandblok {\dodummypageskip\v!rechts}
+
+\newtoks\afterpage \newtoks\aftereverypage
+\newtoks\beforepage \newtoks\beforeeverypage
+
+\newif\ifshowgrid
+
+\def\toongrid%
+ {\tracegridsnappingtrue
+ \showgridtrue}
+
+\def\doplaatstekstblok#1#2%
+ {\bgroup
+ \setbox0=\hbox to \zetbreedte
+ {\vbox to \teksthoogte
+ {\offinterlineskip
+ \boxmaxdepth\maxdepth
+ \dopagecontents#1#2}}%
+ \ht0=\teksthoogte
+ \wd0=\zetbreedte
+ \ifshowgrid
+ \setgridbox2\zetbreedte\teksthoogte
+ \hbox{\color[red]{\box2}\hskip-\zetbreedte\box0}%
+ \else
+ \box0
+ \fi
+ \egroup}
+
+\def\getmainbox#1#2%
+ {\setbox0=\vbox
+ {\offinterlineskip % na \paginaletter !
+ \calculatereducedvsizes
+ \calculatehsizes
+ \swapmargins
+ \vskip\hoofdhoogte
+ \vskip\hoofdafstand
+ \hbox
+ {\bgroup
+ \swapmargins
+ \goleftonpage
+ \plaatslinkerrandblok
+ \hskip\linkerrandafstand
+ \showpageseparation
+ \plaatslinkermargeblok
+ \hskip\linkermargeafstand
+ \egroup
+ \doplaatstekstblok#1#2%
+ \bgroup
+ \hskip\rechtermargeafstand
+ \plaatstestinfo
+ \plaatsrechtermargeblok
+ \showpageseparation
+ \hskip\rechterrandafstand
+ \plaatsrechterrandblok
+ \egroup}%
+ \vfill}
+ \smashbox0
+ \box0}
+
+%\def\setpagedisplacement%
+% {\global\voffset=\kopoffset
+% \global\hoffset=\rugoffset
+% \global\advance\voffset by -1in
+% \global\advance\hoffset by -1in}
+
+\def\centerpagebox#1%
+ {\printpapierbreedte=\papierschaal\printpapierbreedte
+ \printpapierhoogte =\papierschaal\printpapierhoogte
+ \setbox#1=\vbox to \printpapierhoogte
+ {\toppagebox
+ \hbox to \printpapierbreedte
+ {\ifdoublesidedprint
+ \doifbothsides
+ \leftpagebox\box#1\rightpagebox
+ \orsideone
+ \leftpagebox\box#1\rightpagebox
+ \orsidetwo
+ \rightpagebox\box#1\leftpagebox
+ \od
+ \else
+ \leftpagebox\box#1\rightpagebox
+ \fi}
+ \bottompagebox}}
+
+\def\offsetprintbox#1%
+ {\dimen0=\wd#1\dimen2=\ht#1\dimen4=\dp#1%
+ \setbox#1=\vbox
+ {\forgetall
+ \offinterlineskip
+ \vskip\kopoffset
+ \doifbothsides
+ \hskip\rugoffset
+ \orsideone
+ \hskip\rugoffset
+ \orsidetwo
+ \hskip-\rugoffset
+ \od
+ \box#1}%
+ \wd#1=\dimen0\ht#1=\dimen2\dp#1=\dimen4}
+
+\def\replicatebox#1#2#3%
+ {\setbox#1=\vbox
+ {\forgetall
+ \offinterlineskip
+ \dorecurse{#3}{\hbox{\dorecurse{#2}{\copy#1}}}}}
+
+\def\replicatepagebox#1%
+ {\ifnum\@@lynx>0 \ifnum\@@lyny>0
+ \replicatebox{#1}{\@@lynx}{\@@lyny}%
+ \fi\fi}
+
+\def\rotatepagebodybox#1#2#3%
+ {\ifnum#2#3>0
+ \setbox#1=\vbox
+ {\edef\somerotation%
+ {\ifdubbelzijdig\ifodd\realpageno#2\else#3\fi\else#2\fi}%
+ \dorotatebox\somerotation\hbox{\box#1}}%
+ \fi}
+
+\def\rotatepaperbox#1%
+ {\rotatepagebodybox{#1}\paperrotation\paperreverse}
+
+\def\rotateprintbox#1%
+ {\rotatepagebodybox{#1}\printrotation\printreverse}
+
+\def\mirrorpagebodybox#1#2%
+ {\ifcase#2\or
+ \setbox#1=\vbox
+ {\domirrorbox\vbox{\box#1}}%
+ \fi}
+
+\def\mirrorpaperbox#1%
+ {\mirrorpagebodybox{#1}\papermirror}
+
+\def\mirrorprintbox#1%
+ {\mirrorpagebodybox{#1}\printmirror}
+
+\def\scalepagebox#1%
+ {\ifdim\@@lyschaal pt=1pt \else
+ \setbox#1=\vbox
+ {\schaal[\c!sx=\@@lyschaal,\c!sy=\@@lyschaal]{\box#1}}%
+ \papierbreedte=\@@lyschaal\papierbreedte
+ \papierhoogte =\@@lyschaal\papierhoogte
+ \fi}
+
+\def\negateprintbox#1%
+ {\ifnegateprintbox
+ \negatecolorbox{#1}%
+ \fi}
+
+\def\buildpagebox#1%
+ {\setbox#1=\vbox to \papierhoogte
+ {\hsize\papierbreedte
+ \vskip\kopwit
+ \doifbothsides
+ \hskip\rugwit
+ \orsideone
+ \hskip\rugwit
+ \orsidetwo
+ \hskip\papierbreedte
+ \hskip-\rugwit
+ \hskip-\zetbreedte
+ \od
+ \box#1}%
+ \dp#1=\!!zeropoint}
+
+\def\pagecutmarksymbol%
+ {\the\realpageno}%
+
+\def\addpagecutmarks#1%
+ {\doif{\@@lymarkering}{\v!aan}
+ {\let\cutmarksymbol=\pagecutmarksymbol
+ \makecutbox{#1}}}
+
+\def\addpagecolormarks#1%
+ {\doif{\@@lymarkering}{\v!kleur}
+ {\let\cutmarksymbol=\pagecutmarksymbol
+ \makecutbox{#1}%
+ \ifnum\horizontalcutmarks>1 \chardef\colormarkoffset=4 \fi
+ \ifnum\verticalcutmarks >1 \chardef\colormarkoffset=4 \fi
+ \colormarkbox{#1}}}
+
+\newif\ifpagebodyornaments \pagebodyornamentstrue
+\newif\ifarrangingpages \arrangingpagesfalse
+
+\let\poparrangedpages=\relax
+\let\pusharrangedpage=\relax
+
+\def\reportarrangedpage#1%
+ {\showmessage
+ {\m!systems}{23}
+ {\the\realpageno.\the\pageno\ifnum\subpageno>0 .\the\subpageno\fi,#1}}
+
+\def\buildpagebody#1#2%
+ {\vbox
+ {\forgetall % igv problemen, check: \boxmaxdepth\maxdimen
+ \mindermeldingen
+ \setbox0=\vbox
+ {\doconvertfont{\@@lyletter}{}%
+ \offinterlineskip
+ \ifpagebodyornaments
+ \getbackgroundbox
+ \getlogobox
+ \gettextboxes
+ \fi
+ \getmainbox#1#2}%
+ \buildpagebox0
+ \ifpagebodyornaments
+ \addpagebackground0
+ \fi
+ \ifarrangingpages \else
+ \addpagecutmarks0
+ \replicatepagebox0
+ \scalepagebox0
+ \mirrorpaperbox0
+ \rotatepaperbox0
+ \addpagecolormarks0
+ \centerpagebox0
+ \mirrorprintbox0
+ \rotateprintbox0
+ \offsetprintbox0
+ \negateprintbox0
+ \fi
+ \box0}}
+
+\def\finishpagebox#1%
+ {\ifarrangingpages
+ \addpagecutmarks#1%
+ \addpagecolormarks#1%
+ \centerpagebox#1%
+ \mirrorprintbox#1%
+ \rotateprintbox#1%
+ \offsetprintbox#1%
+ \negateprintbox#1%
+ \fi}
+
+% TBV testdoeleinden:
+
+\def\dotoonprint[#1][#2][#3]%
+ {\omlijnd
+ [\c!offset=\v!overlay,
+ \c!strut=\v!nee]
+ {\forgetall
+ \mindermeldingen
+ \globaldefs=-1
+ \dimen0=\pagegoal
+ \definieerpapierformaat[X][\c!breedte=4em, \c!hoogte=6em]%
+ \definieerpapierformaat[Y][\c!breedte=12em,\c!hoogte=14em]%
+ \stelpapierformaatin[#1,X][#2,Y]%
+ \stellayoutin[#3]%
+ \setbox0=\vbox
+ {\omlijnd
+ [\c!offset=\v!overlay,\c!strut=\v!nee,
+ \c!breedte=\papierbreedte,\c!hoogte=\papierhoogte]
+ {\ss ABC\par DEF}}%
+ \dubbelzijdigfalse
+ \def\cutmarklength{.5em}%
+ \addpagecutmarks0%
+ \replicatepagebox0%
+ \scalepagebox0%
+ \mirrorpaperbox0%
+ \rotatepaperbox0%
+ \centerpagebox0%
+ \mirrorprintbox0%
+ \rotateprintbox0%
+ \offsetprintbox0%
+ \pagegoal=\dimen0
+ \box0}}
+
+\def\toonprint%
+ {\dotripleempty\dotoonprint}
+
+% \switchnaarkorps[8pt]
+%
+% \startcombinatie[4*4]
+% {\toonprint} {\strut}
+% {\toonprint[][][plaats=midden]} {\type{plaats=midden}}
+% {\toonprint[][][plaats=midden,markering=aan]} {\type{markering=aan}\break
+% \type{plaats=midden}}
+% {\toonprint[][][plaats=midden,markering=aan,nx=2]} {\type{markering=aan}\break
+% \type{plaats=midden}\break
+% \type{nx=2}}
+% {\toonprint[][][plaats=links]} {\type{plaats=links}}
+% {\toonprint[][][plaats=rechts]} {\type{plaats=rechts}}
+% {\toonprint[][][plaats={links,onder}]} {\type{plaats={links,onder}}}
+% {\toonprint[][][plaats={rechts,onder}]} {\type{plaats={rechts,onder}}}
+% {\toonprint[][][nx=2,ny=1]} {\type{nx=2,ny=1}}
+% {\toonprint[][][nx=1,ny=2]} {\type{nx=1,ny=2}}
+% {\toonprint[][][nx=2,ny=2]} {\type{nx=2,ny=2}}
+% {\toonprint[][][nx=2,ny=2,plaats=midden]} {\type{nx=2,ny=2}\break
+% \type{plaats=midden}}
+% {\toonprint[][][rugoffset=3pt]} {\type{rugoffset=.5cm}}
+% {\toonprint[][][kopoffset=3pt]} {\type{kopoffset=.5cm}}
+% {\toonprint[][][schaal=1.5]} {\type{schaal=1.5}}
+% {\toonprint[][][schaal=0.8]} {\type{schaal=0.8}}
+% \stopcombinatie
+%
+% \startcombinatie[3*4]
+% {\toonprint[liggend][][plaats=midden]} {\type{liggend}}
+% {\toonprint[][liggend][plaats=midden]} {\strut\break\type{liggend}}
+% {\toonprint[liggend][liggend][plaats=midden]} {\type{liggend}\break\type{liggend}}
+% {\toonprint[90][][plaats=midden]} {\type{90}}
+% {\toonprint[][90][plaats=midden]} {\strut\break\type{90}}
+% {\toonprint[90][90][plaats=midden]} {\type{90}\break\type{90}}
+% {\toonprint[180][][plaats=midden]} {\type{180}}
+% {\toonprint[][180][plaats=midden]} {\strut\break\type{180}}
+% {\toonprint[180][180][plaats=midden]} {\type{180}\break\type{180}}
+% {\toonprint[gespiegeld][][plaats=midden]} {\type{gespiegeld}}
+% {\toonprint[][gespiegeld][plaats=midden]} {\strut\break\type{gespiegeld}}
+% {\toonprint[gespiegeld][gespiegeld][plaats=midden]} {\type{gespiegeld}\break\type{gespiegeld}}
+% \stopcombinatie
+
+\chardef\normalpagebox=255
+
+\def\dopagebody#1#2%
+ {\getallmarks
+ \restoreglobalbodyfont
+ \startcolorpage
+ \gotonextsubpage
+ \dontshowboxes
+ \naastpagina
+ \checkreferences
+ \checkmargeblokken
+ \dotoks\beforeeverypage
+ \flushtoks\beforepage
+ \inpagebodytrue
+ \buildpagebody#1#2%
+ \flushtoks\afterpage
+ \dotoks\aftereverypage
+ \resetpagina
+ \updatelistreferences
+ \resetlayoutregels % mischien in shipout
+ \stopcolorpage}
+
+\def\beforefinaloutput%
+ {}
+
+\def\afterfinaloutput%
+ {\forgetall
+ \vskip\!!zeropoint\relax
+ \ifvoid\normalpagebox
+ \else
+ \unvbox\normalpagebox
+ \penalty\outputpenalty
+ \fi
+ \ifnum\outputpenalty>-\@MM\relax
+ \else
+ \dosupereject
+ \fi
+ \inpagebodytrue % needed for enabling \blanko !
+ \dosetbothinserts
+ \setvsize} % this is needed for interacting components, like floats and multicolumns
+
+\def\setpagecounters%
+ {\setuserpageno{\ruwenummer[\s!page]}%
+ \doifelse{\@@snstatus}{\v!stop}
+ {\global\subpageno=0}
+ {\global\subpageno=\ruwenummer[\s!subpage]}}
+
+\def\dofinaloutput#1#2%
+ {\beforefinaloutput
+ \myshipout{\hbox{\dopagebody#1#2\setpagecounters}}%
+ \afterfinaloutput
+ \popcolor} % ... and here ...
+
+\def\donofinaloutput#1#2%
+ {\beforefinaloutput
+ \setpagecounters
+ \message{[-\the\realpageno]}%
+ \setbox0=\hbox
+ {\the\everyshipout
+ \dopagebody#1#2}%
+ \deadcycles=0
+ \gotonextrealpage
+ \afterfinaloutput
+ \popcolor} % ... and here
+
+\let\checkpageversion=\relax
+
+\def\finaloutput#1#2%
+ {\checkpageversion
+ \ifverwerken
+ \ifgeselecteerd
+ \dofinaloutput#1#2%
+ \else
+ \donofinaloutput#1#2%
+ \fi
+ \else
+ \ifgeselecteerd
+ \donofinaloutput#1#2%
+ \else
+ \dofinaloutput#1#2%
+ \fi
+ \fi
+ \resetselectiepagina
+ \verhoogpaginanummer
+ \checkpagedimensions
+ \ifnum\outputpenalty>-\@MM\relax
+ \else
+ \dosupereject
+ \fi
+ \douitstellen}
+
+\def\dooutput%
+ {\finaloutput\unvbox\normalpagebox}
+
+\output={\dooutput}
+
+%I n=Beeldmerken
+%I c=\definieerbeeldmerk,\plaatsbeeldmerken
+%I
+%I In het hoofd of in de voet kan een logo worden gezet met
+%I het commando:
+%I
+%I \plaatsbeeldmerken[naam]
+%I
+%I Plaatsen kan dan ook pas nadat een beeldmerk is gedefinieerd:
+%I
+%I \definieerbeeldmerk[naam][lokatie][plaats][commando=,status=]
+%I
+%I waarbij status 'start' of 'stop' kan zijn. In geval van
+%I 'start' wordt op elke bladzijde het logo geplaatst.
+%I
+%I Mogelijke lokaties zijn 'boven', 'hoofd', 'voet' en 'onder' en
+%I als plaats kan worden opgegeven 'linkerrand', 'linkermarge',
+%I 'links', 'midden', 'rechts', 'rechtermarge' en 'rechterrand'.
+%I
+%I Logo's worden boven, onder of in de hoofd- of voetregel gezet,
+%I zo hoog of laag mogelijk. Verdere positionering zal dus in
+%I het commando moeten plaatsvinden!
+
+\newbox\leftlogos
+\newbox\rightlogos
+
+\newif\ifnewlogos
+
+% \logostatus
+%
+% 0 = niet plaatsen > 0
+% 1 = direkt plaatsen > 1
+% 2 = berekenen en plaatsen > 1
+% 3 = een pagina berekenen en plaatsen > 2
+
+\def\logostatus{0}
+
+\def\gedefinieerdebeeldmerken{}
+\def\teplaatsenbeeldmerken{}
+
+\def\dodefinieerbeeldmerk[#1][#2][#3][#4]%
+ {\addtocommalist{#1}\gedefinieerdebeeldmerken
+ \setvalue{\??lo#2#3}{#1}%
+ \getparameters[\??lo#2#3][#4]%
+ \gdef\logostatus{2}}
+
+\def\definieerbeeldmerk%
+ {\doquadrupleargument\dodefinieerbeeldmerk}
+
+\def\complexplaatsbeeldmerken[#1]%
+ {\xdef\teplaatsenbeeldmerken{#1}%
+ \gdef\logostatus{3}}
+
+\def\simpleplaatsbeeldmerken%
+ {\global\let\teplaatsenbeeldmerken=\gedefinieerdebeeldmerken
+ \gdef\logostatus{3}}
+
+\definecomplexorsimple\plaatsbeeldmerken
+
+\def\doplaatsbeeldmerken#1#2%
+ {\bgroup
+ \setbox0=\vbox
+ {\hbox
+ {\ifnum\logostatus=3
+ \def\docommando##1%
+ {\ExpandBothAfter\doifinset{\getvalue{\??lo#1##1}}{\teplaatsenbeeldmerken}
+ {#2{\hbox{\getvalue{\??lo#1##1\c!commando}}}}}%
+ \else
+ \def\docommando##1%
+ {\doifvalue{\??lo#1##1\c!status}{\v!start}
+ {#2{\hbox{\getvalue{\??lo#1##1\c!commando}}}}}%
+ \fi
+ \def\dodocommando##1##2##3##4##5##6%
+ {\hskip\linkerrandafstand
+ \hskip\pageseparation
+ \hbox to \linkermargebreedte{\docommando{##2}\hss}%
+ \hskip\linkermargeafstand
+ \hbox to \zetbreedte{\docommando{##3}\hss\docommando{##4}}%
+ \hskip\rechtermargeafstand
+ \hbox to \rechtermargebreedte{\hss\docommando{##5}}%
+ \hskip\pageseparation
+ \hskip\rechterrandafstand
+ \hbox to \rechterrandbreedte{\hss\docommando{##6}}}%
+ \normalbaselines
+ \hsmash
+ {\hbox to \zetbreedte{\hss\docommando\c!midden\hss}}%
+ \hsmash
+ {\doifbothsides
+ \hskip-\rugwit
+ \orsideone
+ \hskip-\rugwit
+ \orsidetwo
+ \hskip-\papierbreedte
+ \hskip+\rugwit
+ \hskip+\zetbreedte
+ \od
+ \hbox to \papierbreedte{\docommando\v!pagina\hss}}%
+ \swapmargins
+ \goleftonpage
+ \doifbothsidesoverruled
+ \dodocommando
+ {\v!linkerrand}{\v!linkermarge}{\v!links}
+ {\v!rechts}{\v!rechtermarge}{\v!rechterrand}%
+ \orsideone
+ \dodocommando
+ {\v!linkerrand}{\v!linkermarge}{\v!links}
+ {\v!rechts}{\v!rechtermarge}{\v!rechterrand}%
+ \orsidetwo
+ \dodocommando
+ {\v!rechterrand}{\v!rechtermarge}{\v!rechts}
+ {\v!links}{\v!linkermarge}{\v!linkerrand}%
+ \od}}%
+ \getboxheight\dimen0\of\box0\relax
+ \vskip-\dimen0
+ \box0
+ \egroup}
+
+\def\setlogobox#1#2%
+ {\global\setbox#1=\vbox to \papierhoogte
+ {\offinterlineskip
+ \mindermeldingen
+ \calculatereducedvsizes
+ #2\relax
+ \vskip-\kopwit
+ \doplaatsbeeldmerken\v!boven\vsmash
+ \vskip\kopwit
+ \doplaatsbeeldmerken\v!hoofd\vsmash
+ \vskip\hoofdhoogte
+ \vskip\hoofdafstand
+ \doplaatsbeeldmerken\v!tekst\vsmash % evt \vbox
+ \vskip\teksthoogte
+ \vskip\voetafstand
+ \vskip\voethoogte
+ \doplaatsbeeldmerken\v!voet\vbox
+ \vfilll
+ \doplaatsbeeldmerken\v!onder\vbox%
+ \vskip\kopwit}
+ \smashbox#1}
+
+\def\setlogoboxes%
+ {\showmessage{\m!layouts}{7}{}%
+ \setlogobox\leftlogos\relax
+ \ifdubbelzijdig
+ \setlogobox\rightlogos\doswapmargins
+ \fi}
+
+\def\getlogobox%
+ {\ifnum\logostatus>0
+ \ifnum\logostatus=3
+ \setlogoboxes
+ \gdef\logostatus{2}%
+ \else\ifnum\logostatus=2
+ \setlogoboxes
+ \gdef\logostatus{1}%
+ \else\ifnewlogos
+ \gdef\logostatus{2}%
+ \setlogoboxes
+ \gdef\logostatus{1}%
+ \global\newlogosfalse
+ \fi\fi\fi
+ \doifmarginswapelse
+ {\copy\leftlogos}
+ {\copy\rightlogos}%
+ \fi}
+
+%I n=Spatiering
+%I c=\stelspatieringin
+%I c=\omlaag,\opelkaar,\spatie,\vastespaties
+%I
+%I De ruimte na interpunctie worden ingesteld met:
+%I
+%I \stelspatieringin[instelling]
+%I
+%I waarbij de volgende instellingen mogelijk zijn:
+%I
+%I ruim flexibele ruimte na interpunctie
+%I opelkaar een spatie na interpunctie
+%I
+%I Bij een smalle layout levert de instelling 'ruim' minder
+%I in de marge uitstekende (niet af te breken) woorden op.
+%I
+%P
+%I Andere commando's zijn:
+%I
+%I \omlaag[afstand] een vaste afstand omlaag
+%I \opelkaar ruimte tussen regels weghalen
+%I
+%I \spatie een (harde) spatie
+%I \geenspatie geen vorige/volgende spatie
+%I
+%I \hfil \hfill \hfilll opvullen met horizontaal wit
+%I \vfil \vfill \vfilll opvullen met vertikaal wit
+%I
+%I \strut karakter-box zonder breedte
+%I
+%I \vastespaties geeft ~ de breedte van een cijfer
+
+% \frenchspacing leidt soms tot afbreken tussen -, vandaar
+% de variant \newfrenchspacing.
+
+\def\dofrenchspacing#1%
+ {\sfcode`\.#1 \sfcode`\,#1\relax
+ \sfcode`\?#1 \sfcode`\!#1\relax
+ \sfcode`\:#1 \sfcode`\;#1\relax}
+
+\def\frenchspacing%
+ {\dofrenchspacing{1000}} % \@m
+
+\def\newfrenchspacing%
+ {\dofrenchspacing{1050}} % \@ml
+
+\def\dostelspatieringin[#1]%
+ {\processaction
+ [#1]
+ [\v!opelkaar=>\newfrenchspacing,
+ \v!ruim=>\nonfrenchspacing]}
+
+\def\stelspatieringin%
+ {\dosingleargument\dostelspatieringin}
+
+\def\space%
+ { }
+
+\def\spatie% kan tzt vervallen, eerst overal in zetten
+ { }
+
+\def\hardespatie%
+ {~}
+
+\bgroup
+\catcode`\~=\@@active % eigenlijk is ~ al actief
+\gdef\fixedspaces% % in Plain \TeX, maar we weten
+ {\catcode`\~=\@@active % nooit wat er inmiddels is
+ \def~{\hskip.5em}} % gebeurd, vandaar.
+\egroup
+
+\def\nospace%
+ {\unskip\ignorespaces}
+
+\def\geenspatie% % kan tzt vervallen, eerst overal in zetten
+ {\unskip\ignorespaces}
+
+\def\geenspaties{\geenspaties} % kan weg
+
+\def\opelkaar%
+ {\nointerlineskip}
+
+\def\omlaag[#1]%
+ {\nointerlineskip%
+ \vskip#1 }
+
+%I n=Witruimte
+%I c=\stelwitruimtein,\witruimte,\geenwitruimte
+%I c=\startopelkaar,\startvanelkaar
+%I c=\startregelcorrectie,\corrigeerwitruimte
+%I
+%I De afstand tussen paragrafen is in te stellen met:
+%I
+%I \stelwitruimtein[maat]
+%I
+%I In te vullen op de plaats van 'maat' (12pt, 1cm) of een
+%I van de aanduidingen klein, middel of groot. Als niets
+%I wordt meegegeven, dus alleen \stelwitruimtein, dan
+%I wordt de ingestelde witruimte aangepast aan het formaat
+%I letter.
+%I
+%I Voor elke lege regel in de ASCII-file voegt TEX de
+%I ingestelde witruimte tussen.
+%I
+%I Het commando \witruimte dwingt witruimte af en het
+%I commando \geenwitruimte maakt witruimte ongedaan.
+%I
+%I Behalve met de hier beschreven witruimte-commando's is de
+%I witruimte tussen paragrafen te be‹nvloeden met behulp van
+%I de elders beschreven blanko-commando's.
+%P
+%I Een stuk tekst kan zonder witruimte worden gezet door het
+%I tussen de volgende commando's op te nemen:
+%I
+%I \startopelkaar
+%I \stopopelkaar
+%I
+%I Waarbij een optioneel argument [blanko] mogelijk is. De
+%I tegenhanger hiervan is:
+%I
+%I \startvanelkaar
+%I \stopvanelkaar
+%P
+%I TeX handelt de interlinie van een (omlijnde) box of een
+%I rule anders af dan van een regel tekst. In dergelijke
+%I gevallen kan de volgende constructie worden gebruikt:
+%I
+%I \startregelcorrectie
+%I \omlijnd{tekst}
+%I \stopregelcorrectie
+
+\newskip\tussenwit
+\tussenwit=\!!zeropoint
+
+\def\blankokleinmaat%
+ {\smallskipamount}
+
+\def\blankomiddelmaat%
+ {\medskipamount}
+
+\def\blankogrootmaat%
+ {\bigskipamount}
+
+\def\currentwitruimte%
+ {\!!zeropoint}
+
+\def\stelwitruimteopnieuwin%
+ {\expanded{\stelwitruimtein[\currentwitruimte]}}
+
+% \def\dodostelwitruimtein[#1]%
+% {\processallactionsinset
+% [#1]
+% [\v!herstel=>\parskip=\tussenwit,
+% \v!regel=>\edef\currentwitruimte{#1}%
+% \tussenwit=\baselineskip
+% \parskip=\tussenwit,
+% \v!vast=>\tussenwit=1\tussenwit
+% \parskip=1\parskip,
+% \s!default=>\doifnot{\currentwitruimte}{\v!geen}
+% {\stelwitruimteopnieuwin},
+% \s!unknown=>\edef\currentwitruimte{#1}%
+% \assigndimension{#1}
+% {\tussenwit}{\blankokleinmaat}
+% {\blankomiddelmaat}{\blankogrootmaat}%
+% \parskip=\tussenwit]}
+
+\newif\ifwitruimteflexibel
+
+\def\dodostelwitruimtein[#1]%
+ {\witruimteflexibeltrue
+ \processallactionsinset
+ [#1]
+ [\v!herstel=>,
+ \v!vast=>\witruimteflexibelfalse,
+ \v!flexibel=>\witruimteflexibeltrue,
+ \v!regel=>\tussenwit=\baselineskip,
+ \s!default=>\doifnot{\currentwitruimte}{\v!geen}
+ {\stelwitruimteopnieuwin},
+ \s!unknown=>\@EA\assigndimension\@EA{\commalistelement} % \@EA is nodig
+ {\tussenwit}{\blankokleinmaat} % om loops af
+ {\blankomiddelmaat}{\blankogrootmaat}]% % te vangen
+ \edef\currentwitruimte%
+ {\ifdim\tussenwit=\!!zeropoint
+ \v!geen
+ \else
+ \ifgridsnapping\the\baselineskip\else\the\tussenwit\fi
+ \fi}%
+ \ifgridsnapping
+ \witruimteflexibelfalse
+ \tussenwit=1\tussenwit
+ \ifdim\tussenwit>\!!zeropoint
+ \tussenwit=\baselineskip
+ \fi
+ \else
+ \ifwitruimteflexibel \else \tussenwit=1\tussenwit \fi
+ \fi
+ \parskip=\tussenwit}
+
+\def\dostelwitruimtein[#1]%
+ {\expanded{\dodostelwitruimtein[#1]}}
+
+\def\stelwitruimtein%
+ {\dosingleempty\dostelwitruimtein}
+
+\def\geenwitruimte%
+ {\ifdim\parskip>\!!zeropoint\relax
+ \ifdim\lastskip=-\parskip
+ \else
+ \vskip-\parskip
+ \fi
+ \fi}
+
+% deze variant is nodig binnen \startopelkaar
+% steeds testen:
+%
+% \hoofdstuk{..}
+% \plaatslijst[..]
+% \hoofdstuk{..}
+% \input tufte
+%
+% met/zonder witruimte
+
+\def\witruimte%
+ {\par
+ \ifdim\parskip>\!!zeropoint\relax
+ %\ifdim\lastskip>\parskip \else
+ % \removelastskip interferes with blanko blokkeer en klein
+ \vskip\parskip
+ %\fi
+ \fi}
+
+
+\def\nonoblanko[#1]%
+ {\par}
+
+\def\noblanko%
+ {\dosingleempty\nonoblanko}
+
+% De onderstaande macro handelt ook de situatie dat er geen
+% tekst tussen \start ... \stop is geplaatst. Daartoe wordt de
+% laatste skip over de lege tekst heen gehaald. Dit komt goed
+% van pas bij het plaatsen van (mogelijk lege) lijsten.
+
+\newif\ifopelkaar
+
+\def\noparskipsignal {0.00001pt}
+\def\lastdoneparskip {0pt}
+
+\def\startopelkaar%
+ {\dosingleempty\dostartopelkaar}
+
+\def\dostartopelkaar[#1]% nesting afvangen
+ {\par
+ \ifvmode
+ \edef\lastdoneparskip{\the\lastskip}%
+\edef\lastdoneprevdepth{\the\prevdepth}% zeer recent toegevoegd
+ \ifdim\prevdepth=-1000pt % toegevoegd omdat binnen
+ \else % een vbox een extra skip
+ \witruimte % ongewenst is; dit kan
+ \vskip\noparskipsignal % waarschijnlijk ook in
+ \fi % blanko blokkeer
+ \bgroup
+ \doifelse{#1}{\v!blanko}
+ {\opelkaarfalse}
+ {\opelkaartrue}%
+ \blanko[\v!blokkeer]%
+ \stelwitruimtein[\v!geen]
+ \fi}
+
+\def\stopopelkaar%
+ {\par
+\ifvmode
+ \egroup
+ \ifdim\lastskip=\noparskipsignal\relax
+ \removelastskip
+ \geenwitruimte
+ \vskip-\lastdoneparskip
+ \vskip+\lastdoneparskip
+\prevdepth-\lastdoneprevdepth % zeer recent toegevoegd
+ \fi
+\fi}
+
+\def\startvanelkaar%
+ {\blanko
+ \leavevmode
+ \bgroup}
+
+\def\stopvanelkaar%
+ {\egroup
+ \blanko}
+
+% De onderstaande macro's moeten nog eens nader worden uitgewerkt.
+% Ze spelen een rol bij de spatiering rond omkaderde teksten
+% en/of boxen zonder diepte.
+
+\def\toonregelcorrectie {\showbaselinecorrection}
+\def\regelcorrectie {\baselinecorrection}
+%\def\startregelcorrectie {\startbaselinecorrection}
+%\def\stopregelcorrectie {\stopbaselinecorrection}
+
+\definecomplexorsimpleempty\startregelcorrectie
+
+% \prevdepth crosses pageboundaries!
+
+\let\dorondomregelcorrectie=\relax
+
+\def\complexstartregelcorrectie[#1]%
+ {\bgroup
+ \processaction
+ [#1]
+ [ \v!blanko=>\let\dorondomregelcorrectie=\blanko,
+ \s!default=>\let\dorondomregelcorrectie=\relax,
+ \s!unknown=>{\def\dorondomregelcorrectie{\blanko[#1]}}]%
+ \dorondomregelcorrectie
+ \startbaselinecorrection
+ \offbaselinecorrection}
+
+\def\stopregelcorrectie%
+ {\stopbaselinecorrection
+ \dorondomregelcorrectie
+ \egroup}
+
+\def\corrigeerwitruimte%
+ {\dowithnextbox
+ {\startbaselinecorrection
+ \box\nextbox
+ \stopbaselinecorrection}%
+ \vbox}
+
+%I n=Regelafstand
+%I c=\stelinterliniein
+%I
+%I De regelafstand is in te stellen met het commando:
+%I
+%I \stelinterliniein[factor]
+%I
+%I Invulmogelijkheden voor 'factor' zijn: klein (1.00),
+%I middel (1.25), groot (1.50) of een getal. OOk kan
+%I aan of uit worden opgegeven.
+%I
+%I Als het commando zonder [factor] wordt gegeven, dan
+%I worden de interlinie aangepast aan het formaat van het
+%I actuele letterformaat. Een aan het formaat aangepaste
+%I interlinie kan ook worden ingesteld met:
+%I
+%I \stelinterliniein[reset,factor]
+%I
+%I In z'n eenvoudigste vorm \stelinterliniein wordt de
+%I interlinie aangepast aan het formaat letter.
+
+\def\complexstelinterliniein[#1]% \commalistelement ipv #1
+ {\doifassignmentelse{#1}
+ {\getparameters[\??it][#1]%
+ \scratchdimen=0\@@ithoogte pt
+ \advance\scratchdimen by 0\@@itdiepte pt
+ \ifdim\scratchdimen>1pt
+ \showmessage{\m!layouts}{10}{\@@ithoogte,\@@itdiepte}%
+ \let\@@ithoogte=\strutheightfactor
+ \let\@@itdiepte=\strutdepthfactor
+ \else
+ \let\strutheightfactor=\@@ithoogte
+ \let\strutdepthfactor =\@@itdiepte
+ \fi
+ \let\normallineheight =\@@itregel
+ \let\topskipfactor =\@@itboven
+ \let\maxdepthfactor =\@@itonder
+ \setfontparameters\setstrut}
+ {\processallactionsinset % \regelwit = dummy !
+ [#1]
+ [ \v!aan=>\oninterlineskip,
+ \v!uit=>\offinterlineskip,
+ \v!reset=>\setfontparameters,
+ \s!unknown=>\assignvalue{#1}{\regelwit}{1.00}{1.25}{1.50}%
+ \spacing{\regelwit}]}}
+
+\def\simplestelinterliniein%
+ {\setfontparameters}
+
+\definecomplexorsimple\stelinterliniein
+
+%I n=Blanko
+%I c=\blanko,\geenblanko,\stelblankoin
+%I c=\startregelcorrectie
+%I
+%I Behalve met de hier beschreven blanko-commando's is de
+%I witruimte tussen paragrafen te be‹nvloeden met behulp van
+%I de elders beschreven witruimte-commando's.
+%I
+%I Het commando
+%I
+%I \blanko[sprong]
+%I
+%I voegt witruimte tussen paragrafen toe.
+%I
+%I Mogelijke instellingen voor 'sprong' zijn: terug, klein,
+%I middel, groot. Per blanko is elke combinatie van
+%I instellingen toegestaan. Ook een veelvoud van een instelling
+%I is mogelijk. Enkele voorbeelden:
+%I
+%I \blanko[terug,3*groot]
+%I \blanko[klein,middel]
+%P
+%I Naast de genoemde instellingen zijn enkele bijzondere
+%I instellingen mogelijk:
+%I
+%I wit tussenvoegen van \witruimte
+%I geenwit terugspringen van \witruimte
+%I blokkeer overslaan van de volgende \blanko
+%I reset opheffen van \blanko[blokkeer]
+%I forceer afdwingen van een blanko (bovenaan)
+%I
+%I Ook deze instellingen zijn in combinatie met andere te
+%I gebruiken. Een voorbeeld: \blanko[forceer,wit,2*middel].
+%I
+%I Het commando \blanko (zonder instelling) is gelijk aan
+%I \blanko[groot].
+%I
+%I Het commando \geenblanko maakt het commando \blanko
+%I ongedaan.
+%P
+%I Met het commando's
+%I
+%I \stelblankoin[maat]
+%I
+%I is het mogelijk de spronggrootte in te stellen. De maat
+%I kan worden opgegeven in getallen en eenheden (12pt, 1cm).
+%I De standaard instellingen krijgt met met 'normaal',
+%I regelafstanden met 'regel'.
+%I
+%I Het commando \stelblankoin (zonder argument) past de sprong
+%I aan het formaat letter aan.
+%P
+%I Rond omlijnde tekst, of algemener: rond lijnen, wordt
+%I geen witruimte gegenereerd. Wil men dit wel, dan dient men
+%I de betreffende tekst te omringen met:
+%I
+%I \startregelcorrectie
+%I \stopregelcorrectie
+
+% In earlier versions \type{\bigskipamount} was
+% \type{\ht\strutbox} and the stretch was plus or minus
+% \type{.4\dp\strutbox}. Don't ask me why. The most recent
+% implementation is based on a user supplied distance, which
+% is by default \type{.75\normalskipamount} where
+% \type{\normalskipamount} equals the current baseline
+% distance.
+
+\newif\ifblankoreset \blankoresetfalse
+\newif\ifblankoblokkeer \blankoblokkeerfalse
+\newif\ifblankogeenwit \blankogeenwitfalse
+\newif\ifdoeblanko \doeblankofalse
+\newif\ifblankoflexibel \blankoflexibeltrue
+\newif\ifblankobuiten
+
+\newskip\blankoskip \blankoskip=\bigskipamount
+\newskip\blankoskipamount
+
+\def\skipfactor {.75}
+\def\skipgluefactor {.25}
+
+%\def\normalskipamount%
+% {\openlineheight
+% \ifblankoflexibel
+% \!!plus\skipgluefactor\openlineheight
+% \!!minus\skipgluefactor\openlineheight
+% \fi
+% \relax}
+
+\def\normalskipamount%
+ {\openlineheight
+ \ifgridsnapping \else \ifblankoflexibel
+ \!!plus\skipgluefactor\openlineheight
+ \!!minus\skipgluefactor\openlineheight
+ \fi \fi
+ \relax}
+
+\def\regelafstand{\normalskipamount}
+
+\def\deblankoskip{\skipfactor\regelafstand}
+
+\def\laatsteblankoskip%
+ {\blankoskip}
+
+\def\geenblanko%
+ {\removelastskip}
+
+\def\dosingleblanko#1%
+ {\doifelse{#1}{\v!regel}
+ {\blankoskipamount=\openlineheight}
+ {\ifgridsnapping
+ \assigndimension{#1}{\blankoskipamount}%
+ {.25\openlineheight}{.5\openlineheight}{\openlineheight}%
+ \else
+ \assigndimension{#1}{\blankoskipamount}%
+ {\smallskipamount}{\medskipamount}{\bigskipamount}%
+ \fi}%
+ \global\advance\blankoskip by \blankoskipamount}
+
+\def\doblanko#1%
+ {\processallactionsinset
+ [#1]
+ [ \v!groot=>\dosingleblanko\v!groot, % happens often
+ \v!buiten=>\ifvmode\ifinner\blankobuitentrue\fi\fi,
+ \v!reset=>\global\blankoresettrue,
+ \v!terug=>\geenblanko,
+ \v!wit=>\global\advance\blankoskip by \parskip,
+ \v!formule=>\global\advance\blankoskip by \medskipamount,
+ \v!geenwit=>\global\blankogeenwittrue,
+ -\v!wit=>\global\advance\blankoskip by -\parskip,
+ \v!blokkeer=>\global\blankoblokkeertrue,
+ \v!forceer=>\endgraf\ifdim\prevdepth>0pt\else\line{}\kern-\lineheight\fi,
+ \v!regel=>\global\advance\blankoskip by \lineheight,
+ \s!unknown=>{\herhaalmetcommando[#1]\dosingleblanko}]}
+
+\def\oldprevdepth{\prevdepth}%
+\def\newprevdepth{-1001pt}
+
+\def\mindimen{0.00002pt}
+
+\def\docomplexdoblanko[#1]% pas op \relax's zijn nodig ivm volgende \if
+ {\global\blankoresetfalse
+ \global\blankoblokkeerfalse
+ \global\blankogeenwitfalse
+ \global\blankoskip=\!!zeropoint\relax
+ \blankobuitenfalse
+ \processcommalist[#1]\doblanko
+ \ifblankobuiten
+ \else
+ \par
+ \ifvmode
+ \ifblankoblokkeer
+ \global\doeblankofalse
+ \edef\oldprevdepth{\the\prevdepth}%
+ \prevdepth=\newprevdepth
+ \else
+ \global\doeblankotrue
+ \fi
+ \ifblankoreset
+ \global\doeblankotrue
+ \ifdim\prevdepth=\newprevdepth
+ \prevdepth=\oldprevdepth
+ \fi
+ \fi
+ \ifdoeblanko
+ \ifdim\lastskip<\blankoskip\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\blankoskip by \mindimen\relax % = skip
+ % test this on 2* + 3* and parskip groot
+ \ifblankogeenwit
+ \global\advance\blankoskip by -\parskip
+ \else
+ \ifdim\lastskip=\parskip
+ \else % force this due to previous comment
+ \ifdim\parskip>\!!zeropoint\relax
+ \ifdim\blankoskip<\parskip\relax
+ \global\blankoskip=\!!zeropoint
+ \else
+ \global\advance\blankoskip by -\parskip
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifdim\prevdepth=\newprevdepth
+ \else
+ \removelastskip
+ \vskip\blankoskip
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\complexdoblanko[#1]%
+ {\flushfootnotes
+ \ifopelkaar
+ \ifinpagebody
+ \expanded{\docomplexdoblanko[#1]}% \expanded=nieuw
+ \else
+ \par
+ \fi
+ \else
+ \expanded{\docomplexdoblanko[#1]}% \expanded = nieuw
+ \fi}
+
+\def\currentblanko%
+ {\v!groot}
+
+\def\simpledoblanko%
+ {\doifelse{\currentwitruimte}{\v!geen}
+ {\blanko[\currentblanko]}
+ {\blanko[\currentwitruimte]}}
+
+\def\blanko%
+ {\complexorsimple{doblanko}}
+
+\def\dostelblankoin#1%
+ {\bgroup
+ \skip0=#1\relax
+ \xdef\globalblanko{\the\skip0}%
+ \egroup
+ \bigskipamount=\globalblanko
+ \smallskipamount=\globalblanko
+ \medskipamount=\globalblanko
+ \divide\medskipamount by 2\relax
+ \divide\smallskipamount by 4\relax}%
+
+\def\complexstelblankoin[#1]%
+ {\ExpandFirstAfter\processallactionsinset
+ [#1]
+ [ \v!flexibel=>\blankoflexibeltrue,
+ \v!vast=>\blankoflexibelfalse]%
+ \ExpandFirstAfter\processallactionsinset
+ [#1]
+ [ \v!flexibel=>\dostelblankoin{\deblankoskip},
+ \v!vast=>\dostelblankoin{\deblankoskip},
+ \v!regel=>\edef\deblankoskip{\regelafstand}%
+ \dostelblankoin{\deblankoskip}%
+ \let\deblanko=\v!groot,
+ \v!groot=>\ifgridsnapping
+ \edef\deblankoskip{\regelafstand}%
+ \dostelblankoin{\deblankoskip}%
+ \fi
+ \def\currentblanko{\v!groot}%
+ \let\deblanko=\v!groot,
+ \v!middel=>\def\currentblanko{\v!middel}%
+ \let\deblanko=\v!middel,
+ \v!klein=>\def\currentblanko{\v!klein}%
+ \let\deblanko=\v!klein,
+ \v!normaal=>\dostelblankoin{\deblankoskip}%
+ \let\deblanko=\v!groot,
+ \v!standaard=>\edef\deblankoskip{\skipfactor\regelafstand}%
+ \dostelblankoin{\deblankoskip}%
+ \let\deblanko=\v!groot,
+ \s!default=>\dostelblankoin{\deblankoskip}%
+ \let\deblanko=\v!groot,
+ \s!unknown=>\let\deblankoskip=\commalistelement
+ \dostelblankoin{\deblankoskip}%
+ \let\deblanko=\v!groot]%
+ \stelwitruimtein}
+
+\def\stelblankoin%
+ {\complexorsimpleempty{stelblankoin}}
+
+%I n=Inspringen
+%I c=\inspringen,\nietinspringen,\welinspringen
+%I c=\stelinspringenin
+%I
+%I Het inspringen van de eerste regel van een paragraaf
+%I wordt ingesteld met het commando:
+%I
+%I \inspringen[parameter]
+%I
+%I waarbij als parameter kan worden meegegeven:
+%I
+%I niet de volgende paragraaf niet inspringen
+%I nooit de volgende paragrafen niet inspringen
+%I altijd de volgende paragrafen inspringen
+%I
+%I De mate van inspringen wordt ingesteld met:
+%I
+%I \stelinspringenin[maat]
+%I
+%I waarbij maat staat voor een TeX-maat of het woord klein,
+%I middel, groot of geen.
+
+\def\currentvoorwit{}
+
+\newdimen\voorwit
+
+\def\dostelinspringenin[#1]%
+ {\doifsomething{#1}{\def\currentvoorwit{#1}}%
+ \assigndimension{\currentvoorwit}{\voorwit}{1em}{1.5em}{2em}%
+ \parindent=\voorwit\relax}
+
+\def\stelinspringenin%
+ {\dosingleempty\dostelinspringenin}
+
+\def\doinspringen[#1]%
+ {\processaction
+ [#1]
+ [ \v!nee=>\parindent=\voorwit\relax\noindent,
+ \v!niet=>\parindent=\voorwit\relax\noindent,
+ \v!ja=>\parindent=\voorwit\relax, % geen \indent !
+ \v!altijd=>\parindent=\voorwit\relax, % geen \indent !
+ \v!nooit=>\parindent=\!!zeropoint\relax]}
+
+\def\inspringen%
+ {\dosingleargument\doinspringen}
+
+\def\nietinspringen{\inspringen[\v!nee]}
+\def\welinspringen{\inspringen[\v!ja]}
+
+%I n=Verhogen,Verlagen
+%I c=\laag,\hoog,\laho
+%I
+%I Met de volgende commando's kunnen letters en woorden
+%I worden verhoogd en verlaagd.
+%I
+%I \laag{tekst}
+%I \hoog{tekst}
+%I \laho{lage tekst}{hoge tekst}
+
+\def\holatextfont{\tx}
+\def\holamathfont{\the\scriptfont\fam}
+
+\def\dodohooglaag#1%
+ {\doifelsenothing{\fontsize}
+ %{\ifnum\fam<0 \holatextfont\else\holamathfont\fi#1}
+ {\ifmmode
+ \ifnum\fam<0
+ \holatextfont
+ \else
+ \holamathfont
+ \fi
+ \else
+ \holatextfont
+ \fi#1}
+ {\holatextfont#1}}
+
+\def\dohooglaag#1#2#3#4#5%
+ {\bgroup
+ \ifdim\fontdimen5\textfont2=1ex
+ \dimen0=\fontdimen#1\textfont2
+ \else
+ \dimen0=#2ex
+ \fi
+ \advance\dimen0 by #3\relax
+ \kern.1ex
+ \setbox0=\hbox{#4\dimen0\hbox{\dodohooglaag{#5}}}%
+ \ht0=\ht\strutbox
+ \dp0=\dp\strutbox
+ \box0
+ \egroup}
+
+\unexpanded\def\hoog%
+ {\dohooglaag{14}{.86}\!!zeropoint\raise}
+
+\unexpanded\def\laag%
+ {\dohooglaag{16}{.48}\!!zeropoint\lower}
+
+\unexpanded\def\laho#1#2%
+ {\hbox%
+ {\setbox4=\hbox{\dohooglaag{16}{.48}{.1ex}{\lower}{#1}}%
+ \setbox6=\hbox{\dohooglaag{14}{.86}{.1ex}{\raise}{#2}}%
+ \ifdim\wd4<\wd6\relax
+ \wd4=\!!zeropoint\box4\box6\relax
+ \else
+ \wd6=\!!zeropoint\box6\box4\relax
+ \fi}}
+
+%I n=Kapitalen
+%I c=\kap,\Kap,\KAP,\Kaps,\Woord,\Woorden,\opgerekt
+%I
+%I Kapitalen kunnen in een kleiner letterformaat worden
+%I weergegeven met de commando's:
+%I
+%I \kap{tekst}
+%I \Kap{tekst}
+%I \KAP{tekst}
+%I
+%I Bij het eerste commando wordt de hele tekst in kapitalen
+%I gezet, bij het tweede alleen de eerste letter en bij het
+%I laatste commando de letters die worden voorafgegaan door
+%I \\, bijvoorbeeld \KAP{\\Commissie \\Ziezo}.
+%I
+%I Als de tekst van het laatste commando uit woorden bestaat,
+%I kan ook het volgende commando worden gebruikt:
+%I
+%I \Kaps{tekst tekst tekst}
+%I
+%I In dat geval zijn geen \\ nodig.
+%P
+%I Binnen \kap kan \nokap worden gebruikt om een kleine
+%I letter af te dwingen: \kap{AM\nokap{v}B}.
+%I
+%I Een eerste letter(s) van een of meer woorden kunnen worden
+%I omgezet in een hoofdletter met het commando
+%I
+%I \Woord{woord}
+%I \Woorden{woord woord woord ...}
+%I
+%I Een heel woord kan in hoofdletters worden omgezet met:
+%I
+%I \WOORD{tekst}
+%P
+%I Woorden kunnen worden uitgerekt over de actuele breedte
+%I met:
+%I
+%I \opgerekt{tekst}
+%I
+%I bijvoorbeeld:
+%I
+%I \hbox to 20em{\opgerekt{abcdef\\ghijk}}
+%I
+%I met \\ of {} wordt een spatie afgedwongen.
+
+%T n=kap
+%T m=kap
+%T a=k
+%T
+%T \kap{?}
+
+%I n=Afbreken
+%I c=\stelkoppeltekenin
+%I
+%I Met streepjes (-, --, ---) verbonden worden alleen afgebroken
+%I op de plaats van het streepje. Wil men kunnen afbreken op
+%I andere plaatsen, dan moet men de volgende constructie
+%I gebruiken:
+%I
+%I ditiseen|---|heellangwoord|--|hoeweleigenlijkis|-|heteenzin
+%I
+%I Het is ook mogelijk geen teken mee te geven:
+%I
+%I ditiseen||heellangwoord
+%I
+%I In dat geval wordt het ingestelde teken tussengevoegd. Het
+%I teken kan worden ingesteld met:
+%I
+%I \stelkoppeltekenin[teken=]
+%I
+%I Betekenisvolle waarden zijn: - en --, eventueel kan ~
+%I worden meegegeven. In dat geval wordt een \thinspace
+%I geplaatst.
+%P
+%I Een |~| levert midden in de zin een spatie en aan het
+%I eind van de zin een streepje, || is standaard equivalent
+%I met |--|.
+%I
+%I Het koppelteken zelf kan worden opgeroepen met |=|,
+%I bijvoorbeeld in alfa|=| en beta||deeltjes. Dit levert
+%I dus alfa- en beta-deeltjes of alfa-- en beta--deeltjes.
+%I Andere instellingen worden afgevangen.
+%I
+%I Ook ( en ) worden afgevangen. Hierbij wordt bij het
+%I afbreken van voor(na) op de volgende regel (-na)
+%I geplaatst. En wat te denken van |<| en |>|.
+
+% we use module supp-lan.tex
+
+\installdiscretionaries || \@@kpteken
+
+\newsignal\subsentencesignal
+\newcounter\subsentencelevel
+\def\subsentenceskip{.25em\relax}
+
+\def\stelkoppeltekenin%
+ {\dodoubleargument\getparameters[\??kp]}
+
+\def\beginofsubsentence%
+ {\ifdim\lastkern=\subsentencesignal
+ \unskip
+ \kern\subsentenceskip
+ \fi
+ \doglobal\increment\subsentencelevel
+ \ifnum\subsentencelevel=1
+ \leaveoutervmode
+ \fi
+ \ifodd\subsentencelevel
+ \getvalue{\??la\currentlanguage\c!leftsentence}%
+ \else
+ \getvalue{\??la\currentlanguage\c!leftsubsentence}%
+ \fi
+ \ignorespaces}
+
+\def\beginofsubsentencespacing%
+ {\kern\subsentencesignal\ignorespaces}
+
+\def\endofsubsentence%
+ {\ifodd\subsentencelevel
+ \getvalue{\??la\currentlanguage\c!rightsentence}%
+ \else
+ \getvalue{\??la\currentlanguage\c!rightsubsentence}%
+ \fi
+ \doglobal\decrement\subsentencelevel
+ \unskip
+ \kern\subsentencesignal}
+
+\def\endofsubsentencespacing%
+ {%\ifdim\lastkern=\subsentencesignal \else
+ % \unskip
+ %\fi
+ \ifdim\lastkern=\subsentencesignal
+ \unskip
+ \hskip\subsentenceskip
+ \ignorespaces
+ \else
+ \unskip
+ \fi}
+
+% test |<|test |<|test|>| test|>| test \par
+% test|<|test|<|test|>|test|>|test \par
+% test |<||<|test|>||>| test \par
+
+\enableactivediscretionaries
+
+%I n=Positioneren
+%I c=\startpositioneren,\stelpositionerenin
+%I
+%I Er kan (binnen zekere grenzen) gepositioneerd worden met
+%I de commando's:
+%I
+%I \startpositioneren
+%I \stoppositioneren
+%I
+%I met daartussen
+%I
+%I \positioneer(x,y){...}
+%I
+%I waarbij x en y alleen getallen worden ingevuld. Ongewenste
+%I spaties moeten zonodig met worden voorkomen met een %-teken.
+%P
+%I Een en ander kan worden ingesteld met:
+%I
+%I \stelpositionerenin[eenheid=,factor=,schaal=,xstap=,
+%I ystap=,xoffset=,yoffset=,offset=]
+%I
+%I Standaard is de eenheid cm en de factor 1. Mogelijke
+%I stapaanduidingen zijn 'absoluut' en 'relatief'. Deze
+%I instellingen kunnen \resetpositioneren worden hersteld.
+%I
+%I Als men negatieve coordinaten (of een negatieve offset)
+%I gebruikt, dan kan het soms wenselijk zijn het nulpunt te
+%I laten samenvallen met de linkerbovenhoek van de omringende
+%I box. In dat geval kan met offset=nee instellen. De negatieve
+%I posities vallen in dat geval buiten de box.
+
+% Het gebruik van \skip's spaart \dimen's.
+
+\newskip\xpositie
+\newskip\ypositie
+
+\newskip\xafmeting
+\newskip\yafmeting
+
+\newskip\xoffset
+\newskip\yoffset
+
+\newbox\positiebox
+
+\def\startpositioneren%
+ {\bgroup
+ \xpositie=\!!zeropoint
+ \ypositie=\!!zeropoint
+ \xafmeting=\!!zeropoint
+ \yafmeting=\!!zeropoint
+ \xoffset=\!!zeropoint
+ \yoffset=\!!zeropoint
+ \hfuzz=30cm
+ \vfuzz=30cm
+ \setbox\positiebox=\hbox\bgroup}
+
+\def\stoppositioneren%
+ {\doifnot{\@@psoffset}{\v!ja}
+ {\global\xoffset=\!!zeropoint
+ \global\yoffset=\!!zeropoint}%
+ \global\advance\xafmeting by \xoffset
+ \global\advance\yafmeting by \yoffset
+ \egroup
+ \vbox to \yafmeting
+ {\vskip\yoffset
+ \hbox to \xafmeting
+ {\hskip\xoffset
+ \box\positiebox
+ \hfill}%
+ \vfill}%
+ \egroup}
+
+\def\resetpositioneren%
+ {\getparameters[\??ps]
+ [\c!eenheid=\s!cm,
+ \c!factor=1,
+ \c!xfactor=\@@psfactor,
+ \c!yfactor=\@@psfactor,
+ \c!schaal=1,
+ \c!xschaal=\@@psschaal,
+ \c!yschaal=\@@psschaal,
+ \c!xstap=\v!absoluut,
+ \c!ystap=\v!absoluut,
+ \c!xoffset=\!!zeropoint,
+ \c!yoffset=\!!zeropoint]}
+
+\resetpositioneren
+
+\def\stelpositionerenin%
+ {\resetpositioneren%
+ \dodoubleargument\getparameters[\??ps]}%
+
+\def\positioneer(#1,#2)#3% \nextbox
+ {\setbox0=\hbox{#3}%
+ \def\berekenpositioneren##1##2##3##4##5##6##7##8##9%
+ {\skip0=##1\@@pseenheid\relax
+ \skip0=##8\skip0\relax
+ \skip0=##9\skip0\relax
+ \doifelse{##2}{\v!relatief}%
+ {\advance\skip0 by ##3\relax
+ \advance\skip0 by ##4\relax
+ \def##4{\!!zeropoint}}%
+ {\advance\skip0 by ##4\relax}%
+ ##3=\skip0\relax
+ \ifdim##3<-##7\relax
+ \global##7=-##3\relax
+ \fi
+ \skip2=##5\relax
+ \advance\skip2 by ##3\relax
+ \ifdim\skip2>##6\relax
+ \global##6=\skip2\relax
+ \fi}%
+ \berekenpositioneren{#1}{\@@psxstap}{\xpositie}
+ {\@@psxoffset}{\wd0}{\xafmeting}{\xoffset}
+ {\@@psxschaal}{\@@psxfactor}%
+ \skip4=\ht0 \advance\skip4 by \dp0
+ \berekenpositioneren{#2}{\@@psystap}{\ypositie}
+ {\@@psyoffset}{\skip4}{\yafmeting}{\yoffset}
+ {\@@psyschaal}{\@@psyfactor}%
+ \vbox to \!!zeropoint
+ {\vskip\ypositie
+ \hbox to \!!zeropoint
+ {\hskip\xpositie
+ \box0
+ \hskip-\xpositie}%
+ \vskip-\ypositie}%
+ \ignorespaces}
+
+\def\dorooster[#1]%
+ {\bgroup
+ \getparameters[\??rt]
+ [\c!nx=10,\c!ny=10,
+ \c!dx=.5,\c!dy=.5,
+ \c!xstap=0,\c!ystap=0,
+ \c!eenheid=\s!cm,
+ \c!schaal=1,
+ \c!factor=1,
+ \c!offset=\v!ja,
+ #1]%
+ \startpositioneren
+ \dimen0=\@@rtdx\@@rteenheid
+ \dimen0=\@@rtschaal\dimen0
+ \dimen0=\@@rtfactor\dimen0
+ \multiply\dimen0 by \@@rtnx
+ \dimen2=\@@rtdy\@@rteenheid
+ \dimen2=\@@rtschaal\dimen2
+ \dimen2=\@@rtfactor\dimen2
+ \multiply\dimen2 by \@@rtny
+ \def\horline
+ {\vbox
+ {\hrule
+ \!!width \dimen0
+ \!!height \lijndikte
+ \!!depth \!!zeropoint}}%
+ \def\verline%
+ {\vrule
+ \!!width \lijndikte
+ \!!height \dimen2
+ \!!depth \!!zeropoint}%
+ \def\setlegend##1##2%
+ {\global\!!countc=0
+ \dimen0=2em
+ \dimen2=##2\@@rteenheid
+ \dimen2=\@@rtschaal\dimen2
+ \dimen2=\@@rtfactor\dimen2
+ \divide\dimen0 by \dimen2
+ \global\!!counte=\dimen0
+ \ifnum\!!counte>50
+ \global\!!counte=100
+ \else\ifnum\!!counte>10
+ \global\!!counte=50
+ \else\ifnum\!!counte>5
+ \global\!!counte=10
+ \else\ifnum\!!counte>1
+ \global\!!counte=5
+ \else
+ \global\!!counte=1
+ \fi\fi\fi\fi
+ \global\!!countd=0
+ \def\legend%
+ {\ifnum\!!countd=0
+ \vbox
+ {\hbox to 2em{\hss\the\!!countc\hss}}%
+ \global\!!countd=\!!counte
+ \fi
+ \global\advance\!!countd by -1
+ \global\advance\!!countc by ##1}}%
+ \def\draw##1##2##3##4##5##6##7%
+ {\stelpositionerenin
+ [\c!xstap=\v!absoluut,
+ \c!ystap=\v!absoluut,
+ \c!eenheid=\@@rteenheid,
+ \c!schaal=\@@rtschaal,
+ \c!factor=\@@rtfactor,
+ \c!offset=\@@rtoffset,
+ \c!xoffset=##6,
+ \c!yoffset=##7]%
+ \positioneer(0,0){##1}%
+ \stelpositionerenin
+ [\c!xstap=\v!relatief,
+ \c!ystap=\v!relatief,
+ \c!schaal=\@@rtschaal,
+ \c!factor=\@@rtfactor,
+ \c!offset=\@@rtoffset,
+ \c!eenheid=\@@rteenheid]%
+ \dorecurse{##2}{\positioneer(##3,##4){##5}}}%
+ \draw{\verline}{\@@rtnx}{\@@rtdx}{0}{\verline}{\!!zeropoint}{\!!zeropoint}%
+ \draw{\horline}{\@@rtny}{0}{\@@rtdy}{\horline}{\!!zeropoint}{\!!zeropoint}%
+ \tfx
+ \doifnot{\@@rtxstap}{0}
+ {\setlegend{\@@rtxstap}{\@@rtdx}%
+ \draw{\legend}{\@@rtnx}{\@@rtdx}{0}{\legend}{-1em}{-1.5em}}%
+ \doifnot{\@@rtystap}{0}
+ {\setlegend{\@@rtystap}{\@@rtdy}%
+ \draw{\legend}{\@@rtny}{0}{\@@rtdy}{\legend}{-2em}{-.75ex}}%
+ \stoppositioneren
+ \egroup}
+
+\def\rooster%
+ {\dosingleempty\dorooster}
+
+%I n=Kolommen
+%I c=\stelkolommenin,\startkolommen,\kolom
+%I
+%I Tekst kan in kolommen worden gezet. Het aantal kolommen
+%I en het al dan niet opnemen van een vertikale lijn kan
+%I worden ingesteld.
+%I
+%I \stelkolommenin[n=,lijn=,tolerantie=,afstand=,
+%I balanceren=,uitlijnen=,hoogte=]
+%I
+%I Hierin staat n voor het aantal kolommen. Aan lijn
+%I kan aan of uit worden toegekend. Aan voor en na kan
+%I een commando worden toegekend, bijvoorbeeld ~~.
+%I
+%I Mogelijke waarden voor de tolerantie zijn: zeerstreng,
+%I streng, soepel en zeersoepel.
+%P
+%I De in kolommen te zetten tekst moet worden opgenomen
+%I tussen de commando's:
+%I
+%I \startkolommen
+%I \stopkolommen
+%I
+%I Er wordt naar een nieuwe kolom gesprongen met:
+%I
+%I \kolom
+
+\newif\ifbinnenkolommen
+\newif\if@@klbalanceren
+\newif\if@@kluitlijnen
+
+\binnenkolommenfalse
+
+\def\stelkolommenin%
+ {\dodoubleargument\getparameters[\??kl]}
+
+\def\linebetweencolumns%
+ {\bgroup
+ \startcolorpage
+ \ifdim\@@klafstand>\!!zeropoint
+ \dimen0=\@@klafstand
+ \else
+ \dimen0=\linewidth
+ \fi
+ \advance\dimen0 by -\linewidth
+ \hskip.5\dimen0
+ \vrule
+ \!!width\linewidth
+ \ifb@selinebottom\!!depth\strutdepth\fi
+ \hskip.5\dimen0\relax
+ \stopcolorpage
+ \egroup}
+
+\def\spacebetweencolumns%
+ {\hskip\@@klafstand}
+
+\presetlocalframed[\??kl]
+
+\def\backgroundfinishcolumnbox%
+ {\dimen0=\@@kloffset
+ \advance\dimen0 by -\@@kllijndikte
+ \localframed
+ [\??kl]
+ [\c!offset=\dimen0,
+ \c!strut=\v!nee,
+ \c!breedte=\v!passend,
+ \c!hoogte=\v!passend,
+ \c!uitlijnen=]}
+
+\def\backgroundsetcolumntextheight%
+ {\dimen0=-\@@kloffset
+ \multiply\dimen0 by 2
+ \advance\dimen0 by \teksthoogte
+ \edef\columntextheight{\the\dimen0}}
+
+\def\backgroundsetcolumntextwidth%
+ {\dimen0=-\@@kloffset
+ \multiply\dimen0 by \nofcolumns
+ \multiply\dimen0 by 2
+ \advance\dimen0 by \tekstbreedte
+ \edef\columntextwidth{\the\dimen0}}
+
+\def\complexstartkolommen[#1]% %% \startkolommen
+ {\bgroup
+ \let\stopkolommen=\egroup
+ \ifbinnenkolommen
+ \else
+ \stelkolommenin[#1]%
+ \ifnum\@@kln>1\relax
+ \witruimte
+ \begingroup
+ \doif{\@@kloptie}{\v!achtergrond}
+ {\let\finishcolumnbox = \backgroundfinishcolumnbox
+ \let\setcolumntextheight = \backgroundsetcolumntextheight
+ \let\setcolumntextwidth = \backgroundsetcolumntextwidth}%
+% \doifelse{\@@kllijn}{\v!aan}
+% {\let\betweencolumns=\linebetweencolumns}
+% {\let\betweencolumns=\spacebetweencolumns}%
+ \processaction
+ [\@@kllijn]
+ [ \v!aan=>\let\betweencolumns=\linebetweencolumns,
+ \v!uit=>\let\betweencolumns=\spacebetweencolumns,
+ \s!default=>\let\betweencolumns=\spacebetweencolumns,
+ \s!unknown=>\let\betweencolumns=\@@kllijn]%
+ \doifelsenothing{\@@klhoogte}
+ {\heightencolumnsfalse}
+ {\heightencolumnstrue}%
+ \doifelse{\@@klbalanceren}{\v!ja}
+ {\balancecolumnstrue}
+ {\balancecolumnsfalse}%
+ \processaction % ook nog: laatsteuitlijnen
+ [\@@kluitlijnen]
+ [ \v!ja=>\stretchcolumnstrue
+ \inheritcolumnsfalse,
+ \v!nee=>\stretchcolumnsfalse
+ \inheritcolumnsfalse,
+ \v!tekst=>\stretchcolumnsfalse
+ \inheritcolumnstrue]%
+ \nofcolumns=\@@kln
+ \edef\fixedcolumnheight{\@@klhoogte}%
+ \steltolerantiein[\@@kltolerantie]% %% \startkolommen
+ \stelblankoin[\@@klblanko]%
+ \ifdim\tussenwit>\!!zeropoint
+ \stelwitruimtein[\@@klblanko]%
+ \fi
+ \def\stopkolommen%
+ {\endmulticolumns
+ \global\binnenkolommenfalse
+ \endgroup
+ \egroup}%
+ \global\binnenkolommentrue
+ \beginmulticolumns
+ \fi
+ \fi}
+
+\def\startkolommen%
+ {\complexorsimpleempty{startkolommen}}
+
+\def\kolom%
+ {\ifbinnenkolommen
+ \ejectcolumn
+ \fi}
+
+%I n=Kader
+%I c=\toonkader,\tooninstellingen,\toonlayout
+%I
+%I Met behulp van de drie commando's:
+%I
+%I \toonkader
+%I \tooninstellingen
+%I
+%I kan de zetspiegel zichtbaar worden gemaakt, of eventueel
+%I met:
+%I
+%I \toonkader [rand,tekst,marge]
+%I
+%I Het commando:
+%I
+%I \toonlayout
+%I
+%I genereert enkele (linker en rechter) pagina's.
+
+\def\complextoonkader[#1]%
+ {\stelachtergrondenin
+ [\v!hoofd,\v!tekst,\v!voet]
+ [#1]
+ [\c!achtergrond=,
+ \c!kader=\v!aan,
+ \c!hoek=\v!recht,
+ \c!kaderoffset=\!!zeropoint,
+ \c!kaderdiepte=\!!zeropoint,
+ \c!kaderkleur=]
+ \let\pageseparation=\!!zeropoint}
+
+\def\simpletoonkader%
+ {\complextoonkader
+ [\v!linkerrand,\v!linkermarge,
+ \v!tekst,
+ \v!rechtermarge,\v!rechterrand]}
+
+\definecomplexorsimple\toonkader
+
+\def\tooninstellingA#1#2%
+ {\ifx#2\??ly
+ #1&\dimen0=\getvalue{#2#1}\PtToCm{\the\dimen0}&\dimen0=\getvalue{#2#1}\the\dimen0&\cr
+ \else
+ #1&\PtToCm{\the#2}&\the#2&\tttf\string#2\cr
+ \fi}
+
+\def\tooninstellingB#1#2#3%
+ {#1&&#2#3&\tttf\string#3\cr}
+
+\def\tooninstellingen% % engels maken
+ {\noindent
+ \vbox
+ {\forgetall
+ \mindermeldingen
+ \switchnaarkorps[\v!klein]
+ \tabskip\!!zeropoint
+ \halign
+ {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr
+ \tooninstellingA{papierhoogte} \papierhoogte
+ \tooninstellingA{papierbreedte} \papierbreedte
+ \tooninstellingA{printpapierhoogte} \printpapierhoogte
+ \tooninstellingA{printpapierbreedte} \printpapierbreedte
+ \tooninstellingA{kopwit} \kopwit
+ \tooninstellingA{rugwit} \rugwit
+ \tooninstellingA{hoogte} \zethoogte
+ \tooninstellingA{breedte} \zetbreedte
+ \tooninstellingA{teksthoogte} \teksthoogte
+ \tooninstellingA{tekstbreedte} \tekstbreedte
+ \tooninstellingA{bovenafstand} \??ly
+ \tooninstellingA{hoofd} \hoofdhoogte
+ \tooninstellingA{hoofdafstand} \??ly
+ \tooninstellingA{boven} \bovenhoogte
+ \tooninstellingA{voetafstand} \??ly
+ \tooninstellingA{voet} \voethoogte
+ \tooninstellingA{onderafstand} \??ly
+ \tooninstellingA{onder} \onderhoogte
+ \tooninstellingA{linkerrand} \linkerrandbreedte
+ \tooninstellingA{linkerrandafstand} \??ly
+ \tooninstellingA{linkermarge} \linkermargebreedte
+ \tooninstellingA{linkermargeafstand} \??ly
+ \tooninstellingA{rechtermargeafstand}\??ly
+ \tooninstellingA{rechtermarge} \rechtermargebreedte
+ \tooninstellingA{rechterrandafstand} \??ly
+ \tooninstellingA{rechterrand} \rechterrandbreedte
+ \noalign{\blanko}
+ \tooninstellingB{korps} \the \globalbodyfontsize
+ \noalign{\blanko}
+ \tooninstellingB{regel} \relax \strutheightfactor
+ \tooninstellingB{hoogte} \relax \strutdepthfactor
+ \tooninstellingB{diepte} \relax \normallineheight
+ \tooninstellingB{boven} \relax \topskipfactor
+ \tooninstellingB{onder} \relax \maxdepthfactor}}}
+
+\def\toonlayout%
+ {\bgroup
+ \pagina
+ \toonkader
+ \stellayoutin[\c!markering=\v!aan]
+ \herhaal[4*\tooninstellingen\pagina]
+ \egroup}
+
+% - meerdere niveaus (moet niet moeilijk zijn)
+% - instellingen in macro
+
+%I n=Opsomming
+%I c=\startopsomming,\som,\sub,\kop,\sym,\mar,\but
+%I c=\stelopsommingin
+%I
+%I Opsommingen kunnen tot op vier niveaus automatisch worden
+%I aangemaakt met het commando:
+%I
+%I \startopsomming[aanduiding][instellingen]
+%I
+%I \som ........
+%I \som ........
+%I \som[referentie] ........
+%I \som ........
+%I
+%I \stopopsomming
+%I
+%I Eventueel kan direct achter \som een [referentie] worden
+%I opgegeven, zodat men bijvoorbeeld kan verwijzen naar
+%I 'punt \in[referentie]' (hier punt 3).
+%P
+%I De volgende genummerde aanduidingen zijn mogelijk:
+%I
+%I wijze van 'nummeren' instelling
+%I
+%I 1, 2, 3, 4 n (normaal) / o (oldstyle)
+%I a, b, c, d a
+%I A, B, C, D A (normaal) / KA (kap)
+%I i, ii, iii, iv r
+%I I, II, III, IV R (normaal) / KR (kap)
+%I
+%I doornummeren verder
+%P
+%I De volgende niet-genummerde aanduidingen zijn mogelijk
+%I (de aanduiding kan eventueel achterwege blijven):
+%I
+%I wijze van 'markeren' instelling
+%I
+%I dot 1
+%I streepje 2
+%I sterretje 3
+%I driehoekje 4
+%I bolletje 5
+%I groter bolletje 6
+%I nog groter bolletje 7
+%I
+%I alleen inspringen leeg laten
+%P
+%I Het al dan niet inspringen en de eventuele ruimte tussen
+%I de onderdelen wordt globaal of lokaal ingesteld met de
+%I commando's:
+%I
+%I \stelopsommingin[niveau][instelling]
+%I
+%I waarbij de volgende instellingen mogelijk zijn:
+%I
+%I standaard standaard instellingen
+%I opelkaar geen witruimte tussen onderdelen
+%I aanelkaar weinig witruimte na het symbool
+%I aansluitend geen wit voor en na de opsomming
+%I ruim meer witruimte na het symbool (n*ruim)
+%I inmarge markering in de kantlijn
+%I opmarge markering op de 'kantlijn'
+%I afsluiter afsluiter achter markering
+%I kolommen in twee kolommen zetten
+%I intro aansluiten op vorige regel(s)
+%P
+%I In plaats van een cijfer bij niveau kan ook het woord
+%I 'elk' worden gegeven. De instellingen mogen ook direkt
+%I achter de aanduiding worden meegegeven: [1,opelkaar].
+%I
+%I Als alternatief voor \som is \kop beschikbaar. In dat geval
+%I wordt de eerste alinea (of een eerste woord) afwijkend gezet.
+%I
+%I Met \sym{symbool} kan een eigen symbool worden geplaatst.
+%I Als dit symbool breed is (bijvoorbeeld ++), kan men de
+%I breedte aanpassen, bijvoorbeeld: \startopsomming[2*ruim].
+%I
+%I Een ander alternatief is \mar{tekst}. De tekst wordt in
+%I dat geval in de marge geplaatst.
+%I
+%I Een leeg item (dus zonder aanduiding) kan worden
+%I opgeroepen met \nop. Op deze manier kunnen opsommingen in
+%I kolommen worden uitgelijnd (gemanipuleerd). Het commando
+%I \nop komt overeen met \sym{\strut} \strut.
+%P
+%I Met \som[aanduiding] (zonder \start... \stop...) kan snel een
+%I opsomming met ‚‚n item worden gezet. In dat geval wordt er
+%I geen referentie aangemaakt.
+%I
+%I Als men een item tussenvoegt maar (vooralsnog) de nummering
+%I niet wil verhogen, dan kan men \sub gebruiken. Het oude nummer
+%I wordt dan in het zetwerk voorafgegaan door een +.
+%I
+%I Interactieve items kunnen worden gemaakt met \but, waarbij
+%I de bestemming tussen [] moet worden meegegeven.
+%P
+%I Een nauwkeuriger (globale) instelling is eveneens mogelijk met
+%I het commando:
+%I
+%I \stelopsommingin[niveau][breedte=,voor=,tussen=,na=,
+%I kopvoor=,kopna=,kopletter=,marletter=,symlettter=,
+%I afsluiter=,n=,factor=,afstand=]
+%I
+%I Standaard gelden voor de letters de volgende instellingen:
+%I
+%I kopletter normaal
+%I marletter type
+%I symletter vet
+%I
+%I De commando's \sym{symbool} en \som zijn ook buiten
+%I opsommingen beschikbaar.
+
+%T n=opsomming
+%T m=ops
+%T a=o
+%T
+%T \startopsomming
+%T
+%T \som ?
+%T
+%T \stopopsomming
+
+%T n=som
+%T m=som
+%T a=s
+%T
+%T \som ?
+
+%
+% NOG [0] voor start op 0
+%
+
+\newif\ifsomkolommen \somkolommenfalse
+\newif\ifsubsom \subsomfalse
+\newif\ifsymsom \symsomfalse
+\newif\ifkopsom \kopsomfalse
+\newif\ifsomintro \somintrofalse
+\newif\ifsomautointro \somautointrofalse
+\newif\ifpackeditems \packeditemsfalse
+\newif\iffirstlist \firstlistfalse
+
+\definetwopasslist{\s!list}
+
+\newcounter\noflists
+\newcounter\itemlevel
+
+\def\dolistreference%
+ {\immediatewriteutilitycommand%
+ {\twopassentry%
+ {\s!list}%
+ {\currentlist}%
+ {\currentlist:\noflistelements}}}
+
+\def\setnextitemlevel#1%
+ {\doifundefined{\??op#1\c!breedte}
+ {\edef\itemreferences{\itemreferences,#1}%
+ \copyparameters
+ [\??op#1][\??oo]
+ [\c!breedte,\c!factor,\c!afstand,
+ \c!marletter,\c!symletter,\c!kopletter,
+ \c!markleur,\c!symkleur,\c!kopkleur,
+ \c!kopvoor,\c!kopna,\c!voor,\c!tussen,\c!na,
+ \c!afsluiter,\c!plaatsafsluiter,
+ \c!n,\c!binnen,\c!symbool,\c!marge]%
+ \makecounter{\s!itemcount#1}%
+ \setvalue{\??op\c!symbool\s!global#1}{#1}}}
+
+\def\maxitemlevel{0}
+\def\itemreferences{0}
+
+\def\dostelopsommingenin[#1]% % still undocumented
+ {\getparameters[\??oo][\c!niveaus=4,#1]%
+ \ifnum\@@ooniveaus>\maxitemlevel
+ \edef\maxitemlevel{\@@ooniveaus}%
+ \herhaal[\maxitemlevel*\setnextitemlevel{\herhaler}]%
+ \fi}
+
+\def\stelopsommingenin%
+ {\dosingleargument\dostelopsommingenin}
+
+\def\doitemreference#1,#2,#3\\%
+ {\ifnum\itemlevel>#1
+ \ifnum#1>0
+ \tempsymbool
+ \fi
+ \getvalue{\??op\c!symbool#2}%
+ \doitemreference#2,#3\\%
+ \fi}
+
+\def\itemreference%
+ {\expandafter\doitemreference\itemreferences,,\\}
+
+\def\itemuse#1%
+ {\getvalue{\??op\itemlevel#1}}%
+
+\def\packitems%
+ {\ifnum\itemlevel=0 \else\packeditemstrue\fi}
+
+\def\dostelopsomminginvariable[#1][#2]% niveau instellingen
+ {\doifelsenothing{#1}
+ {\getparameters[\??op\itemlevel][#2]}%
+ {\getparameters[\??op#1][#2]}}
+
+\def\dododostelopsomminginconstant[#1][#2#3]%
+ {\processaction
+ [#2#3]
+ [ \v!opelkaar=>\packitems,
+ \v!intro=>\somintrotrue,
+ \v!autointro=>\somautointrotrue,
+ \v!ruim=>{\doassign[\??op#1][\c!factor=1]},
+ #2*\v!ruim=>{\doassign[\??op#1][\c!factor=#2]},
+ \v!marge=>{\doassign[\??op#1][\c!breedte=-2em]}, % signal
+ \v!inmarge=>{\doassign[\??op#1][\c!breedte=-2em]}, % signal
+ \v!opmarge=>\doifnot{#1}{1}{\doassign[\??op#1][\c!breedte=0em]}, % signal
+ \v!kolommen=>\packitems,
+ \v!aansluitend=>{\getparameters[\??op#1]
+ [\c!kopvoor=,\c!kopna=,
+ \c!voor=,\c!tussen=,\c!na=]%
+ \packitems},
+ \v!aanelkaar=>{\doassign[\??op#1][\c!factor=-1]},
+ #2*\v!aanelkaar=>{\doassign[\??op#1][\c!factor=-#2]},
+ \v!afsluiter=>{\doassign[\??op#1][\c!plaatsafsluiter=\v!ja]},
+ \v!standaard=>{\getparameters[\??op#1]
+ [\c!breedte=1.5em,
+ \c!factor=0,
+ \c!afstand=.5em,
+ \c!kopvoor=,
+ \c!kopna=\blanko,
+ \c!voor=\blanko,
+ \c!tussen=\blanko,
+ \c!na=\blanko,
+ \c!binnen=]}]}
+
+\def\dostelopsomminginconstant[#1][#2]%
+ {\def\dodostelopsomminginconstant##1%
+ {\dododostelopsomminginconstant[#1][##1]}%
+ \processcommalist[#2]\dodostelopsomminginconstant}
+
+\def\dodododostelopsommingin[#1][#2]%
+ {\ConvertToConstant\doifinstringelse{=}{#2}
+ {\dostelopsomminginvariable[#1][#2]}
+ {\setvalue{\??op#1}{\dostelopsomminginconstant[#1][#2]}}}%
+
+\def\dododostelopsommingin[#1][#2]%
+ {\ConvertToConstant\doifnot{#2}{}
+ {\doifelse{#1}{\v!elk}
+ {\herhaal[\maxitemlevel*{\ExpandFirstAfter\dodododostelopsommingin[\herhaler][#2]}]}
+ {\ExpandFirstAfter\dodododostelopsommingin[#1][#2]}}}
+
+\def\dodostelopsommingin[#1][#2]%
+ {\ConvertToConstant\doifelse{#2}{}
+ {\ifnum\itemlevel=0\relax
+ \dododostelopsommingin[\v!elk][#1]%
+ \else
+ \dododostelopsommingin[\itemlevel][#1]%
+ \fi}
+ {\doifelsenothing{#1}
+ {\dododostelopsommingin[\itemlevel][#2]}
+ {\dododostelopsommingin[#1][#2]}}}
+
+\def\dostelopsommingin[#1][#2][#3]%
+ {\dodostelopsommingin[#1][#2]%
+ \ConvertToConstant\doifnot{#3}{} % anders wordt #2 overruled
+ {\dodostelopsommingin[#1][#3]}}
+
+\def\stelopsommingin%
+ {\dotripleempty\dostelopsommingin}
+
+\def\doadvanceitem%
+ {\ifsubsom\else\ifsymsom\else
+ \pluscounter{\s!itemcount\itemlevel}%
+ \fi\fi}
+
+\def\setitemlevel#1%
+ {\ifnum\itemlevel>0\relax
+ \firstlisttrue
+ \doifnotinset{\v!verder}{#1}
+ {\resetcounter{\s!itemcount\itemlevel}}%
+ \def\tempnumber%
+ {\countervalue{\s!itemcount\itemlevel}}%
+ \doifelsevalue{\??op\itemlevel\c!plaatsafsluiter}{\v!ja}
+ {\def\tempsymbool{\getvalue{\??op\itemlevel\c!afsluiter}}}
+ {\def\tempsymbool{}}%
+ \fi}
+
+\def\setitemmark#1% % maakt gebruik van \??ss en \??cv
+ {\doifdefinedelse{\??ss#1} % en pas op: resets \docommando
+ {\setxvalue{\??op\c!symbool\s!global\itemlevel}%
+ {#1}%
+ \setgvalue{\??op\c!symbool\s!local\itemlevel}%
+ {?}%
+ \def\listitem%
+ {\symbol[#1]}%
+ \def\docommando##1{}}
+ {\doifdefined{\??cv#1}
+ {\setxvalue{\??op\c!symbool\s!global\itemlevel}%
+ {#1}%
+ \setgvalue{\??op\c!symbool\s!local\itemlevel}%
+ {\convertnumber{#1}{\countervalue{\s!itemcount\itemlevel}}}%
+ \def\listitem%
+ {\getvalue{\??op\c!symbool\s!local\itemlevel}\tempsymbool}%
+ \def\docommando##1{}}}}
+
+\def\calculatelistwidth#1#2%
+ {#2=\getvalue{\??op#1\c!afstand}\relax
+ \multiply#2 by \getvalue{\??op#1\c!factor}\relax
+ \advance#2 by \getvalue{\??op#1\c!breedte}\relax}
+
+\def\dodostartopsomming[#1][#2]%
+ {\ifhmode
+ \par
+ \fi
+ \ifnum\itemlevel=\maxitemlevel\relax
+ \showmessage{\m!layouts}{9}{\maxitemlevel}%
+ \def\itemincrement{0}%
+ \else
+ \def\itemincrement{1}%
+ \fi
+ \doglobal\increment(\itemlevel,\itemincrement)%
+ \begingroup
+ \ifnum\itemlevel=1 % NIEUW
+ \doifelsevalue{\??op1\c!marge}{\v!standaard}
+ {\ifdim\voorwit=\!!zeropoint
+ \advance\leftskip by \@@sllinks
+ \else
+ \advance\leftskip by \voorwit
+ \fi}
+ {\advance\leftskip by \getvalue{\??op1\c!marge}}%
+ \fi
+ \doifinset{\v!kolommen}{#1}%
+ {\ifbinnenkolommen\else
+ \global\somkolommentrue
+ \getvalue{\??op\itemlevel\c!voor}%
+ \processfirstactioninset
+ [#1]
+ [ \v!een=>\!!counta=1\relax,
+ \v!twee=>\!!counta=2\relax,
+ \v!drie=>\!!counta=3\relax,
+ \v!vier=>\!!counta=4\relax,
+ \v!vijf=>\!!counta=5\relax,
+ \s!unknown=>\@EA\!!counta\getvalue{\??op\itemlevel\c!n}]%
+ \startkolommen
+ [\c!n=\!!counta,
+ \c!hoogte=,
+ \c!lijn=\v!uit,
+ \c!balanceren=\v!ja,
+ \c!uitlijnen=\v!nee]%
+ \fi}%
+ \doifinsetelse{\v!intro}{#1}
+ {\somintrotrue}
+ {\somintrofalse}%
+ \doglobal\increment\noflists
+ \let\currentlist=\noflists
+ \newcounter\noflistelements
+ \kopsomfalse
+ \subsomfalse
+ \symsomfalse
+ \let\marsymbol=\relax
+ \let\somdestination=\empty
+ \def\symsymbol{}%
+ \def\som%
+ {\dosom}%
+ \def\but[##1]%
+ {\def\somdestination{##1}%
+ \dosom}%
+ \def\nop%
+ {\sym{\strut}\strut}%
+ \definecomplexorsimple\its
+ \setvalue{\v!mar}##1%
+ {\def\marsymbol%
+ {\llap
+ {\doattributes{\??op\itemlevel\v!mar}{##1}%
+ \hskip\leftskip\hskip\linkermargeafstand}}%
+ \dosom}%
+ \setvalue{\v!kop}%
+ {\kopsomtrue\dokop}%
+ \setvalue{\v!sub}%
+ {\subsomtrue\dosom}%
+ \setvalue{\v!sym}##1%
+ {\def\symsymbol%
+ {\doattributes{\??op\itemlevel\v!sym}{##1}}%
+ \symsomtrue
+ \dosom}%
+ \setvalue{\v!its}%
+ {\getvalue{\v!sym}%
+ {\calculatelistwidth{\itemlevel}{\dimen0}%
+ \hbox to \dimen0
+ {\dorecurse{\getvalue{\??op\itemlevel\c!items}}{\listitem\hss}%
+ \unskip
+ \hskip\getvalue{\??op\itemlevel\c!afstand}}}}%
+ \setitemlevel{#1}%
+ \getvalue{\??op\itemlevel}%
+ \doifelsenothing{#1} % iffirstargument
+ {\edef\@@opsymbool{\getvalue{\??op\itemlevel\c!symbool}}%
+ \setgvalue{\??op\c!symbool\s!global\itemlevel}{}%
+ \setgvalue{\??op\v!verder\itemlevel}{}%
+ \setitemmark{\@@opsymbool}%
+ \dostelopsomminginvariable[\itemlevel][#2]}
+ {\dostelopsomminginconstant[\itemlevel][#1]%
+ \dostelopsomminginvariable[\itemlevel][#2]%
+ \doifinsetelse{\v!verder}{#1}%
+ {\edef\@@opsymbool{\getvalue{\??op\c!symbool\s!global\itemlevel}}%
+ \getvalue{\??op\v!verder\itemlevel}}
+ {\edef\@@opsymbool{\getvalue{\??op\itemlevel\c!symbool}}%
+ \setgvalue{\??op\v!verder\itemlevel}%
+ {\dostelopsomminginconstant[\itemlevel][#1]%
+ \dostelopsomminginvariable[\itemlevel][#2]}}%
+ \def\docommando{\setitemmark}% \setitemmark resets \docommando
+ \processcommalist[#1,\@@opsymbool]\docommando}%
+ \ifsomautointro\ifnum\prevgraf<3
+ \somintrotrue
+ \fi\fi
+ \ifpackeditems
+ \doassign[\??op\itemlevel][\c!tussen=]%
+ \fi
+ \calculatelistwidth{\itemlevel}{\dimen0}%
+ \ifdim\dimen0>\!!zeropoint\relax
+ \advance\leftskip by \dimen0\relax
+ \fi}
+
+\def\dostartopsomming[#1][#2]%
+ {\ifsecondargument
+ \dodostartopsomming[#1][#2]%
+ \else
+ \doifassignmentelse{#1}
+ {\dodostartopsomming[][#1]}
+ {\dodostartopsomming[#1][]}%
+ \fi}
+
+\def\startopsomming%
+ {\bgroup
+ \dodoubleempty\dostartopsomming}
+
+\def\stopopsomming%
+ {\par
+ \dolistreference
+ \endgroup
+ \ifsomkolommen
+ \global\somkolommenfalse
+ \stopkolommen
+ \getvalue{\??op\itemlevel\c!na}%
+ \else
+ \ifnum\itemlevel=1\relax
+ \dosomebreak\allowbreak % toegevoegd
+ \getvalue{\??op1\c!na}%
+ \fi
+ \fi
+ \endgroup
+ \doglobal\decrement(\itemlevel,\itemincrement)%
+ \egroup}
+
+\def\sombreak%
+ {\flushfootnotes\penalty-5\relax} % -10
+
+\def\somnobreak%
+ {\flushfootnotes\penalty+5\relax} % \nobreak
+
+\def\dolistitem%
+ {\par
+ \ignorespaces
+ \increment\noflistelements
+ \ifnum\noflistelements=1\relax % als gevolg van nesting
+ \findtwopassdata{\s!list}{\noflists:}% % van wordt soms de volgorde
+ \fi % verstoord, vandaar \find
+ \ifsomkolommen\else
+ \iftwopassdatafound
+ \ifnum\twopassdata=3\relax
+ \ifnum\noflistelements>1\relax
+ \dosomebreak\somnobreak
+ \fi
+ \else\ifnum\twopassdata>3\relax
+ \ifnum\noflistelements=2\relax
+ \ifsomkolommen\else
+ \ifsomintro
+ \dosomebreak\nobreak
+ \else
+ \dosomebreak\somnobreak
+ \fi
+ \fi
+ \else\ifnum\twopassdata=\noflistelements\relax
+ \dosomebreak\somnobreak
+ \else\ifnum\noflistelements>2\relax
+ \dosomebreak\sombreak
+ \else
+ \ifsomintro\else\dosomebreak\sombreak\fi
+ \fi\fi\fi
+ \fi\fi
+ \fi
+ \fi
+ \noindent
+ \ifkopsom
+ \setbox8=\hbox{\doattributes{\??op\itemlevel\v!kop}{\listitem}}%
+ \else\ifsymsom
+ \setbox8=\hbox{\symsymbol}%
+ \else
+ \setbox8=\hbox{\listitem}%
+ \fi\fi
+ \doifsomething{\somdestination}
+ {\setbox8=\hbox{\naar{\copy8}[\somdestination]}}%
+ \dimen2=\getvalue{\??op\itemlevel\c!breedte}\relax
+ \ifdim\dimen2<\!!zeropoint\relax
+ \llap{\ifsubsom\llap{+}\fi\box8\hskip\linkermargeafstand}%
+ \else
+ \ifdim\dimen2=\!!zeropoint\relax
+ \calculatelistwidth{1}{\dimen0}%
+ \else
+ \calculatelistwidth{\itemlevel}{\dimen0}%
+ \fi
+ \llap{\hbox to \dimen0{\ifsubsom\llap{+}\fi\box8\hfill}}%
+ \fi
+ \setevalue{\??op\c!symbool\itemlevel}%
+ {\getvalue{\??op\c!symbool\s!local\itemlevel}}%
+ \kopsomfalse
+ \subsomfalse
+ \symsomfalse
+ \EveryPar{\ignorespaces}%
+ \ignorespaces}
+
+\def\complexdosom[#1]%
+ {\par
+ \ignorespaces
+ \doadvanceitem
+ \ifsomkolommen\else
+ \ifnum\noflistelements>0\relax\dosomebreak\nobreak\fi
+ \fi
+ \iffirstlist
+ \firstlistfalse
+ \begingroup
+ \ifcase\itemlevel
+ \or % 1
+ \ifsomkolommen\else
+ \ifsomintro\dosomebreak\nobreak\fi
+ \getvalue{\??op1\c!voor}%
+ \ifsomintro\dosomebreak\nobreak\fi
+ \fi
+ \else % 2 en hoger
+ \let\previtemlevel=\itemlevel
+ \decrement\previtemlevel
+ \getvalue{\??op\previtemlevel\c!tussen}% = itemlevel-1
+ \fi
+ \else
+ \itemuse{\c!tussen}%
+ \fi
+ \ignorespaces
+ \dolistitem
+ \ifpackeditems
+ \stelwitruimtein[\v!geen]%
+ \fi
+ \itemuse{\c!binnen}%
+ \marsymbol
+ \let\marsymbol=\relax
+ \doifsomething{#1}
+ {\bgroup
+ \protectconversion
+ \rawreference{\s!lst}{#1}{\itemreference}%
+ \egroup}%
+ \ignorespaces}
+
+\def\complexsom[#1]#2\par%
+ {\startopsomming[#1]
+ \complexdosom[]\ignorespaces#2\par
+ \stopopsomming}
+
+\def\som%
+ {\complexorsimpleempty{som}}
+
+\def\dosom%
+ {\complexorsimpleempty{dosom}}
+
+\def\complexdokop[#1]#2\par%
+ {\ifpackeditems\else\itemuse{\c!kopvoor}\fi%
+ \dosomebreak{\pagina[\v!voorkeur]}% geen \goodbreak ! \allowbreak testen
+ \complexdosom[#1]{\doattributes{\??op\itemlevel\v!kop}{\ignorespaces#2}}\par%
+ \ifpackeditems\else\itemuse{\c!kopna}\fi%
+ \dosomebreak\nobreak}
+
+\def\complexkop[#1]#2\par#3\par%
+ {\startopsomming[#1]%
+ \complexdokop[]\ignorespaces#2\par#3\par%
+ \stopopsomming}
+
+\setvalue{\v!kop}%
+ {\complexorsimpleempty{kop}}
+
+\def\dokop%
+ {\complexorsimpleempty{dokop}}
+
+\def\sym#1%
+ {\noindent
+ \setbox0=\hbox{#1}%
+ \ifdim\wd0<1em\relax
+ \setbox0=\hbox to 1.5em{#1\hfil}%
+ \else
+ \setbox0=\hbox spread 1em{#1\hfil}%
+ \fi
+ \hangindent=\wd0\relax
+ \box0
+ \ignorespaces}
+
+%I n=Doordefinieren
+%I c=\doordefinieren,\steldoordefinierenin
+%I
+%I Er kunnen (eenvoudige) definitie-lijsten worden
+%I gemaakt met behulp van het commando:
+%I
+%I \doordefinieren[naam][plaats=,breedte=,uitlijnen=,
+%I monster=,letter=,kopletter=,voor=,tussen=,na=,hang=,
+%I inspringen=,tekst=]
+%I
+%I Een definitie is vervolgens op naam op te roepen:
+%I
+%I \naam{begrip} definitie
+%P
+%I Een definitie heeft de vorm:
+%I
+%I links Dit is een linker tekst. Een tekst wordt
+%I links geplaatst als 'links' wordt meegegeven.
+%I
+%I Dit is een rechter tekst. Een tekst wordt rechts
+%I rechts geplaatst als 'rechts' wordt meegegeven.
+%I
+%I boven
+%I
+%I Dit is een tekst waarbij het woord erboven staat. Voor
+%I dit soort teksten wordt 'boven' meegegeven.
+%I
+%I Tot slot is het mogelijk de tekst in de marge of
+%I aansluitend te plaatsen, in dat geval wordt 'inmarge',
+%I 'inlinker', 'inrechter' of 'aanelkaar' meegegeven.
+%P
+%I Aan 'voor', 'tussen' of 'na' kan een commando worden
+%I toegekend, bijvoorbeeld \blanko[groot]. Als letter kan
+%I normaal, vet, kapitaal, type, schuin, klein en kleinvet
+%I worden meegegeven.
+%I
+%I Als 'breedte' kan een maat worden meegegeven of een van de
+%I instellingen 'passend' en 'ruim'. In dat geval wordt de
+%I aan 'monster' toegekende tekst als uitgangspunt genomen.
+%P
+%I Met 'hang' kan men aangeven hoe lang er links of rechts
+%I moet worden ingesprongen. Er kan een aantal regels worden
+%I meegegeven maar ook 'passend' of 'ruim'. Een overgang naar
+%I een nieuwe regel binnen een linker- of rechtertekst wordt
+%I afgedwongen met \\ (vergelijk \margeteksten).
+%I
+%I Defaultwaarden kunnen worden ingesteld met het commando:
+%I
+%I \steldoordefinierenin[instellingen]
+%I
+%I Het tussentijds bijstellen van de instellingen is mogelijk
+%I met:
+%I
+%I \steldoordefinieren[naam][instellingen]
+
+% Dit kan en moet dus anders:
+%
+% \start... : \vbox\bgroup
+% \stop... : \egroup
+% llap enz.
+% geen indent!
+%
+% enz. enz.
+%
+% Op die manier is meer mogelijk en worden \par's geskipt.
+
+% De macro's \??dd#1\c!lokaal en \??dd#1\c!commando leveren
+% de koppeling tussen \doornummeren en \doordefinieren. Deze
+% constructie is nodig omdat doornummeren geen argument
+% heeft en omdat subnummers niet worden genest binnen
+% het hogere niveau. Het commando \??dd#1\s!do\c!commando
+% moet in dat geval \v!ja zijn.
+
+% herimplementeren met \nextbox en \unhbox\unvbox
+
+\newbox\@@definitiebox
+
+% \setvalue{@@dodefinitiewoord\v!links}#1%
+% {\hbox to \!!widtha{#1\hss}}
+% \setvalue{@@dodefinitiewoord\v!rechts}#1%
+% {\hbox to \!!widtha{\hss#1}}
+% \setvalue{@@dodefinitiewoord\v!midden}#1%
+% {\hbox to \!!widtha{\hss#1\hss}}
+% \setvalue{@@dodefinitiewoord}#1%
+% {#1}
+%
+% \def\@@definitiewoord#1%
+% {\getvalue{\??dd#1\c!commando}{#1}}
+%
+% \def\normal@@definitiewoord#1[#2]#3%
+% {\bgroup
+% \getvalue{@@dodefinitiewoord\getvalue{\??dd#1\c!uitlijnen}}
+% {\doattributes{\??dd#1\v!kop}{\strut\getvalue{\??dd#1\c!tekst}#3}}%
+% \rawreference{\s!def}{#2}{#3}%
+% \egroup}
+%
+% \def\@@definitielinks#1[#2]#3%
+% {\doifelsevaluenothing{\??dd#1\c!hang}
+% {\@@definitielinkspure{#1}[#2]{#3}}
+% {\@@definitielinkshang{#1}[#2]{#3}}}
+%
+% \def\@@definitierechts#1[#2]#3%
+% {\doifelsevaluenothing{\??dd#1\c!hang}
+% {\@@definitierechtspure{#1}[#2]{#3}}
+% {\@@definitierechtshang{#1}[#2]{#3}}}
+%
+% \def\@@definitielinkspure#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \advance\leftskip by \!!widtha
+% \llap
+% {\hbox to \!!widtha{\@@definitiewoord{#1}[#2]{#3}%
+% \hss}}%
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitierechtspure#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \advance\rightskip by \!!widtha
+% \rlap
+% {\hskip\hsize
+% \hskip-\leftskip
+% \hskip-\rightskip
+% \hbox to \!!widtha{\hss\@@definitiewoord{#1}[#2]{#3}}}%
+% \@@dodefinitie{#1}}
+%
+% \def\@@makedefinitiebox#1[#2]#3#4%
+% {\setbox\@@definitiebox=\vtop % \vbox gaat fout in hang
+% {\forgetall
+% \hsize\!!widtha
+% #4%
+% \def\\{\endgraf}%
+% \@@definitiewoord{#1}[#2]{\begstrut#3\endstrut}}%
+% \ht\@@definitiebox=\ht\strutbox
+% \dp\@@definitiebox=\dp\strutbox
+% \doifinsetelse{\getvalue{\??dd#1\c!hang}}{\v!passend,\v!ruim}
+% {\dimen0=\ht\@@definitiebox
+% \advance\dimen0 by \dp\@@definitiebox
+% \doifvalue{\??dd#1\c!hang}{\v!ruim}
+% {\advance\dimen0 by .5\ht\strutbox}%
+% \getnoflines{\dimen0}%
+% \hangafter=-\noflines}
+% {\hangafter=-\getvalue{\??dd#1\c!hang}}}%
+%
+% \def\@@definitielinkshang#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \mindermeldingen
+% \hangindent=\!!widtha\relax
+% \@@makedefinitiebox{#1}[#2]{#3}{}%
+% \llap
+% {\dontshowcomposition
+% \vtop to \!!zeropoint{\box\@@definitiebox}}%
+% \@@dodefinitie{#1}}%
+%
+% \def\@@definitierechtshang#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \mindermeldingen
+% \hangindent=-\!!widtha\relax
+% \@@makedefinitiebox{#1}[#2]{#3}{\raggedleft}%
+% \rlap
+% {\dontshowcomposition
+% \dimen0=\hsize
+% \advance\dimen0 by -\leftskip
+% \advance\dimen0 by -\rightskip
+% \hbox to \dimen0
+% {\hss
+% \vtop to \!!zeropoint{\box\@@definitiebox}}}%
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitieboven#1[#2]#3%
+% {%\pagina[\v!voorkeur]% % Weg ermee!
+% \dosomebreak{\goodbreak}% % Dit is beter en nodig!
+% \@@dostartdefinitie{#1}{#3}%
+% \@@definitiewoord{#1}[#2]{#3}%
+% \nobreak
+% \getvalue{\??dd#1\c!tussen}%
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitieinmarge#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \inmarge{\@@definitiewoord{#1}[#2]{#3}}%
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitieinlinker#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \inlinker{\@@definitiewoord{#1}[#2]{#3}}%
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitieinrechter#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \inrechter{\@@definitiewoord{#1}[#2]{#3}}%
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitieaanelkaarpassend#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \@@definitiewoord{#1}[#2]{#3}%
+% \tfskip % nog afstand implementeren
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitieaanelkaarbreed#1[#2]#3%
+% {\@@dostartdefinitie{#1}{#3}%
+% \ignorespaces
+% \hbox to \!!widtha
+% {\@@definitiewoord{#1}[#2]{#3}%
+% \tfskip
+% \hss}% % nog afstand implementeren
+% \@@dodefinitie{#1}}
+%
+% \def\@@definitieaanelkaar#1[#2]#3%
+% {\doifinsetelse{\getvalue{\??dd#1\c!breedte}}{\v!passend,\v!ruim}%
+% {\@@definitieaanelkaarpassend{#1}[#2]{#3}}%
+% {\@@definitieaanelkaarbreed{#1}[#2]{#3}}}
+%
+% \def\@@dostartdefinitie#1#2%
+% {\getvalue{\??dd#1\c!voor}%
+% \begingroup
+% %\showcomposition
+% \assignwidth
+% {\!!widtha}
+% {\getvalue{\??dd#1\c!breedte}}
+% {\doattributes
+% {\??dd#1\v!kop}
+% {\getvalue{\??dd#1\c!tekst}%
+% \doifelsevaluenothing{\??dd#1\c!monster}
+% {#2}
+% {\getvalue{\??dd#1\c!monster}}}}
+% {1em}%
+% \getvalue{\??dd#1\c!lokaal}%
+% \parindent=\!!zeropoint\relax
+% \noindent
+% \ignorespaces}
+
+\def\@@definitiewoord#1%
+ {\getvalue{\??dd#1\c!commando}{#1}}
+
+\def\normal@@definitiewoord#1[#2]#3%
+ {\doattributes
+ {\??dd#1\v!kop}
+ {\begstrut\getvalue{\??dd#1\c!tekst}#3\endstrut}%
+ \rawreference{\s!def}{#2}{#3}}
+
+\def\@@definitielinks#1%
+ {\@@definitiehang{#1}\@@definitielinkspure\@@definitielinkshang}
+
+\def\@@definitierechts#1%
+ {\@@definitiehang{#1}\@@definitierechtspure\@@definitierechtshang}
+
+\def\@@definitiehang#1#2#3%
+ {\processaction
+ [\getvalue{\??dd#1\c!hang}]
+ [ \v!geen=>\let\next=#2,
+ 0=>\let\next=#2,
+ \s!unknown=>\let\next=#3,
+ \s!default=>\let\next=#2]%
+ \next{#1}}
+
+\def\@@definitielinkspure#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \advance\leftskip by \!!widtha
+ \@@makedefinitiepurebox{#1}\raggedright%
+ \advance\leftskip by \!!widthb
+ \llap
+ {\hbox to \leftskip{\copy\@@definitiebox\hss}}%
+ \@@dodefinitie{#1}}
+
+\def\@@definitierechtspure#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \advance\rightskip by \!!widtha
+ \@@makedefinitiepurebox{#1}\raggedleft%
+ \rlap
+ {\hskip\hsize
+ \hskip-\leftskip
+ \hskip-\rightskip
+ \copy\@@definitiebox}%
+ \advance\rightskip by \!!widthb
+ \@@dodefinitie{#1}}
+
+\def\@@makedefinitiepurebox#1#2%
+ {\setbox\@@definitiebox=\vtop
+ {\hsize\!!widtha
+ \leftskip\!!zeropoint
+ \rightskip\!!zeropoint
+ #2\steluitlijnenin[\getvalue{\??dd#1\c!uitlijnen}]%
+ \unhcopy\@@definitiebox}%
+ \ht\@@definitiebox=\ht\strutbox
+ \dp\@@definitiebox=\dp\strutbox}
+
+\def\@@definitielinkshang#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \mindermeldingen
+ \advance\!!widtha by \!!widthb
+ \hangindent=\!!widtha
+ \@@makedefinitiehangbox{#1}{\raggedright}{\advance\rightskip by \!!widthb}%
+ \llap
+ {\dontshowcomposition
+ \vtop to \!!zeropoint{\box\@@definitiebox}}%
+ \@@dodefinitie{#1}}%
+
+\def\@@definitierechtshang#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \mindermeldingen
+ \advance\!!widtha by \!!widthb
+ \hangindent=-\!!widtha
+ \@@makedefinitiehangbox{#1}{\raggedleft}{\advance\leftskip by \!!widthb}%
+ \rlap
+ {\dontshowcomposition
+ \dimen0=\hsize
+ \advance\dimen0 by -\leftskip
+ \advance\dimen0 by -\rightskip
+ \hbox to \dimen0
+ {\hss\vtop to \!!zeropoint{\box\@@definitiebox}}}%
+ \@@dodefinitie{#1}}
+
+\def\@@makedefinitiehangbox#1#2#3%
+ {\setbox\@@definitiebox=\vtop % \vbox gaat fout in hang
+ {\forgetall
+ \hsize\!!widtha
+ #2\steluitlijnenin[\getvalue{\??dd#1\c!uitlijnen}]#3%
+ \unhcopy\@@definitiebox}%
+ \ht\@@definitiebox=\ht\strutbox
+ \dp\@@definitiebox=\dp\strutbox
+ \doifinsetelse{\getvalue{\??dd#1\c!hang}}{\v!passend,\v!ruim}
+ {\dimen0=\ht\@@definitiebox
+ \advance\dimen0 by \dp\@@definitiebox
+ \doifvalue{\??dd#1\c!hang}{\v!ruim}
+ {\advance\dimen0 by .5\ht\strutbox}%
+ \getnoflines{\dimen0}%
+ \hangafter=-\noflines}
+ {\hangafter=-\getvalue{\??dd#1\c!hang}}}%
+
+\def\@@definitieboven#1[#2]#3%
+ {%\pagina[\v!voorkeur]% % Weg ermee!
+ \dosomebreak{\goodbreak}% % Dit is beter en nodig!
+ \@@dostartdefinitie{#1}[#2]{\let\\=\space#3}%
+ \copy\@@definitiebox
+ \nobreak
+ \getvalue{\??dd#1\c!tussen}%
+ \@@dodefinitie{#1}}
+
+\def\@@definitieinmarge#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \inmarge{\unhcopy\@@definitiebox}%
+ \@@dodefinitie{#1}}
+
+\def\@@definitieinlinker#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \inlinker{\unhcopy\@@definitiebox}%
+ \@@dodefinitie{#1}}
+
+\def\@@definitieinrechter#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \inrechter{\unhcopy\@@definitiebox}%
+ \@@dodefinitie{#1}}
+
+\def\@@definitieaanelkaarpassend#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \unhcopy\@@definitiebox
+ \@@dodefinitie{#1}}
+
+\def\@@definitieaanelkaarruim#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \hbox spread \!!widthb
+ {\unhcopy\@@definitiebox\hss}%
+ \@@dodefinitie{#1}}
+
+\def\@@definitieaanelkaarbreed#1[#2]#3%
+ {\@@dostartdefinitie{#1}[#2]{#3}%
+ \hbox to \!!widtha
+ {\unhcopy\@@definitiebox\hss}%
+ \kern\!!widthb
+ \ignorespaces
+ \@@dodefinitie{#1}}
+
+\def\@@definitieaanelkaar#1[#2]#3%
+ {\processaction
+ [\getvalue{\??dd#1\c!breedte}]
+ [\v!passend=>\let\next=\@@definitieaanelkaarpassend,
+ \v!ruim=>\let\next=\@@definitieaanelkaarruim,
+ \s!unknown=>\let\next=\@@definitieaanelkaarbreed,
+ \s!default=>\let\next=\@@definitieaanelkaarruim]%
+ \next{#1}[#2]{#3}}
+
+\def\@@dostartdefinitie#1[#2]#3%
+ {\getvalue{\??dd#1\c!voor}%
+ \begingroup
+ \showcomposition
+ \setbox\@@definitiebox=\hbox
+ {\forgetall
+ \def\\{\crcr}%
+ \doattributes
+ {\??dd#1\v!kop}
+ {\@@definitiewoord{#1}[#2]{\vbox{\halign{\strut##\hss\cr#3\crcr}}}}}%
+ \!!widthb=\getvalue{\??dd#1\c!afstand}\relax
+ \ifdim\!!widthb=\!!zeropoint\relax
+ \doifvalue{\??dd#1\c!breedte}{\v!ruim}{\!!widthb=1em}%
+ \fi
+ \assignwidth
+ {\!!widtha}
+ {\getvalue{\??dd#1\c!breedte}}
+ {\doifelsevaluenothing{\??dd#1\c!monster}
+ {\unhcopy\@@definitiebox}
+ {\doattributes{\??dd#1\v!kop}
+ {\getvalue{\??dd#1\c!tekst}\getvalue{\??dd#1\c!monster}}}}
+ {\!!widthb}%
+ \getvalue{\??dd#1\c!lokaal}%
+ \parindent=\!!zeropoint\relax
+ \noindent
+ \ignorespaces}
+
+\def\@@stopdefinitie#1%
+ {\par
+ \dostopattributes
+ \endgroup
+ \egroup % temporary hack
+ \getvalue{\??dd#1\c!na}%
+ \pagina[\v!voorkeur]} % toegevoegd maar heroverwegen
+
+\def\@@dodefinitie#1%
+ {\dostartattributes
+ {\??dd#1}
+ {}%
+ \ignorespaces}
+
+\def\@@somedefinitie#1[#2]#3%
+ {\bgroup % temporary hack
+ \BeforePar{\getvalue{\??dd#1}[#2]{#3}}%
+ \AfterPar{\@@stopdefinitie{#1}}%
+ \GetPar}
+
+\def\@@startdefinitie#1[#2]#3%
+ {\bgroup % temporary hack
+ \BeforePar{\getvalue{\??dd#1}[#2]{#3}}%
+ \GotoPar}
+
+\def\dodosteldoordefinierenin[#1][#2]%
+ {\getparameters[\??dd#1][#2]}
+
+\def\dosteldoordefinierenin[#1][#2]%
+ {\ConvertToConstant\doifelse{#2}{}
+ {\dodosteldoordefinierenin[][#1]}
+ {\dodoubleargumentwithset\dodosteldoordefinierenin[#1][#2]}}
+
+\def\steldoordefinierenin%
+ {\dodoubleempty\dosteldoordefinierenin}
+
+% kan zonder \interfaced wanneer \setvalue{...\v!...}
+
+\def\executedoordefinitie#1[#2]%
+ {\ExpandAfter\doifundefined{@@definitie\interfaced{\getvalue{\??dd#1\c!plaats}}}
+ {\setvalue{\??dd#1\c!plaats}{\v!links}}%
+ \getvalue{@@definitie\interfaced{\getvalue{\??dd#1\c!plaats}}}{#1}[#2]}
+
+\def\dodoordefinieren[#1][#2]%
+ {\copyparameters[\??dd#1][\??dd]
+ [\c!plaats,\c!kopletter,\c!letter,\c!kleur,\c!kopkleur,
+ \c!breedte,\c!hang,\c!monster,\c!voor,\c!tussen,\c!na,
+ \c!uitlijnen,\c!inspringen,\c!tekst,\c!afstand]%
+ \getparameters[\??dd#1]
+ [\s!do\c!commando=\v!nee,
+ \c!commando=\normal@@definitiewoord,
+ \c!lokaal=,
+ #2]%
+ \doifvalue{\??dd#1\c!plaats}{\v!boven}%
+ {\doassign[\??dd#1][\c!tussen={\blanko}]}%
+ \setvalue{\??dd#1}[##1]%
+ {\executedoordefinitie{#1}[##1]}%
+ \doifelsevalue{\??dd#1\s!do\c!commando}{\v!ja}
+ {\setvalue{\s!complex\??dd#1}[##1]%
+ {\@@somedefinitie{#1}[##1]{}}%
+ \setvalue{\s!complex\??dd\s!start#1}[##1]%
+ {\@@startdefinitie{#1}[##1]{}}}%
+ {\setvalue{\s!complex\??dd#1}[##1]%
+ {\dowithwargument{\@@somedefinitie{#1}[##1]}}%
+ \setvalue{\s!complex\??dd\s!start#1}[##1]%
+ {\dowithwargument{\@@startdefinitie{#1}[##1]}}}%
+ \setvalue{#1}%
+ {\complexorsimpleempty{\??dd#1}}%
+ \setvalue{\e!start#1}%
+ {\complexorsimpleempty{\??dd\s!start#1}}%
+ \setvalue{\e!stop#1}%
+ {\@@stopdefinitie{#1}}}%
+
+\def\doordefinieren%
+ {\dodoubleemptywithset\dodoordefinieren}
+
+%I n=Doornummeren
+%I c=\doornummeren,\steldoornummerenin
+%I c=\reset,\volgende,\vorige
+%I
+%I Het is mogelijk door een tekst heen genummerde opsommingen
+%I te gebruiken. Het beschikbare commando is:
+%I
+%I \doornummeren[naam][plaats=,niveaus=,conversie=,
+%I kopletter=,letter=,breedte=,monster=,tekst=,voor=,tussen=,
+%I na=,wijze=,blok=,scheider=,afsluiter=,hang=,links=,rechts=,
+%I sectienummer=,nummer=,koppeling=,uitlijnen=,inspringen]
+%I
+%I De naam bestaat uit letters.
+%I
+%I Na het commando 'doornummeren' zijn de volgende commando's
+%I beschikbaar:
+%I
+%I \naam
+%I \subnaam
+%I \subsubnaam
+%I
+%I waarbij naam staat voor de opgegeven naam.
+%P
+%I Dit commando komt in grote lijnen overeen met het
+%I commando \doordefinieren. Als de plaats 'links' is
+%I en de tekst is 'vraag', dan krijgen we na het
+%I geven van \vraag Wat ... was?:
+%I
+%I vraag 1 Wat zouden we krijgen als de plaats 'rechts'
+%I en de tekst 'antwoord' was?
+%I
+%I We kunnen een referentie meegeven, dus \vraag[ref]. Als
+%I we geen nummer willen, maar wel de tekst, dan is de
+%I aanroep \vraag[-]. Er wordt in dat geval niet opgehoogd.
+%I Hetzelfde kan worden bereikt door 'nummer' de waarde
+%I nee te geven.
+%P
+%I De wijze waarop het laatste niveau wordt weergegeven kan
+%I worden ingesteld met conversie: cijfers, letters, Letters,
+%I romeins en Romeins). Conversie heeft pas effect als ook
+%I niveaus is ingesteld (2 of 3, standaard 3).
+%I
+%I Voor of na de te nummeren tekst op te nemen commando's
+%I kunnen worden ingesteld. Ook kan een voor het nummer op te
+%I nemen tekst worden meegegeven en kan de plaats van de tekst
+%I en het nummer worden ingesteld (… la \doordefinieren!).
+%I
+%I Er kan een koppeling worden gelegd met een ander item. Zo
+%I kunnen bijvoorbeeld vragen worden gekoppeld aan antwoorden.
+%I Dergelijke koppelingen hebben pas betekenis bij
+%I interactieve teksten.
+%I
+%I Defaultwaarden kunnen worden ingesteld met het commando:
+%I
+%I \steldoornummerenin[instellingen]
+%P
+%I Het is mogelijk het nummeren opnieuw te starten met het
+%I commando:
+%I
+%I \reset<naam>
+%I
+%I en een (sub)nummer op te hogen met:
+%I
+%I \volgende<naam>
+%I \volgendesub<naam>
+%I
+%I Het tussentijds bijstellen van de instellingen is mogelijk
+%I met:
+%I
+%I \steldoornummerenin[naam][instellingen]
+
+\def\showdnpuretext#1%
+ {\strut\getvalue{\??dd#1\c!tekst} }
+
+\def\showdntext#1%
+ {\doifelsevaluenothing{\??dd#1\c!tekst}
+ {\ignorespaces}
+ {\strut\getvalue{\??dd#1\c!tekst}\fixedspace}}
+
+\def\showdnnummer#1%
+ {\voorafgaandenummer%
+ \nummer[\getvalue{\??dd#1\??dd\c!nummer}]}
+
+\def\showdnsubnummer#1%
+ {\showdnnummer{#1}%
+ \getvalue{\??dd#1\c!scheider}%
+ \nummer[\v!sub\getvalue{\??dd#1\??dd\c!nummer}]}
+
+\def\showdnsubsubnummer#1%
+ {\showdnsubnummer{#1}%
+ \getvalue{\??dd#1\c!scheider}%
+ \nummer[\v!sub\v!sub\getvalue{\??dd#1\??dd\c!nummer}]}
+
+\def\showdnsubsubsubnummer#1%
+ {\showdnsubsubnummer{#1}%
+ \getvalue{\??dd#1\c!scheider}%
+ \nummer[\v!sub\v!sub\v!sub\getvalue{\??dd#1\??dd\c!nummer}]}
+
+\def\domakednnummer#1#2%
+ {\getvalue{\??dd#2\c!links}%
+ \strut#1{#2}%
+ \getvalue{\??dd#2\c!rechts}}
+
+% #1=name #2=level #3=\show #4[#5]#6=#1[#2]#3 van definitie
+
+\def\special@@definitiewoord#1#2#3#4[#5]#6%
+ {\strut
+ \doifelsevalue{\??dd#1\c!nummer}{\v!nee}
+ {\!!doneafalse}
+ {\doifelse{#5}{-}
+ {\!!doneafalse}
+ {\!!doneatrue}}%
+ \if!!donea
+ \getvalue{\e!volgende#2#1}%
+ \iflocation
+ \bgroup
+ \setvalue{\??dd#1\c!sectienummer}{\v!ja}%
+ \protectconversion
+ \maakvoorafgaandenummer[#1]%
+ \xdef\internaldoornummer{#3{#1}}%
+ \rawreference{\s!num}{#1:\internaldoornummer}{}%
+ \egroup
+ \fi
+ \maakvoorafgaandenummer[#1]%
+ \hbox
+ {\def\kap##1{##1}% \domakednnumer gaat hier fout binnen kap
+ \doattributes
+ {\??dd#1\v!kop}
+ {\showdntext{#2#1}%
+ \domakednnummer#3{#1}%
+ \getvalue{\??dd#1\c!afsluiter}}%
+ \iflocation
+ \edef\localconnection{\getvalue{\??dd#1\c!koppeling}:\internaldoornummer}%
+ \doifreferencefoundelse{\localconnection}
+ {\in[\localconnection]}{}% genereert > of <
+ \fi}%
+ \rawreference{\s!num}{#5}{#3{#1}}%
+ \else
+ \ExpandBothAfter\doattributes
+ {\??dd#1\v!kop}
+ {\showdnpuretext{#2#1}}%
+ \rawreference{\s!num}{#5}{}%
+ \fi}
+
+% De macro's \??dd#1\c!lokaal en \??dd#1\c!commando leveren
+% de koppeling tussen \doornummeren en \doordefinieren. Deze
+% constructie is nodig omdat doornummeren geen argument
+% heeft en omdat subnummers niet worden genest binnen
+% het hogere niveau. Het commando \??dd#1\s!do\c!commando
+% moet in dat geval \v!ja zijn.
+
+\def\@@ddleftskip#1#2%
+ {\do@@ddleftskip{#1}{#2}{}}
+
+\def\do@@ddleftskip#1#2#3%
+ {\ExpandFirstAfter\processaction
+ [\getvalue{\??dd#2#1\c!inspringen}]
+ [ \v!nee=>,
+ \v!ja=>\dodo@@ddleftskip{#1}{#2}{#3}%
+ \doifnot{#2}{\v!sub#3}
+ {\do@@ddleftskip{#1}{#2}{\v!sub#3}},
+ \s!unknown=>\advance\leftskip by \getvalue{\??dd#2#1\c!inspringen}]}
+
+\def\dodo@@ddleftskip#1#2#3%
+ {\ExpandFirstAfter\processaction
+ [\getvalue{\??dd#3\v!sub#1\c!inspringen}]
+ [ \v!nee=>,
+ \v!ja=>\ExpandFirstAfter\doifnotinset
+ {\getvalue{\??dd#3#1\c!breedte}}{\v!passend,\v!ruim}
+ {\advance\leftskip by \getvalue{\??dd#3#1\c!breedte}},
+ \s!unknown=>\advance\leftskip by \commalistelement]}
+
+\def\@@ddresetsubsubsubnummer#1%
+ {\edef\doornummer{\getvalue{\??dd#1\??dd\c!nummer}}%
+ \resetnummer[\v!sub\v!sub\v!sub\doornummer]}
+
+\def\@@ddresetsubsubnummer#1%
+ {\@@ddresetsubsubsubnummer{#1}%
+ \resetnummer[\v!sub\v!sub\doornummer]}
+
+\def\@@ddresetsubnummer#1%
+ {\@@ddresetsubsubnummer{#1}%
+ \resetnummer[\v!sub\doornummer]}
+
+\def\@@ddresetnummer#1%
+ {\@@ddresetsubnummer{#1}%
+ \resetnummer[\doornummer]}
+
+\def\@@ddvolgendesubsubsubnummer#1[#2]%
+ {\edef\doornummer{\getvalue{\??dd#1\??dd\c!nummer}}%
+ \verhoognummer[\v!sub\v!sub\v!sub\doornummer]%
+ \rawreference{\s!num}{#2}{\showdnsubsubsubnummer{\doornummer}}}%
+
+\def\@@ddvolgendesubsubnummer#1[#2]%
+ {\@@ddresetsubsubsubnummer{#1}%
+ \verhoognummer[\v!sub\v!sub\doornummer]%
+ \rawreference{\s!num}{#2}{\showdnsubsubnummer{\doornummer}}}
+
+\def\@@ddvolgendesubnummer#1[#2]%
+ {\@@ddresetsubsubnummer{#1}%
+ \verhoognummer[\v!sub\doornummer]%
+ \rawreference{\s!num}{#2}{\showdnsubnummer{\doornummer}}}
+
+\def\@@ddvolgendenummer#1[#2]%
+ {\@@ddresetsubnummer{#1}%
+ \verhoognummer[\doornummer]%
+ \rawreference{\s!num}{#2}{\showdnnummer{\doornummer}}}
+
+\def\dodosteldoornummerenin[#1][#2]%
+ {\getparameters[\??dd#1][#2]%
+ \stelnummerin[#1][\c!conversie=\getvalue{\??dd#1\c!conversie}]} % see below
+
+\def\dosteldoornummerenin[#1][#2]%
+ {\ConvertToConstant\doifelse{#2}{}
+ {\getparameters[\??dn][#1]}
+ {\dodoubleargumentwithset\dodosteldoornummerenin[#1][#2]}}
+
+\def\steldoornummerenin%
+ {\dodoubleempty\dosteldoornummerenin}
+
+\def\dododoornummeren#1#2#3[#4][#5]#6%
+ {\dodoordefinieren[#3#1]%
+ [\s!do\c!commando=\v!ja,
+ \c!lokaal=\@@ddleftskip{#1}{#3},
+ \c!commando=\special@@definitiewoord{#1}{#3}{#6}]%
+ \copyparameters[\??dd#3#1][\??dn]
+ [\c!plaats,\c!kopletter,\c!letter,\c!kleur,\c!kopkleur,
+ \c!breedte,\c!nummer,\c!afstand,
+ \c!monster,\c!hang,\c!uitlijnen,\c!voor,\c!tussen,\c!na,
+ \c!niveaus,\c!wijze,\c!blokwijze,\c!scheider, % \c!conversie
+ \c!afsluiter,\c!sectienummer,\c!nummer,\c!inspringen]%
+ \ConvertToConstant\doifinstringelse{=}{#4}
+ {\getparameters[\??dd#3#1]%
+ [\c!tekst=#1,\??dd\c!nummer=#1,\c!conversie=,
+ \c!links=,\c!rechts=,\c!koppeling=,#4]}%
+ {\doifelsenothing{#4}
+ {\getparameters[\??dd#3#1]%
+ [\c!tekst=#1,\??dd\c!nummer=#1,\c!conversie=,
+ \c!links=,\c!rechts=,\c!koppeling=,#4]}%
+ {\copyparameters[\??dd#3#1][\??dd#3#4]
+ [\c!plaats,\c!kopletter,\c!letter,\c!kleur,\c!kopkleur,
+ \c!breedte,\c!nummer,\c!afstand,
+ \c!monster,\c!hang,\c!uitlijnen,\c!voor,\c!tussen,\c!na,
+ \c!links,\c!rechts,\c!koppeling,\c!inspringen]%
+ \getparameters[\??dd#3#1]
+ [\c!tekst=#1,\??dd\c!nummer=#4,\c!conversie=,#5]}}%
+ \ExpandBothAfter\doif{\getvalue{\??dd#3#1\??dd\c!nummer}}{#1}
+ {\definieernummer
+ [#3#1]
+ [\c!wijze=\getvalue{\??dd#1\c!wijze},
+ \c!blokwijze=\getvalue{\??dd#1\c!blokwijze},
+ \c!sectienummer=\getvalue{\??dd#1\c!sectienummer}]%
+ \doifvalue{\??dd#1\c!niveaus}{#2}% % for
+ {\doifsomething{\getvalue{\??dd#1\c!conversie}}% % old
+ {\stelnummerin[#3#1] % times
+ [\c!conversie=\getvalue{\??dd#1\c!conversie}]}}}% % sake
+ \setvalue{\s!reset#3#1}%
+ {\getvalue{\??dd\s!reset#3\c!nummer}{#1}}%
+ \setvalue{\s!complex\e!volgende#3#1}%
+ {\getvalue{\??dd\c!volgende#3\c!nummer}{#1}}%
+ \setvalue{\e!volgende#3#1}%
+ {\complexorsimpleempty{\e!volgende#3#1}}}
+
+\def\dodoornummeren[#1][#2][#3]%
+ {\dododoornummeren{#1}{1}{}[#2][#3]\showdnnummer
+ \dododoornummeren{#1}{2}{\v!sub}[#2][#3]\showdnsubnummer
+ \dododoornummeren{#1}{3}{\v!sub\v!sub}[#2][#3]\showdnsubsubnummer
+ \dododoornummeren{#1}{4}{\v!sub\v!sub\v!sub}[#2][#3]\showdnsubsubsubnummer}
+
+\def\doornummeren%
+ {\dotripleemptywithset\dodoornummeren}
+
+%I n=Doorspringen
+%I c=\doorspringen,\steldoorspringenin
+%I
+%I Inspringende opsommingen (bijvoorbeeld dialogen) kunnen
+%I worden gezet met:
+%I
+%I \doorspringen[naam][tekst=,scheider=,breedte=,letter=,
+%I kopletter=,voor=,na=]
+%I
+%I Na dit commando zijn de commando's \naam, \subnaam en
+%I \subsubnaam beschikbaar.
+%I
+%I Er kunnen standaardwaarden worden ingesteld met het
+%I commando:
+%I
+%I \steldoorspringenin[instellingen]
+%I
+%I Een aantal commando's kan worden omringt met de volgende
+%I commando's (wel lege regels ertussen!).
+%I
+%I \startdoorspringen
+%I \stopdoorspringen
+%P
+%I Het tussentijds bijstellen van de instellingen is mogelijk
+%I met:
+%I
+%I \steldoorspringenin[naam][instellingen]
+
+% Het default-mechanisme kan mooier: leegtest, enz.
+%
+% Werkprocedure buiten definitie
+
+\def\dodosteldoorspringenin[#1][#2]%
+ {\getparameters[\??ds#1][#2]}
+
+\def\dosteldoorspringenin[#1][#2]%
+ {\ConvertToConstant\doifelse{#2}{}
+ {\dodosteldoorspringenin[][#1]}
+ {\dodoubleargumentwithset\dodosteldoorspringenin[#1][#2]}}
+
+\def\steldoorspringenin%
+ {\dodoubleempty\dosteldoorspringenin}
+
+\def\startdoorspringen%
+ {\witruimte
+ \@@dsvoor
+ \pagina[\v!voorkeur]
+ \begingroup
+ \parskip=\!!zeropoint\relax}
+
+\def\stopdoorspringen%
+ {\endgroup
+ \@@dsna}
+
+\def\dododoorspringen#1#2#3%
+ {\par
+ \getvalue{\??ds#1\c!voor}%
+ \begingroup
+ \doifvaluenothing{\??ds#1\c!monster}
+ {\setvalue{\??ds#1\c!monster}%
+ {\getvalue{\??ds#1\c!tekst}}}%
+ \assignwidth
+ {\!!widtha}
+ {\getvalue{\??ds#1\c!breedte}}
+ {\doattributes
+ {\??ds#1\v!kop}
+ {\getvalue{\??ds#1\c!monster}\getvalue{\??ds#1\c!scheider}}}
+ {1em}%
+ \advance\!!widtha by \tfskipsize
+ \setbox2=\hbox to \!!widtha
+ {\doattributes
+ {\??ds#1\v!kop}
+ {\strut
+ \getvalue{\??ds#1\c!tekst}%
+ \hss
+ \getvalue{\??ds#1\c!scheider}%
+ \tfskip}}%
+ \parindent\!!zeropoint
+ \hskip#2\!!widtha\indent\box2%
+ \hangindent#3\!!widtha
+ \doattributes{\??ds#1}{}% #4}%
+ \AfterPar%
+ {\endgroup
+ \getvalue{\??ds#1\c!na}}%
+ \GetPar}
+
+\def\dodoorspringen[#1][#2]%
+ {\copyparameters[\??ds#1][\??ds]
+ [\c!tekst,\c!scheider,\c!breedte,\c!letter,\c!kleur,
+ \c!kopletter,\c!monster,\c!voor,\c!na]%
+ \getparameters[\??ds#1][#2]%
+ \setvalue{#1}%
+ {\dododoorspringen{#1}{0}{1}}%
+ \setvalue{\v!sub#1}%
+ {\dododoorspringen{#1}{1}{2}}%
+ \setvalue{\v!sub\v!sub#1}%
+ {\dododoorspringen{#1}{2}{3}}}
+
+\def\doorspringen%
+ {\dodoubleargumentwithset\dodoorspringen}
+
+%I n=Doorlabelen
+%I c=\doorlabelen,\verhoog,\huidige
+%I
+%I Het is mogelijk genummerde verwijzingen (bijvoorbeeld
+%I naar sheets of video's) in de tekst op te nemen met
+%I het commando:
+%I
+%I \doorlabelen[naam][tekst=,plaats=,voor=,na=,kopletter=]
+%I
+%I Na dit commando zijn de volgende commando's beschikbaar:
+%I
+%I \reset<naam>
+%I \verhoog<naam>
+%I \volgende<naam>[referentie]
+%I \huidige<naam>
+%I \in<naam>[referentie]
+%P
+%I Er kan een 'kopje' worden opgeropeen met het commando:
+%I
+%I \naam
+%I
+%I In dat geval worden de onder 'voor' en 'na' opgegeven
+%I commando's uitgevoerd.
+%I
+%I Als we voor naam 'sheet' invullen en voor tekst
+%I 'transparant' dan leidt het commando \huidigesheet tot
+%I de tekst 'transparant 1' en een volgende aanroep tot de
+%I tekst 'transparant 2'.
+
+\def\dodoorlabel[#1][#2]%
+ {\getvalue{\s!number#1\c!voor}%
+ \bgroup
+ %\ExpandFirstAfter\doifinset{\getvalue{\s!number#1\c!plaats}}{\v!marge,\v!inmarge}
+ % {\setvalue{\s!number#1\c!zetwijze}{\v!inmarge}}%
+ \doif{\getvalue{\s!number#1\c!plaats}}{\v!marge}
+ {\setvalue{\s!number#1\c!plaats}{\v!inmarge}}%
+ \doattributes{\s!number#1\v!kop}{\getvalue{\e!volgende#1}[#2]}%
+ \egroup
+ \getvalue{\s!number#1\c!na}}%
+
+\def\dovolgendedoorlabel[#1][#2]%
+ {\volgendenummer[#1][\s!lab][#2]}
+
+\def\dodoorlabelen[#1][#2]%
+ {\definieernummer
+ [#1]
+ [\c!voor=,
+ \c!na=,
+ \c!kopletter=,
+ \c!wijze=\@@nrwijze,
+ #2]%
+ \setvalue{#1}%
+ {\dodoubleempty\dodoorlabel[#1]}%
+ \setvalue{\s!reset#1}%
+ {\resetnummer[#1]}%
+ \setvalue{\e!verhoog#1}%
+ {\verhoognummer[#1]}%
+ \setvalue{\e!volgende#1}%
+ {\dodoubleempty\dovolgendedoorlabel[#1]}%
+ \setvalue{\c!huidige#1}%
+ {\huidigenummer[#1]}%
+ \setvalue{\c!in#1}[##1]% % weghalen
+ {\innummer[#1][##1]}% % weghalen
+ \setvalue{\c!op#1}[##1]% % weghalen
+ {\opnummer[#1][##1]}} % weghalen
+
+\def\doorlabelen%
+ {\dodoubleargumentwithset\dodoorlabelen}
+
+%I n=Uitlijnen
+%I c=\startuitlijnen,\steluitlijnenin,\steltolerantiein
+%I c=\regellinks,\regelrechts,\regelmidden,
+%I c=\woordrechts
+%I
+%I De regelval kan worden ingesteld met:
+%I
+%I \steluitlijnenin[instelling]
+%I
+%I waarbij de volgende instellingen mogelijk zijn:
+%I
+%I links links niet uitvullen
+%I midden links/rechts niet uitvullen = centreren
+%I rechts rechts niet uitvullen
+%I breedte uitvullen over breedte (default)
+%I beide wisselend (afhankelijk bladzijde)
+%I onder onderkant niet uitgelijnd (default)
+%I hoogte uitvullen over hoogte (op baseline)
+%I regel uitvullen over hoogte (binnen kader)
+%I reset uitvullen over breedte en hoogte
+%I
+%I In combinatie met links, midden en rechts kan 'ruim'
+%I worden opgegeven.
+%P
+%I Aanvullend zijn de volgende commando's beschikbaar:
+%I
+%I \startuitlijnen[instelling]
+%I \stopuitlijnen
+%I
+%I Een regel kan op verschillende manieren worden uitgelijnd
+%I met behulp van de commando's:
+%I
+%I \regellinks{tekst}
+%I \regelrechts{tekst}
+%I \regelmidden{tekst}
+%I
+%I Aan het eind van een paragraaf kan een stukje tekst
+%I worden geplaatst met: \woordrechts{ziezo}
+%P
+%I De tolerantie waarbinnen het uitlijnen plaatsvindt kan
+%I worden ingesteld met:
+%I
+%I \steltolerantiein[instelling]
+%I
+%I Mogelijke waarden zijn: zeerstreng, streng, soepel en
+%I zeersoepel.
+%I
+%I Standaard heeft de tolerantie betrekking op horizontaal
+%I uitlijnen. Vertikaal kan het uitlijnen worden beinvloed
+%I door het trefwoord 'vertikaal' mee te geven. Standaard
+%I geldt [vertikaal,streng] en [horizontaal,zeerstreng].
+
+\definetwopasslist{\s!paragraph}
+
+\newcounter\nofraggedparagraphs
+
+\def\doparagraphreference% looks very much like domarginreference
+ {\doglobal\increment\nofraggedparagraphs\relax
+ \edef\writeparref%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!paragraph}%
+ {\nofraggedparagraphs}%
+ {\noexpand\realfolio}}}%
+ \writeparref}
+
+\def\setraggedparagraphmode#1#2%
+ {\ifinner
+ \ifdubbelzijdig
+ \gettwopassdata{\s!paragraph}%
+ \iftwopassdatafound
+ \ifodd\twopassdata#1\else#2\fi
+ \else
+ \ifodd\realfolio#1\else#2\fi
+ \fi
+ \doparagraphreference
+ \else
+ #2\relax
+ \fi
+ \else
+ #2\relax
+ \fi}
+
+% De onderstaande macro's zijn opgenomen in Plain TeX.
+%
+% \def\raggedright%
+% {\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
+%
+% \def\ttraggedright%
+% {\tttf\rightskip\z@ plus2em\relax}
+%
+% \newif\ifr@ggedbottom
+%
+% \def\raggedbottom%
+% {\topskip 10\p@ plus60\p@ \r@ggedbottomtrue}
+%
+% \def\normalbottom%
+% {\topskip 10\p@ \r@ggedbottomfalse}
+%
+% en worden hieronder wat aangepast.
+
+\newif\ifn@rmalbottom
+\newif\ifr@ggedbottom
+\newif\ifb@selinebottom
+
+\def\normalbottom%
+ {\n@rmalbottomtrue
+ \r@ggedbottomfalse
+ \b@selinebottomfalse
+ \settopskip}
+
+\def\raggedbottom%
+ {\n@rmalbottomfalse
+ \r@ggedbottomtrue
+ \b@selinebottomfalse
+ \settopskip}
+
+\def\baselinebottom%
+ {\n@rmalbottomfalse
+ \r@ggedbottomfalse
+ \b@selinebottomtrue
+ \settopskip}
+
+% \hyphenpenalty = ( 2.5 * \hsize ) / \raggedness
+% \tolerance >= 1500 % was 200
+% \raggedness = 2 .. 6\korpsgrootte
+
+\def\leftraggedness {2\korpsgrootte}
+\def\rightraggedness {2\korpsgrootte}
+\def\middleraggedness {6\korpsgrootte}
+
+\def\setraggedness#1%
+ {\ifnum\tolerance<1500\relax % kleinere waarden
+ \tolerance=1500\relax % geven ongewenste
+ \fi % effecten
+ \spaceskip=2.5\hsize % voorkomt conflict
+ \xspaceskip=#1\relax % met \dimen0/2 en
+ \divide\spaceskip by \xspaceskip % deze skips worden
+ \hyphenpenalty=\spaceskip} % toch al aangepast
+
+\def\setraggedskips#1#2#3#4#5#6%
+ {\leftskip=1\leftskip\!!plus#1\relax % zie: Tex By Topic 8.1.3
+ \rightskip=1\rightskip\!!plus#2\relax % zie: Tex By Topic 8.1.3
+ \spaceskip#3\relax
+ \xspaceskip#4\relax
+ \parfillskip\!!zeropoint\!!plus#5\relax
+ \parindent#6\relax}
+
+\def\notragged%
+ {\setraggedskips{0em}{0em}{0em}{0em}{1fil}{\parindent}} % {\voorwit}}
+
+\def\raggedleft%
+ {\setraggedness\leftraggedness
+ \setraggedskips{\leftraggedness}{0em}{.3333em}{.5em}{0em}{0em}}
+
+\def\raggedcenter%
+ {\setraggedness\middleraggedness
+ \setraggedskips{\middleraggedness}{\middleraggedness}{.3333em}{.5em}{0em}{0em}}
+
+\def\raggedright%
+ {\setraggedness\rightraggedness
+ \setraggedskips{0em}{\rightraggedness}{.3333em}{.5em}{0em}{\parindent}} % {\voorwit}}
+
+\def\veryraggedleft%
+ {\setraggedskips{1fil}{0em}{.3333em}{.5em}{0em}{0em}}
+
+\def\veryraggedcenter%
+ {\setraggedskips{1fil}{1fil}{.3333em}{.5em}{0em}{0em}}
+
+\def\veryraggedright%
+ {\setraggedskips{0em}{1fil}{.3333em}{.5em}{0em}{\parindent}} % {\voorwit}}
+
+\def\ttraggedright%
+ {\tttf
+ \setraggedskips{0em}{\rightraggedness}{0em}{0em}{0em}{\parindent}} % {\voorwit}}
+
+\def\dosteluitlijnenin[#1]%
+ {\doifinsetelse{\v!ruim}{#1}{\!!doneatrue}{\!!doneafalse}%
+ \processallactionsinset
+ [#1]
+ [ \v!regel=>\baselinebottom,
+ \v!onder=>\raggedbottom,
+ \v!hoogte=>\normalbottom,
+ \v!breedte=>\notragged,
+ \v!binnen=>\setraggedparagraphmode\raggedleft\raggedright,
+ \v!buiten=>\setraggedparagraphmode\raggedright\raggedleft,
+ \v!links=>\if!!donea\veryraggedleft\else\raggedleft\fi,
+ \v!rechts=>\if!!donea\veryraggedright\else\raggedright\fi,
+ \v!midden=>\if!!donea\veryraggedcenter\else\raggedcenter\fi,
+ \v!reset=>\notragged
+ \normalbottom]}
+
+\def\steluitlijnenin%
+ {\dosingleargument\dosteluitlijnenin}
+
+\def\startuitlijnen%
+ {\bgroup
+ \steluitlijnenin}
+
+\def\stopuitlijnen
+ {\par
+ \egroup}
+
+%\def\regellinks#1%
+% {\noindent\leftline{{\strut#1}}}
+%
+%\def\regelrechts#1%
+% {\noindent\rightline{{#1\strut}}}
+%
+%\def\regelmidden#1%
+% {\noindent\centerline{{\strut#1}}}
+
+\def\doalignline#1#2%
+ {\dowithnextbox
+ {\noindent\hbox to \hsize
+ {\strut#1\unhbox\nextbox#2}}
+ \hbox}
+
+\def\regellinks {\doalignline \relax \hss }
+\def\regelrechts {\doalignline \hss \relax}
+\def\regelmidden {\doalignline \hss \hss }
+
+\def\doregelplaats#1%
+ {\getvalue{regel\interfaced{#1}}}
+
+\def\dosteltolerantiein[#1]%
+ {\doifinsetelse{\v!vertikaal}{#1}%
+ {\processfirstactioninset
+ [#1]
+ [\v!zeerstreng=>\def\bottomtolerance{},
+ \v!streng=>\def\bottomtolerance{.050},
+ \v!soepel=>\def\bottomtolerance{.075},
+ \v!zeersoepel=>\def\bottomtolerance{.100}]}%
+ {\processfirstactioninset
+ [#1]
+ [\v!zeerstreng=>\tolerance=200,
+ \v!streng=>\tolerance=1500,
+ \v!soepel=>\tolerance=3000,
+ \v!zeersoepel=>\tolerance=4500]}}
+
+\def\steltolerantiein%
+ {\dosingleargument\dosteltolerantiein}
+
+\def\woordrechts%
+ {\groupedcommand{\hfill\hbox}{\parfillskip\!!zeropoint}}
+
+%I n=Margeteksten
+%I c=\inmarge,\inlinker,\inrechter,\stelinmargein
+%I c=\margetitel,\figuurinmarge
+%I c=\oplinker
+%I
+%I Een paragraaf kan worden ingeluid met een tekst in
+%I de marge:
+%I
+%I \inmarge{tekst}
+%I \inlinker{tekst}
+%I \inrechter{tekst}
+%I
+%I Met \\ kan binnen een margetekst naar een volgende regel
+%I worden gesprongen.
+%P
+%I Het onderstaande commando kan gebruikt worden om een
+%I paragraafaanduiding in de marge te plaatsen. Het commando
+%I moet aan het begin van de paragraaf staan. Er wordt
+%I gecontroleerd of een en ander nog op de bladzijde past.
+%I
+%I \margetitel{tekst}
+%I
+%I Tussen \margetitel{tekst} en de volgende alinea mag,
+%I omwille van de overzichtelijkheid, een lege regels staan.
+%I Als dit commando wordt gebruikt na een commando als
+%I \paragraaf, kan het controlemechanisme leiden tot een
+%I ongewenste overgang naar een nieuwe bladzijde. In dat
+%I geval kan beter het volgende commando worden gebruikt.
+%I
+%I \margewoord{tekst}
+%I
+%I Dit commando komt overeen met \inmarge, alleen is bij
+%I \margewoord de lege regel toegestaan.
+%P
+%I Er kan eventueel voor {tekst} een [referentie] worden
+%I meegegeven. In dat geval kan worden verwezen naar het
+%I paginanummer waarop het margewoord staat.
+%I
+%I Als TeX twijfelt in welke marge het woord moet staan, is
+%I een tweede verwerkingsslag nodig. Als een margewoord bij
+%I herhaling verkeerd wordt geplaatst, dan kan het
+%I automatisme worden verstoord door [+] mee te geven. Een
+%I margewoord kan lager worden gezet met [laag]. Combinaties
+%I kunnen ook:
+%I
+%I \margewoord[+,laag][referentie]{woord}
+%P
+%I De wijze van weergeven kan worden ingesteld met het
+%I commando:
+%I
+%I \stelinmargein[letter=,plaats=,voor=,na=,uitlijnen=]
+%I
+%I Als plaats kan links, rechts of beide worden meegegeven. In
+%I het laatste geval hangt de plaats af van het
+%I enkel/dubbelzijdig zetten.
+%I
+%I Uitlijnen kent twee instellingen: 'ja' en 'nee'. Inhet
+%I eerste geval (default) worden de margewoorden tegen de
+%I kantlijn geplaatst.
+%P
+%I Vooruitlopend op meer commando's is er al vast het
+%I commando:
+%I
+%I \oplinker{tekst}
+%I
+%I Dit commando kan bijvoorbeeld worden gebruikt binnen
+%I een midden-uitgelijnde tekst. Het commando is nog niet
+%I definitief en robuust.
+
+% %P
+% %I Aanvullend zijn commando's beschikbaar om figuren in
+% %I de marge te plaatsen:
+% %I
+% %I \figuurinmarge{figuur}
+% %I \figuurinlinker{figuur}
+% %I \figuurinrechter{figuur}
+
+%T n=margetitel
+%T m=mar
+%T a=m
+%T
+%T \margetitel{?}
+%T
+
+\newif\iflowinmargin
+
+\def\stelinmargein%
+ {\dodoubleempty\dostelinmargein}
+
+\def\dostelinmargein[#1][#2]%
+ {\ifsecondargument
+ \doifundefinedelse{\??im#1\c!offset}
+ {\presetlocalframed
+ [\??im#1]%
+ \getparameters
+ [\??im#1]
+ [\c!kader=\v!uit,
+ \c!offset=\v!overlay,
+ \c!regel=1,
+ \c!scheider=,
+ \c!breedte=\v!ruim,
+ \c!afstand=\!!zeropoint,
+ \c!letter=\@@imletter,
+ \c!kleur=\@@imkleur,
+ \c!plaats=\@@implaats,
+ \c!uitlijnen=\@@imuitlijnen,
+ \c!voor=\@@imvoor,
+ \c!na=\@@imna,
+ #2]}
+ {\getparameters[\??im#1][#2]}%
+ \else
+ \getparameters[\??im][#1]%
+ \fi}
+
+\let\margetekstafstand = \!!zeropoint
+\def\margetekstregels {1}
+\def\margetekstnummer {0}
+\let\margetekstscheider = \empty
+
+\def\maakmargetekstblok#1#2#3#4#5#6%
+ {#4\relax
+ \bgroup
+ \mindermeldingen
+ \hsize#1\relax
+ \ifnum\margetekstnummer=0
+ \def\margetekstnummer{#2}%
+ \fi
+ \processaction
+ [\getvalue{\??im\margetekstnummer\c!uitlijnen}]
+ [ \v!ja=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2},
+ \v!binnen=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2},
+ \v!buiten=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#3},
+ \s!default=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2}]%
+ \setbox0=\vbox\localframed
+ [\??im\margetekstnummer]
+ [\c!strut=\v!nee]
+ {\decrement\margetekstregels
+ \@@imvoor
+ \doattributes{\??im\margetekstnummer}
+ {\dorecurse{\margetekstregels}{\strut\\}%
+ \begstrut#6\endstrut\endgraf}%
+ \@@imna}%
+ \ht0=\ht\strutbox
+ \box0
+ \egroup
+ #5\relax}
+
+\def\plaatsmargetekstscheider%
+ {\ifnum\margincontent>0
+ \bgroup
+ \dimen0=\margetekstregels\lineheight
+ \advance\dimen0 by -\lineheight
+ \lower\dimen0\hbox{\margetekstscheider}%
+ \egroup
+ \fi}
+
+\def\linkermargetekstblok#1%
+ {\maakmargetekstblok
+ {\linkermargebreedte}
+ {\v!links}{\v!rechts}
+ {\llap{\plaatsmargetekstscheider}}{\hskip\margetekstafstand}
+ {#1}}
+
+\def\rechtermargetekstblok#1%
+ {\maakmargetekstblok
+ {\rechtermargebreedte}
+ {\v!rechts}{\v!links}
+ {\hskip\margetekstafstand}{\rlap{\plaatsmargetekstscheider}}
+ {#1}}
+
+\def\doplacemargintext#1#2#3%
+ {\strut
+ \setbox0=\hbox{#1}%
+ \dimen0=\ht0
+ \advance\dimen0 by \dp0
+ \ifdim\dimen0>\marginheight
+ \global\marginheight=\dimen0
+ \fi
+ \setbox0=\hbox
+ {#2{\hskip#3\strut\iflowinmargin\else\raise\dp\strutbox\fi\box0}}%
+ \ht0=\!!zeropoint
+ \dp0=\!!zeropoint
+ \vadjust{\box0}}
+
+\def\doinlinker#1%
+ {\doplacemargintext
+ {\linkermargetekstblok{#1}\hskip\linkermargeafstand}
+ \llap\!!zeropoint}
+
+\def\doinrechter#1%
+ {\doplacemargintext
+ {\hskip\rechtermargeafstand\rechtermargetekstblok{#1}}
+ \rlap\hsize}
+
+\newcounter \nofmarginnotes
+\newif \iftrackingmarginnotes
+\newif \ifrightmargin % documenteren
+
+\definetwopasslist{\s!margin}
+
+\def\domarginreference%
+ {\doglobal\increment\nofmarginnotes\relax
+ \edef\writemarref%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!margin}%
+ {\nofmarginnotes}%
+ {\noexpand\realfolio}}}%
+ \writemarref}
+
+\def\dodoinmargenormal#1#2#3#4%
+ {\iffirstsidefloatparagraph\geenwitruimte\fi % zo laat mogelijk
+ \ifodd#1\relax
+ \rightmargintrue
+ #3{#4}%
+ \else
+ \rightmarginfalse
+ #2{#4}%
+ \fi}
+
+\def\doinmargenormal#1#2#3%
+ {\bgroup
+ \iftrackingmarginnotes
+ \gettwopassdata{\s!margin}%
+ \iftwopassdatafound
+ \dodoinmargenormal\twopassdata#1#2{#3}%
+ \else
+ \dodoinmargenormal\realfolio#1#2{#3}%
+ \fi
+ \domarginreference
+ \else
+ \dodoinmargenormal\realfolio#1#2{#3}%
+ \fi
+ \egroup}
+
+\def\doinmargereverse#1#2#3%
+ {\dodoinmargenormal\realfolio#2#1{#3}}
+
+\def\doinmarge[#1][#2][#3][#4][#5]#6%
+ {\doifcommonelse{+,-,\v!laag}{#4}
+ {\dodoinmarge[#1][#2][#3][#4][#5]{#6}}
+ {\dodoinmarge[#1][#2][#3][][#4]{#6}}%
+ \ignorespaces}
+
+\def\dodoinmarge[#1][#2][#3][#4][#5]#6%
+ {\ignorespaces
+ \doifinsetelse{\v!laag}{#4}
+ {\lowinmargintrue}
+ {\lowinmarginfalse}%
+ \processaction
+ [#1]
+ [ \v!links=>#2{#6},
+ \v!rechts=>#3{#6},
+ \s!unknown=>\ifdubbelzijdig
+ \doifcommonelse{+,-}{#4}
+ {\doinmargereverse#2#3{#6}}
+ {\doinmargenormal#2#3{#6}}%
+ \else
+ #2{#6}%
+ \fi]%
+ \rawpagereference{\s!mar}{#5}%
+ \ignorespaces}
+
+\def\inlinker%
+ {\indentation\doquintupleempty\doinmarge
+ [\c!links][\doinlinker][\doinrechter]}
+
+\def\inrechter%
+ {\indentation\doquintupleempty\doinmarge
+ [\c!rechts][\doinlinker][\doinrechter]}
+
+\def\inmarge%
+ {\doquintupleempty\doinmarge
+ [\@@implaats][\doinlinker][\doinrechter]}
+
+\def\inanderemarge%
+ {\doquintupleempty\doinmarge
+ [\@@implaats][\doinrechter][\doinlinker]}
+
+\newcounter\margincontent
+
+\def\flushmargincontent% [#1][#2]#3% hier plaats 'globaal' (geen 1,2 enz)
+ {\doinmarge[\@@implaats][\doinlinker][\doinrechter]} % [#1][#2]{#3}}
+
+\newdimen\marginheight
+
+\let\restoreinterlinepenalty=\relax
+
+\def\flushmargincontents% % links + rechts
+ {\restoreinterlinepenalty
+ \ifnum\margincontent>0
+ \bgroup
+ \forgetall
+ \global\marginheight\!!zeropoint
+ \dorecurse{\margincontent}
+ {\bgroup
+ \edef\margetekstafstand {\getvalue{\??im\recurselevel\c!afstand}}%
+ \edef\margetekstregels {\getvalue{\??im\recurselevel\c!regel}}%
+ \edef\margetekstscheider{\getvalue{\??im\recurselevel\c!scheider}}%
+ \let\margetekstnummer=\recurselevel
+ \getvalue{\??im\recurselevel}%
+ \global\setvalue{\??im\recurselevel}{}%
+ \egroup}%
+ \ifdim\marginheight>\lineheight % This is something real dirty!
+ \advance\marginheight by \pagetotal
+ \advance\marginheight by \lineheight % a sort of bonus
+ \ifdim\marginheight>\pagegoal
+ \xdef\restoreinterlinepenalty%
+ {\global\let\restoreinterlinepenalty\relax
+ \global\interlinepenalty=\the\interlinepenalty}%
+ \global\interlinepenalty=10000
+ \fi
+ \else % We need the above because interlinepenalties overrule vadjusted \nobreaks.
+ %\vadjust
+ % {\forgetall
+ % \global\advance\marginheight by \lineheight
+ % \global\divide\marginheight by \lineheight
+ % \dorecurse{\number\marginheight}
+ % {\nobreak\vskip\lineheight}%
+ % \kern-\number\marginheight\lineheight}%
+ \vadjust{\nobreak}%
+ \fi
+ \doglobal\newcounter\margincontent
+ \egroup
+ \fi}
+
+\def\complexmargewoord[#1][#2]#3%
+ {\doglobal\increment\margincontent
+ \stelinmargein[\margincontent][]%
+ \global\setvalue{\??im\margincontent}%
+ {\flushmargincontent[#1][#2]{#3}}}
+
+\def\margewoord%
+ {\dodoubleempty\complexmargewoord}
+
+\def\margetitel%
+ {\margewoord}
+
+\def\margetekst%
+ {\margewoord}
+
+\def\margewoordpositie[#1]#2%
+ {\ifnum#1>\margincontent
+ \xdef\margincontent{#1}%
+ \fi
+ \stelinmargein[#1][]%
+ \global\setvalue{\??im#1}%
+ {\flushmargincontent[][]{#2}}}
+
+\def\oplinker#1%
+ {\strut
+ \vadjust
+ {\mindermeldingen
+ \setbox0=\vtop{\forgetall\strut#1}%
+ \getboxheight\dimen0\of\box0
+ \vskip-\dimen0\
+ \box0}}
+
+%D \macros
+%D {inleftside,inleftmargin,inrightmargin,inrightside}
+%D {}
+%D
+%D The fast and clean way of putting things in the margin is
+%D using \type{\rlap} or \type{\llap}. Unfortunately these
+%D macro's don't handle indentation, left and right skips. We
+%D therefore embed them in some macro's that (force and)
+%D remove the indentation and restore it afterwards.
+
+\def\inleftmargin#1%
+ {\pushindentation
+ \llap{#1\hskip\leftskip\hskip\linkermargeafstand}%
+ \popindentation
+ \ignorespaces}
+
+\def\inrightmargin#1%
+ {\pushindentation
+ \rlap{\hskip\hsize\hskip-\rightskip\hskip\rechtermargeafstand#1}%
+ \popindentation
+ \ignorespaces}
+
+\def\inleftside#1%
+ {\inleftmargin
+ {#1\relax
+ \hskip\linkermargebreedte
+ \hskip\pageseparation
+ \hskip\linkerrandafstand}}
+
+\def\inrightside#1%
+ {\inrightmargin
+ {\hskip\rechtermargebreedte
+ \hskip\rechterrandafstand
+ \hskip\pageseparation
+ #1}}
+
+%D We want to keep things efficient and therefore only handle
+%D situations like:
+%D
+%D \startbuffer
+%D \inleftside {fine} some text \par
+%D \strut \inleftmargin {fine} some text \par
+%D \noindent \inrightmargin {fine} some text \par
+%D \noindent \strut \inrightside {fine} some text \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D which looks like:
+%D
+%D \bgroup
+%D \haalbuffer
+%D \parindent 30pt
+%D \haalbuffer
+%D \egroup
+
+%D \macros
+%D {pushindentation,popindentation}
+%D
+%D The pushing and popping is done by:
+
+\newbox\indentationboxA
+\newbox\indentationboxB
+
+\def\pushindentation%
+ {\bgroup
+ \ifhmode
+ \unskip
+ \setbox\indentationboxA=\lastbox % get \strut if present
+ \unskip
+ \setbox\indentationboxB=\lastbox % get \indent generated box
+ \unskip
+ \else
+ \hskip\!!zeropoint % switch to horizontal mode
+ \unskip
+ \setbox\indentationboxA=\lastbox % get \indent generated box
+ \setbox\indentationboxB=\box\voidb@x
+ \fi}
+
+\def\popindentation%
+ {\box\indentationboxB\box\indentationboxA % put back the boxes
+ \egroup}
+
+%D The only complication lays in \type{\strut}. In \PLAIN\
+%D \TEX\ a \type{\strut} is defined as:
+%D
+%D \starttypen
+%D \def\strut%
+%D {\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
+%D \stoptypen
+%D
+%D But what is a \type{\strut}? Normally it's a rule of width
+%D zero, but when made visual, it's a rule and a negative skip.
+%D The mechanism for putting things in the margins described
+%D here cannot handle this situation very well. One
+%D characteristic of \type{\strut} is that the \type{\unhcopy}
+%D results in entering horizontal mode, which in return leads
+%D to some indentation.
+%D
+%D To serve our purpose a bit better, the macro \type{\strut}
+%D can be redefined as:
+%D
+%D \starttypen
+%D \def\strut%
+%D {\relax\ifmmode\else\hskip0pt\fi\copy\strutbox}
+%D \stoptypen
+%D
+%D Or more compatible:
+%D
+%D \starttypen
+%D \def\strut%
+%D {\relax\ifmmode
+%D \copy\strutbox
+%D \else
+%D \bgroup\setbox\strutbox=\normalhbox{\box\strutbox}\unhcopy\strutbox\egroup
+%D \fi}
+%D \stoptypen
+%D
+%D In \CONTEXT\ however we save some processing time by putting
+%D an extra \type{\hbox} around the \type{\strutbox}.
+
+% dit zijn voorlopig lokale commando's
+
+\def\woordinlinker {\inlinkermarge}
+\def\woordinrechter{\inrechtermarge}
+
+\def\woordinmarge%
+ {\doquintupleempty\doinmarge
+ [\@@implaats][\woordinlinker][\woordinrechter]}
+
+%I n=Paginanummer
+%I c=\stelpaginanummerin,\stelsubpaginanummerin
+%I
+%I Het paginanummer kan worden ingesteld met het commando:
+%I
+%I \stelpaginanummerin[nummer=,status=]
+%I
+%I Het nummeren kan gedurende een of meerdere pagina's worden
+%I stilgezet door in plaats van een nummer start, stop of
+%I handhaaf mee te geven.
+%I
+%I Het paginanummer is oproepbaar met:
+%I
+%I \paginanummer
+%I
+%I en het totaal aantal paginanummers met:
+%I
+%I \totaalaantalpaginas
+%P
+%I Er zijn subnummers beschikbaar. De wijze van nummeren
+%I wordt ingesteld met:
+%I
+%I \stelsubpaginanummerin[wijze=,status=]
+%I
+%I De status kan 'stop', 'start' of 'geen' zijn. In het
+%I laatste geval wordt gewoon doorgenummerd, maar wordt het
+%I nummer niet geplaatst.
+%I
+%I Standaard wordt 'perdeel' genummerd. De subnummers zijn
+%I oproepbaar met:
+%I
+%I \subpaginanummer
+%I \aantalsubpaginas
+
+% Standaard is \count0 in Plain TeX de paginateller. Omwille
+% van de afhandeling van lokaal nummeren, definieren we
+% echter een eigen nummer.
+
+\definieernummer
+ [\s!page]
+ [\c!conversie=\@@nmconversie,
+ \c!wijze=\@@nmwijze,
+ \c!status=\@@nmstatus,
+ \c!start=1]
+
+\def\dostelpaginanummerin[#1]%
+ {\getparameters
+ [\??pn]
+ [\c!status=\v!start,
+ #1]%
+ \doifinstringelse{\c!nummer}{#1}
+ {\setnummer[\s!page]{\@@pnnummer}%
+ \setuserpageno{\ruwenummer[\s!page]}}%
+ {}}
+
+\def\stelpaginanummerin%
+ {\dosingleargument\dostelpaginanummerin}
+
+\def\verlaagpaginanummer%
+ {\doif{\@@pnstatus}{\v!start}
+ {\verlaagnummer[\s!page]%
+ \setuserpageno{\ruwenummer[\s!page]}}}
+
+\def\verhoogpaginanummer%
+ {\processaction
+ [\@@pnstatus]
+ [ \v!start=>{\verhoognummer[\s!page]%
+ \setuserpageno{\ruwenummer[\s!page]}},
+ \v!handhaaf=>{\doassign[\??pn][\c!status=\v!start]}]}
+
+\def\checkpagecounter%
+ {\checknummer{\s!page}}
+
+%I n=Pagina
+%I c=\pagina
+%I
+%I Het volgende commando kan worden gebruikt om pagina's af
+%I te dwingen of blokkeren:
+%I
+%I \pagina[instelling]
+%I
+%I Waarbij als instelling kan worden gegeven:
+%I
+%I ja een geforceerde paginaovergang met \vfill
+%I opmaak een geforceerde paginaovergang zonder \vfill
+%I nee bij voorkeur geen paginaovergang
+%I voorkeur bij voorkeur de paginaovergang hier (3)
+%I grotevoorkeur bij voorkeur de paginaovergang hier (7)
+%I links ga naar een linker pagina
+%I rechts ga naar een rechter pagina
+%I leeg een lege pagina
+%I blokkeer blokkeer ja ... grotevoorkeur (1 pagina)
+%I reset het blokkering ja ... grotevoorkeur op
+%I
+%I Als geen instelling wordt meegegeven (\pagina), wordt een
+%I overgang geforceerd. Als een nummer wordt meegegeven, wordt
+%I naar de opgegeven pagina gegaan.
+
+\newif\ifpaginageblokkeerd
+\paginageblokkeerdfalse
+
+\def\testpagina[#1][#2]%
+ {\global\!!doneafalse
+ \ifpaginageblokkeerd
+ \else
+ \ifdim\pagetotal<\pagegoal
+ \dimen0=\lineheight
+ \multiply\dimen0 by #1\relax
+ \advance\dimen0 by \pagetotal
+ \ifdim\lastskip<\parskip
+ \advance\dimen0 by \parskip
+ \fi
+ \advance\dimen0 by #2\relax
+ \ifdim\dimen0>.99\pagegoal
+ \penalty-\!!tenthousand\relax
+ \global\!!doneatrue
+ \fi
+ \else
+ \goodbreak
+ \fi
+ \fi}
+
+\let\resetcurrentsectionmarks=\relax
+
+% was: \resetsectionmarks[\firstsection], zie \handelpaginaaf
+
+% dummy page & insert check
+%
+% \def\complexpagina[#1]%
+% {\flushfootnotes
+% \processaction
+% [#1]
+% [ \v!reset=>\global\paginageblokkeerdfalse,
+% \v!blokkeer=>\global\paginageblokkeerdtrue,
+% \v!ja=>\ifpaginageblokkeerd\else
+% \ejectinsert
+% \ejectpage
+% \ifbinnenkolommen
+% \ejectpage % anders soms geen overgang
+% \fi
+% \fi,
+% \v!opmaak=>\ifpaginageblokkeerd\else
+% \eject
+% \fi,
+% \v!nee=>\ifpaginageblokkeerd\else
+% \nobreak
+% \fi,
+% \v!voorkeur=>{\ifpaginageblokkeerd\else
+% \ifbinnenkolommen
+% \goodbreak
+% \else
+% \testpagina[3][\!!zeropoint]%
+% \fi
+% \fi},
+% \v!grotevoorkeur=>{\ifpaginageblokkeerd\else
+% \ifbinnenkolommen
+% \goodbreak
+% \else
+% \testpagina[5][\!!zeropoint]%
+% \fi
+% \fi},
+% \v!leeg=>{\ejectinsert
+% \ejectpage
+% \doifnotvalue{\??tk\v!hoofd\v!tekst\c!status}{\v!stop}
+% {\stelhoofdin[\c!status=\v!leeg]}%
+% \doifnotvalue{\??tk\v!voet\v!tekst\c!status}{\v!stop}
+% {\stelvoetin[\c!status=\v!leeg]}%
+% \hardespatie
+% \vfill
+% \ejectpage},
+% \v!links=>{\ejectinsert
+% \superejectpage
+% \doifbothsidesoverruled
+% \orsideone
+% \resetcurrentsectionmarks
+% \hardespatie
+% \vfill
+% \ejectpage
+% \orsidetwo
+% \od},
+% \v!rechts=>{\ejectinsert
+% \superejectpage
+% \doifbothsidesoverruled
+% \orsideone
+% \orsidetwo
+% \resetcurrentsectionmarks
+% \hardespatie
+% \vfill
+% \ejectpage
+% \od},
+% \v!even=>\doifonevenpaginaelse
+% {\ejectinsert\ejectpage}{},
+% \v!oneven=>\doifonevenpaginaelse
+% {}{\ejectinsert\ejectpage},
+% \v!viertal=>{\ifdubbelzijdig
+% \!!counta=\realpageno
+% \!!countb=\realpageno
+% \divide\!!counta by 4\relax
+% \divide\!!countb by 2\relax
+% \ifnum\!!counta=\!!countb\relax
+% \else
+% \pagina
+% \pagina[\v!leeg]%
+% \pagina[\v!leeg]%
+% \fi
+% \fi},
+% \v!laatste=>{\ejectinsert
+% \superejectpage
+% \doifbothsidesoverruled
+% \naastpagina
+% \orsideone
+% \orsidetwo
+% \ifodd\realpageno \else
+% \stelvoetin[\c!status=\v!leeg]%
+% \stelhoofdin[\c!status=\v!leeg]%
+% \hardespatie
+% \vfill
+% \ejectpage
+% \fi
+% \od},
+% \s!unknown=>\doifnumberelse{#1}
+% {\ejectinsert
+% \ejectpage
+% \loop
+% \ifnum\userpageno<#1\relax
+% \hardespatie
+% \vfill
+% \ejectinsert
+% \ejectpage
+% \repeat}
+% {}]}
+
+\def\insertdummypage%
+ {\ejectinsert % beter
+ \hardespatie
+ \vfill
+ \ejectpage}
+
+\def\docomplexpagina[#1]%
+ {\flushfootnotes
+ \bgroup
+ \processallactionsinset
+ [#1]
+ [ \v!reset=>\global\paginageblokkeerdfalse,
+ \v!blokkeer=>\global\paginageblokkeerdtrue,
+ \v!ja=>\ifpaginageblokkeerd\else
+ \ejectinsert
+ \ejectpage
+ \ifbinnenkolommen
+ \ejectpage % anders soms geen overgang
+ \fi
+ \fi,
+ \v!opmaak=>\ifpaginageblokkeerd\else
+ \eject
+ \fi,
+ \v!blanko=>\pagebodyornamentsfalse,
+ \v!nee=>\ifpaginageblokkeerd\else
+ \dosomebreak\nobreak
+ \fi,
+ \v!voorkeur=>{\ifpaginageblokkeerd\else
+ \ifbinnenkolommen
+ \dosomebreak\goodbreak
+ \else
+ \testpagina[3][\!!zeropoint]%
+ \fi
+ \fi},
+ \v!grotevoorkeur=>{\ifpaginageblokkeerd\else
+ \ifbinnenkolommen
+ \dosomebreak\goodbreak
+ \else
+ \testpagina[5][\!!zeropoint]%
+ \fi
+ \fi},
+ \v!leeg=>{\ejectinsert
+ \ejectpage
+ \doifnotvalue{\??tk\v!hoofd\v!tekst\c!status}{\v!stop}
+ {\stelhoofdin[\c!status=\v!leeg]}%
+ \doifnotvalue{\??tk\v!voet\v!tekst\c!status}{\v!stop}
+ {\stelvoetin[\c!status=\v!leeg]}%
+ \insertdummypage},
+ \v!links=>{\ejectinsert
+ \superejectpage
+ \doifbothsidesoverruled
+ \orsideone
+ \resetcurrentsectionmarks
+ \insertdummypage
+ \orsidetwo
+ \od},
+ \v!rechts=>{\ejectinsert
+ \superejectpage
+ \doifbothsidesoverruled
+ \orsideone
+ \orsidetwo
+ \resetcurrentsectionmarks
+ \insertdummypage
+ \od},
+ \v!even=>\pagina
+ \doifonevenpaginaelse
+ {\resetcurrentsectionmarks\insertdummypage}{},
+ \v!oneven=>\pagina
+ \doifonevenpaginaelse
+ {}{\resetcurrentsectionmarks\insertdummypage},
+ \v!viertal=>{\ifdubbelzijdig
+ \!!counta=\realpageno
+ \!!countb=\realpageno
+ \divide\!!counta by 4
+ \divide\!!countb by 2
+ \ifnum\!!counta=\!!countb
+ \else
+ \pagina
+ \pagina[\v!leeg]%
+ \pagina[\v!leeg]%
+ \fi
+ \fi},
+ \v!laatste=>{\ejectinsert
+ \superejectpage
+ \doifbothsidesoverruled
+ \naastpagina
+ \orsideone
+ \orsidetwo
+ %\ifodd\realpageno \else % kan weer weg
+ \geenhoofdenvoetregels
+ \insertdummypage
+ %\fi
+ \od
+ \filluparrangedpages},
+ \s!unknown=>\doifnumberelse{#1}
+ {\ejectinsert
+ \ejectpage
+ \loop
+ \ifnum\userpageno<#1\relax
+ \insertdummypage
+ \repeat}
+ {}]%
+ \egroup}
+
+\def\complexpagina[#1]%
+ {\expanded{\docomplexpagina[#1]}}
+
+\def\simplepagina%
+ {\docomplexpagina[\v!ja]}
+
+\def\pagina%
+ {\complexorsimple{pagina}}
+
+\def\resetpagina%
+ {\global\paginageblokkeerdfalse}
+
+% \getpagestatus
+% \ifrightpage als odd/enkelzijdig
+
+\newif\ifrightpage \rightpagetrue
+
+\newcounter \nofpagesets
+
+\definetwopasslist{\s!page}
+
+\def\dopagesetreference%
+ {\doglobal\increment\nofpagesets\relax
+ \edef\writepagref%
+ {\writeutilitycommand
+ {\twopassentry
+ {\s!page}%
+ {\nofpagesets}%
+ {\noexpand\realfolio}}}%
+ \writepagref}
+
+\def\getpagestatus% hierboven gebruiken
+ {\ifdubbelzijdig
+ \gettwopassdata{\s!page}%
+ \iftwopassdatafound \else
+ \let\twopassdata=\realpageno
+ \fi
+ \ifodd\twopassdata
+ \global\rightpagetrue
+ \else
+ \global\rightpagefalse
+ \fi
+ \dopagesetreference
+ \else
+ \global\rightpagetrue
+ \fi}
+
+%I n=Hoofdteksten
+%I c=\stelnummeringin
+%I c=\stelhoofdtekstenin,\stelvoettekstenin,\stelhoofdin,\stelvoetin
+%I c=\stelboventekstenin,\stelondertekstenin,\stelbovenin,\stelonderin
+%I
+%I Zogeheten hoofd- en/of voetteksten kan men instellen
+%I met:
+%I
+%I \stelhoofdtekstenin [linker tekst] [rechter tekst]
+%I \stelvoettekstenin [linker tekst] [rechter tekst]
+%I
+%I Bij dubbelzijdig zetten worden de linker en rechter
+%I teksten gespiegeld.
+%I
+%I In plaats van een tekst kunnen de woorden 'hoofdstuk',
+%I 'paragraaf' en 'deel' worden meegegeven. Ook kan het
+%I woord 'datum' worden meegegeven.
+%P
+%I Als men op de even en oneven pagina's een andere tekst
+%I wil hebben, dan kan men een tweede paar meegeven. In dat
+%I geval zijn er dus vier argumenten: [][][][].
+%I
+%I Als men in de marge of randen teksten wil, kan men dat
+%I direct achter het commando aangeven:
+%I
+%I \stelhoofdtekstenin [lokatie] [links] [rechts]
+%I \stelvoettekstenin [lokatie] [links] [rechts]
+%I
+%I Mogelijke lokaties zijn: tekst, marge en rand.
+%P
+%I In de tekst opgenomen commando's kunnen soms voor
+%I problemen zorgen. Commando's kan men daarom laten
+%I voorafgaan \geentest, bijvoorbeeld:
+%I
+%I \stelvoettekstenin[\geentest\lastigcommando][]
+%I
+%I Meestal geven commando's geen problemen. Wel moet men
+%I oppassen met []. Accolades zijn hiervoor de oplossing:
+%I
+%I \stelvoettekstenin[{{\huidigedatum[mm,/,jj]}}][]
+%I
+%I of
+%I
+%I \stelvoettekstenin[\geentest{\huidigedatum[mm,/,jj]}][]
+%P
+%I De wijze van nummeren wordt gedefinieerd met:
+%I
+%I \stelnummeringin[variant=,plaats=,conversie=,
+%I links=,rechts=,tekst=,tekstscheider=,nummerscheider,
+%I wijze=,blok=,status=,letter=,<sectie>nummer=,commando=]
+%I
+%I De plaats van het nummer hangt af van het eerste
+%I meegegeven argument:
+%I
+%I enkelzijdig dubbelzijdig
+%I
+%I links, rechts kantlijn (links of rechts)
+%I marge marge (links of rechts)
+%I midden midden
+%I inlinker, inrechter inlinker, inrechter
+%P
+%I Met plaats geeft men tevens aan of het nummer in het hoofd
+%I of in de voet komt {hoofd,midden}. Met 'nummerscheider' geeft
+%I men aan wat er binnen een (eventueel) samengestelde nummer
+%I als scheider wordt gezet, standaard: 2-3. Met 'tekstscheider'
+%I geeft men aan wat er tussen het paginanummer en een hoofd- of
+%I voettekst wordt gezet (in geval van plaatsen op de marge).
+%I
+%I Liefhebbers kunnen aan 'commando' een eigen commando om het
+%I nummer te zetten meegeven. Dit eigen commando krijgt als
+%I argument het paginanummer mee.
+%I
+%I Het is mogelijk een dubbelzijdige tekst met enkelzijdige
+%I marges te zetten:
+%I
+%I \stelnummeringin[variant={enkelzijdig,dubbelzijdig}]
+%I
+%I In dit geval worden de hoofd- en voetregels dus wel
+%I gespiegeld en hebben commando's als \pagina[rechts] betekenis.
+%P
+%I Als 'conversie' is mogelijk: cijfers, letters, Letters,
+%I romeins en Romeins. Als 'status' kan 'start' of 'stop'
+%I worden meegegeven. Op deze manier kan het aangeven van
+%I een paginanummer worden aan- en uitgezet.
+%I
+%I Er kan per sectienummer (deelnummer, hoofdstuknummer enz.)
+%I worden ingesteld of het zichtbaar is ('ja' of 'nee').
+%I
+%I Mogelijke wijzen van nummeren zijn: perdeel of perhoofdstuk.
+%P
+%I Hoofd- en voetregels blijven achterwege of juist niet na het
+%I commando:
+%I
+%I \geenhoofdenvoetregels
+%I \welhoofdenvoetregels
+%I
+%I of na:
+%I
+%I \stelhoofdin[lokatie][linkerletter=,rechterletter=,
+%I letter=,linkerbreedte=,rechterbreedte=,voor=,na=]
+%I \stelvoetin[locatie][linkerletter=,rechterletter=,
+%I letter=,linkerbreedte=,rechterbreedte=,voor=,na=]
+%I
+%I mogelijke lokaties zijn: tekst, marge en rand. Als [lokatie]
+%I wordt wegelaten, dan wordt tekst verondersteld.
+%I
+%I Als de breedte wordt ingesteld, dan wordt de weergegeven
+%I tekst zonodig ingekort en gevolgd door ...
+%P
+%I Het is mogelijk het plaatsen van hoofd- en voetregels
+%I stop te zetten:
+%I
+%I \stelhoofdin[status=]
+%I \stelvoetin[status=]
+%I
+%I Aan status kunnen de olgende aarden worden toegekend:
+%I
+%I geen de kop/voet vervalt (de tekst schuift omhoog)
+%I leeg de kop/voet blijft 1 pagina leeg
+%I hoog de kop/voet vervalt 1 pagina leeg (idem)
+%I normaal de kop/voet wordt gezet
+%I stop de kop/voet blijft vanaf nu leeg
+%I start de kop/voet wordt vanaf nu weer gevuld
+%I
+%I Het is ook mogelijk bij \stelhoofdin en \stelvoetin als
+%I parameters [voor=] en [na=] mee te geven. De toegekende
+%I commando's worden in dat geval voor en na het hoofd en de
+%I de voet uitgevoerd.
+%P
+%I Boven het hoofd en onder de voet is ook ruimte. Deze kan
+%I worden gedefinieerd met vergelijkbare commando's:
+%I
+%I \stelboventekstenin[...][...][...]
+%I \stelondertekstenin[...][...][...]
+%I
+%I \stelbovenin[...]
+%I \stelonderin[...]
+%I
+%I \geenbovenenonderregels
+%I \welbovenenonderregels
+
+% De onderstaande macro's lijken op het eerste gezicht vrij
+% ingewikkeld en omslachtig. Dit is het gevolg van een
+% dubbel optioneel zijn van argumenten: zowel het eerste als
+% de twee laatste argumenten zijn optioneel. Dit is mede het
+% gevolg van een uitbreiding naar marges en randen, waarbij
+% upward-compatibiliteit zwaar heeft gewogen.
+
+\def\dostellayouttekstin[#1][#2][#3]%
+ {\ifthirdargument
+ \getparameters[\??tk#1#2][#3]%
+ \else
+ \getparameters[\??tk#1\v!tekst][#2]%
+ \fi
+ \calculatevsizes}
+
+\def\stelbovenin {\dotripleempty\dostellayouttekstin[\v!boven]}
+\def\stelhoofdin {\dotripleempty\dostellayouttekstin[\v!hoofd]}
+\def\steltekstin {\dotripleempty\dostellayouttekstin[\v!tekst]}
+\def\stelvoetin {\dotripleempty\dostellayouttekstin[\v!voet]}
+\def\stelonderin {\dotripleempty\dostellayouttekstin[\v!onder]}
+
+\letvalue{\??tk\v!boven\v!tekst\c!status}=\v!normaal
+\letvalue{\??tk\v!hoofd\v!tekst\c!status}=\v!normaal
+\letvalue{\??tk\v!tekst\v!tekst\c!status}=\v!normaal
+\letvalue{\??tk\v!voet \v!tekst\c!status}=\v!normaal
+\letvalue{\??tk\v!onder\v!tekst\c!status}=\v!normaal
+
+\def\geenhoofdenvoetregels%
+ {\stelhoofdin[\c!status=\v!leeg]%
+ \stelvoetin[\c!status=\v!leeg]}
+
+\def\geenbovenenonderregels%
+ {\stelbovenin[\c!status=\v!leeg]%
+ \stelonderin[\c!status=\v!leeg]}
+
+\def\dolimitateteksten#1#2%
+ {\limitatetext{#2}{\getvalue{#1\c!breedte}}{}}
+
+\def\doteksten#1#2#3#4%
+ {\bgroup
+ \convertargument#4\to\ascii
+ \doifsomething{\ascii}
+ {\doattributes{#1#2#3}
+ {\doifvalue{#1\v!tekst\c!strut}{\v!ja}{\setstrut\strut}% hier!
+ \doifdefinedelse{\??mk\ascii\c!koppeling} % brrr
+ {\dolimitateteksten{#1#2#3}{\haalmarkering[\ascii][\v!eerste]}}
+ {\ConvertConstantAfter\doifelse{\v!paginanummer}{#4}
+ {\@@plaatspaginanummer}
+ {\ConvertConstantAfter\doifelse{\v!datum}{#4}
+ %{\currentdate[\v!dag,\v!maand,\v!jaar]}
+ {\currentdate}
+ {\opeenregel\dolimitateteksten{#1#2#3}{#4}}}}}}%
+ \egroup}
+
+\def\dodoteksten#1#2#3#4#5#6%
+ {\doifonevenpaginaelse
+ {\doteksten{#1}{#2}{#3}{#4}}
+ {\doteksten{#1}{#2}{#5}{#6}}}
+
+\def\dodododoteksten[#1][#2][#3][#4][#5][#6]%
+ {\ifsecondargument
+ \ifsixthargument
+ \setvalue{\??tk#1#2\c!linkertekst}%
+ {\dodoteksten{\??tk#1}{#2}{\c!linker}{#3}{\c!rechter}{#6}}%
+ \setvalue{\??tk#1#2\c!rechtertekst}%
+ {\dodoteksten{\??tk#1}{#2}{\c!rechter}{#4}{\c!linker}{#5}}%
+ \else\iffifthargument
+ \setvalue{\??tk#1\v!tekst\c!linkertekst}%
+ {\dodoteksten{\??tk#1}{\v!tekst}{\c!linker}{#2}{\c!rechter}{#5}}%
+ \setvalue{\??tk#1\v!tekst\c!rechtertekst}%
+ {\dodoteksten{\??tk#1}{\v!tekst}{\c!rechter}{#3}{\c!linker}{#4}}%
+ \else\iffourthargument
+ \setvalue{\??tk#1#2\c!linkertekst}%
+ {\dodoteksten{\??tk#1}{#2}{\c!linker}{#3}{\c!linker}{#3}}%
+ \setvalue{\??tk#1#2\c!rechtertekst}%
+ {\dodoteksten{\??tk#1}{#2}{\c!rechter}{#4}{\c!rechter}{#4}}%
+ \else
+ \setvalue{\??tk#1\v!tekst\c!linkertekst}%
+ {\dodoteksten{\??tk#1}{\v!tekst}{\c!linker}{#2}{\c!linker}{#2}}%
+ \setvalue{\??tk#1\v!tekst\c!rechtertekst}%
+ {\dodoteksten{\??tk#1}{\v!tekst}{\c!rechter}{#3}{\c!rechter}{#3}}%
+ \fi\fi\fi
+ \else
+ \dosixtupleempty\dodododoteksten[#1][\v!tekst][][][][]%
+ \dosixtupleempty\dodododoteksten[#1][\v!marge][][][][]%
+ \dosixtupleempty\dodododoteksten[#1][\v!rand] [][][][]%
+ \fi
+ \dosetpagenumberlocation\@@plaatspaginanummer}
+
+\def\stelboventekstenin {\dosixtupleempty\dodododoteksten[\v!boven]}
+\def\stelhoofdtekstenin {\dosixtupleempty\dodododoteksten[\v!hoofd]}
+\def\stelteksttekstenin {\dosixtupleempty\dodododoteksten[\v!tekst]}
+\def\stelvoettekstenin {\dosixtupleempty\dodododoteksten[\v!voet]}
+\def\stelondertekstenin {\dosixtupleempty\dodododoteksten[\v!onder]}
+
+\def\@@plaatspaginanummer%
+ {\doif{\@@nmstatus}{\v!start}%
+ {{\@@nmcommando{\doattributes{\??nm}{\volledigepaginanummer}}}}}
+
+\def\@@nmpre#1{\setbox0=\hbox{#1}\ifdim\wd0=\!!zeropoint\else\unhbox0\tfskip\fi}
+\def\@@nmpos#1{\setbox0=\hbox{#1}\ifdim\wd0=\!!zeropoint\else\tfskip\unhbox0\fi}
+
+\def\dodoplaatsteksten#1#2#3#4#5#6% \hsize toegevoegd
+ {\hbox
+ {\hbox to \linkerrandbreedte
+ {\hsize\linkerrandbreedte
+ \hss\getvalue{\??tk#1\v!rand#2}}%
+ \hskip\linkerrandafstand
+ \hskip\pageseparation
+ \hbox to \linkermargebreedte
+ {\hsize\linkermargebreedte
+ \hsmash{\hbox to \linkermargebreedte
+ {\hss\getvalue{\??tk#1\v!marge#2}}}%
+ \hsmash{\hbox to \linkermargebreedte
+ {\hss#5{\??tk#1\v!marge\c!margetekst}}}%
+ \hss}% let op: \smashed
+ \hskip\linkermargeafstand
+ \hbox to \zetbreedte
+ {\hsize\zetbreedte
+ \hsmash{\hbox to \zetbreedte
+ {\@@nmpre{#5{\??tk#1\v!tekst\c!kantlijntekst}}%
+ \getvalue{\??tk#1\v!tekst#2}\hss}}%
+ \hsmash{\hbox to \zetbreedte
+ {\hss\getvalue{\??tk#1\v!tekst#3}\hss}}%
+ \hsmash{\hbox to \zetbreedte
+ {\hss\getvalue{\??tk#1\v!tekst#4}%
+ \@@nmpos{#6{\??tk#1\v!tekst\c!kantlijntekst}}}}%
+ \hss}%
+ \hskip\rechtermargeafstand
+ \hbox to \rechtermargebreedte
+ {\hsize\rechtermargebreedte
+ \hsmash{\hbox to \rechtermargebreedte
+ {\getvalue{\??tk#1\v!marge#4}\hss}}%
+ \hsmash{\hbox to \rechtermargebreedte
+ {#6{\??tk#1\v!marge\c!margetekst}\hss}}%
+ \hss}% let op: \smashed
+ \hskip\pageseparation
+ \hskip\rechterrandafstand
+ \hbox to \rechterrandbreedte
+ {\hsize\rechterrandbreedte
+ \getvalue{\??tk#1\v!rand#4}\hss}}}
+
+\def\doplaatslayoutregel#1#2%
+ {\ifdim#2>\!!zeropoint\relax % prevents pagenumbers when zero height
+ \goleftonpage
+ \hbox
+ {\setbox0=\vbox to #2
+ {\forgetall
+ \vsize#2
+ \normalbaselines
+ \def\\{ \ignorespaces}%
+ \def\crlf{ \ignorespaces}%
+ \getvalue{\??tk#1\v!tekst\c!voor}%
+ \doifbothsidesoverruled
+ \dodoplaatsteksten#1\c!linkertekst\c!middentekst\c!rechtertekst
+ \gobbleoneargument\getvalue
+ \orsideone
+ \dodoplaatsteksten#1\c!linkertekst\c!middentekst\c!rechtertekst
+ \gobbleoneargument\getvalue
+ \orsidetwo
+ \dodoplaatsteksten#1\c!rechtertekst\c!middentekst\c!linkertekst
+ \getvalue\gobbleoneargument
+ \od
+ \getvalue{\??tk#1\v!tekst\c!na}%
+ \kern\!!zeropoint}% keep the \dp, beware of \vtops, never change this!
+ \dp0=\!!zeropoint
+ \box0}%
+ \fi}
+
+% \stelhoofdin[status=normaal] \titel{NORMAAL} \dorecurse{8}{\input tufte} \pagina
+% \stelhoofdin[status=hoog] \titel{HOOG} \dorecurse{8}{\input tufte} \pagina
+% \stelhoofdin[status=leeg] \titel{LEEG} \dorecurse{8}{\input tufte} \pagina
+% \stelhoofdin[status=geen] \titel{GEEN} \dorecurse{8}{\input tufte} \pagina
+% \stelhoofdin[status=stop] \titel{STOP} \dorecurse{8}{\input tufte} \pagina
+
+\def\plaatslayoutregel#1#2% % handelt o.b.v. tekst
+ {\ExpandFirstAfter\processaction
+ [\getvalue{\??tk#1\v!tekst\c!status}]
+ [ \v!geen=>,
+ \v!hoog=>, % is reset later on
+ \v!start=>\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
+ \doplaatslayoutregel{#1}{#2},
+ \v!stop=>\vskip#2\relax,
+ \v!leeg=>\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
+ \vskip#2\relax,
+ \v!geenmarkering=>\bgroup
+ \setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
+ \let\dohaalmarkering=\nohaalmarkering
+ \doplaatslayoutregel{#1}{#2}%
+ \egroup,
+ \v!normaal=>\doplaatslayoutregel{#1}{#2},
+ \s!default=>\doplaatslayoutregel{#1}{#2},
+ \s!unknown=>\doplaatslayoutregel{#1}{#2}]}
+
+\def\resetlayoutregel#1%
+ {\doifvalue{\??tk#1\v!tekst\c!status}{\v!hoog}
+ {\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}% ! global
+ \doglobal\calculatevsizes
+ \global\newlogostrue
+ \global\newbackgroundtrue}}
+
+\def\resetlayoutregels%
+ {\resetlayoutregel\v!boven
+ \resetlayoutregel\v!hoofd
+ \resetlayoutregel\v!tekst
+ \resetlayoutregel\v!voet
+ \resetlayoutregel\v!onder}
+
+\def\plaatsbovenregel {\plaatslayoutregel\v!boven\bovenhoogte}
+\def\plaatshoofdregel {\plaatslayoutregel\v!hoofd\hoofdhoogte}
+\def\plaatstekstregel {\plaatslayoutregel\v!tekst\teksthoogte}
+\def\plaatsvoetregel {\plaatslayoutregel\v!voet\voethoogte}
+\def\plaatsonderregel {\plaatslayoutregel\v!onder\onderhoogte}
+
+\def\gettextboxes% elders weghalen
+ {\bgroup
+ \setbox0=\vbox
+ {\mindermeldingen
+ \calculatereducedvsizes
+ \swapmargins
+ \forgetall
+ \offinterlineskip
+ \vskip-\bovenhoogte
+ \vskip-\bovenafstand
+ \plaatsbovenregel
+ \vskip\bovenafstand
+ \plaatshoofdregel
+ \vskip\hoofdafstand
+ \plaatstekstregel
+ \vskip\voetafstand
+ \plaatsvoetregel
+ \vskip\onderafstand
+ \plaatsonderregel
+ \plaatsversieaanduiding
+ \vfilll}%
+ \smashbox0
+ \box0
+ \egroup}
+
+\def\@@plaatspaginascheider%
+ {\doif{\@@nmstatus}{\v!start}%
+ {\@@nmtekstscheider}}
+
+% ook rand ondersteunen, iets als:
+
+% \def\dodosetpagenumberlocation#1#2%
+% {\let\somepagenumberlocation=\v!tekst
+% \ExpandFirstAfter\processallactionsinset
+% [\@@nmplaats]
+% [ \v!midden=>\setvalue{\??tk#1\somepagenumberlocation\c!middentekst}{#2},
+% \v!links=>\setvalue{\??tk#1\somepagenumberlocation\c!linkertekst}{#2},
+% \v!rechts=>\setvalue{\??tk#1\somepagenumberlocation\c!rechtertekst}{#2},
+% \v!inlinker=>\setvalue{\??tk#1\v!marge\c!linkertekst}{#2},
+% \v!inrechter=>\setvalue{\??tk#1\v!marge\c!rechtertekst}{#2},
+% \v!inmarge=>\setvalue{\??tk#1\v!marge\ifdubbelzijdig\c!margetekst\else\c!rechtertekst\fi}{#2},
+% \v!marge=>\setvalue{\??tk#1\v!marge\ifdubbelzijdig\c!margetekst\else\c!rechtertekst\fi}{#2},
+% \v!opmarge=>\setvalue{\??tk#1\v!tekst\c!kantlijntekst}{#2},
+% \v!kantlijn=>\setvalue{\??tk#1\v!tekst\c!kantlijntekst}{#2}
+% \v!rand=>\let\somepagenumberlocation=\v!rand,
+% %\v!marge=>\let\somepagenumberlocation=\v!marge,
+% \v!tekst=>\let\somepagenumberlocation=\v!tekst]}
+
+\def\dodosetpagenumberlocation#1#2%
+ {\ExpandFirstAfter\processallactionsinset
+ [\@@nmplaats]
+ [ \v!midden=>\setvalue{\??tk#1\v!tekst\c!middentekst}{#2},
+ \v!links=>\setvalue{\??tk#1\v!tekst\c!linkertekst}{#2},
+ \v!rechts=>\setvalue{\??tk#1\v!tekst\c!rechtertekst}{#2},
+ \v!inlinker=>\setvalue{\??tk#1\v!marge\c!linkertekst}{#2},
+ \v!inrechter=>\setvalue{\??tk#1\v!marge\c!rechtertekst}{#2},
+ \v!inmarge=>\setvalue{\??tk#1\v!marge\ifdubbelzijdig\c!margetekst\else\c!rechtertekst\fi}{#2},
+ \v!marge=>\setvalue{\??tk#1\v!marge\ifdubbelzijdig\c!margetekst\else\c!rechtertekst\fi}{#2},
+ \v!opmarge=>\setvalue{\??tk#1\v!tekst\c!kantlijntekst}{#2},
+ \v!kantlijn=>\setvalue{\??tk#1\v!tekst\c!kantlijntekst}{#2}]}
+
+\def\dosetpagenumberlocation#1%
+ {\ExpandBothAfter\doifinsetelse{\v!hoofd}{\@@nmplaats,\@@nmin}
+ {\dodosetpagenumberlocation{\v!hoofd}{#1}}
+ {\dodosetpagenumberlocation{\v!voet}{#1}}}
+
+\def\@@nmin {} % kan vervallen (upward compatibility)
+\def\@@nmplaats {} % mag {plaats, in} zijn
+
+\def\dostelnummeringin[#1]%
+ {\dosetpagenumberlocation\relax
+ \getparameters[\??nm][#1]%
+ \preparepaginaprefix{\??nm}%
+ \enkelzijdigfalse
+ \dubbelzijdigfalse
+ \ExpandFirstAfter\processallactionsinset
+ [\@@nmvariant]
+ [ \v!enkelzijdig=>\enkelzijdigtrue,
+ \v!dubbelzijdig=>\dubbelzijdigtrue]%
+ \ifdubbelzijdig
+ \trackingmarginnotestrue
+ \else
+ \trackingmarginnotesfalse
+ \fi
+ \dosetpagenumberlocation\@@plaatspaginanummer
+ \global\newbackgroundtrue
+ \global\newlogostrue}
+
+\def\stelnummeringin%
+ {\dosingleempty\dostelnummeringin}
+
+% listig: hangt af van \@@kolijst
+
+\def\preparepaginaprefix#1%
+ {\def\dopreparepaginaprefix##1%
+ {\doifvalue{#1##1\c!nummer}{\v!ja}
+ {\setvalue{#1\getvalue{\??by##1}\c!nummer}{\v!ja}}}%
+ \processcommacommand[\@@kolijst]\dopreparepaginaprefix}
+
+\def\dopaginaprefix#1#2%
+ {\doifelsevalue{#1#2\c!nummer}{\v!ja}%
+ {\@EA\beforesplitstring\@EA{\postprefix}\at:\to\preprefix
+ \@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix
+ \doifsomething{\preprefix}
+ {\doifnot{\preprefix}{0}{\preprefix\@@nmnummerscheider}}}%
+ {\@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix}}
+
+\def\paginaprefix#1[#2::#3::#4]% kan wat sneller ####1:0:
+ {\bgroup
+ \edef\postprefix{#3}%
+ \def\donexttrackcommando##1%
+ {\dopaginaprefix{#1}{##1}%
+ \donexttracklevel{##1}}%
+ \donexttrackcommando\firstsection
+ \egroup}
+
+\def\@@plaatspaginanummer%
+ {\doif{\@@nmstatus}{\v!start}%
+ {{\@@nmcommando{\doconvertfont{\@@nmletter}{\volledigepaginanummer}}}}}
+
+\def\@@plaatspaginascheider%
+ {\doif{\@@nmstatus}{\v!start}%
+ {\@@nmtekstscheider}}
+
+\def\userfolio% naast realfolio
+ {\nummer[\s!page]}
+
+\def\pagenumber%
+ {\userfolio}
+
+\def\volledigepaginanummer% alleen voor paginanummers !!
+ {\@@nmlinks
+ \def\donexttrackcommando##1%
+ {\doifvalue{\??nm##1\c!nummer}{\v!ja}
+ {\ifnum\countervalue{\??se##1}>0\relax
+ \getvalue{##1\c!nummer}\@@nmnummerscheider
+ \fi}%
+ \doifsomething{\@@nmtekst}
+ {\@@nmtekst\@@nmnummerscheider}%
+ \donexttracklevel{##1}}%
+ \donexttrackcommando{\firstsection}%
+ \pagenumber
+ \@@nmrechts}
+
+\def\translatednumber[#1::#2::#3]%
+ {#3}
+
+%I n=Markeringen
+%I c=\markeer,\haalmarkering
+%I c=\definieermarkering,\stelmarkeringin,\resetmarkering
+%I
+%I Men kan in een tekst markeringen aanbrengen. Een markering
+%I kan bijvoorbeeld worden opgehaald in een kopregel.
+%I
+%I \definieermarkering[categorie]
+%I
+%I Een markering wordt aangebracht met het commando:
+%I
+%I \markeer[categorie]{tekst}
+%I
+%I Er kunnen drie markeringen worden opgevraagd met het
+%I commando:
+%I
+%I \haalmarkering[categorie][plaats]
+%I
+%I Mogelijke plaatsen zijn: eerste, laatste, vorige. Vorige
+%I staat voor de laatste markering op de vorige bladzijde en
+%I eerste en laatste hebben betrekking op de huidige bladzijde.
+%P
+%I Markeringen worden ge(de)blokkeerd met het commando:
+%I
+%I \stelmarkeringin[categorie][status=,expansie=]
+%I
+%I waarbij als instellingen mogelijk zijn: start en stop.
+%I Standaard wordt een markering niet ge‰xpandeerd. Wil met
+%I wel expanderen (wat bij tellers nodig is), dan kan dat
+%I worden ingesteld: expansie=ja.
+%I
+%I Markeringen kunnen worden geinitialiseerd met:
+%I
+%I \resetmarkering[categorie]
+%I
+%I Standaard worden de markeringen 'deel', 'hoofdstuk', 'paragraaf',
+%I 'subparagraaf' en 'subsubparagraaf bijgehouden.
+%P
+%I Soms wordt een argument voor meerdere doeleinden gebruikt,
+%I bijvoorbeeld in \hoofdstuk{tekst}. Hierbij is {tekst}
+%I zowel de kop van het hoofdstuk als de eventueel te plaatsen
+%I markering in de hoofd- of voetregel. Als zo'n tekst te lang
+%I wordt, kan ze als volgt worden beperkt:
+%I
+%I {eerste tweede \geenmarkering{derde vierde} vijfde}
+%I
+%I De woorden 'derde' en 'vierde' worden in dit geval in de
+%I markering vervangen door punten.
+
+% Het commando \newmark\markering genereert
+%
+% \markering
+%
+% en het commando \getmarks\markering genereert
+%
+% \topmarkering
+% \botmarkering
+% \firstmarkering
+%
+% voor 'interne' doeleinden zijn beschikbaar:
+%
+% \prefetchmark[naam]
+% \fetchmark[naam][plaats]
+
+% nog expansie in hoofdmarkering
+
+\def\hoofdmarkering#1%
+ {\getvalue{\??mk#1\c!koppeling}}
+
+\def\dodoresetmarkering#1%
+ {\expandafter\newmark\csname\??mk\hoofdmarkering{#1}\endcsname}
+
+\def\doresetmarkering[#1]%
+ {\processcommalist[#1]\dodoresetmarkering}
+
+\def\resetmarkering%
+ {\dosingleargument\doresetmarkering}
+
+\def\dostelmarkeringin[#1][#2]%
+ {\getparameters[\??mk#1][#2]}
+
+\def\stelmarkeringin%
+ {\dodoubleargument\dostelmarkeringin}
+
+\setvalue{\??mk\v!vorige}{top}
+\setvalue{\??mk\v!eerste}{first}
+\setvalue{\??mk\v!laatste}{bot}
+
+\def\dododefinieermarkering[#1][#2]%
+ {\stelmarkeringin[#1]
+ [% \c!expansie=\v!nee, scheelt weer een macro
+ \c!status=\v!start]%
+ \ontkoppelmarkering[#1]% d.w.z. geen koppeling met secties
+ \setevalue{\??mk#1\c!koppeling}{#2}%
+ \expandafter\newmark\csname\??mk#2\endcsname
+ %\setgvalue{\??mk#2\s!check}{0}%
+ \showmessage{\m!systems}{13}{#1,[#2]}}
+
+\def\dodefinieermarkering[#1][#2]%
+ {\doifelsenothing{#2}
+ {\dododefinieermarkering[#1][#1]}
+ {\dododefinieermarkering[#1][#2]}}
+
+\def\definieermarkering%
+ {\dodoubleempty\dodefinieermarkering}
+
+\let\geenmarkering=\relax
+
+\def\prefetchmark[#1]%
+ {%\ifnum\getvalue{\??mk\hoofdmarkering{#1}\s!check}<\realpageno
+ % \setxvalue{\??mk\hoofdmarkering{#1}\s!check}{\the\realpageno}%
+ % \expandafter\getmarks\csname\??mk\hoofdmarkering{#1}\endcsname % mag maar eenmaal per pagina
+ }%\fi}
+
+\def\fetchmark[#1][#2]%
+ {\getvalue{\getvalue{\??mk#2}\??mk\hoofdmarkering{#1}}}
+
+\def\nohaalmarkering[#1][#2]% tzt anders
+ {}
+
+\def\dohaalmarkering[#1][#2]%
+ {\doifvalue{\??mk#1\c!status}{\v!start}
+ {\bgroup
+ %\prefetchmark[#1]%
+ \def\geenmarkering##1{\onbekend\ }%
+ \doifelsenothing{#2}
+ {\fetchmark[#1][\v!eerste]}
+ {\fetchmark[#1][#2]}%
+ \egroup}}
+
+\def\haalmarkering%
+ {\dodoubleargument\dohaalmarkering}
+
+\def\domarkeer[#1]#2%
+ {\bgroup
+ \doifelsevalue{\??mk#1\c!expansie}{\v!ja}
+ {\expandmarkstrue}
+ {\expandmarksfalse}%
+ \getvalue{\??mk\hoofdmarkering{#1}}{#2}%
+ \egroup}
+
+\def\markeer%
+ {\dosingleargument\domarkeer}
+
+%I n=Tekstonderdelen
+%I c=\hoofdstuk,\paragraaf,\subparagraaf,\subsubparagraaf
+%I c=\titel,\onderwerp,\subonderwerp,\subsubonderwerp,\alinea
+%I c=\stelkopin,\stelkoppenin,\stelkopnummerin
+%I c=\startbijlagen,\bijlage
+%I c=\startinleidingen,\startuitleidingen
+%I
+%I Een tekst wordt gestructureerd met de commando's:
+%I
+%I \titel [referentie] {titel}
+%I \onderwerp [referentie] {onderwerp}
+%I \subonderwerp [referentie] {onderwerp}
+%I \subsubonderwerp [referentie] {onderwerp}
+%I
+%I \hoofdstuk [referentie] {titel}
+%I \paragraaf [referentie] {titel}
+%I \subparagraaf [referentie] {titel}
+%I \subsubparagraaf [referentie] {titel}
+%I
+%I In een {titel} kan het commando \\ worden gebruikt om naar
+%I een volgende regel te gaan. Wil men ook in de inhoudsopgave
+%I naar een nieuwe regel gaan, dan dient \crlf te worden
+%I gebruikt.
+%P
+%I Op een hoger niveau kunnen delen worden gedefinieerd. In
+%I dat geval wordt standaard geen kop geplaatst (het kan
+%I wel).
+%I
+%I \deel [referentie] {titel}
+%I
+%I In totaal zijn er 7 niveaus voorgedefinieerd. Meer
+%I niveaus zijn mogelijk. Het hoogste niveau is op dit
+%I moment dus \deel en het laagste \subsubsubsubparagraaf.
+%P
+%I Naar een hoofdstuk en een paragraaf kan worden
+%I terugverwezen met:
+%I
+%I \inhoofdstuk[referentie]
+%I \inparagraaf[referentie]
+%I
+%I Zodat verwijzingen als 'zie ook hoofdstuk 2' mogelijk
+%I zijn (zie ook \inhoofdstuk[alfa]).
+%I
+%I Ook kunnen de elders besproken commando's worden
+%I gebruikt. Een referentie kan eventueel worden weggelaten,
+%I bijvoorbeeld \hoofdstuk{titel}.
+%P
+%I Een overgang naar een nieuwe alinea kan worden afgedwongen
+%I met het commando:
+%I
+%I \alinea
+%I
+%I Dit commando komt overeen met het commando \par.
+%P
+%I Aanvullend zijn de volgende commando's beschikbaar. Deze
+%I commando's onderdrukken cq. wijzigen de nummering.
+%I
+%I \startbijlagen hoofdstukken nummeren met a, b, ...
+%I \stopbijlagen hoofdstukken nummeren met 1, 2, ...
+%I
+%I \startinleidingen hoofdstukken niet nummeren
+%I \stopinleidingen hoofdstukken wel nummeren
+%I \startuitleidingen hoofdstukken niet nummeren
+%I \stopuitleidingen hoofdstukken wel nummeren
+%I
+%I Als men bijlagen apart wil nummeren, dan gebruikt men in
+%I plaats van \hoofdstuk het commando:
+%I
+%I \bijlage[referentie]{titel}
+%I
+%I waarna de eigenlijke tekst komt of wordt ingelezen uit
+%I een file.
+%P
+%I De wijze waarop hoofdstukken en paragrafen worden genummerd
+%I en gezet, kan worden ingesteld met de commando's:
+%I
+%I \stelkoppenin[variant=,scheider=]
+%I
+%I Hierbij zijn als varianten mogelijk normaal en inmarge.
+%I
+%I Daarnaast is het volgende commando beschikbaar:
+%I
+%I \stelkopin[element][letter=,nummerletter=,tekstletter=,
+%I voor=,na=,pagina=,uitlijnen=,hoofd=]
+%I
+%I Mogelijke elementen zijn: hoofdstuk, paragraaf,
+%I subparagraaf, subsubparagraaf en indien gewenst: titel en
+%I onderwerp.
+%P
+%I Aan de parameters voor en na kunnen commando's worden
+%I toegekend; 'nummer', 'tekst' en 'letter' staan voor de
+%I lettertypen. Standaard zijn 'nummer' en 'tekst' gelijk
+%I aan 'letter'. In de regel kan men volstaan met het
+%I instellen van hoofdstuk en paragraaf, omdat de andere
+%I instellingen hiervan worden afgeleid. Voorbeelden van
+%I instellingen zijn 'letter=vet', 'voor={\blanko[groot]}'
+%I en 'nummer=\tfa'.
+%I
+%I Aan 'pagina' kan de waarde 'links', 'rechts' of 'ja' worden
+%I toegekend. Er wordt alleen naar een nieuwe pagina gegaan als
+%I het nummer van de (sub)(sub)paragraaf groter is dan 1.
+%I Wil men altijd overgaan op een nieuwe bladzijde, dan kan
+%I men dit aangeven door aan 'doorgaan' de waarde 'nee' toe
+%I te kennen.
+%P
+%I Een hoofdstuk kan worden voorafgegaan door een woord,
+%I bijvoorbeeld 'Hoofdstuk'. Dit woord kan worden ingesteld
+%I met \stellabeltekstin.
+%I
+%I Als men aan 'hoofd' de waarde 'geen' toekent, dan wordt
+%I geen hoofdregel geplaatst op de bladzijde waarop de kop
+%I wordt geplaatst.
+%I
+%I Het is mogelijk varianten van koppen te definieren met het
+%I commando:
+%I
+%I \definieerkop[dochter][moeder]
+%I
+%I Na \definieerkop[rubriek][onderwerp] is het commando \rubriek
+%I beschikbaar met dezelfde kenmerken als \onderwerp. Deze
+%I kenmerken kunnen worden aangepast met \stelkopin. Als de
+%I moeder een genummerde kop is, wordt de dochter ook genummerd.
+%P
+%I Nummers van koppen kunnen worden ingesteld met het commando:
+%I
+%I \stelkopnummerin[niveau][nummer]
+%I
+%I Als het nummer wordt vooraf gegaan door + of -, dan is
+%I sprake van een verhoging of verlaging: [hoofdstuk][+2].
+
+%T n=hoofdstuk
+%T m=hfd
+%T a=h
+%T
+%T \hoofdstuk{?}
+
+%T n=paragraaf
+%T m=par
+%T a=p
+%T
+%T \paragraaf{?}
+
+\newcount\nofsections
+
+\def\zerosection{\v!tekst}
+\def\firstsection{}
+\def\lastsection{}
+
+\makecounter{\??se\v!tekst}
+\setevalue{\??se\v!tekst\c!voor}{}
+\setevalue{\??se\v!tekst\c!na}{}
+\setevalue{\v!tekst\c!nummer}{0}
+\setevalue{\v!tekst\s!format}{}
+
+\setevalue{\??sk\v!tekst}{}
+\setevalue{\??sk}{}
+
+\setvalue{\??by}{\v!tekst}
+\setvalue{\??by\v!tekst}{\v!tekst}
+\setvalue{\??by\v!alles}{\v!tekst}
+\setvalue{\??by\v!per}{\v!tekst}
+\setvalue{\??by\v!per\v!tekst}{\v!tekst}
+\setvalue{\??by\v!per\v!alles}{\v!tekst}
+
+\def\dostelsectiein[#1][#2]%
+ {\getparameters[\??se#1][#2]
+ \doifelsevalue{\??se#1\c!vorige\c!nummer}{\v!ja}
+ {\setvalue{#1\c!nummer}{\@@longsectionnumber{#1}}}%
+ {\setvalue{#1\c!nummer}{\@@shortsectionnumber{#1}}}}
+
+\def\stelsectiein%
+ {\dodoubleargument\dostelsectiein}
+
+\def\dokoppelmarkering[#1][#2]%
+ {\doifdefinedelse{\??ko#2\c!sectie}
+ {\dokoppelmarkering[#1][\getvalue{\??ko#2\c!sectie}]}
+ {\def\donexttrackcommando##1%
+ {\edef\gekoppeldemarkeringen{\getvalue{\??se##1\c!markering}}%
+ \doifelse{##1}{#2}
+ {\addtocommalist{#1}\gekoppeldemarkeringen}
+ {\removefromcommalist{#1}\gekoppeldemarkeringen}%
+ \setevalue{\??se##1\c!markering}{\gekoppeldemarkeringen}%
+ \donexttracklevel{##1}}%
+ \donexttracklevel{\firstsection}}}
+
+\def\koppelmarkering%
+ {\dodoubleargument\dokoppelmarkering}
+
+\def\ontkoppelmarkering[#1]%
+ {\koppelmarkering[#1][]}
+
+\def\definieersectie[#1]%
+ {\doifundefined{\??se#1}
+ {\doifelsenothing{\firstsection}
+ {\def\firstsection{#1}%
+ \setevalue{\??se#1\c!voor}{\v!tekst}%
+ \setevalue{\??se\v!tekst\c!na}{#1}}%
+ {\setevalue{\??se\commalistelement\c!na}{#1}%
+ \setevalue{\??se#1\c!voor}{\lastsection}%
+ \setevalue{\??se\lastsection\c!na}{#1}}%
+ \advance\nofsections by 1
+ \setevalue{\??se#1\c!niveau}%
+ {\the\nofsections}%
+ \setevalue{\??se#1\c!na}%
+ {}%
+ \setvalue{\e!volgende#1}%
+ {\@@nextsectionnumber{#1}}%
+ \setvalue{#1\c!nummer}%
+ {\@@longsectionnumber{#1}}%
+ \setvalue{#1\s!format}%
+ {\@@longformatnumber{#1}}%
+ \setevalue{\??by#1}{#1}%
+ \setevalue{\??by\v!per#1}{#1}%
+ \makecounter{\??se#1}%
+ \def\lastsection{#1}%
+ \setvalue{\??sk#1}%
+ {#1}%
+ \setvalue{\??se#1\c!markering}%
+ {}%
+ \stelsectiein[#1]
+ [\c!vorige\c!nummer=\v!ja]}}%
+
+\def\previoussection#1%
+ {\getvalue{\??se#1\c!voor}}
+
+\def\nextsection#1%
+ {\getvalue{\??se#1\c!na}}
+
+\def\@@setsectionnumber#1#2%
+ {\setgvalue{\??se#1\s!start}{}% % signal i.p.v. boolean
+ \setcounter{\??se#1}{#2}%
+ \resetsectioncounters[#1]%
+ \checkpagecounter}
+
+\def\@@nextsectionnumber#1%
+ {\setgvalue{\??se#1\s!start}{}% % signal i.p.v. boolean
+ \pluscounter{\??se#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\@@sectieblok\c!conversie}}}
+
+% Omdat een markering kan worden herdefinieerd moeten we
+% eerst testen of er wel een keten||afhankelijkheid is.
+
+\def\resetsectionmarks[#1]%
+ {\ExpandFirstAfter\doifdefinedelse{\??se#1}
+ {\def\donexttrackcommando##1%
+ {\def\docommando####1%
+ {\ExpandFirstAfter\resetmarkering[####1]}%
+ \processcommacommand[\getvalue{\??se##1\c!markering}]\docommando
+ \donexttracklevel{##1}}%
+ \donexttracklevel{#1}}%
+ {\ExpandFirstAfter\resetmarkering[\hoofdmarkering{#1}]}}
+
+\def\resetsectioncounters[#1]%
+ {\def\donexttrackcommando##1%
+ {\resetcounter{\??se##1}%
+ \donexttracklevel{##1}}%
+ \donexttracklevel{#1}}
+
+% bij checken kan geen prefix worden bekeken, anders vallen
+% er titels buiten de inhoudsopgave
+
+\def\makesectionformat%
+ {\@EA\edef\@EA\sectionformat\@EA%
+ {\@@sectiontype:\getvalue{\lastsection\s!format}}}
+
+\def\dobacktracklevel#1%
+ {\doifnot{\previoussection{#1}}{\zerosection}
+ {\dobacktrackcommando{\previoussection{#1}}}}
+
+\def\donexttracklevel#1%
+ {\doifnot{#1}{\lastsection}
+ {\donexttrackcommando{\nextsection{#1}}}}
+
+\newif\ifalllevels
+
+\def\dosetlevel#1%
+ {\bgroup
+ \doifelse{#1}{\v!vorige}
+ {\global\alllevelstrue
+ \xdef\currentlevel{}%
+ \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
+ \xdef\currentlevel{}}
+ {\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
+ \xdef\currentlevel{}%
+ \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}
+
+\def\doifnextlevelelse[#1::#2]#3#4%
+ {\ifalllevels
+ #3%
+ \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}%
+ \fi}
+
+\def\doifprevlevelelse[#1::#2]#3#4%
+ {\ifalllevels
+ #3%
+ \else
+ \doifelse{\@@sectiontype}{#1}
+ {\@EA\doifinstringelse\@EA{\@EA=\currentlevel:}{=:#2:}
+ {#3}
+ {#4}}
+ {#4}%
+ \fi}
+
+\def\dosettoclevel{\dosetlevel}
+\def\dosetreglevel{\dosetlevel}
+\def\dosetblklevel{\dosetlevel}
+
+\def\doiftoclevelelse{\doifnextlevelelse}
+\def\doifreglevelelse{\doifprevlevelelse}
+\def\doifblklevelelse{\doifprevlevelelse}
+
+\def\@@longformatnumber#1%
+ {\getvalue{\previoussection{#1}\s!format}:\@@shortsectionnumber{#1}}
+
+\def\@@longsectionnumber#1%
+ {\ifnum\countervalue{\??se\previoussection{#1}}>0
+ \getvalue{\previoussection{#1}\c!nummer}\@@koscheider
+ \fi
+ \@@shortsectionnumber{#1}}
+
+\def\@@shortsectionnumber#1%
+ {\@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax
+ \@@sectionvalue{#1}%
+ \else
+ \@@sectionconversion{#1}{\@@sectionvalue{#1}}%
+ \fi}
+
+\def\dodosetlocalsectieblok[#1#2][#3]%
+ {\def\@@sectiontype{#1}%
+ \def\@@sectieblok{#1#2}%
+ \def\@@sectieblokken{#3}}
+
+\def\dosetlocalsectieblok#1#2%
+ {\@EA\dodosetlocalsectieblok\@EA[#1][#2]}
+
+\def\doaroundsectieblok#1%
+ {\doifvaluesomething{\??sb#1\c!pagina}
+ {\ExpandFirstAfter\pagina[\getvalue{\??sb#1\c!pagina}]}%
+ \resetsectioncounters[\firstsection]%
+ \resetsectionmarks[\firstsection]}
+
+\def\dostartsectieblok#1#2%
+ {\begingroup
+ \doaroundsectieblok{#1}%
+ \dosetlocalsectieblok{#1}{#2}%
+ \expandafter\csname#2true\endcsname
+\getvalue{\??sb\@@sectieblok\c!voor}% don't move
+ \showmessage{\m!structures}{1}{\@@sectieblokken}}
+
+\def\dostopsectieblok%
+ {\showmessage{\m!structures}{2}{\@@sectieblokken}%
+\getvalue{\??sb\@@sectieblok\c!na}% don't move
+ \doaroundsectieblok{\@@sectieblok}%
+ \endgroup}
+
+\def\dostelsectieblokin[#1][#2]%
+ {\getparameters[\??sb#1][#2]}
+
+\def\stelsectieblokin%
+ {\dodoubleargument\dostelsectieblokin}
+
+\def\dodefinieersectieblok[#1][#2][#3]%
+ {\getparameters
+ [\??sb#1]
+ [\c!nummer=\v!ja,
+ \c!pagina=\v!rechts, % anders worden marks te vroeg gereset !
+ %\c!voor=,
+ %\c!na=,
+ #3]%
+ \expandafter\newif\csname if#2\endcsname
+ \setvalue{\??sb#1}%
+ {\dosetlocalsectieblok{#1}{#2}}%
+ \setvalue{\e!start#2}%
+ {\dostartsectieblok{#1}{#2}}%
+ \setvalue{\e!stop#2}%
+ {\dostopsectieblok}}
+
+\def\definieersectieblok%
+ {\dotripleargument\dodefinieersectieblok}
+
+\def\sectiebloklabel#1%
+ {\@EA\ifx\csname#1\@@sectieblok\c!label\endcsname\relax
+ \else
+ \labeltext{\getvalue{#1\@@sectieblok\c!label}}%
+ \fi}
+
+% BETER:
+
+\def\sectiebloklabel#1%
+ {\@EA\ifx\csname\??ko#1\@@sectieblok\c!label\endcsname\relax
+ \labeltext{#1}%
+ \else
+ \labeltext{\getvalue{\??ko#1\@@sectieblok\c!label}}%
+ \fi}
+
+\dosetlocalsectieblok{\v!hoofdtekst}{\v!hoofdteksten}
+
+\def\setsectiontype[#1]%
+ {\getvalue{\??sb#1}}
+
+\def\writesection#1#2#3%
+ {\bgroup
+ \convertargument#3\to\ascii
+ \edef\!!stringa{#1}%
+ \@EA\writestatus\@EA
+ {\!!stringa}
+ {\ifsectienummer#2\else(#2)\fi\normalspace\ascii}%
+ \egroup}
+
+\def\@@koniveau{1} \def\kopniveau{\@@koniveau}
+
+% \def\dohandelpaginaafA#1%
+% {\ifnum\lastpenalty>0
+% \global\paginageblokkeerdtrue
+% \fi
+% \witruimte
+% \flushsidefloats
+% \getvalue{\??ko#1\c!voor}%
+% \ifpaginageblokkeerd
+% \global\paginageblokkeerdfalse
+% \else
+% \!!countb=\getvalue{\??se\@@sectie\c!niveau}\relax
+% \ifnum\!!countb>\@@koniveau\relax
+% \!!counta=20000
+% \multiply\!!countb by 500
+% \advance\!!counta by \!!countb
+% \dosomebreak{\penalty\!!counta}%
+% \else
+% \dosomebreak{\allowbreak}%
+% \fi
+% \fi
+% \xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}}
+%
+% \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}]}}}}
+%
+% \def\handelpaginaaf#1%
+% {\dohandelpaginaafA{#1}%
+% \ifnum\countervalue{\??se\previoussection{\@@sectie}}>0
+% \ifnum\countervalue{\??se\@@sectie}>0
+% \dohandelpaginaafB{#1}%
+% \else
+% \doifnotvalue{\??ko#1\c!doorgaan}{\v!ja}
+% {\dohandelpaginaafB{#1}}%
+% \fi
+% \else
+% \dohandelpaginaafB{#1}%
+% \fi}
+
+\def\dohandelpaginaafAA#1%
+ {\ifnum\lastpenalty>0
+ \global\paginageblokkeerdtrue
+ \fi}
+
+\def\dohandelpaginaafAB#1%
+ {\flushsidefloats
+ \getvalue{\??ko#1\c!voor}%
+ %\witruimte vervangen door \noindent elders
+ \relax
+ \ifpaginageblokkeerd
+ \global\paginageblokkeerdfalse
+ \else
+ \!!countb=\getvalue{\??se\@@sectie\c!niveau}\relax
+ \ifnum\!!countb>\@@koniveau\relax
+ \!!counta=20000
+ \multiply\!!countb by 500
+ \advance\!!counta by \!!countb
+ \dosomebreak{\penalty\!!counta}%
+ \else
+ \dosomebreak{\allowbreak}%
+ \fi
+ \fi
+ \xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}}
+
+\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}]}}}}
+
+\def\handelpaginaaf#1%
+ {\dohandelpaginaafAA{#1}%
+ \ifnum\countervalue{\??se\previoussection{\@@sectie}}>0
+ \ifnum\countervalue{\??se\@@sectie}>0
+ \dohandelpaginaafB{#1}%
+ \else
+ \doifnotvalue{\??ko#1\c!doorgaan}{\v!ja}
+ {\dohandelpaginaafB{#1}}%
+ \fi
+ \else
+ \dohandelpaginaafB{#1}%
+ \fi
+ \dohandelpaginaafAB{#1}}
+
+%
+
+\def\dolocalkopsetup#1% koppeling met standaard kopcommando
+ {\forgetall
+ \ExpandFirstAfter\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]%
+ \def\\{\crlf\strut}}
+
+\newif\ifplaatskop
+\newif\ifverhoognummer
+\newif\ifkopnummer
+
+\def\setsectieenkoppeling#1%
+ {\edef\@@koppeling{\getvalue{\??ko#1\c!koppeling}}%
+ \edef\@@sectie{\getvalue{\??ko#1\c!sectie}}%
+ \doifnothing{\@@koppeling}
+ {\edef\@@koppeling{#1}}%
+ \doifnothing{\@@sectie}
+ {\edef\@@sectie{\getvalue{\??ko\@@koppeling\c!sectie}}}}
+
+\newif\ifkopprefix
+
+% \handelpaginaaf komt het eerst omdat eventueel
+% subpaginanummers moeten worden afgehandeld. Vervolgens
+% worden de nummers opgehoogd en referenties geset, dan
+% volgt de kop en tot slot de worden de marks en de prefix
+% geset.
+
+% \hoofdstuk {tekst}
+% \hoofdstuk tekst
+% \hoofdstuk <niets>
+
+\def\dosomekop#1[#2]#3%
+ {\doifelsevalue{\??ko#1\c!eigennummer}{\v!ja}
+ {\def\next{\doquadruplegroupempty\dodosomekop{#1}{#2}{#3}}}
+ {\def\next{\fourthargumentfalse\dodosomekop{#1}{#2}{#3}{}}}%
+ \next}
+
+\def\dodosomekop#1#2#3#4%
+ {\iffourthargument
+ \dododosomekop{#1}[#2]{\sectiebloklabel{#1}}{#3}{#4}%
+ \else
+ \dododosomekop{#1}[#2]{\sectiebloklabel{#1}}{\getvalue{\@@sectie\c!nummer}}{#3}%
+ \fi}
+
+\def\dododosomekop#1[#2]#3#4#5% % pas met \ExpandFirstAfter op bij twee||taligheid
+ {\flushingcolumnfloatsfalse
+ \setsectieenkoppeling{#1}%
+ \doifelsevalue{\??ko#1\c!prefix}{}
+ {\kopprefixfalse}
+ {\kopprefixtrue}%
+ \doifelsevalue{\??ko#1\c!plaatskop}{\v!ja}
+ {\plaatskoptrue}
+ {\plaatskopfalse}%
+ \doifelsevalue{\??ko#1\c!verhoognummer}{\v!ja}
+ {\verhoognummertrue}
+ {\verhoognummerfalse}%
+ \ifsectienummer
+ \doifelsevalue{\??sb\@@sectieblok\c!nummer}{\v!ja}
+ {\doifelsevalue{\??ko#1\c!nummer}{\v!ja}
+ {\kopnummertrue}
+ {\kopnummerfalse}}
+ {\kopnummerfalse}%
+ \else
+ \kopnummerfalse
+ \fi
+ \ifverhoognummer
+ \ifplaatskop
+ \handelpaginaaf{#1}%
+ \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...]
+ \ifkopprefix
+ \setupreferencing[\c!prefix=-]%
+ \fi
+ \getvalue{\e!volgende\@@sectie}%
+ \getvalue{\??ko#1\c!tussen}%
+ \ifkopnummer
+ \noindent % ipv \witruimte elders
+ \doplaatskopnummertekst
+ {#1}
+ {\setsectionlistreference{\@@sectie}{#1}%
+ \ExpandFirstAfter\soortpagina[\@@koppeling]%
+ \rawreference{\s!sec}{#2}{#4}%
+ \resetsectionmarks[\@@sectie]%
+ \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}}
+ {#3#4}
+ {#5}
+ {\markeer[#1]{#5}% }%
+ \bepaalkopnummer[#1]%
+ \expanded{\markeer[#1\v!nummer]{\getvalue{\@@sectie\c!nummer}}}}%
+ \writesection{#1}{#4}{#5}%
+ \else
+ \noindent % ipv \witruimte elders
+ \doplaatskoptekst
+ {#1}
+ {\setsectionlistreference{\@@sectie}{#1}%
+ \ExpandFirstAfter\soortpagina[\@@koppeling]%
+ \rawpagereference{\s!sec}{#2}%
+ \resetsectionmarks[\@@sectie]%
+ \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}}
+ {#5}
+ {\markeer[#1]{#5}% }%
+ \bepaalkopnummer[#1]%
+ \expanded{\markeer[#1\v!nummer]{\getvalue{\@@sectie\c!nummer}}}}%
+ \writesection{#1}{-}{#5}%
+ \fi
+ \ifkopprefix
+ \ExpandFirstAfter\setupreferencing[\c!prefix=\getvalue{\??ko#1\c!prefix}]%
+ \fi
+ \dosomebreak\nobreak
+ \getvalue{\??ko#1\c!na}%
+ \else
+ \dohandelpaginaafB{#1}% toegevoegd ivm subpaginanr / tug sheets
+ \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...]
+ \ifkopprefix
+ \setupreferencing[\c!prefix=-]%
+ \fi
+ \getvalue{\e!volgende\@@sectie}%
+ \getvalue{\??ko#1\c!tussen}%
+ \setsectionlistreference{\@@sectie}{#1}%
+ \resetsectionmarks[\@@sectie]%
+ \markeer[#1]{#5}%
+ \bepaalkopnummer[#1]%
+ \expanded{\markeer[#1\v!nummer]{\getvalue{\@@sectie\c!nummer}}}%
+ \ExpandFirstAfter\soortpagina[\@@koppeling]%
+ \ifkopnummer
+ \rawreference{\s!sec}{#2}{#4}%
+ \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}%
+ \writesection{#1}{#4}{#5}%
+ \else
+ \rawpagereference{\s!sec}{#2}%
+ \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}%
+ \writesection{#1}{-}{#5}%
+ \fi
+ \ifkopprefix
+ \ExpandFirstAfter\setupreferencing[\c!prefix=\getvalue{\??ko#1\c!prefix}]%
+ \fi
+ \fi
+ \else
+ \ifplaatskop
+ \handelpaginaaf{#1}%
+ \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...]
+ \getvalue{\??ko#1\c!tussen}%
+ \noindent % ipv \witruimte elders
+ \doplaatskoptekst
+ {#1}
+ {\rawpagereference{\s!sec}{#2}}
+ {#5}
+ {}%
+ \writesection{#1}{-}{#5}%
+ \dosomebreak\nobreak
+ \getvalue{\??ko#1\c!na}%
+ \else
+ % do nothing
+ \fi
+ \fi
+ \flushingcolumnfloatstrue}
+
+% \prevdepth\dp\strutbox is belangrijk, vergelijk naast elkaar:
+%
+% \onderwerp{test} \input tufte
+% \onderwerp{test} \strut \input tufte
+% \onderwerp{test} \plaatslijst[...]
+
+\def\doplaatskoptekst#1#2#3#4%
+ {\bgroup
+ \forgetall
+ %\showcomposition
+ \mindermeldingen
+ \postponefootnotes
+ \def\localkopsetup%
+ {\dolocalkopsetup{#1}}%
+ \startsynchronisatie
+ \snaptogrid\hbox
+ {\getvalue{\??ko#1\c!commando}
+ {} % no number
+ {\doattributes{\??ko#1}{\doattributes{\??ko#1\c!tekst}
+ {\dontconvertfont
+ \stelinterliniein
+ #2%
+ \getvalue{\??ko#1\c!voorcommando}%
+ \getvalue{\??ko#1\c!tekstcommando}{\setstrut\begstrut#3\endstrut}%
+ \getvalue{\??ko#1\c!nacommando}%
+ \endgraf}}}}
+ \endgraf
+ \nointerlineskip
+ \dosomebreak\nobreak
+ #4%
+ \prevdepth\openstrutdepth % \dp\strutbox % ivm grid
+ \stopsynchronisatie
+ \egroup
+ \noindentation}
+
+\def\doplaatskopnummertekst#1#2#3#4#5%
+ {\bgroup
+ \forgetall
+ %\showcomposition
+ \mindermeldingen
+ \postponefootnotes
+ \def\localkopsetup%
+ {\dolocalkopsetup{#1}}%
+ \startsynchronisatie
+ \snaptogrid\hbox
+ {\getvalue{\??ko#1\c!commando}%
+ {\doattributes{\??ko#1}{\doattributes{\??ko#1\c!nummer}
+ {\getvalue{\??ko#1\c!voorcommando}%
+ \getvalue{\??ko#1\c!nummercommando}{\setstrut\begstrut#3\endstrut}}}}
+ {\doattributes{\??ko#1}{\doattributes{\??ko#1\c!tekst}
+ {\dontconvertfont
+ \stelinterliniein
+ #2%
+ \getvalue{\??ko#1\c!tekstcommando}{\setstrut\begstrut#4\endstrut}%
+ \getvalue{\??ko#1\c!nacommando}%
+ \endgraf}}}}
+ \endgraf
+ \nointerlineskip
+ \dosomebreak\nobreak
+ #5%
+ \prevdepth\openstrutdepth % \dp\strutbox % important, see comment
+ \stopsynchronisatie
+ \egroup
+ \noindentation}
+
+\def\dostelkopnummerin[#1][#2#3]%
+ {\bgroup
+ \setsectieenkoppeling{#1}%
+ \doifinstringelse{#2}{+-}
+ {\doifelse{#3}{}
+ {\@@nextsectionnumber{\@@sectie}}
+ {\!!counta=#2#3\relax
+ \advance\!!counta by \@@sectionvalue{\@@sectie}%
+ \@@setsectionnumber{\@@sectie}{\!!counta}}}
+ {\@@setsectionnumber{\@@sectie}{#2#3}}%
+ \egroup}
+
+\def\stelkopnummerin%
+ {\dodoubleargument\dostelkopnummerin}
+
+% \def\dokopnummer[#1]%
+% {\bgroup
+% \setsectieenkoppeling{#1}%
+% \doifnot{\getvalue{\@@sectie\c!nummer}}{0} % kan effienter
+% {\getvalue{\@@sectie\c!nummer}}%
+% \egroup}
+%
+% beter :
+
+\def\huidigekopnummer{0}
+
+\def\bepaalkopnummer[#1]%
+ {\bgroup
+ \setsectieenkoppeling{#1}%
+ \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}%
+ \egroup}
+
+\def\dokopnummer[#1]%
+ {\bgroup
+ \setsectieenkoppeling{#1}%
+ \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}%
+ \doifnot{\huidigekopnummer}{0}
+ {\getvalue{\@@sectie\c!nummer}}%
+ \egroup}
+
+\def\kopnummer%
+ {\dosingleargument\dokopnummer}
+
+\def\alinea%
+ {\par}
+
+\def\plaatskopnormaal#1#2%
+ {\doifelsenothing{#1}
+ {\vbox
+ {\localkopsetup
+ \noindent
+ #2}}%
+ {\setbox0=\hbox{{#1}\hskip0.75em}%
+ \vbox
+ {\localkopsetup
+ \hangindent 1\wd0
+ \hangafter 1
+ \noindent
+ \unhbox0 % don't use \strut's here!
+ #2}}}
+
+\def\plaatskopinmarge#1#2%
+ {\vbox
+ {\localkopsetup
+ \begstrut % but use one \strut here!
+ \doifsomething{#1}
+ {\llap{\hbox to 5em{\hfill{#1}\hskip\linkermargeafstand}}}%
+ {#2}}}
+
+\def\plaatskopmidden#1#2%
+ {\vbox
+ {\localkopsetup
+ \raggedcenter
+ \doifsomething{#1}{\strut#1\par}\begstrut#2}}
+
+\def\plaatsgeenkop#1#2%
+ {}
+
+% default == instellingen
+% koppeling == koppen, breaks, marks, enz.
+% sectie == nummering
+
+\let\@@kolijst=\empty
+
+\def\dodefinieerkop[#1][#2]% % don't preset prefix to much
+ {\presetlabeltext[#1=]%
+ \getparameters
+ [\??ko#1]
+ [\c!nummerletter=\getvalue{\??ko#1\c!letter},
+ \c!tekstletter=\getvalue{\??ko#1\c!letter},
+ \c!nummerkleur=\getvalue{\??ko#1\c!kleur},
+ \c!tekstkleur=\getvalue{\??ko#1\c!kleur}]%
+ \ConvertToConstant\doifinstringelse{=}{#2}
+ {\getparameters
+ [\??ko#1]
+ [\c!sectie=\getvalue{\??ko\getvalue{\??ko#1\c!koppeling}\c!sectie},
+ \c!default=,
+ \c!koppeling=,
+ \c!prefix=,
+ \c!voor=,
+ \c!na=,
+ \c!pagina=,
+ \c!hoofd=,
+ \c!letter=,
+ \c!nummercommando=,
+ \c!tekstcommando=,
+ \c!eigennummer=\v!nee,
+ \c!nummer=\v!ja,
+ \c!kleur=,
+ \c!doorgaan=\v!ja,
+ \c!plaatskop=\v!ja,
+ \c!verhoognummer=\v!ja,
+ \c!commando=\@@plaatskop,
+ #2]%
+ \ConvertToConstant\doifnot{#1}{\getvalue{\??ko#1\c!default}}
+ {\doifsomething{\getvalue{\??ko#1\c!default}}
+ {%\presetlabeltext[#1=\labeltext{\getvalue{\??ko#1\c!default}}]%
+ \copyparameters
+ [\??ko#1][\??ko\getvalue{\??ko#1\c!default}]
+ [\c!voor,\c!na,\c!commando,\c!pagina,\c!doorgaan,\c!hoofd,
+ \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer,
+ \c!letter,\c!kleur,
+ %\c!nummerletter,\c!tekstletter,
+ \c!nummercommando,\c!tekstcommando]}}%
+ \getparameters[\??ko#1][#2]%
+ \doifsomething{\getvalue{\??ko#1\c!sectie}}
+ {\doifundefined{\??mk#1}
+ {\definieermarkering[#1]%
+ \koppelmarkering[#1][\getvalue{\??ko#1\c!sectie}]%
+ \definieermarkering[#1\v!nummer]%
+ \koppelmarkering[#1\v!nummer][\getvalue{\??ko#1\c!sectie}\v!nummer]}}%
+ \doifundefined{\??li#1}{\definieerlijst[#1]}}
+ {\ConvertToConstant\doifelse{#1}{#2}
+ {\doifundefined{\??li#1}{\definieerlijst[#1]}}
+ {%\presetlabeltext[#1=\labeltext{#2}]%
+ \copyparameters
+ [\??ko#1][\??ko#2]
+ [\c!niveau,\c!sectie,\c!koppeling,\c!prefix,
+ \c!voor,\c!na,\c!commando,\c!pagina,\c!doorgaan,\c!hoofd,
+ \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer,
+ \c!letter,\c!kleur,
+ %\c!nummerletter,\c!tekstletter,
+ \c!nummercommando,\c!tekstcommando]%
+ \definieermarkering[#1][#2]%
+ \definieermarkering[#1\v!nummer][#2\v!nummer]%
+ \doifundefined{\??li#1}{\definieerlijst[#1][#2]}}}%
+ \addtocommalist{#1}\@@kolijst
+ \setevalue{\??sk#1}%
+ {\getvalue{\??ko#1\c!koppeling}}%
+ \setevalue{\??by#1}%
+ {\getvalue{\??ko#1\c!sectie}}%
+ \setevalue{\??by\v!per#1}%
+ {\getvalue{\??ko#1\c!sectie}}%
+ \setvalue{#1}%
+ {\complexorsimpleempty{#1}}%
+ \setvalue{\s!complex#1}[##1]%
+ {\dowithpargument{\dosomekop{#1}[##1]}}}
+
+\def\definieerkop%
+ {\dodoubleemptywithset\dodefinieerkop}
+
+\def\dostelkopin[#1][#2]%
+ {\getparameters[\??ko#1][#2]%
+ % The next check prevents hard to trace problems. I once
+ % set \c!commando to nothing and (quite natural) got the
+ % wrong references etc. The whole bunch should be boxed!
+ \expandafter\convertcommand\csname\??ko#1\c!commando\endcsname\to\ascii
+ \doifnothing{\ascii}
+ {\setvalue{\??ko#1\c!commando}{\@@plaatskop}}}
+
+\def\stelkopin%
+ {\dodoubleargumentwithset\dostelkopin}
+
+\newif\ifsectienummer \sectienummertrue
+
+\def\dostelkoppenin[#1]%
+ {\getparameters[\??ko][#1]%
+ \doifelse{\@@kosectienummer}{\v!ja}
+ {\sectienummertrue}
+ {\sectienummerfalse}%
+ \processaction
+ [\@@kovariant]
+ [ \v!normaal=>\def\@@plaatskop{\plaatskopnormaal},
+ \v!midden=>\def\@@plaatskop{\plaatskopmidden},
+ \v!marge=>\def\@@plaatskop{\plaatskopinmarge},
+ \v!inmarge=>\def\@@plaatskop{\plaatskopinmarge}]}
+
+\def\stelkoppenin%
+ {\dosingleargument\dostelkoppenin}
+
+\def\systemsuppliedchapter {\getvalue{\v!hoofdstuk}}
+\def\systemsuppliedtitle {\getvalue{\v!titel}}
+
+\def\complexbijlage[#1]#2%
+ {\pagina[\v!rechts]
+ \stelnummeringin[\c!status=\v!stop]
+ \systemsuppliedchapter[#1]{#2}
+ \pagina[\v!rechts]
+ \stelnummeringin[\c!status=\v!start]
+ \stelpaginanummerin[\c!nummer=1]}
+
+\setvalue{\v!bijlage}%
+ {\complexorsimpleempty{bijlage}}
+
+%I n=Selecteren
+%I c=\soortpagina,\verwerkpagina,\koppelpagina
+%I
+%I Het is mogelijk pagina's te markeren en selectief te
+%I verwerken. Markering vindt plaats met het commando:
+%I
+%I \soortpagina[aanduiding]
+%I
+%I en selecteren vindt plaats met:
+%I
+%I \verwerkpagina[aanduiding,...][instelling]
+%I
+%I waarbij de instelling 'ja' of 'nee' is en meerdere
+%I aanduidingen worden gescheiden door een comma.
+%P
+%I Er kunnen commando's worden gekoppeld aan pagina's:
+%I
+%I \koppelpagina[aanduiding,...][voor=,na=,optie=]
+%I
+%I De opgegeven commando's worden voor respectievelijk na het
+%I vrijgeven van de pagina uitgevoerd.
+
+% hier nog uti blokkeren
+
+\newif\ifgeselecteerd
+\geselecteerdtrue
+
+\newif\ifselecteren
+\selecterenfalse
+
+\newif\ifverwerken
+\verwerkentrue
+
+\def\selectie{}
+\def\paginasoort{}
+
+\let\naastpagina=\relax
+\let\napagina=\relax
+\let\voorpagina=\relax
+
+\def\dovoorpagina%
+ {\doifsomething{\paginasoort}
+ {\def\dododopagina##1%
+ {\global\let\voorpagina=\relax
+ \getvalue{\??pg##1\c!voor}}%
+ \processcommacommand[\paginasoort]\dododopagina}}
+
+\def\dododonapagina#1%
+ {\global\let\napagina=\relax
+ \gdef\paginasoort{}%
+ \getvalue{\??pg#1\c!na}}
+
+\def\donapagina%
+ {\doifsomething{\paginasoort}
+ {\def\dodopagina##1%
+ {\doifelsevalue{\??pg##1\c!optie}{\v!dubbelzijdig}
+ {\doifbothsidesoverruled
+ \dododonapagina{##1}%
+ \orsideone
+ \dododonapagina{##1}%
+ \orsidetwo
+ \od}%
+ {\dododonapagina{##1}}}%
+ \processcommacommand[\paginasoort]\dodopagina}}
+
+\def\dosoortpagina[#1]%
+ {\doglobal\addtocommalist{#1}{\paginasoort}%
+ \ifselecteren
+ \ExpandBothAfter\doifcommon{#1}{\selectie}
+ {\global\geselecteerdtrue}%
+ \fi
+ \gdef\voorpagina{\dovoorpagina}%
+ \gdef\napagina{\donapagina}}
+
+\def\soortpagina%
+ {\dosingleargument\dosoortpagina}
+
+\def\dokoppelpagina[#1][#2]%
+ {\getparameters
+ [\??pg]
+ [\c!voor=,
+ \c!na=,
+ \c!optie=,
+ #2]%
+ \def\docommando##1%
+ {\getparameters
+ [\??pg##1]
+ [\c!voor=\@@pgvoor,
+ \c!na=\@@pgna,
+ \c!optie=\@@pgoptie]}%
+ \processcommalist[#1]\docommando}%
+
+\def\koppelpagina%
+ {\dodoubleargument\dokoppelpagina}
+
+\def\doverwerkpagina[#1][#2]%
+ {\processaction
+ [#2]
+ [ \v!ja=>\global\verwerkentrue,
+ \v!nee=>\global\verwerkenfalse]%
+ \gdef\selectie{#1}%
+ \global\selecterentrue
+ \global\geselecteerdfalse}
+
+\def\verwerkpagina%
+ {\dodoubleargument\doverwerkpagina}
+
+\def\resetselectiepagina%
+ {\ifselecteren
+ \doifbothsidesoverruled
+ \global\geselecteerdfalse
+ \orsideone
+ \orsidetwo
+ \global\geselecteerdfalse
+ \od
+ \fi}
+
+\newif\iflocation
+
+\def\ifinteractief{\iflocation}
+
+\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{\v!vorige\c!lokale#1}{\s!lst:#1\previoussectionformat}%
+ \setxvalue{\c!huidige\c!lokale#1}{\s!lst:#1\currentsectionformat}%
+ \doifelse{\currentsectionformat}{}
+ {\setglobalcrossreference
+ {\v!vorige#1}{}{\realfolio}{}}
+ {\setglobalsystemreference\rt!list
+ {\v!vorige#1}{\getvalue{\v!vorige\c!lokale#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
+ {\v!vorige####1}{\getvalue{\c!huidige\c!lokale####1}}}%
+ \processcommacommand[\updatedlistreferences]\docommando
+ \global\let\updatelistreferences=\relax
+ \gdef\updatedlistreferences{}}%
+ \fi}
+
+\def\stoplistreferences%
+ {\gobbleoneargument}
+
+% de rest
+
+\newcount\prefixteller
+
+\def\referenceprefix{}
+
+% \def\showlocation #1{#1}
+% \def\showcontrastlocation#1#2#3{#3}
+% \def\showcoloredlocation #1#2{#2}
+
+
+\def\referencepagenumber[#1]%
+ {\donottest % nodig i.v.m. scannen {tekst} bij [referentie] in \op
+ {\paginaprefix\??rf[#1]%
+ \translatednumber[#1]}}
+
+%I n=Regels
+%I c=\startregels,\stelregelsin
+%I c=\startregelnummeren,\stelregelnummerenin
+%I c=\crlf
+%I c=\startregel,\stopregel,\eenregel,\inregel
+%I
+%I Het is mogelijk de indeling in regels zoals die in de ruwe
+%I tekst wordt gehanteerd af te dwingen. Er wordt in dit
+%I geval niet ingesprongen. De regels worden gezet tussen de
+%I twee commando's:
+%I
+%I \startregels
+%I
+%I ...................................................
+%I
+%I \stopregels
+%P
+%I Er kan met betrekking tot regels een en ander worden
+%I ingesteld:
+%I
+%I \stelregelsin[voor=,na=,inspringen=]
+%I
+%I Aan 'inspringen' kan men 'ja', 'nee', 'even' of 'oneven'
+%I toekennen.
+%P
+%I Het is mogelijk regels te nummeren door ze tussen de
+%I volgende commando's te plaatsen:
+%I
+%I \startregelnummeren
+%I \stopregelnummeren
+%I
+%I Als de regelovergangen moeten worden gehandhaafd, dan moet
+%I \startregels voor \startregelnummeren worden gegeven.
+%I
+%I Het nummeren begint steeds opnieuw bij 1. Als verder moet
+%I worden genummeren, dan kan achter \startregelnummeren
+%I [verder] worden meegegeven.
+%I
+%I Standaard worden regels alinea-gewijs genummerd. Als men
+%I over een paginagrens wil nummeren, dan moet [opelkaar]
+%I worden meegegeven.
+%P
+%I De wijze van nummeren kan worden ingesteld met:
+%I
+%I \stelregelnummerenin[conversie=,start=,stap=,letter=,
+%I plaats=,breedte=,letter=]
+%I
+%I Als 'conversie' kan worden meegegeven: cijfers, letters,
+%I Letters, romeins of Romeins. Aan 'start' en 'stap' kan
+%I een getal worden toegekend, aan 'letter' een trefwoord,
+%I aan 'breedte' een maat (bij voorkeur in ex) en aan
+%I 'plaats' het trefwoord 'inmarge' of 'intekst'.
+%P
+%I Er kan worden overgegaan naar een nieuwe regel met:
+%I
+%I \crlf
+%P
+%I .... testfase ...
+%I
+%I \startregel[tag] ... \stopregel[tag]
+%I \eenregel[tag]
+%I
+%I \inregel[tag]
+
+\newif\ifinregels
+\newif\ifregelnummersinmarge
+
+\def\stelregelsin%
+ {\dodoubleargument\getparameters[\??rg]}
+
+\def\startregels%
+ {\@@rgvoor
+ \pagina[\v!voorkeur]%
+ \witruimte
+ \begingroup
+ \def\@@rgstepyes{\parindent\!!zeropoint}%
+ \def\@@rgstepno{\parindent\!!zeropoint}%
+ \edef\@@rgparindent{\the\parindent}%
+ \def\@@rglinesteptoggle{1}%
+ \processaction
+ [\@@rginspringen]
+ [ \v!ja=>\def\@@rgstepyes{\parindent\@@rgparindent}%
+ \def\@@rgstepno{\parindent\@@rgparindent},
+ \v!oneven=>\def\@@rgstepyes{\parindent\!!zeropoint}%
+ \def\@@rgstepno{\parindent\@@rgparindent},
+ \v!even=>\def\@@rgstepno{\parindent\!!zeropoint}%
+ \def\@@rgstepyes{\parindent\@@rgparindent}]%
+ \inregelstrue
+ \stelwitruimtein[\v!geen]%
+ \obeylines
+ \ignorespaces
+ \def\obeyedline%
+ {\par
+ \ifdim\lastskip>\!!zeropoint
+ \def\@@rglinesteptoggle{0}%
+ \else
+ \increment\@@rglinesteptoggle
+ \fi
+ \ifodd\@@rglinesteptoggle\relax
+ \@@rgstepyes
+ \else
+ \@@rgstepno
+ \fi}%
+ \GotoPar}
+
+\def\stopregels%
+ {\endgroup
+ \@@rgna}
+
+\newcount\linenumber
+\newcount\linestepper
+
+% het gebruik van \setlocalreference scheelt een hash entry
+
+\def\regelweergave%
+ {\convertnumber\@@rnconversie\linenumber}%
+
+\def\dostelregelnummerenin[#1]%
+ {\getparameters
+ [\??rn]
+ [\c!start=1,
+ \c!stap=1,
+ #1]%
+ \global\linenumber=1\relax}
+
+\def\stelregelnummerenin%
+ {\dosingleargument\dostelregelnummerenin}
+
+\def\dostartnummerenLINE% % !! \everypar !!
+ {\EveryPar{\schrijfregelnummer}}
+
+\def\dostopnummerenLINE%
+ {\egroup}
+
+\def\dodoschrijfregelnummer%
+ {\setbox0=\hbox{\regelweergave}%
+ \vsmashbox0
+ \ifregelnummersinmarge
+ \llap{\hbox{\box0\hskip\linkermargeafstand}}%
+ \else
+ \llap{\hbox to \@@rnbreedte{\box0\hss}}%
+ \fi}
+
+\def\complexstartregelnummeren[#1]%
+ {\doifnotinset{\v!verder}{#1}
+ {\global\linenumber=1\relax}%
+ \doifinsetelse{\@@rnplaats}{\v!inmarge,\v!marge}
+ {\regelnummersinmargetrue}
+ {\regelnummersinmargefalse}%
+ \ifregelnummersinmarge\else
+ \advance\leftskip by \@@rnbreedte\relax
+ \fi
+ \ifinregels
+ \let\dostartnummeren=\dostartnummerenLINE
+ \let\stopregelnummeren=\dostopnummerenLINE
+ \def\schrijfregelnummer%
+ {\doschrijfregelnummer
+ \global\advance\linenumber by 1\relax}%
+ \else
+ \let\dostartnummeren=\dostartnummerenPAR
+ \let\stopregelnummeren=\dostopnummerenPAR
+ \def\schrijfregelnummer%
+ {\global\advance\linenumber by -1\relax
+ \doschrijfregelnummer}%
+ \fi
+ \dostartnummeren}
+
+\def\startregelnummeren%
+ {\bgroup
+ \complexorsimpleempty{startregelnummeren}}
+
+\def\doschrijfregelnummer%
+ {\ifnum\linenumber<\@@rnstart\relax
+ \else
+ \!!counta=\linenumber
+ \divide\!!counta by \@@rnstap\relax
+ \multiply\!!counta by \@@rnstap\relax
+ \ifnum\!!counta=\linenumber
+ \doattributes{\??rn}{\dodoschrijfregelnummer}%
+ \fi
+ \fi}
+
+\def\regelreferentie#1[#2]%
+ {\bgroup
+ \dimen0=\dp\strutbox
+ \doif{\@@rnrefereren}{\v!aan}
+ {\doglobal\increment\linereference
+ \setxvalue{lrf:n:\linereference}{\@@rnprefix#2}%
+ \setxvalue{lrf:l:\linereference}{0}%
+ \setxvalue{lrf:p:\linereference}{#1}%
+ \advance\dimen0 by \linereference sp}%
+ \prewordbreak
+ \vrule \!!width \!!zeropoint \!!depth \dimen0
+ \prewordbreak
+ \egroup}
+
+\def\eenregel[#1]%
+ {\regelreferentie0[#1]\ignorespaces}
+
+\def\startregel[#1]%
+ {\regelreferentie1[#1]\ignorespaces}
+
+\def\stopregel[#1]%
+ {\unskip\regelreferentie2[#1]}
+
+\def\inregellabel#1%
+ {\doifinstringelse{--}{#1}
+ {\labeltext{\v!regels}}
+ {\labeltext{\v!regel}}}
+
+\def\inregel#1[#2]%
+ {\doifelsenothing{#1}
+ {\in{\inregellabel{\currenttextreference}}[\@@rnprefix#2]}
+ {\in{#1}[\@@rnprefix#2]}}
+
+\def\dostartnummerenPAR%
+ {\beginofshapebox
+ \doglobal\newcounter\linereference}
+
+% localcrossref heroverwegen
+
+\def\dostopnummerenPAR% dp's -> openstrutdepth
+ {\endofshapebox
+ \linestepper=0
+ \reshapebox{\global\advance\linestepper by 1\relax}%
+ \global\advance\linenumber by \linestepper
+ \doifelse{\@@rnrefereren}{\v!aan}
+ {\reshapebox % We are going back!
+ {\global\advance\linenumber by -1
+ \dimen0=\dp\shapebox
+ \advance\dimen0 by -\dp\strutbox
+ \ifdim\dimen0>\!!zeropoint\relax
+ \dostepwiserecurse{1}{\number\dimen0}{1}
+ {\setxvalue{lrf:l:\recurselevel}{\the\linenumber}}%
+ \fi}%
+ \global\advance\linenumber by \linestepper
+ \ifnum\linereference>0 % anders vreemde loop in paragraphs+recurse
+ \dorecurse{\linereference}
+ {\edef\linereferenceplus{\getvalue{lrf:p:\recurselevel}}%
+ \ifnum\linereferenceplus=2
+ \edef\linereferencename{\getvalue{lrf:n:\recurselevel}}%
+ \edef\linereferenceline{\getvalue{lrf:l:\recurselevel}}%
+ \setlocalcrossreference{\referenceprefix\linereferencename}{}{}{\linereferenceline}%
+ \fi}%
+ \dorecurse{\linereference}
+ {\edef\linereferenceplus{\getvalue{lrf:p:\recurselevel}}%
+ \ifnum\linereferenceplus<2
+ \edef\linereferencename{\getvalue{lrf:n:\recurselevel}}%
+ \edef\linereferenceline{\getvalue{lrf:l:\recurselevel}}%
+ \ifnum\linereferenceplus=1
+\getreferenceelements{\linereferencename}%
+ \ifnum\linereferenceline<0\currenttextreference\relax % 0 prevents error
+ \edef\linereferenceline{\linereferenceline--\currenttextreference}%
+ \fi
+ \fi
+\setlocalcrossreference{\referenceprefix\linereferencename}{}{}{\linereferenceline}%
+ \fi}%
+ \global\let\scratchline=\linenumber % We are going back!
+ \reshapebox
+ {\doglobal\decrement\scratchline
+ \hbox
+ {\dorecurse{\linereference}
+ {\edef\linereferencename{\getvalue{lrf:n:\recurselevel}}%
+\getreferenceelements{\linereferencename}%
+ \beforesplitstring\currenttextreference--\at--\to\firstline
+ \ifnum\firstline=\scratchline\relax
+ % beter een rawtextreference
+\textreference[\linereferencename]{\currenttextreference}%
+\setlocalcrossreference{\referenceprefix\linereferencename}{}{}{0}% ==done
+ \fi}%
+ \dimen0=\dp\shapebox
+ \advance\dimen0 by -\dp\strutbox
+ \ifdim\dimen0>\!!zeropoint\relax
+ \dp\shapebox=\dp\strutbox
+ \fi
+ \schrijfregelnummer\box\shapebox}}%
+ \else
+ \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}%
+ \fi}
+ {\reshapebox{\global\advance\linenumber by -1}%
+ \global\advance\linenumber by \linestepper
+ \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}}%
+ \global\advance\linenumber by \linestepper
+ \flushshapebox
+ \egroup}
+
+\def\crlf%
+ {\unskip\hfil\break}
+
+\def\opeenregel%
+ {\let\crlf=\relax
+ \let\\=\relax}
+
+%I n=Opmaak
+%I c=\definieeropmaak,\testopmaak,\startstandaardopmaak
+%I
+%I Het is mogelijk een lege pagina op te maken. Hiertoe wordt
+%I een blok gereserveerd met het commando:
+%I
+%I \definieeropmaak[naam][breedte=,hoogte=,voffset=,
+%I hoffset=,pagina=,commandos=,voor=,na=,dubbelzijdig=]
+%I
+%I Hierbij wordt bij de eerste vier parameters een getal
+%I meegegeven (5cm, 24pt, enz.). Met 'pagina' geeft men aan
+%I of naar een nieuwe pagina wordt gesprongen (standaard
+%I 'rechts'). Aan de 'commandos' kunnen commando's worden
+%I toekend die tijdens de opmaak gelden. Aan de laatste twee
+%I parameters toegekende commando's worden voor en na het
+%I opmaken van de pagina uitgevoerd. De opgemaakte pagina
+%I kan worden geselecteerd op naam. Met 'dubbelzijdig' geeft
+%I men aan of er een lege achterkant moet worden opgemaakt
+%I (standaard: ja). Dit geldt aleen bij dubbelzijdig zetten.
+%I
+%I Naast het bovenstaande commando is er het commando:
+%I
+%I \stelopmaakin[naam][instellingen]
+%P
+%I Na het geven van dit commando zijn twee commando's
+%I beschikbaar: \startnaamopmaak en \stopnaamopmaak. Tussen
+%I deze twee commando's kunnen zetopdrachten en teksten
+%I worden opgenomen. Een en ander wordt op een lege bladzijde
+%I gezet.
+%I
+%I Met het commando \testopmaak kunnen hulplijnen worden
+%I opgeroepen.
+%I
+%I De commando's \startstandaardopmaak en \stopstandaardopmaak
+%I maken het opmaken binnen de standaard-layout mogelijk.
+%P
+%I Eventueel kunnen de volgende twee commando's worden gebruikt
+%I om een pagina op te maken met hoofd- en voetregels.
+%I
+%I \startopmaak
+%I .....
+%I \stopopmaak
+
+\newbox\opmaak
+
+\def\setopmaaklayout[#1]%
+ {\stelvoetin [\c!status=\getvalue{\??do#1\c!voetstatus}]%
+ \stelhoofdin[\c!status=\getvalue{\??do#1\c!hoofdstatus}]%
+ \steltekstin[\c!status=\getvalue{\??do#1\c!tekststatus}]%
+ \stelonderin[\c!status=\getvalue{\??do#1\c!onderstatus}]%
+ \stelbovenin[\c!status=\getvalue{\??do#1\c!bovenstatus}]}
+
+\def\dododostartopmaak[#1]%
+ {\doifvaluesomething{\??do#1\c!pagina}
+ {\ExpandFirstAfter\pagina[\getvalue{\??do#1\c!pagina}]}%
+ \soortpagina[#1]%
+ \setopmaaklayout[#1]%
+ \getvalue{\??do#1\c!commandos}%
+ \global\setbox\opmaak=\vbox to \getvalue{\??do#1\c!hoogte}%
+ \bgroup
+ \forgetall
+ \hsize=\getvalue{\??do#1\c!breedte}%
+ \getvalue{\??do#1\c!boven}}
+
+\def\dododostopopmaak[#1]%
+ {\getvalue{\??do#1\c!onder}%
+ \egroup}
+
+\def\doshipoutopmaak[#1]%
+ {\bgroup
+ \getvalue{\??do#1\c!voor}%
+ \box\opmaak
+ \setopmaaklayout[#1]%
+ \pagina
+ \getvalue{\??do#1\c!na}%
+ \ifdubbelzijdig
+ \ifodd\realpageno\else
+ \processaction
+ [\getvalue{\??do#1\c!dubbelzijdig}]
+ [ \v!ja=>\null\pagina\verlaagpaginanummer,
+ \v!leeg=>\pagebodyornamentsfalse
+ \null\pagina\verlaagpaginanummer]%
+ \fi
+ \fi
+ \verlaagpaginanummer
+ \egroup}
+
+\def\doflushopmaak[#1]%
+ {\ifverwerken
+ \ifgeselecteerd
+ \doshipoutopmaak[#1]%
+ \fi
+ \else
+ \ifgeselecteerd
+ \else
+ \doshipoutopmaak[#1]%
+ \fi
+ \fi
+ \ifselecteren
+ \global\geselecteerdfalse
+ \fi}
+
+\def\dodostartopmaak[#1][#2]%
+ {\begingroup
+ \stelopmaakin[#1][#2]%
+ \dododostartopmaak[#1]}
+
+\def\dodostopopmaak[#1]%
+ {\dododostopopmaak[#1]%
+ \doflushopmaak[#1]%
+ \endgroup}
+
+\def\dostartopmaak[#1][#2]%
+ {\iffirstargument
+ \dodostartopmaak[#1][#2]%
+ \def\stopopmaak%
+ {\dodostopopmaak[#1]}%
+ \else
+ \pagina
+ \stelhoofdin[\c!status=\v!leeg]
+ \stelvoetin[\c!status=\v!leeg]
+ \vbox to \teksthoogte % nog een topskip optie
+ \bgroup
+ \def\stopopmaak%
+ {\egroup
+ \eject}%
+ \fi}
+
+\def\startopmaak%
+ {\dodoubleempty\dostartopmaak}
+
+\def\dodefinieeropmaak[#1][#2]%
+ {\getparameters
+ [\??do#1]%
+ [\c!breedte=\zetbreedte,
+ \c!hoogte=\teksthoogte,
+ \c!voffset=\!!zeropoint,
+ \c!hoffset=\!!zeropoint,
+ \c!commandos=,
+ \c!pagina=\v!rechts,
+ \c!dubbelzijdig=\v!leeg,
+ \c!voor=,
+ \c!boven=\vss,
+ \c!onder=\vss,
+ \c!na=,
+ \c!onderstatus=\v!normaal,
+ \c!bovenstatus=\v!normaal,
+ \c!tekststatus=\v!normaal,
+ \c!hoofdstatus=\v!stop,
+ \c!voetstatus=\v!stop,
+ #2]%
+ \setvalue{\e!start#1\e!opmaak}%
+ {\dodoubleempty\dodostartopmaak[#1]}%
+ \setvalue{\e!stop#1\e!opmaak}%
+ {\dodostopopmaak[#1]}}
+
+\def\definieeropmaak%
+ {\dodoubleargument\dodefinieeropmaak}
+
+\def\dostelopmaakin[#1]%
+ {\getparameters[\??do#1]}
+
+\def\stelopmaakin%
+ {\dodoubleargument\dostelopmaakin}
+
+%I n=Smaller
+%I c=\startsmaller,\stelsmallerin
+%I
+%I Een paragraaf kan smaller gezet worden met behulp van de
+%I commando's:
+%I
+%I \startsmaller[afstand]
+%I \stopsmaller
+%I
+%I Als maat wordt links, rechts, midden of een combinatie
+%I hiervan meegegeven. Eventueel wordt geen afstand meegegeven.
+%I
+%I De linker, rechter of dubbele inspringing kan worden
+%I ingesteld met:
+%I
+%I \stelsmallerin[links=,rechts=,midden=]
+%I
+%I Enkele voorbeelden van smelelr zetten zijn:
+%I
+%I \startsmaller[2*links,rechts]
+%I \stopsmaller
+%I
+%I \startsmaller[midden,rechts]
+%I \stopsmaller
+
+\newskip\linkssmaller
+\newskip\rechtssmaller
+\newskip\middensmaller
+
+\def\dosinglesmaller#1%
+ {\dosmaller[#1]}
+
+\def\dosmaller[#1]%
+ {\processaction
+ [#1]
+ [ \v!links=>\global\advance\linkssmaller by \@@sllinks,
+ \v!midden=>\global\advance\middensmaller by \@@slmidden,
+ \v!rechts=>\global\advance\rechtssmaller by \@@slrechts,
+ \s!unknown=>{\herhaalmetcommando[#1]\dosinglesmaller}]}
+
+\def\complexstartsmaller[#1]%
+ {\par
+ \bgroup
+ \global\linkssmaller=\!!zeropoint
+ \global\rechtssmaller=\!!zeropoint
+ \global\middensmaller=\!!zeropoint
+ \processcommalistwithparameters[#1]\dosmaller
+ \advance\leftskip by \linkssmaller
+ \advance\rightskip by \rechtssmaller
+ \advance\leftskip by \middensmaller
+ \advance\rightskip by \middensmaller}
+
+\def\simplestartsmaller%
+ {\startsmaller[\v!midden]}
+
+\def\startsmaller%
+ {\complexorsimple{startsmaller}}
+
+\def\stopsmaller%
+ {\par % else skips forgotten
+ \egroup}
+
+\def\stelsmallerin%
+ {\dodoubleargument\getparameters[\??sl]}
+
+%I n=Boxen
+%I c=\definieerhbox,\cbox,\lbox,\rbox,\sbox
+%I
+%I Het is mogelijk een tekst in een blok met een vaste
+%I omvang te zetten. Dit is vergelijkbaar met het opmaken
+%I van een tabel.
+%I
+%I \hbox?{tekst} (horizontaal blok)
+%I
+%I De box wordt eerst gedefinieerd met:
+%I
+%I \definieerhbox[?][maat]
+%I
+%I Er kan een links, rechts of midden uitgelijnde \vbox worden
+%I gezet met de commando:
+%I
+%I \lbox{tekst\\tekst\\tekst} of \lbox to <maat>{...}
+%I \rbox{tekst\\tekst\\tekst} of \rbox to <maat>{...}
+%I \cbox{tekst\\tekst\\tekst} of \cbox to <maat>{...}
+%I
+%I Het commando \\ forceert een overgang naar een nieuwe regel.
+%I
+%I Een (hoge) box kan een gedwongen hoogte gelijk aan die
+%I van een strut krijgen met:
+%I
+%I \sbox{box}
+
+\def\dodefinieerhbox[#1][#2]%
+ {\setvalue{hbox#1}##1%
+ {\hbox to #2{\begstrut##1\endstrut\hss}}}
+
+\def\definieerhbox%
+ {\dodoubleargument\dodefinieerhbox}
+
+\def\lrcbox#1#2#%
+ {\vbox#2\bgroup
+ \let\\=\endgraf
+ \forgetall#1\let\next=}
+
+\def\lbox%
+ {\lrcbox\raggedleft}
+
+\def\rbox%
+ {\lrcbox\raggedright}
+
+\def\cbox%
+ {\lrcbox\raggedcenter}
+
+\def\dosetraggedbox#1%
+ {\processaction
+ [#1]
+ [ \v!links=>\def\raggedbox{\lbox},
+ \v!rechts=>\def\raggedbox{\rbox},
+ \v!midden=>\def\raggedbox{\cbox},
+ \v!nee=>\def\raggedbox{\vbox\bgroup\raggedright\let\next=},
+ \s!default=>\def\raggedbox{\vbox},
+ \s!unknown=>\def\raggedbox{\vbox}]}
+
+\def\dosetraggedcommand#1%
+ {\processaction
+ [#1]
+ [ \v!links=>\def\raggedcommand{\raggedleft},
+ \v!rechts=>\def\raggedcommand{\raggedright},
+ \v!midden=>\def\raggedcommand{\raggedcenter},
+ \v!nee=>\def\raggedcommand{\raggedright},
+ \s!default=>\def\raggedcommand{\raggedcenter},
+ \s!unknown=>\def\raggedcommand{}]}
+
+%I n=Blokken
+%I c=\stelplaatsblokkenin,\stelblokkopjesin
+%I c=\definieerplaatsblok,\stelplaatsblokin
+%I c=\reserveer,\leeg,\plaats,\volledigelijstmet,\plaatslijstmet
+%I
+%I Figuren, tabellen, grafieken enz. kunnen in de tekst
+%I worden geplaatst met het commando:
+%I
+%I \plaats<bloknaam>[voorkeur][referentie]{titel}{blok}
+%I
+%I Als voorkeur kan worden opgegeven:
+%I
+%I hier bij voorkeur op deze plaats in de tekst
+%I forceer per se op deze plaats in de tekst
+%I pagina op een nieuwe pagina
+%I boven bovenaan de huidige pagina
+%I onder onderaan de huidige pagina
+%I
+%I links links in de paragraaf
+%I rechts rechts in de paragraaf
+%I
+%I inlinker in linker marge (gelijke hoogte)
+%I inrechter in rechter marge (gelijke hoogte)
+%I inmarge in linker/rechter marge (gelijke hoogte)
+%I marge in de marge
+%P
+%I Als er op de huidige bladzijde geen plaats is, dan wordt
+%I standaard de figuur verplaatst (eerste vier opties) en/of
+%I wordt overgegaan naar een nieuwe bladzijde (laatste twee
+%I opties.
+%I
+%I Men kan plaatsen afdwingen door het trefwoord altijd
+%I mee te geven: \plaats[hier,altijd][]{}{}. Er zijn dan
+%I twee runs nodig, omdat de nummering van de blokken moet
+%I worden aangepast.
+%I
+%I Als in plaats van een titel 'geen' wordt meegegeven, wordt
+%I geen titel geplaatst.
+%I
+%I Als het blok nog onbekend is, kan in plaats van het blok
+%I een van de volgende commando's worden meegegeven:
+%I
+%I \leeg<bloknaam>
+%I \lege<bloknaam>
+%P
+%I Het is mogelijk ruimte voor een blok te reserveren:
+%I
+%I \reserveer<bloknaam>[hoogte=,breedte=,kader=][voorkeur]
+%I [referentie]{titel}
+%I
+%I Beide commando's kunnen ook gegeven worden zonder [],
+%I dus in de vorm
+%I
+%I \plaats<bloknaam>{titel}{blok}
+%I \reserveer<bloknaam>{titel}
+%I
+%I Ten behoeve van een consistente verwijzing wordt het
+%I commando:
+%I
+%I \in<bloknaam>[referentie]
+%I
+%I gedefinieerd. Dit levert in de tekst op:
+%I
+%I 'in <bloknaam> <nummer>'
+%P
+%I Blokken kunnen worden gedefinieerd met het commando:
+%I
+%I \definieerplaatsblok[blok][blokken]
+%I
+%I Hierna zijn de volgende commando's beschikbaar:
+%I
+%I \plaatsblok[plaats][referentie]{titel}{blok}
+%I \reserveerblok[afmetingen][plaats][referentie]{titel}
+%I \leegblok
+%I
+%I Het is mogelijk een en ander in te stellen met het
+%I commando:
+%I
+%I \stelplaatsblokin[blok][hoogte=,breedte=,kader=,
+%I bovenkader=,onderkader=,linkerkader=,rechterkader=,
+%I paginaovergangen=]
+%I
+%I De hoogte en breedte hebben betrekking op de te reserveren
+%I ruimte.
+%P
+%I Naast de eerder genoemde commando's zijn nog beschikbaar:
+%I
+%I \plaatslijstmetblokken
+%I \volledigelijstmetblokken
+%I
+%I en een (extra) commando om tekst naast een blok (hier met
+%I de naam 'blok') te plaatsen:
+%I
+%I \startbloktekst[plaats][referentie]{kop}{blok}
+%I ...
+%I \stopbloktekst
+%I
+%I Mogelijke plaatsen zijn 'links', 'rechts', 'hoog', 'laag' en
+%I 'midden'. Ook is een combinatie van deze instellingen
+%I mogelijk, bijvoorbeeld [links,hoog]. De instelling 'offset'
+%I resulteert in een verschuiving van 1 regel.
+%P
+%I Blokken die tussen de tekst staan kunnen links, rechts of in
+%I het midden worden uitgelijnd. De plaats wordt ingesteld met:
+%I
+%I \stelplaatsblokkenin[plaats=,breedte=,kader=,bovenkader=,
+%I onderkader=,linkerkader=,rechterkader=,offset=,voorwit=,
+%I nawit=,marge=]
+%I
+%I De genummerde kopjes bij blokken kunnen worden ingesteld
+%I met:
+%I
+%I \stelblokkopjesin[plaats=,voor=,tussen=,na=,letter=,
+%I kopletter=,breedte=,nummer=,uitlijnen=]
+%I
+%I waarbij als plaats kan worden meegegeven: 'boven', 'onder',
+%I 'geen', 'hoog', 'laag' of 'midden'. Als breedte kan 'passend'
+%I of 'max' worden meegegeven. De parameter nummer kan 'ja' of
+%I 'nee' zijn. Als breedte=max, dan wordt het kopje over de
+%I hele breedte geplaatst. In dat geval kan uitlijnen worden
+%I ingesteld: 'links', 'midden' of 'rechts'.
+%P
+%I Als er geen plaats is, worden plaatsblokken tijdelijk
+%I achtergehouden. De opgespaarde blokken worden op de
+%I volgende bladzijde(n) geplaatst. Dit plaatsen is te
+%I beinvloeden met:
+%I
+%I \stelplaatsblokkenin[nboven=,nonder=,nregels=]
+%I
+%I Standaard worden maximaal 2 blokken bovenaan de
+%I bladzijde geplaatst en 0 blokken onder. Er wordt overgegaan
+%I op een nieuwe bladzijde als het aantal regels groter is
+%I dan 4. Deze waarden kunnen worden ingesteld.
+%P
+%I Kopjes boven lijsten en labels voor nummers kunnen worden
+%I ingesteld met de elders beschreven commando's:
+%I
+%I \stellabeltekstin[label=...]
+%I \stelkoptekstin[tekst=...]
+%I
+%I Standaard zijn deze ingesteld op de opgegeven namen.
+
+\def\stelplaatsblokkenin%
+ {\dodoubleargument\getparameters[\??bk]}
+
+\def\stelblokkopjesin%
+ {\dodoubleargument\getparameters[\??kj]}%
+
+\def\dostelplaatsblokin[#1][#2]%
+ {\getparameters[\??fl#1][#2]}
+
+\def\stelplaatsblokin%
+ {\dodoubleargument\dostelplaatsblokin}
+
+\def\dostelblokkopjein[#1][#2]%
+ {\getparameters[\??kj#1][#2]}
+
+\def\stelblokkopjein%
+ {\dodoubleargument\dostelblokkopjein}
+
+\def\doleegblok#1%
+ {\localframed
+ [\??fl#1][\c!kader=\v!aan]%
+ {\getmessage{\m!floatblocks}{12}}}
+
+\def\docomplexplaatsblok[#1][#2][#3]#4%
+ {\flushfootnotes
+ \ifmargeblokken
+ \doifinset{\v!marge}{#2}
+ {\bgroup
+ \everypar{\egroup\the\everypar}%
+ \hsize=\@@mbbreedte}%
+ \fi
+ \global\insidefloattrue
+ \dowithnextbox
+ {\docompletefloat
+ {#1}{#3}{#1}{#2}{\labeltext{#1}}{#4}
+ {\box\nextbox}}%
+ \vbox}
+
+\def\docomplexstarttekstblok[#1][#2][#3]%
+ {\flushfootnotes
+ \flushsidefloats % hoort eigenlijk niet hier
+ \docomplexplaatsblok[#1][\v!tekst,#2,\v!links][#3]}
+
+\def\docomplexreserveerblok[#1][#2][#3][#4]#5%
+ {\getvalue{\e!plaats#1}[#3][#4]{#5}{\localframed[\??fl#1][#2]{#1}}}
+
+\def\docomplexstartreserveertekstblok[#1][#2][#3][#4]%
+ {\flushsidefloats % hoort eigenlijk niet hier
+ \docomplexreserveerblok[#1][#2][\v!tekst,#3,\v!links][#4]}
+
+\def\dodefinieerplaatsblok[#1][#2]% #1=naam #2=meervoud
+ {\presetlocalframed[\??fl#1]%
+ \stelplaatsblokin
+ [#1]
+ [\c!breedte=15\korpsgrootte,
+ \c!hoogte=10\korpsgrootte,
+ \c!kader=\@@bkkader,
+ \c!straal=\@@bkstraal,
+ \c!hoek=\@@bkhoek,
+ \c!achtergrond=\@@bkachtergrond,
+ \c!achtergrondraster=\@@bkachtergrondraster,
+ \c!achtergrondkleur=\@@bkachtergrondkleur,
+ \c!bovenkader=\@@bkbovenkader,
+ \c!onderkader=\@@bkonderkader,
+ \c!linkerkader=\@@bklinkerkader,
+ \c!rechterkader=\@@bkrechterkader,
+ \c!paginaovergangen=]%
+ \stelblokkopjein
+ [#1]
+ [\c!plaats=\@@kjplaats,
+ %\c!voor=\@@kjvoor,
+ \c!tussen=\@@kjtussen,
+ %\c!na=\@@kjna,
+ \c!breedte=\@@kjbreedte,
+ \c!kopletter=\@@kjkopletter,
+ \c!letter=\@@kjletter,
+ \c!kleur=\@@kjkleur,
+ \c!uitlijnen=\@@kjuitlijnen,
+ \c!nummer=\@@kjnummer,
+ \c!wijze=\@@kjwijze,
+ \c!blokwijze=\@@kjblokwijze,
+ \c!sectienummer=\@@kjsectienummer,
+ \c!conversie=\@@kjconversie]%
+ \doorlabelen
+ [#1]
+ [\c!tekst=#1,
+ \c!plaats=\v!intekst,
+ \c!wijze=\getvalue{\??kj#1\c!wijze},
+ \c!blokwijze=\getvalue{\??kj#1\c!blokwijze},
+ \c!sectienummer=\getvalue{\??kj#1\c!sectienummer},
+ \c!conversie=\getvalue{\??kj#1\c!conversie}]%
+ \presetlabeltext[#1=\Woord{#1}~]%
+ \presetheadtext[#2=\Woord{#2}]%
+ \definieerlijst[#1]%
+ \setvalue{\e!plaats\e!lijstmet#2}%
+ {\dodoubleempty\doplaatslijst[#1]}%
+ \setvalue{\e!volledige\e!lijstmet#2}%
+ {\dotripleempty\dodovolledigelijst[#1][#2]}%
+ \setvalue{\e!plaats#1}%
+ {\dotripleempty\docomplexplaatsblok[#1]}%
+ \setvalue{\e!reserveer#1}%
+ {\doquadrupleempty\docomplexreserveerblok[#1]}%
+ \setvalue{\e!start#1\e!tekst}%
+ {\dotripleempty\docomplexstarttekstblok[#1]}%
+ \setvalue{\e!stop#1\e!tekst}%
+ {\dostoptextfloat}%
+ \setvalue{\e!start\e!reserveer#1\e!tekst}%
+ {\doquadrupleempty\docomplexstartreserveertekstblok[#1]}%
+ \setvalue{\e!stop\e!reserveer#1\e!tekst}%
+ {\dostoptextfloat}%
+ \setvalue{\e!lege#1}%
+ {\doleegblok{#1}}%
+ \setvalue{\e!leeg#1}%
+ {\doleegblok{#1}}}
+
+%\setvalue{\c!in#1}[##1]%
+% {\c!in\normalspace\in{\labeltext{#1}}[##1]}}
+
+\def\definieerplaatsblok%
+ {\dodoubleargument\dodefinieerplaatsblok}
+
+% De onderstaande macro's ondersteunen het zetten van tekst
+% rond figuren. De macro's zijn ontworpen door Daniel Comenetz
+% en gepubliceerd in TUGBoat Volume 14 (1993), No. 1: Anchored
+% Figures at Either Margin. De macro's zijn slechts op enkele
+% punten door mij aangepast.
+
+% afhankelijke variabelen
+%
+% \overgap vervangen door \floatsidetopskip
+% \sidegap vervangen door \floatsideskip
+% \undergap vervangen door \floatsidebottomskip
+%
+% \prskp vervangen door \tussenwit
+
+% toegevoegde macro's/aanroepen
+%
+% \logsidefloat : loginformatie
+% \flushsidefloats : nodig voor koppen
+
+% recente wijzigingen:
+%
+% namen aangepast: \float... enz. i.p.v. \pic
+
+% Pas op: \EveryPar{\EveryPar{}\margetitel{whatever}}
+% \plaatsfiguur[links]{}{} moet goed gaan. In dat geval
+% begint de tekst terecht wat lager.
+
+\newdimen\sidefloatheight % includes the topskip
+\newdimen\sidefloatwidth
+\newdimen\sidefloathsize
+\newdimen\sidefloatvsize \def\nofloatvsize{-1pt }
+
+\newbox\floatbottom
+
+\newif\ifrightfloat
+\newif\ifmarginfloat
+\newif\ifroomforfloat
+\newif\iffloatshort
+\newif\iffloatflag
+\newif\iffloatrighteqo
+\newif\iffloatlefteqo
+
+\let\floatrighteqo=\eqno
+\let\floatleftleqo=\leqno
+
+% Watch it!
+
+\everypar ={\flushfootnotes\checksidefloat\checkindentation}
+
+% Watch it even more! In inner, gaat't mis omdat daar
+% pagetotal enz niet zijn aangepast. Inner kan overigens niet
+% betrouwbaar worden getest!
+
+\everypar ={\flushfootnotes\ifinner\else\checksidefloat\fi\flushmargincontents\checkindentation}
+\neverypar ={}%\autopostponefootnotes}
+\everydisplay={\flushfootnotes\adjustsidefloatdisplaylines}
+
+\def\flushsidefloats%
+ {\par
+ \!!heighta=\sidefloatvsize
+ \advance\!!heighta by -\pagetotal
+ \ifdim\!!heighta>\!!zeropoint
+ \witruimte % nog checken op interferentie
+ \kern\!!heighta
+ \fi
+ \global\sidefloatvsize=\nofloatvsize
+ \global\floatflagfalse}
+
+\def\flushsidefloatsafterpar%
+ {\xdef\oldpagetotal{\the\pagetotal}%
+ \gdef\checksidefloat%
+ {\dochecksidefloat
+ \ifdim\oldpagetotal=\pagetotal \else
+ \xdef\checksidefloat{\dochecksidefloat}%
+ \flushsidefloats
+ \fi}}
+
+\let\logsidefloat=\relax
+
+\def\pushpenalties%
+ {\widowpenalty=1
+ \clubpenalty=2
+ \brokenpenalty=1
+ \let\pushpenalties=\relax
+ \edef\poppenalties%
+ {\widowpenalty=\the\widowpenalty
+ \clubpenalty=\the\clubpenalty
+ \brokenpenalty=\the\brokenpenalty}}
+
+\let\poppenalties=\relax
+
+\def\restorepenalties%
+ {\ifnum\outputpenalty=\!!tenthousand\relax
+ \else
+ \penalty\outputpenalty
+ \fi}
+
+\def\sidefloatoutput%
+ {\iffloatshort
+ \unvbox\normalpagebox
+ \setbox\floatbottom=\lastbox
+ \ifdim\wd\floatbottom>\sidefloathsize
+ \penalty-201
+ \box\floatbottom
+ \else
+ \ifvoid\floatbottom
+ \else
+ \restoreleftindent
+ \ifdim\wd\floatbottom<\sidefloathsize
+ \parskip=\!!zeropoint
+ %\noindent
+ \vadjust{\penalty-1}%
+ \iffloatlefteqo
+ \global\floatlefteqofalse
+ \else
+ \global\advance\sidefloathsize by -\wd\floatbottom
+ \iffloatrighteqo
+ \global\floatrighteqofalse
+ \else
+ \global\divide\sidefloathsize by 2
+ \fi
+ \hskip\sidefloathsize
+ \fi
+ \fi
+ \box\floatbottom
+ \restorepenalties
+ \fi
+ \fi
+ \global\holdinginserts=0
+ \global\floatshortfalse
+ \else
+ \finaloutput\unvbox\normalpagebox
+ \global\sidefloatvsize=\nofloatvsize
+ \poppenalties
+ \fi}
+
+\def\restoreleftindent%
+ {\ifrightfloat
+ \else
+ \parskip=\!!zeropoint
+ \noindent
+ \vadjust{\penalty-1}%
+ \global\hskip\sidefloatwidth
+ \fi}
+
+\def\eqno%
+ {\iffloatshort
+ \global\floatrighteqotrue
+ \fi
+ \floatrighteqo}
+
+\def\leftmarginfloat#1%
+ {\global\rightfloatfalse\marginfloattrue\putsidefloat{#1}}
+
+\def\rightmarginfloat#1%
+ {\global\rightfloattrue\marginfloattrue\putsidefloat{#1}}
+
+\def\leftfloat#1%
+ {\global\rightfloatfalse\marginfloatfalse\putsidefloat{#1}}
+
+\def\rightfloat#1%
+ {\global\rightfloattrue\marginfloatfalse\putsidefloat{#1}}
+
+\def\putsidefloat#1%
+ {\par
+ \witruimte
+ \previoussidefloat
+ \stallsidefloat
+ \setbox\floatbox=\hbox{\vbox{\vskip\sidefloattopoffset#1}}
+ \measuresidefloat
+ \ifroomforfloat
+ \setsidefloat
+ \else
+ \tosssidefloat
+ \measuresidefloat
+ \stallsidefloat
+ \setsidefloat
+ \fi}
+
+\def\progresssidefloat%
+ {\!!heighta=\sidefloatvsize
+ \iffloatflag
+ \advance\!!heighta by -\dimen3
+ \global\floatflagfalse
+ \else
+ \advance\!!heighta by -\pagetotal
+ \fi}
+
+\def\tosssidefloat%
+ {\vfill\eject}
+
+\def\measuresidefloat%
+ {\global\floatflagtrue
+ \dimen3=\pagetotal
+ \ifmarginfloat
+ \global\sidefloatwidth=\!!zeropoint
+ \else
+ \global\sidefloatwidth=\wd\floatbox
+ \global\advance\sidefloatwidth by \floatsideskip
+ \fi
+ \global\sidefloathsize=\hsize
+ \global\advance\sidefloathsize by -\sidefloatwidth
+ \global\sidefloatheight=\ht\floatbox
+\global\advance\sidefloatheight by \dp\floatbox
+ \global\advance\sidefloatheight by \sidefloattopskip
+ \global\sidefloatvsize=\sidefloatheight
+ \global\advance\sidefloatvsize by \dimen3
+ \dimen0=\sidefloatvsize
+% \advance\dimen0 by -\baselineskip
+ \ifdim\dimen0>.99\pagegoal \relax
+ \roomforfloatfalse
+ \else
+ \dimen0=\pagegoal
+ \advance\dimen0 by -\sidefloatvsize
+ \ifdim\dimen0<\sidefloatbottomskip
+ \global\advance\sidefloatvsize by \dimen0
+ \global\floatshorttrue
+ \pushpenalties
+ \holdinginserts=1
+ \else
+ \global\advance\sidefloatvsize by \sidefloatbottomskip
+ \global\floatshortfalse
+ \fi
+ \roomforfloattrue
+ \fi}
+
+\def\setsidefloat%
+ {\vbox{\strut}\vskip-\lineheight
+ \kern\sidefloattopskip
+ \oldprevdepth=\prevdepth
+ \nointerlineskip
+ \bgroup
+ \everypar={}%
+ \parskip=\!!zeropoint
+ \logsidefloat
+ \ifrightfloat
+ \hfill
+ \ifmarginfloat
+ \rlap{\hskip\rechtermargeafstand\unhbox\floatbox}%
+ \else
+ \unhbox\floatbox
+ \fi
+ \else
+ \noindent
+ \ifmarginfloat
+ \llap{\unhbox\floatbox\hskip\linkermargeafstand}%
+ \else
+ \unhbox\floatbox
+ \fi
+ \hfill
+ \fi
+ \egroup
+ \par
+ \kern-\sidefloatheight
+ \penalty10001
+ \normalbaselines
+ \prevdepth=\oldprevdepth
+ %\noindent
+ \resetsidefloatparagraph
+ \ignorespaces}
+
+\newcount\sidefloatparagraph
+
+\def\iffirstsidefloatparagraph%
+ {\ifnum\sidefloatparagraph=1\relax}
+
+\def\setsidefloatparagraph%
+ {\global\advance\sidefloatparagraph by 1\relax}
+
+\def\resetsidefloatparagraph%
+ {\global\sidefloatparagraph=0\relax}
+
+\def\dochecksidefloat%
+ {\progresssidefloat
+ \ifdim\!!heighta>\!!zeropoint
+ \advance\!!heighta by \sidefloatbottomskip
+ \!!counta=\!!heighta
+ \divide\!!counta by \baselineskip
+ \ifnum\!!counta>0
+ \ifrightfloat
+ \hangindent=-\sidefloatwidth
+ \else
+ \hangindent=\sidefloatwidth
+ \fi
+ \hangafter=-\!!counta
+ \fi
+ \setsidefloatparagraph
+ \else
+ \resetsidefloatparagraph
+ \fi
+ \parskip=\tussenwit}
+
+\def\checksidefloat%
+ {\dochecksidefloat}
+
+\def\doadjustsidefloatdisplaylines%
+ {\par
+ \vskip-\parskip
+ \noindent
+ \ignorespaces}
+
+\def\adjustsidefloatdisplaylines%
+ {\aftergroup\doadjustsidefloatdisplaylines}
+
+\def\previoussidefloat%
+ {\progresssidefloat
+ \ifdim\!!heighta>\!!zeropoint \relax
+ \iffloatshort
+ \global\floatshortfalse
+ \tosssidefloat
+ \else
+ \kern\!!heighta
+ \fi
+ \fi}
+
+\def\stallsidefloat%
+ {\!!counta=\pageshrink
+ \divide\!!counta by \baselineskip
+ \advance\!!counta by 1
+ \parskip=\!!zeropoint
+ \dorecurse{\!!counta}{\line{}}
+ \kern-\!!counta\baselineskip
+ \penalty0\relax}
+
+% De onderstaande macro's zijn verantwoordelijk voor het plaatsen
+% van floats. De macro's moeten nog worden aangepast en
+% uitgebreid:
+%
+% - nofloatpermitted : top, bot en mid counters en geen topins
+% als reeds midfloat of botfloat
+%
+% - links, rechts, midden als niet hangend
+
+\newif\ifsomefloatwaiting \somefloatwaitingfalse
+\newif\ifroomforfloat \roomforfloattrue
+\newif\ifnofloatpermitted \nofloatpermittedfalse
+\newif\iffloatsonpage \floatsonpagefalse
+
+\newcount\totalnoffloats \totalnoffloats=0
+\newcount\savednoffloats \savednoffloats=0
+\newcount\noffloatinserts \noffloatinserts=0
+
+\newbox\floatlist
+
+\newinsert\botins
+
+\skip\botins=\!!zeropoint
+\count\botins=\!!thousand
+\dimen\botins=\maxdimen
+
+\newdimen\topinserted
+\topinserted=\!!zeropoint
+
+\newdimen\botinserted
+\botinserted=\!!zeropoint
+
+\newif\ifflushingfloats
+\flushingfloatsfalse
+
+\newbox\floattext
+
+\newdimen\floattextwidth
+\newdimen\floattextheight
+
+\newbox\floatbox
+
+\newdimen\floatwidth
+\newdimen\floatheight
+
+% Er wordt bij \v!altijd als dat nodig is hernummerd.
+% Daarbij wordt gebruik gemaakt van de opgeslagen nummers en
+% volgorde.
+
+\definetwopasslist{\s!float}
+
+\def\dofloatreference%
+ {\doglobal\increment\numberedfloat
+ \edef\dodofloatreference%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!float}%
+ {\numberedfloat}%
+ {\hetnummer}}}%
+ \dodofloatreference}
+
+\def\redofloatorder#1%
+ {\doglobal\increment\nofplacedfloats\relax
+ \gettwopassdata{\s!float}%
+ \iftwopassdatafound
+ \doifnot{\hetnummer}{\twopassdata}
+ {\edef\oldhetnummer{\hetnummer}%
+ \xdef\hetnummer{\twopassdata}%
+ \showmessage
+ {\m!floatblocks}{1}
+ {\nofplacedfloats,#1 \oldhetnummer,\hetnummer}}%
+ \fi}
+
+% In \dofloatinfomessage wordt {{ }} gebruikt omdat anders
+% binnen \startuitstellen...\stopuitstellen geen goede
+% melding in de marge volgt: \ifinner is dan namelijk true.
+
+\def\dofloatinfomessage#1#2#3%
+ {\bgroup
+ \showmessage{\m!floatblocks}{#2}{#3}%
+ \@EA\floatinfo\@EA#1\@EA{\currentmessagetext}%
+ \egroup}
+
+\def\dosavefloatinfo%
+ {\dofloatinfomessage{>}{2}{\the\totalnoffloats}}
+
+\def\dofloatflushedinfo%
+ {\!!counta=\totalnoffloats\relax
+ \advance\!!counta by -\savednoffloats\relax%
+ \dofloatinfomessage{<}{3}{\the\!!counta}}
+
+\def\doinsertfloatinfo%
+ {\dofloatinfomessage{<}{4}{\the\totalnoffloats}}
+
+% ook voetnoten saven
+
+\def\dosavefloat%
+ {\global\setbox\floatlist=\vbox
+ {\nointerlineskip
+ \box\floatbox\relax
+ \unvbox\floatlist}%
+ \global\advance\savednoffloats by 1\relax
+ \global\somefloatwaitingtrue
+ \dosavefloatinfo}
+
+\def\doresavefloat%
+ {\global\setbox\floatlist=\vbox
+ {\nointerlineskip
+ \unvbox\floatlist
+ \box\floatbox}%
+ \global\advance\savednoffloats by 1\relax
+ \global\somefloatwaitingtrue}
+
+\def\doreversesavefloat%
+ {\global\setbox\floatlist=\vbox
+ {\nointerlineskip
+ \unvbox\floatlist
+ \box\floatbox}%
+ \global\advance\savednoffloats by 1\relax
+ \global\somefloatwaitingtrue
+ \dosavefloatinfo}
+
+\def\checkwaitingfloats#1%
+ {\ifsomefloatwaiting
+ \doifinsetelse{\v!altijd}{#1}
+ {\showmessage{\m!floatblocks}{5}{}}
+ {\doflushfloats}%
+ \fi}
+
+\def\doflushfloats%
+ {\global\floatsonpagefalse
+ \global\flushingfloatstrue
+ \ifsomefloatwaiting
+ \par
+ \ifvmode\prevdepth=\maxdimen\fi % prevents whitespace
+ \dodoflushfloats
+ \fi
+ \global\savednoffloats=0
+ \global\somefloatwaitingfalse
+ \global\flushingfloatsfalse}
+
+\def\dodoflushfloats% moet nog beter: als precies passend, niet onder baseline
+ {\ifsomefloatwaiting
+ \bgroup % \box\floatbox can be in use!
+ \dogetfloat
+ %\forgetall % NJET!
+ \witruimte
+ \blanko[\@@bkvoorwit]
+ \flushfloatbox
+ %\ifnum\savednoffloats>1 % REMOVED
+ %\else
+ \blanko[\@@bknawit]
+ %\fi
+ \egroup
+ \dofloatflushedinfo
+ \expandafter\dodoflushfloats
+ \fi}
+
+\newbox\globalscratchbox
+
+\def\dogetfloat%
+ {\ifsomefloatwaiting
+ \global\setbox\floatlist=\vbox
+ {\unvbox\floatlist
+ \global\setbox\globalscratchbox=\lastbox}%
+ \setbox\floatbox=\box\globalscratchbox % local !
+ \global\advance\savednoffloats by -1\relax
+ \ifnum\savednoffloats=0\relax
+ \global\somefloatwaitingfalse
+ \fi
+ \else
+ \global\savednoffloats=0\relax
+ \global\setbox\floatbox=\box\voidb@x
+ \fi}
+
+\def\dotopfloat%
+ {\ifdim\topinserted=\!!zeropoint\relax
+ \topofinserttrue
+ \else
+ \topofinsertfalse
+ \fi
+ \global\advance\topinserted by \ht\floatbox
+ \global\advance\topinserted by \dp\floatbox
+ \global\advance\topinserted by \floatbottomskip
+ \insert\topins
+ {\forgetall
+ \iftopofinsert
+ \kern-\lineskip\par\prevdepth=\maxdimen
+ \else
+ %\blanko[-\@@bknawit,\@@bkvoorwit]% inserts can't look back
+ \betweenfloatblanko
+ \fi
+ \flushfloatbox
+ \blanko[\@@bknawit]}%
+ \doinsertfloatinfo}
+
+% \loop ...\repeat doesn't work here, but why?
+%
+% \def\dosettopinserts%
+% {\ifsomefloatwaiting
+% \noffloatinserts=0\relax
+% \loop
+% \ifnum\noffloatinserts<\noftopfloats
+% ....
+% \repeat
+% \fi}
+%
+% so:
+
+\def\dodosettopinserts%
+ {\ifnum\noffloatinserts<\noftopfloats
+ \dogetfloat
+ \ifdim\topinserted=\!!zeropoint\relax
+ \topofinserttrue
+ \else
+ \topofinsertfalse
+ \fi
+ \global\advance\topinserted by \ht\floatbox
+ \global\advance\topinserted by \dp\floatbox
+ \global\advance\topinserted by \floatbottomskip\relax
+ \ifdim\topinserted<\teksthoogte\relax
+ \xdef\totaltopinserted{\the\topinserted}%
+ \insert\topins
+ {\forgetall
+ \iftopofinsert
+ \kern-\lineskip\par\prevdepth=\maxdimen
+ \else
+ %\blanko[-\@@bknawit,\@@bkvoorwit]% inserts can't look back
+ \betweenfloatblanko
+ \fi
+ \flushfloatbox
+ \blanko[\@@bknawit]}%
+ \ifsomefloatwaiting
+ \advance\noffloatinserts by 1
+ \else
+ \noffloatinserts=\noftopfloats\relax
+ \fi
+ \dofloatflushedinfo
+ \else
+ \doresavefloat
+ \noffloatinserts=\noftopfloats\relax
+ \fi
+ \else
+ \ifsomefloatwaiting
+ \showmessage{\m!floatblocks}{6}{\the\noftopfloats}%
+ \fi
+ \let\dodosettopinserts=\relax
+ \fi
+ \dodosettopinserts}
+
+\def\dosettopinserts%
+ {\bgroup
+ \ifsomefloatwaiting
+ \noffloatinserts=0\relax
+ \let\totaltopinserted=\!!zeropoint\relax
+ \dodosettopinserts
+ \ifnum\@@bknonder=0\relax
+ \ifnum\@@bknregels>0\relax
+ \ifdim\totaltopinserted>\!!zeropoint\relax
+ \dimen0=\lineheight
+ \dimen0=\@@bknregels\dimen0\relax
+ \advance\dimen0 by \totaltopinserted\relax
+ \ifdim\dimen0>\teksthoogte
+ \showmessage{\m!floatblocks}{8}{\@@bknregels}%
+ \vfilll\eject
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \egroup}
+
+\def\dodosetbotinserts%
+ {\ifnum\noffloatinserts<\nofbotfloats\relax
+ \dogetfloat
+ \global\advance\botinserted by \ht\floatbox\relax
+ \global\advance\botinserted by \dp\floatbox\relax
+ \global\advance\botinserted by \floattopskip\relax
+ \ifdim\botinserted<\pagegoal\relax
+ \insert\botins
+ {\forgetall
+ \blanko[\@@bkvoorwit]%
+ \flushfloatbox}%
+ \ifsomefloatwaiting
+ \advance\noffloatinserts by 1
+ \else
+ \noffloatinserts=\nofbotfloats
+ \fi
+ \dofloatflushedinfo
+ \else
+ \doresavefloat
+ \noffloatinserts=\nofbotfloats\relax
+ \fi
+ \global\nofloatpermittedtrue % vgl topfloats s!
+ \else
+ \ifsomefloatwaiting
+ \showmessage{\m!floatblocks}{7}{\the\nofbotfloats}%
+ \fi
+ \let\dodosetbotinserts=\relax
+ \fi
+ \dodosetbotinserts}
+
+\def\dosetbotinserts%
+ {\bgroup
+ \ifsomefloatwaiting
+ \noffloatinserts=0\relax
+ \dodosetbotinserts
+ \fi
+ \egroup}
+
+\def\dobotfloat%
+ {\global\advance\botinserted by \ht\floatbox
+ \global\advance\botinserted by \dp\floatbox
+ \global\advance\botinserted by \floattopskip
+ \insert\botins
+ {\forgetall
+ \blanko[\@@bkvoorwit]%
+ \flushfloatbox}%
+ %\global\nofloatpermittedtrue
+ \doinsertfloatinfo}
+
+\def\dosetbothinserts%
+ {\ifflushingfloats
+ \global\topinserted=\!!zeropoint\relax
+ \global\botinserted=\!!zeropoint\relax
+ \else
+ \global\topinserted=\!!zeropoint\relax
+ \dosettopinserts
+ \global\botinserted=\topinserted\relax
+ \dosetbotinserts
+ \fi}
+
+\def\dotopinsertions%
+ {\ifvoid\topins\else
+ \ifgridsnapping
+ %\topsnaptogrid{\box\topins}
+ \box\topins % already snapped
+ \else
+ \unvbox\topins
+ \fi
+ \fi
+ \global\topinserted=\!!zeropoint\relax}
+
+\def\dobotinsertions%
+ {\ifvoid\botins\else
+ \ifgridsnapping
+ \snaptogrid\hbox{\box\botins}
+ \else
+ \unvbox\botins
+ \fi
+ \fi
+ \global\botinserted=\!!zeropoint\relax
+ \global\nofloatpermittedfalse}
+
+\newif\iftopofinsert
+\newif\iftestfloatbox %\testfloatboxtrue
+
+%\def\flushfloatbox% nog verder doorvoeren en meer info in marge
+% {\iftestfloatbox
+% \ruledhbox{\box\floatbox}%
+% \else
+% \box\floatbox
+% \fi}
+
+% \testfloatboxtrue
+%
+% testfloatbox gaat mis, niet in midden, dus elders
+
+\def\flushfloatbox% nog verder doorvoeren en meer info in marge
+ {\snaptogrid\hbox{\iftestfloatbox\ruledhbox\fi{\box\floatbox}}}
+
+% beter de laatste skip buiten de \insert uitvoeren,
+% bovendien bij volle flush onder baseline.
+
+\def\betweenfloatblanko% assumes that \@@bknawit is present
+ {\bgroup
+ \setbox0=\vbox{\strut\blanko[\@@bkvoorwit]\strut}%
+ \setbox2=\vbox{\strut\blanko[\@@bknawit]\strut}%
+ \ifdim\ht0>\ht2
+ \blanko[-\@@bknawit,\@@bkvoorwit]
+ \fi
+ \egroup}
+
+\def\doroomfloat%
+ {\ifnofloatpermitted
+ \global\roomforfloatfalse
+ \else
+ \dimen0=\pagetotal
+ \advance\dimen0 by \ht\floatbox
+ \advance\dimen0 by \dp\floatbox
+ \advance\dimen0 by \floattopskip
+ \advance\dimen0 by -\pageshrink % toegevoegd
+ \ifdim\dimen0>\pagegoal
+ \global\roomforfloatfalse
+ \else
+ \global\roomforfloattrue
+ \fi
+ \fi}
+
+\def\doexecfloat% spacing between two successive must be better
+ {\baselinecorrection
+ \witruimte
+ \blanko[\@@bkvoorwit]%
+ \flushfloatbox
+ \blanko[\@@bknawit]%
+ \doinsertfloatinfo}
+
+\def\somefixdfloat[#1]%
+ {\doroomfloat
+ \ifroomforfloat\else
+ \goodbreak
+ \fi
+ \showmessage{\m!floatblocks}{9}{}%
+ \doexecfloat}
+
+\def\somesidefloat[#1]% links, rechts NOG TESTEN EN AANPASSEN
+ {\ifbinnenkolommen
+ \someelsefloat[\v!hier]%
+ \else
+ \checkwaitingfloats{#1}%
+ \def\logsidefloat%
+ {\doinsertfloatinfo}%
+ \setbox\floatbox=\vbox{\box\floatbox}%
+ \wd\floatbox=\floatwidth
+ \processfirstactioninset
+ [#1]
+ [ \v!links=>\leftfloat{\box\floatbox},
+ \v!rechts=>\rightfloat{\box\floatbox},
+ \v!inlinker=>\leftmarginfloat{\box\floatbox},
+ \v!inrechter=>\rightmarginfloat{\box\floatbox},
+ \v!inmarge=>{\doinmargenormal\leftmarginfloat\rightmarginfloat[]{\box\floatbox}}]%
+ \doifinset{\v!lang}{#1}
+ {\flushsidefloatsafterpar}%
+ \fi}
+
+\def\sometextfloat[#1]% lang, links, rechts, hoog, midden, laag, offset
+ {\checkwaitingfloats{#1}%
+ \def\dostoptextfloat{\dodostoptextfloat[#1]}%
+ \global\floattextwidth=\hsize
+ \global\floatwidth=\wd\floatbox
+ \global\floatheight=\ht\floatbox % forget about the depth
+ \global\advance\floattextwidth by -\floatwidth
+ \global\advance\floattextwidth by -\@@bkmarge\relax % was \tfskipsize
+ \doifinsetelse{\v!lang}{#1}
+ {\floattextheight=\pagegoal
+ \advance\floattextheight by -\pagetotal
+ \advance\floattextheight by -\bigskipamount % lelijk
+ \ifdim\floattextheight>\teksthoogte
+ \floattextheight=\teksthoogte
+ \fi
+ \boxmaxdepth=\!!zeropoint\relax % toegevoegd
+ \ifdim\floattextheight<\floatheight
+ \floattextheight=\floatheight
+ \fi
+ \setbox\floattext=\vbox to \floattextheight}
+ {\setbox\floattext=\vbox}%
+ \bgroup
+ \blanko[\v!blokkeer]
+ \hsize\floattextwidth
+ \ignorespaces}
+
+\def\dodostoptextfloat[#1]%
+ {\egroup
+ \doifnotinset{\v!lang}{#1}%
+ {\ifdim\ht\floattext<\floatheight
+ \floattextheight=\floatheight
+ \else
+ \floattextheight=\ht\floattext
+ \fi}%
+ \setbox\floatbox=\vbox to \floattextheight
+ {\hsize\floatwidth
+ \box\floatbox
+ \vfill}%
+ \setbox\floattext=\vbox to \floattextheight
+ {\hsize\floattextwidth
+ \doifinsetelse{\v!laag}{#1}
+ {\vfill
+ \box\floattext
+ \doifinset{\c!offset}{#1}{\witruimte\blanko}}
+ {\doifinsetelse{\v!midden}{#1}
+ {\vfill
+ \box\floattext
+ \vfill}
+ {\doifinset{\v!offset}{#1}{\witruimte\blanko}%
+ \box\floattext
+ \vfill}}}%
+ \doifinsetelse{\v!rechts}{#1}%
+ {\setbox\floatbox=\hbox to \hsize
+ {\box\floattext
+ \hfill
+ \box\floatbox}}
+ {\setbox\floatbox=\hbox to \hsize
+ {\box\floatbox
+ \hfill
+ \box\floattext}}%
+ \baselinecorrection
+ \witruimte
+ \blanko[\@@bkvoorwit]%
+ \doifnotinset{\v!lang}{#1}%
+ {\dp\floatbox=\openstrutdepth}% dp\strutbox}% % toegevoegd
+ \box\floatbox
+ \blanko[\@@bknawit]%
+ \doinsertfloatinfo}
+
+\def\somefacefloat[#1]% links, rechts, midden, hoog, midden, laag
+ {\checkwaitingfloats{#1}%
+ \startnaast\box\floatbox\stopnaast
+ \doinsertfloatinfo}
+
+\def\somepagefloat[#1]% links, rechts, midden, hoog, midden, laag
+ {\checkwaitingfloats{#1}%
+ \vbox to \teksthoogte
+ {\doifnotinset{\v!hoog}{#1}{\vfill}%
+ \box\floatbox
+ \doifnotinset{\v!laag}{#1}{\vfill}}%
+ \doinsertfloatinfo
+ \pagina} % toegevoegd
+
+\def\someelsefloat[#1]%
+ {\doifinsetelse{\v!hier}{#1}
+ {\doifinsetelse{\v!altijd}{#1}
+ {\pagina[\v!voorkeur]%
+ \doroomfloat
+ \ifroomforfloat
+ \doexecfloat
+ \else
+ \showmessage{\m!floatblocks}{9}{}%
+ \doreversesavefloat
+ \fi}
+ {\ifsomefloatwaiting
+ \dosavefloat
+ \else
+ \pagina[\v!voorkeur]%
+ \doroomfloat
+ \ifroomforfloat
+ \doexecfloat
+ \else
+ \dosavefloat
+ \fi
+ \fi}}
+ {\doifinsetelse{\v!altijd}{#1}
+ {\doroomfloat
+ \ifroomforfloat
+ \processallactionsinset
+ [#1]
+ [ \v!boven=>\dotopfloat,
+ \v!onder=>\dobotfloat,
+ \s!default=>\doexecfloat]%
+ \else
+ \showmessage{\m!floatblocks}{9}{}%
+ \doreversesavefloat
+ \fi}
+ {%\ifsomefloatwaiting % from before the renumbering time
+ % \doflushfloats
+ %\fi
+ \doroomfloat
+ \ifroomforfloat
+ \processallactionsinset
+ [#1]
+ [ \v!boven=>%%\ifdim\topinserted=\!!zeropoint\relax
+ %\iffloatsonpage
+ % \dosavefloat
+ %\else
+ \dotopfloat
+ %\fi
+ %%\else
+ %% \dosavefloat
+ %%\fi
+ ,
+ \v!onder=>%\ifdim\botinserted=\!!zeropoint\relax
+ \dobotfloat
+ %\else
+ % \dosavefloat
+ %\fi
+ ,
+ \s!default=>\doexecfloat]%
+ \else
+ \dosavefloat
+ \fi}}}
+
+% De onderstaande macro wordt gebruikt bij de macros
+% voor het plaatsen van tabellen en figuren (klopt niet
+% meer).
+%
+% \dofloat {plaats} {label1} {label2} {kader}
+%
+% \docompletefloat {nummer} {referentie} {lijst}
+% {plaats} {label1} {label2} {inhoud}
+%
+% \box\floatbox inhoud+referentie
+%
+% \do???float#1 #1 = boxnummer
+%
+% \ifinsidefloat wordt \true gezet voor \docompletefloat en \false
+% na float plaatsen; kan worden gebruikt om in
+% andere commando's witruimte te onderdrukken
+
+\newdimen\floattopskip \floattopskip=12pt
+\newdimen\floatbottomskip \floatbottomskip=12pt
+\newdimen\floatsideskip \floatsideskip=12pt
+
+\newdimen\sidefloattopskip \sidefloattopskip=\floattopskip
+\newdimen\sidefloatbottomskip \sidefloatbottomskip=\floatbottomskip
+\def\sidefloattopoffset {\openstrutdepth} % {\dp\strutbox}
+
+\newcount\noftopfloats \noftopfloats=2
+\newcount\nofbotfloats \nofbotfloats=0
+
+\def\calculatefloatskips%
+ {{\def\calculatefloatskips##1##2%
+ {\doifelsenothing{##2}
+ {\global##1=\!!zeropoint}
+ {\doifelse{##2}{\v!geen}
+ {\global##1=\!!zeropoint}
+ {\setbox0=\vbox{\witruimte\@EA\blanko\@EA[##2]}%
+ \global##1=\ht0}}}%
+ \calculatefloatskips\floattopskip\@@bkvoorwit
+ \calculatefloatskips\floatbottomskip\@@bknawit
+ \calculatefloatskips\sidefloattopskip\@@bkzijvoorwit
+ \calculatefloatskips\sidefloatbottomskip\@@bkzijnawit
+ \def\sidefloattopoffset{\openstrutdepth}% {\dp\strutbox}%
+ \global\floatsideskip=\@@bkmarge\relax
+ \global\noftopfloats=\@@bknboven\relax
+ \global\nofbotfloats=\@@bknonder\relax}}
+
+\newif\ifinsidefloat
+
+\def\floatcaptionsuffix{} % an optional suffix
+\def\floatcaptionnumber{} % a logical counter
+
+\def\dosetfloatcaption#1#2#3%
+ {\def\dofloattekst%
+ {{\doattributes{\??kj#1}{#3}}}%
+ \doifelsevalue{\??kj#1\c!nummer}{\v!ja}
+ {\def\dofloatnummer%
+ {{\xdef\floatcaptionnumber{#1}%
+ \hbox{\doattributes{\??kj#1\v!kop}{\strut#2\floatcaptionsuffix}}}%
+ \ConvertToConstant\doifnot{#3}{}
+ {\tfskip
+ \emergencystretch=.5em}}}
+ {\let\dofloatnummer=\empty}}
+
+\def\putborderedfloat#1\in#2\\%
+ {\setbox#2=\vbox
+ {\localframed
+ [\??fl#1]
+ [\c!breedte=\@@bkbreedte,
+ \c!hoogte=\@@bkhoogte,
+ \c!offset=\@@bkoffset]%
+ {\box\floatbox}}}
+
+\newbox\captionbox
+
+\def\putcompletecaption%
+ {\mindermeldingen
+ \begstrut\dofloatnummer\dofloattekst\endstrut}
+
+\def\dosetpagfloat#1#2#3#4%
+ {\bgroup
+ \forgetall
+ %\showcomposition
+ \putborderedfloat#4\in4\\%
+ \def\locatefloat%
+ {\doregelplaats\@@bkplaats}%
+ \ConvertToConstant\doifelse{#3}{\v!geen}
+ {\global\setbox\floatbox=\vbox
+ {\locatefloat{\box4}}} % pas op, nog wd groter dan hsize
+ {\dosetfloatcaption{#4}{#2}{#3}%
+% at another level, prevents reprocessing of footnotes
+\setbox\captionbox=\hbox{\putcompletecaption}%
+\def\putcompletecaption{\unhcopy\captionbox}%
+%
+ \setbox2=\hbox
+ {\forgetall
+ \putcompletecaption}%
+ \doifinsetelse{\@@kjkjplaats}{\v!hoog,\v!midden,\v!laag}
+ {\dimen0=\hsize
+ \advance\dimen0 by -\wd4\relax
+ \advance\dimen0 by -\@@bkmarge\relax % \was tfskipsize\relax
+ \ifdim\wd2>\dimen0\relax
+ \dimen2=1.3\dimen0\relax
+ \ifdim\wd2<\dimen2\relax
+ \dimen0=0.8\dimen0\relax
+ \fi
+ \fi
+ \setbox2=\vbox
+ {\forgetall
+ \hsize=\dimen0\relax
+ \raggedright
+ \begstrut\dofloatnummer
+ \ifx\@@kjkjtussen\empty \else
+ \unskip\@@kjkjtussen
+ \fi
+ \dofloattekst
+ \endstrut}}
+ {\doifelse{\@@kjkjbreedte}{\v!max}
+ {\dosetraggedbox{\@@kjkjuitlijnen}%
+ \setbox2=\raggedbox
+ {\hsize\wd4\relax
+ \putcompletecaption}}
+ {\ifdim\wd2>\wd4\relax
+ \doifelse{\@@kjkjbreedte}{\v!passend}
+ {\ifdim\wd4<15\korpsgrootte\relax
+ \dimen0=15\korpsgrootte\relax
+ \else
+ \dimen0=\wd4\relax
+ \fi
+ \ifdim\wd4>\hsize
+ \setbox0=\vbox
+ {\forgetall
+ \hsize=1.0\wd4
+ \putcompletecaption}%
+ \ifdim\ht0>\lineheight\relax
+ \setbox2=\vbox
+ {\forgetall
+ \hsize=0.9\wd4
+ \putcompletecaption}%
+ \fi
+ \else
+ \setbox0=\vbox
+ {\forgetall
+ \dimen2=1.5\dimen0\relax
+ \ifdim\dimen2<\hsize
+ \hsize=\dimen2\relax
+ \fi
+ \putcompletecaption}%
+ \ifdim\ht0>\lineheight\relax
+ \setbox2=\vbox
+ {\forgetall
+ \dimen2=1.2\dimen0\relax
+ \ifdim\dimen2<\hsize
+ \hsize=\dimen2\relax
+ \fi
+ \putcompletecaption}%
+ \fi
+ \fi}
+ {\dosetraggedbox{\@@kjkjuitlijnen}%
+ \setbox2=\raggedbox
+ {\hsize\@@kjkjbreedte
+ \putcompletecaption}}%
+ \fi}}%
+ \global\setbox\floatbox=\vbox
+ {\processaction
+ [\@@kjkjplaats]
+ [ \v!boven=>\locatefloat{\copy2}%
+ \@@kjkjtussen
+ \locatefloat{\copy4},
+ \v!onder=>\locatefloat{\copy4}%
+ \@@kjkjtussen
+ \locatefloat{\copy2},
+ \v!hoog=>\locatefloat
+ {\doifelse{\@@bkplaats}{\v!links}
+ {\copy4
+ \tfskip
+ \vbox to\ht4{\@@kjkjtussen\copy2\vfill}}
+ {\vbox to\ht4{\@@kjkjtussen\copy2\vfill}%
+ \tfskip
+ \copy4}},
+ \v!laag=>\locatefloat
+ {\doifelse{\@@bkplaats}{\v!links}
+ {\copy4
+ \tfskip
+ \vbox to\ht4
+ {\vfill\copy2\@@kjkjtussen}}
+ {\vbox to\ht4
+ {\vfill\copy2\@@kjkjtussen}%
+ \tfskip
+ \copy4}},
+ \v!midden=>\locatefloat
+ {\doifelse{\@@bkplaats}{\v!links}
+ {\copy4
+ \tfskip
+ \vbox to\ht4{\vfill\copy2\vfill}}
+ {\vbox to\ht4{\vfill\copy2\vfill}%
+ \tfskip
+ \copy4}},
+ \v!geen=>\locatefloat{\copy4}]}}%
+% \ifdim\wd2>\wd4
+% \global\wd\floatbox=\wd2
+% \else
+% \global\wd\floatbox=\wd4
+% \fi
+\ifdim\wd4>\hsize
+ \global\setbox\floatbox=\hbox to \wd4{\hss\box\floatbox\hss}%
+\fi
+ \egroup}
+
+\def\dosetparfloat#1#2#3#4%
+ {\bgroup
+ %\showcomposition
+ \forgetall
+ \putborderedfloat#4\in4\\
+ \ConvertToConstant\doifelse{#3}{\v!geen}
+ {\global\setbox\floatbox=\vbox{\box4}}
+ {\dosetfloatcaption{#4}{#2}{#3}%
+ \setbox2=\hbox
+ {\forgetall
+ \putcompletecaption}%
+ \doifelse{\@@kjkjbreedte}{\v!max}
+ {\dosetraggedbox{\@@kjkjuitlijnen}%
+ \setbox2=\raggedbox
+ {\hsize\wd4
+ \putcompletecaption}}
+ {\doifelse{\@@kjkjbreedte}{\v!passend}
+ {\ifdim\wd2>\wd4\relax
+ \setbox2=\vbox
+ {\forgetall
+ \hsize\wd4
+ \putcompletecaption}%
+ \else
+ \setbox2=\hbox to \wd4
+ {\hss\box2\hss}%
+ \fi}
+ {\dosetraggedbox{\@@kjkjuitlijnen}%
+ \setbox2=\raggedbox
+ {\hsize\wd4
+ \putcompletecaption}}}%
+ \global\setbox\floatbox=\vbox
+ {\processaction
+ [\@@kjkjplaats]
+ [ \v!boven=>\box2
+ \@@kjkjtussen
+ \box4,
+ \v!onder=>\box4
+ \@@kjkjtussen
+ \box2,
+ \v!geen=>\box4]}}%
+ \egroup}
+
+\newif\ifparfloat
+
+\long\def\dosetfloatbox#1#2#3#4%
+ {\ifvisible
+ \par
+ \doifcommonelse
+ {#1}{\v!links,\v!rechts,\v!inlinker,\v!inrechter,\v!inmarge}
+ {\global\parfloattrue}
+ {\global\parfloatfalse}%
+ \ifbinnenkolommen
+ \global\parfloatfalse
+ \fi
+ \edef\@@kjkjbreedte {\getvalue{\??kj#4\c!breedte}}%
+ \def \@@kjkjtussen {\getvalue{\??kj#4\c!tussen}}% geen \edef
+ \edef\@@kjkjplaats {\getvalue{\??kj#4\c!plaats}}%
+ \edef\@@kjkjuitlijnen {\getvalue{\??kj#4\c!uitlijnen}}%
+ \ifparfloat
+ \dosetparfloat{#1}{#2}{#3}{#4}%
+ \else
+ \dosetpagfloat{#1}{#2}{#3}{#4}%
+ \fi
+ \global\floatheight=\ht\floatbox
+ \global\advance\floatheight by \dp\floatbox
+ \global\floatwidth=\wd\floatbox
+ \global\advance\totalnoffloats by 1\relax
+ \doifnotinset{\v!marge}{#1} % gaat namelijk nog fout
+ {\setbox\floatbox=\vbox
+ {\parindent\!!zeropoint
+ \ifvoorlopig
+ \inlinker{\framed{\infofont\the\totalnoffloats}}%
+ \fi
+ \box\floatbox}}%
+ \wd\floatbox=\floatwidth
+ \dimen0=\floatheight
+ \advance\dimen0 by \lineheight
+ \ifdim\dimen0<\teksthoogte
+ \else
+ \global\floatheight=\teksthoogte
+ \global\advance\floatheight by -\lineheight
+ \ht\floatbox=\floatheight
+ \dp\floatbox=\!!zeropoint
+ \showmessage{\m!floatblocks}{10}{\the\totalnoffloats}%
+ \fi
+ \fi}
+
+\def\dogetfloatbox#1%
+ {\ifvisible
+ \def\next##1{\global\floatsonpagetrue\def\next{##1}}%
+ \processfirstactioninset
+ [#1]
+ [ \v!hier=>\next{\someelsefloat[#1]},
+ \v!forceer=>\next{\somefixdfloat[#1]},
+ \v!links=>\next{\somesidefloat[#1]},
+ \v!rechts=>\next{\somesidefloat[#1]},
+ \v!tekst=>\next{\sometextfloat[#1]},
+ \v!boven=>\def\next{\someelsefloat[#1]}, % !
+ \v!onder=>\next{\someelsefloat[#1]},
+ \v!marge=>\def\next{\somenextfloat[#1]}, % !
+ \v!pagina=>\next{\somepagefloat[#1]},
+ \v!naast=>\next{\somefacefloat[#1]},
+ \v!inmarge=>\next{\somesidefloat[#1]},
+ \v!inlinker=>\next{\somesidefloat[#1]},
+ \v!inrechter=>\next{\somesidefloat[#1]},
+ \s!default=>\next{\someelsefloat[\v!hier,#1]},
+ \s!unknown=>\next{\someelsefloat[\v!hier,#1]}]%
+ \next
+ \fi}
+
+\long\def\dofloat#1#2#3#4%
+ {\dosetfloatbox{#1}{#2}{#3}{#4}%
+ \dogetfloatbox{#1}}%
+
+\long\def\docompletefloat#1#2#3#4#5#6#7%
+ {\flushsidefloats
+ \calculatefloatskips
+ \bgroup
+ \global\setbox\floatbox=\vbox{#7}%
+ \dimen0=\ht\floatbox
+ \advance\dimen0 by \dp\floatbox
+ \ifdim\dimen0=\!!zeropoint\relax
+ \showmessage{\m!floatblocks}{11}{}%
+ \global\setbox\floatbox=\vbox{\getvalue{\e!lege#3}}%
+ \fi
+ \ConvertToConstant\doifelse{#6}{\v!geen}
+ {\global\setbox\floatbox=\ruledvbox
+ {\unvbox\floatbox
+ \vss % gets rid of the depth
+ \rawpagereference{\s!flt}{#2}}%
+ \egroup\dofloat{#4}{}{#6}{#1}}
+ {\doifelsevalue{\??kj#1\c!nummer}{\v!ja}
+ {\verhoognummer[#1]%
+ \maakhetnummer[#1]%
+ \global\setbox\floatbox=\vbox
+ {\unvbox\floatbox % no \vss, keep the depth
+ \dofloatreference
+ \redofloatorder{#1}%
+ \rawreference{\s!flt}{#2}{\hetnummer}%
+ \doschrijfnaarlijst{#3}{\hetnummer}{#6}{#3}}%
+ \egroup\dofloat{#4}{#5\hetnummer}{#6}{#1}}
+ {\global\setbox\floatbox=\vbox
+ {\unvbox\floatbox % no \vss, keep the depth
+ \rawpagereference{\s!flt}{#2}}%
+ \egroup\dofloat{#4}{}{#6}{#1}}}%
+ \global\insidefloatfalse}
+
+\def\plaatsvolledig#1#2#3#4% kop, ref, tit, do
+ {#1[#2]{#3}%
+ #4%
+ \pagina[\v!ja]}
+
+%I n=Figuren
+%I c=\plaatsfiguur,\reserveerfiguur,\startfiguurtekst
+%I c=\leegfiguur,\volledigelijstmetfiguren
+%I c=\plaatstabel,\reserveertabel,\starttabeltekst
+%I c=\legetabel,\volledigelijstmettabellen
+%I
+%I Figuren en tabellen (gebruik ..tabel.. in plaats van
+%I ..figuur..) kunnen in de tekst worden geplaatst met het
+%I commando:
+%I
+%I \plaatsfiguur[plaats][referentie]{titel}{figuur}
+%I
+%I Als voorkeur kan worden opgegeven 'hier', 'forceer',
+%I 'pagina', 'boven', 'onder', 'links' en 'rechts'. In plaats
+%I van een titel kan 'geen' worden meegegeven, in dat geval
+%I wordt geen titel geplaatst. Eventueel kan in combinatie
+%I met links en rechts 'lang' worden opgegeven.
+%I
+%I De volgorde kan worden afgedwongen met 'altijd',
+%I bijvoorbeeld [hier,altijd]. In dat geval wordt bij een
+%I volgende run zonodig de nummering aangepast.
+%I
+%I In plaats van een titel kan {geen} worden ingevuld. In
+%I dat geval blijft de titel achterwege.
+%P
+%I Het is mogelijk ruimte voor een figuur te reserveren:
+%I
+%I \reserveerfiguur[hoogte=,breedte=,kader=][voorkeur]
+%I [referentie]{titel}
+%P
+%I Een lijst met figuren kan worden opgeroepen met:
+%I
+%I \plaatslijstmetfiguren
+%I \volledigelijstmetfiguren
+%I
+%I Men kan een tekst naast een figuur zetten met:
+%I
+%I \startfiguurtekst[plaats][referentie]{kop}{figuur}
+%I ...
+%I \stopfiguurtekst
+%I
+%I Mogelijke plaatsen zijn (combinaties van) 'links', 'rechts',
+%I 'hoog', 'laag' en 'midden'. Met 'offset' dwingt men een
+%I verschuiving omlaag van van 1 regel af.
+%I
+%I Zie verder onder plaatsblokken.
+
+%I n=Tabellen
+%I
+%I Zie figuren.
+
+%I n=Intermezzo
+%I
+%I Zie figuren.
+
+%I n=Grafieken
+%I
+%I Zie figuren.
+
+%T n=figuur
+%T m=fig
+%T a=f
+%T
+%T \plaatsfiguur
+%T [hier]
+%T [fig:]
+%T {}
+%T {\naam{?}}
+%T
+
+\definieernummer
+ [\??si]
+ [\c!wijze=\v!per\v!tekst,
+ \c!conversie=\@@siconversie]
+
+\def\stelplaatsbloksplitsenin%
+ {\dodoubleargument\getparameters[\??si]}
+
+% ook (continued)
+
+\def\dosplitsplaatsblok[#1]#2% nog dubbele refs
+ {\ifbinnenkolommen % tzt ook nog figuren splitten
+ % not yet supported
+ \else
+ \bgroup
+ \insidefloattrue
+ \getparameters[\??si][#1]%
+ \resetnummer[\??si]%
+ \def\floatcaptionsuffix{\nummer[\??si]}%
+ \TABLEcaptionheight=\@@siregels\lineheight
+ \dowithnextbox
+ {\forgetall
+ \mindermeldingen
+ \doloop
+ {\setbox2\vsplit\nextbox to \lineheight
+ \setbox2=\vbox{\unvbox2}
+ \ifdim\ht2>\lineheight
+ \verhoognummer[\??si]%
+ \ifnum\ruwenummer[\??si]=1 \ifdim\ht\nextbox=\!!zeropoint
+ \let\floatcaptionsuffix=\empty
+ \fi\fi
+ \bgroup
+ #2{\unvbox2}
+ \egroup
+ \pagina
+ \ifdim\ht\nextbox>\!!zeropoint
+ \verlaagnummer[\floatcaptionnumber]%
+ \fi
+ \fi
+ \ifdim\ht\nextbox>\!!zeropoint\else
+ \expandafter\exitloop
+ \fi}%
+ \egroup}
+ \vbox
+ \fi}
+
+\def\splitsplaatsblok%
+ {\dosingleempty\dosplitsplaatsblok}
+
+%I n=Formules
+%I c=\plaatsformule,\plaatssubformule,\stelformulesin
+%I
+%I Formules kunnen in de tekst worden geplaatst met
+%I het commando:
+%I
+%I \plaatsformule[referentie]subnummer$$formule$$
+%I
+%I Dit commando handelt de witruimtes om de formules af en
+%I plaatst nummers. Als geen nummer nodig is, en dus ook
+%I geen referentie, dan moet met het commando als volgt
+%I gebruiken:
+%I
+%I \plaatsformule-$$...$$ of \plaatsformule[-]$$...$$
+%I
+%I Als het nummer niet moet worden opgehoogd, gebruikt men
+%I
+%I \plaatssubformule[referentie]subnummer$$formule$$
+%P
+%I PAS OP:
+%I
+%I Binnen een aantal wiskundige commando's, zoals
+%I \displaylines, moet men het nummer zelf plaatsen. Dit
+%I kan gebeuren met: \formulenummer of \subformulenummer.
+%I Ook hier kan een [referentie] en een {subnummer} worden
+%I meegegeven.
+%I
+%I \plaatsformule
+%I $$\displaylines
+%I {x \hfill\formulenummer[eerste]{}\cr
+%I y \hfill\cr
+%I z \hfill\formulenummer[derde]{}\cr}
+%I $$
+%P
+%I De wijze waarop formules worden genummerd kan worden
+%I be‹nvloed door het commando:
+%I
+%I \stelformulesin[links=,rechts=,plaats=]
+%I
+%I De nummers kunnen links en rechts worden gezet. Standaard
+%I worden de symbolen ( en ) gebruikt.
+%I
+%I Tussen twee formules kan witruimte worden geforceerd met
+%I het commando:
+%I
+%I \blanko[formule]
+
+\abovedisplayskip = \!!zeropoint\relax
+\abovedisplayshortskip = \!!zeropoint\relax % evt. 0pt minus 3pt
+\belowdisplayskip = \!!zeropoint\relax
+\belowdisplayshortskip = \!!zeropoint\relax % evt. 0pt minus 3pt
+
+\predisplaypenalty = 0
+\postdisplaypenalty = 0 % -5000 gaat mis, zie penalty bij \paragraaf
+
+\doorlabelen
+ [\v!formule]
+ [\c!tekst=\v!formule,
+ \c!wijze=\@@fmwijze,
+ \c!blokwijze=\@@fmblokwijze,
+ \c!plaats=\v!intekst]
+
+\def\stelformulesin%
+ {\dodoubleargument\getparameters[\??fm]}
+
+\def\dodoplaatsformule#1[#2]#3$$#4$$%
+ {\begingroup
+ \setdisplayskips
+ \!!doneafalse
+ \doif{#2}{-}{\!!doneatrue}%
+ \doif{#3}{-}{\!!doneatrue}%
+ \if!!donea % no number
+ \def\complexformulenummer[##1]##2%
+ {}%
+ \def\formulenummer%
+ {\complexorsimpleempty{formulenummer}}%
+ \def\subformulenummer%
+ {\formulenummer}%
+ \snaptomathgrid{$$#4$$}
+ \else
+ \doifelse{#1}{\v!ja}
+ {\def\verhoogformulenummer{\verhoognummer[\v!formule]}}
+ {\let\verhoogformulenummer=\relax}%
+ \def\simpleformulenummer%
+ {\gdef\doeqno{}%
+ \gdef\doleqno{}%
+ \gdef\formulenummer{\doformulenummer}%
+ \doformulenummer[#2]{#3}}%
+ \def\complexformulenummer%
+ {\gdef\doeqno{}%
+ \gdef\doleqno{}%
+ \gdef\formuleummer{\doformulenummer}%
+ \doformulenummer}%
+ \def\formulenummer%
+ {\complexorsimple{formulenummer}}%
+ \def\subformulenummer%
+ {\let\verhoogformulenummer=\relax
+ \complexorsimple{formulenummer}}%
+ \gdef\doleqno{\leqno{\formulenummer}}%
+ \gdef\doeqno{\eqno{\formulenummer}}%
+ \doifelse{\@@fmplaats}{\v!links}
+ {\snaptomathgrid{$$#4\doleqno$$}}
+ {\snaptomathgrid{$$#4\doeqno$$}}
+ \fi
+ \par
+ \ignorespaces
+ \endgroup}
+
+\def\complexdoformulenummer[#1]#2%
+ {\verhoogformulenummer
+ \doifelse{#2}{ }
+ {\def\hetsubnummer{}}
+ {\def\hetsubnummer{#2}}%
+ {\rm\strut\@@fmlinks\lossenummer[\v!formule]\hetsubnummer\@@fmrechts}%
+ \rawreference{\s!for}{#1}{\hetnummer\hetsubnummer}}
+
+\letvalue{\e!start\e!formule}=\undefined
+\letvalue{\e!stop \e!formule}=\undefined
+
+%\def\dodoplaatsstartformule#1[#2]#3\startformule#4\stopformule%
+% {\dodoplaatsformule#1[#2]#3$$#4$$}
+
+\expanded
+ {\def\noexpand\dodoplaatsstartformule##1[##2]##3\csname\e!start\e!formule\endcsname##4\csname\e!stop\e!formule\endcsname%
+ {\noexpand\dodoplaatsformule##1[##2]##3$$##4$$}}
+
+\setvalue{\e!start\e!formule}{\snaptomathgrid\bgroup\setdisplayskips$$}
+\setvalue{\e!stop \e!formule}{$$\egroup}
+
+\def\doplaatsformule#1[#2]#3% % #3 gobbles spaces between [] and $$ or \startformule
+ {\def\redoplaatsformule% % we can't lose {} after $$
+ {\expandafter\ifx\csname\e!start\e!formule\endcsname\next
+ \let\next=\dodoplaatsstartformule
+ \else
+ \let\next=\dodoplaatsformule
+ \fi
+ \next#1[#2]}%
+ \futurelet\next\redoplaatsformule#3}
+
+\def\complexplaatsformule%
+ {\doplaatsformule{\v!ja}}
+
+\def\complexplaatssubformule%
+ {\doplaatsformule{\v!nee}}
+
+\definecomplexorsimpleempty\doformulenummer
+\definecomplexorsimpleempty\plaatsformule
+\definecomplexorsimpleempty\plaatssubformule
+
+%I n=Naast
+%I c=\startnaast,\stelnaastplaatsenin
+%I
+%I Experiment:
+%I
+%I \startnaast
+%I ...
+%I \stopnaast
+%I
+%I \stelnaastplaatsenin[status=]
+%I
+
+% \newbox\facingbox
+% \newbox\facingpage
+%
+% \newdimen\facingboxsize
+% \newdimen\facingpagetotal
+%
+% \facingpagetotal=\!!zeropoint
+%
+% \newif\iffacingpages \facingpagesfalse
+%
+% \def\shipoutfacingpage%
+% {\iffacingpages
+% \setbox\facingpage=\vbox to \zethoogte
+% {\kern\hoofdhoogte
+% \kern\ht\topins % ?
+% \kern\dp\topins % ?
+% \kern\dp\strutbox % checken
+% \box\facingpage
+% \vfill}%
+% \myshipout{\buildpagebody\box\facingpage}%
+% \fi
+% \global\setbox\facingpage=\box\voidb@x
+% \global\facingpagetotal=\!!zeropoint\relax}
+%
+% \def\flushfacingpage%
+% {\penalty-\!!tenthousand
+% \global\facingpagetotal=\facingboxsize
+% \setbox\facingpage=\vbox{\box\facingbox}}
+%
+% \def\startnaast#1\stopnaast%
+% {\iffacingpages
+% \setbox\facingbox=\vbox
+% {\hsize=\zetbreedte\relax
+% #1}%
+% \global\facingboxsize=\ht\facingbox
+% \global\advance\facingboxsize by \dp\facingbox
+% \ifdim\pagetotal<\facingpagetotal
+% \dimen2=\facingpagetotal
+% \advance\dimen2 by -\pagetotal
+% \vskip\dimen2\relax
+% \else
+% \dimen2=\!!zeropoint\relax
+% \fi
+% \dimen0=\pagetotal
+% \advance\dimen0 by \facingboxsize
+% \ifdim\dimen0>\pagegoal
+% \flushfacingpage
+% \else
+% \global\advance\facingpagetotal by \facingboxsize
+% \ifdim\facingpagetotal>\pagegoal
+% \flushfacingpage
+% \else
+% \setbox\facingpage=\vbox
+% {\offinterlineskip
+% \mindermeldingen
+% \ht\facingpage=\!!zeropoint
+% \ifdim\pagetotal=\topskip
+% \vskip-\topskip
+% \fi
+% \box\facingpage
+% \advance\dimen2 by \pagetotal
+% \vskip\dimen2\relax
+% \ifdim\facingpagetotal>\facingboxsize
+% \vskip\tussenwit
+% \fi
+% \box\facingbox}%
+% \fi
+% \fi
+% \fi}
+%
+% \def\dostelnaastplaatsenin[#1]%
+% {\getparameters[\??np][#1]%
+% \doifelse{\@@npstatus}{\v!start}
+% {\global\facingpagestrue}
+% {\global\facingpagesfalse}}
+%
+% \def\stelnaastplaatsenin%
+% {\dosingleargument\dostelnaastplaatsenin}
+%
+% \def\naastpagina%
+% {\shipoutfacingpage}
+%
+% \def\facefloat% redefined
+% {\startnaast\box\floatbox\stopnaast}
+
+\newbox\facingbox
+\newbox\facingpage
+
+\newif\iffacingpages \facingpagesfalse
+
+\def\shipoutfacingpage%
+ {\iffacingpages
+ \ifnum\realpageno>1
+ \bgroup
+ \pagebodyornamentsfalse
+ \setbox\facingpage=\vbox to \zethoogte
+ {\unvbox\facingpage\vfil}%
+ \myshipout{\buildpagebody\box\facingpage}%
+ \egroup
+ \else
+ \global\setbox\facingpage=\box\voidb@x
+ \fi
+ \fi}
+
+\def\naastpagina%
+ {\shipoutfacingpage}
+
+\def\facefloat% redefined
+ {\startnaast\box\floatbox\stopnaast}
+
+\def\startnaast% beter: \dowithnextbox
+ {\iffacingpages
+ \global\setbox\facingbox=\ruledvbox
+ \bgroup
+ \hsize=\zetbreedte
+ \else
+ \def\next{\gobbleuntil\stopnaast}%
+ \expandafter\next
+ \fi}
+
+\def\stopnaast%
+ {\egroup
+ \global\setbox\facingpage=\vbox
+ {\ifvoid\facingpage
+ \vskip\openstrutdepth % \dp\strutbox
+ \else
+ \unvbox\facingpage
+ \fi
+ \box\facingbox
+ \blanko}}
+
+\def\dostelnaastplaatsenin[#1]%
+ {\getparameters[\??np][#1]%
+ \doifelse{\@@npstatus}{\v!start}
+ {\global\facingpagestrue}
+ {\global\facingpagesfalse}}
+
+\def\stelnaastplaatsenin%
+ {\dosingleargument\dostelnaastplaatsenin}
+
+%I n=Lijsten
+%I c=\definieerlijst,\stellijstin,\plaatslijst
+%I
+%I Er kunnen lijsten worden aangemaakt en opgeroepen. Een
+%I lijst wordt gedefinieerd met:
+%I
+%I \definieerlijst[naam]
+%I
+%I en zonodig ingesteld met:
+%I
+%I \stellijstin[naam][status=,variant=,marge=,breedte=,
+%I scheider=,afstand=,paginanummer=,deelnummer=,
+%I titeluitlijnen=,label=,letter=,tekstletter=,nummerletter=,
+%I paginaletter=,paginaovergangen=,voor=,na=,niveau=,
+%I criterium=,symbool=,prefix=,links=,rechts=]
+%I
+%I De instellingen mogen ook direkt worden opgegeven:
+%I
+%I \definieerlijst[naam][instellingen]
+%I
+%I Ook kunnen kenmerken van andere lijsten worden overgenomen:
+%I
+%I \definieerlijst[naam][andere naam]
+%P
+%I De vorm van de lijst wordt onder meer bepaald door de variant
+%I (a,b,c). In grote lijnen ziet een lijst er als volgt uit:
+%I
+%I <marge+breedte+scheider+afstand> <variant>
+%I
+%I Mogelijke varianten zijn:
+%I
+%I variant a : nummer - titel - pagina
+%I variant b : nummer - titel - spaties - pagina
+%I variant c : nummer - titel - punten - pagina
+%I variant d : nummer - titel - pagina (doorlopend)
+%P
+%I Een of meer lijsten kunnen wordt opgeroepen met:
+%I
+%I \plaatslijst[naam,naam,...]
+%I
+%I Standaard zijn lijsten gedefinieerd voor deel, hoofdstuk,
+%I paragraaf, subparagraaf en subsubparagraaf. Deze lijsten
+%I zijn dus afzonderlijk in te stellen. Deze lijsten zijn
+%I gegroepeerd tot een samengestelde lijst (zie elders).
+%I
+%I De layout van een lijst kan worden beinvloed door
+%I commando's tussen te voegen met:
+%I
+%I \schrijftussenlijst[naam]{commandos}
+%I
+%I Voor eigen gebruik is \iflijstgeplaatst beschikbaar.
+%P
+%I Gevorderde gebruikers kunnen eigen lijstcommando's maken.
+%I Deze commando's kunnen worden toegekend met:
+%I
+%I [...,nummercommando=,tekstcommando=,paginacommando=,...]
+%I
+%I en hebben de vorm
+%I
+%I \commando{argument}
+%I
+%I bijvoorbeeld
+%I
+%i nummercommando=\omlijnd
+%I
+%I Volledige vrijheid krijgt men met de instelling
+%I
+%I variant=geen
+
+% \getlistlevel[hoofdstuk]\test{0} \test
+
+\def\getlistlevel[#1]#2#3% [list] \variable \default
+ {\doifdefinedelse{\??ko#1\c!sectie}
+ {\edef#2{\getvalue{\??ko#1\c!sectie}}%
+ \doifdefinedelse{\??se#2\c!niveau}
+ {\edef#2{\getvalue{\??se#2\c!niveau}}}
+ {\edef#2{#3}}}
+ {\edef#2{#3}}}
+
+\def\doschrijfnaarlijst#1#2#3#4%
+ {\doifvalue{\??li#1\c!status}{\v!start}
+ {\begingroup
+ \thisisnextinternal{#1}%
+ %
+ % Dit gaat goed als #2 geen commando's bevat. Dit is
+ % bij interactieve teksten echter soms wel het geval.
+ % Vandaar dat we dit optioneel moeten maken, bijvoorbeeld
+ % met \stellijstin[referentie=ja].
+ %
+ \ExpandFirstAfter\processaction
+ [\getvalue{\??li#1\c!expansie}]
+ [ \v!ja=>{\edef\ascii{#3}},
+ \v!commando=>{\convertcommand#3\to\ascii},
+ \s!unknown=>{\convertargument#3\to\ascii}]%
+ \makesectionformat
+ \doifelse{\@@nmstatus}{\v!start}
+ {\def\dopaginanummer{\noexpand\pagenumber}}
+ {\def\dopaginanummer{0}}%
+ \edef\schrijfwegnaarlijst%
+ {\writeutilitycommand%
+ {\listentry%
+ {#1}%
+ {\nextinternalreference}%
+ {#2}%
+ {\ascii}%
+ {\sectionformat::\dopaginanummer}%
+ {\noexpand\realfolio}}}%
+ \schrijfwegnaarlijst
+ \endgroup}}
+
+\def\doschrijftussenlijst#1#2%
+ {\doif{\getvalue{\??li#1\c!status}}{\v!start}
+ {\begingroup
+ \convertargument#2\to\ascii
+ \makesectionformat
+ \doifelse{\@@nmstatus}{\v!start}
+ {\def\dopaginanummer{\noexpand\pagenumber}}
+ {\def\dopaginanummer{0}}%
+ \edef\schrijfwegnaarlijst%
+ {\writeutilitycommand%
+ {\listbetween%
+ {#1}%
+ {\ascii}%
+ {\sectionformat::\dopaginanummer}%
+ {\noexpand\realfolio}}}%
+ \schrijfwegnaarlijst
+ \endgroup}}
+
+\def\listentry#1%
+ {\executeifdefined{#1\c!lijst}\gobblefivearguments}
+
+\def\listbetween#1%
+ {\executeifdefined{#1\c!tussen}\gobblethreearguments}
+
+\def\@@livarianta% nr - tit - pag
+ {\def\lijstfill{\hskip 1.25em}%
+ \def\lijstskip{0em}}
+
+\def\@@livariantb% nr - tit - fill - pag
+ {\def\lijstfill{\hfill}%
+ \def\lijstskip{5em}}
+
+\def\@@livariantc% nr - tit - dots - pag
+ {\def\lijstfill{\leaders\hbox to .5em{\hss.\hss}\hfill\hskip.5em}%
+ \def\lijstskip{5em}}
+
+\def\@@livariant%
+ {\lijstvariantb}
+
+\@@livariantb
+
+\def\dostellijstin[#1][#2]%
+ {\def\docommando##1%
+ {\getparameters[\??li##1][#2]
+ \preparepaginaprefix{\??li##1}}%
+ \processcommalist[#1]\docommando}
+
+\def\stellijstin%
+ {\dodoubleargument\dostellijstin}
+
+\def\dodosetlijst#1%
+ {\setvalue{#1\c!tussen}{\dotussenlijst{#1}}%
+ \setvalue{#1\c!lijst}{\dolijstelement{#1}}}
+
+\def\dodoresetlijst#1%
+ {\setvalue{#1\c!tussen}{\gobblefourarguments{#1}}%
+ \setvalue{#1\c!lijst}{\gobblesixarguments{#1}}}
+
+%\def\dodoresetlijst#1%
+% {\setvalue{#1\c!tussen}{\gobblethreearguments}%
+% \setvalue{#1\c!lijst}{\gobblefivearguments}}
+
+\def\dodefinieerlijst[#1][#2][#3]%
+ {\presetlocalframed[\??li#1]%
+ \getparameters
+ [\??li#1]
+ [\c!hoogte=\v!ruim,
+ \c!diepte=\v!ruim,
+ \c!offset=0.25em,
+ %
+ \c!status=\v!start,
+ \c!koppeling=\v!uit,
+ \c!criterium=\v!lokaal,
+ \c!breedte=3em,
+ \c!variant=\c!b,
+ \c!letter=\v!normaal,
+ \c!tekstletter=\getvalue{\??li#1\c!letter},
+ \c!nummerletter=\getvalue{\??li#1\c!letter},
+ \c!paginaletter=\getvalue{\??li#1\c!letter},
+ \c!kleur=,
+ \c!tekstkleur=\getvalue{\??li#1\c!kleur},
+ \c!nummerkleur=\getvalue{\??li#1\c!kleur},
+ \c!paginakleur=\getvalue{\??li#1\c!kleur},
+ \c!nummercommando=\lijstnummercommando,
+ \c!tekstcommando=\lijsttekstcommando,
+ \c!paginacommando=\lijstpaginacommando,
+ \c!paginanummer=\v!ja,
+ \c!paginaovergangen=,
+ \c!marge=\!!zeropoint,
+ \c!titeluitlijnen=,
+ \c!voor=,
+ \c!na=,
+ \c!symbool=,
+ \c!interactie=\v!sectienummer,
+ \v!deel\c!nummer=\v!ja, % nodig ?
+ \c!label=\v!nee,
+ \c!afstand=\!!zeropoint,
+ \c!scheider=]%
+ \ConvertToConstant\doifinstringelse{=}{#2}
+ {\getparameters[\??li#1][#2]}
+ {\ConvertToConstant\doifnot{#2}{}
+ {\copyparameters
+ [\??li#1][\??li#2]
+ [\c!status,\c!breedte,\c!variant,\c!letter,\c!kleur,
+ \c!tekstletter,\c!tekstkleur,\c!tekstcommando,
+ \c!paginaletter,\c!paginacommando,\c!paginakleur,
+ \c!nummerletter,\c!nummerkleur,\c!nummercommando,
+ \c!paginanummer,\c!paginaovergangen,\c!marge,\c!symbool,
+ \c!titeluitlijnen,\c!voor,\c!na,\v!deel\c!nummer,\c!label]%
+ \getparameters[\??li#1][#3]}}%
+ \addutilityreset{#1}%
+ \setvalue{\s!set#1}%
+ {\dodosetlijst{#1}}%
+ \setvalue{\s!reset#1}%
+ {\dodoresetlijst{#1}}}
+
+\def\definieerlijst%
+ {\dotripleempty\dodefinieerlijst}
+
+\def\iflijstgeplaatst{\ifutilitydone}
+
+\def\dobeginoflist%
+ {\begingroup
+ \startopelkaar[\v!blanko]}
+
+\def\doendoflist%
+ {\stopopelkaar
+ \endgroup}
+
+\def\doplaatslijst[#1][#2]%
+ {\dobeginoflist
+ \getfromcommalist[#1][1]%
+ \let\firstlistelement=\commalistelement
+ \dostellijstin[#1][#2]%
+ \doifvalue{\??li\firstlistelement\c!koppeling}{\v!aan}
+ {\startlistreferences{#1}}%
+ \dosettoclevel{\getvalue{\??li\firstlistelement\c!criterium}}%
+ \doutilities{#1}{\jobname}{#1}{}{\par}%
+ \stoplistreferences{#1}%
+ \doendoflist}
+
+\def\plaatslijst%
+ {\dodoubleempty\doplaatslijst}
+
+\def\dodovolledigelijst[#1][#2][#3]% enkelvoud, meervoud, instellingen
+ {\systemsuppliedtitle[#2]{\headtext{#2}}
+ \doplaatslijst[#1][#3]}
+
+\def\dovolledigelijst[#1][#2]%
+ {\dodovolledigelijst[#1][#1][#2]}
+
+\def\volledigelijst%
+ {\dodoubleempty\dovolledigelijst}
+
+\def\lijstelementen{} % bevat lijst met paginaovergangen
+\def\lijstnummercommando#1{#1} % geen strut i.v.m. intractieve versie
+\def\lijsttekstcommando#1{\begstrut#1\endstrut}
+\def\lijstpaginacommando#1{\strut#1}
+
+\def\doassigndimen#1#2#3%
+ {\doifinsetelse{#2}{\v!passend,\v!ruim}
+ {#1=#3\relax}
+ {#1=#2\relax}}
+
+\def\dosetlistsymbol#1#2%
+ {\processaction
+ [\getvalue{\??li#1\c!symbool}]
+ [ \v!geen=>\def\listsymbol%
+ {\doassigndimen{\dimen0}{\getvalue{\??li#1\c!breedte}}{1.5em}%
+ \hbox to \dimen0{}},
+ 1=>\def\listsymbol%
+ {\strut$\bullet$},
+ 2=>\def\listsymbol%
+ {\vrule\!!width1em\!!height1ex\!!depth\!!zeropoint},
+ 3=>\def\listsymbol% very slow
+ {{\doassigndimen{\dimen0}{\getvalue{\??li#1\c!breedte}}{1.5em}%
+ \doassigndimen{\dimen2}{\getvalue{\??li#1\c!hoogte}}{1ex}%
+ \doassigndimen{\dimen4}{\getvalue{\??li#1\c!diepte}}{0pt}%
+ \vrule\!!width\dimen0\!!height\dimen2\!!depth\dimen4}},
+ \s!unknown=>\def\listsymbol{\getvalue{\??li#1\c!symbool}},
+ \s!default=>\doifelsevalue{\??li#1\c!prefix}{\v!nee}
+ {\aftersplitstring#2\at.\to\splitlistsymbol}
+ {\def\splitlistsymbol{#2}}% geen \edef ivm enz
+ \def\listsymbol%
+ {\doifvalue{\??li#1\c!label}{\v!ja}{\labeltext{#1}}%
+ \strut\splitlistsymbol
+ \getvalue{\??li#1\c!scheider}}]}
+
+\def\dosomelijstelement#1#2#3{#1 #2 \translatednumber[#3]}
+
+\def\dodolijstelementa{\let\dosomelijstelement\dodofixdlijstelementABC}
+\def\dodolijstelementb{\let\dosomelijstelement\dodofixdlijstelementABC}
+\def\dodolijstelementc{\let\dosomelijstelement\dodofixdlijstelementABC}
+\def\dodolijstelementd{\let\dosomelijstelement\dodofixdlijstelementD}
+\def\dodolijstelemente{\let\dosomelijstelement\dodofixdlijstelementE}
+\def\dodolijstelementf{\let\dosomelijstelement\dodofixdlijstelementF}
+\def\dodolijstelementg{\let\dosomelijstelement\dodofixdlijstelementG}
+
+\setvalue{dodolijstelement\v!geen}{\let\dosomelijstelement\dodofreelijstelement}
+
+% Here I learned something new: \leftskip can be changed
+% within a paragraph and the last one counts. Therefore we
+% cannot use \bgroup's! The placement of the \leftskip
+% assignment and the \endgraf's may not be changed. We have to
+% end the preceding paragraph before changing \leftskip. This is
+% because every listelement sets the \leftskip.
+
+% \strippedcsname\dodolijstelement
+
+\def\dolijstelement#1#2#3#4#5#6% pas op: wordt ook elders gedefinieerd
+ {\doiftoclevelelse[#5]
+ {\getvalue{dodolijstelement\getvalue{\??li#1\c!variant}}%
+ %\showcomposition
+ \let\@@iabreedte=\!!zeropoint % moet boolean worden
+ \bgroup
+ \edef\lijstelementen%
+ {\getvalue{\??li#1\c!paginaovergangen}}%
+ \ExpandSecondAfter\doifinset{#3}{\lijstelementen}%
+ {\showmessage{\m!systems}{14}{#3}%
+ \pagina}%
+ \egroup
+ \mindermeldingen
+ \dosetlistsymbol{#1}{#3}%
+ \dosomelijstelement{#1}{#2}{#3}{#4}{#5}{#6}%
+ \global\utilitydonetrue}
+ {}}
+
+\def\dolistattributes#1#2#3%
+ {\doifvaluesomething{\??li#1#2}
+ {\stelinteractiein[\c!kleur=,\c!contrastkleur=]}%
+ \doattributes
+ {\??li#1#3}}
+
+\def\dodofreelijstelement#1#2#3#4#5#6%
+ {\def\makelijstelement##1##2%
+ {\hbox
+ {\doifelsevalue{\??li#1\c!interactie}{##1}
+ {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}%
+ \gotonextinternal{#1}{#2}{#6}{\copy0}}
+ {##2}}}%
+ \getvalue{\??li#1\c!voor}% can be \hskip
+ \doifdefinedelse{\??li#1\c!commando}
+ {\makelijstelement{\getvalue{\??li#1\c!interactie}}% this forces all
+ {\getvalue{\??li#1\c!commando}%
+ {#3}% geen conversies etc
+ {#4}% geen conversies etc
+ {\paginaprefix\??li#1[#5]%
+ \translatednumber[#5]}}}
+ {\ifvmode\nointerlineskip\fi % recently added
+ \vbox
+ {\forgetall
+ \makelijstelement\v!alles
+ {\makelijstelement\v!sectienummer
+ {\dolistattributes{#1}\c!nummerkleur\c!nummer
+ {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}%
+ \makelijstelement\v!tekst
+ {\dolistattributes{#1}\c!tekstkleur\c!tekst
+ {\def\\{ }%
+ \dontconvertfont
+ \getvalue{\??li#1\c!tekstcommando}{#4}}}%
+ \doifvalue{\??li#1\c!paginanummer}{\v!ja}
+ {\doifsomething{#5}
+ {\makelijstelement\v!paginanummer
+ {\dolistattributes{#1}\c!paginakleur\c!pagina
+ {\getvalue{\??li#1\c!paginacommando}
+ {\paginaprefix\??li#1[#5]%
+ \translatednumber[#5]}}}}}}}%
+\nointerlineskip % anders verkeerde spatiering bij multi-line
+ \endgraf}%
+ \getvalue{\??li#1\c!na}}
+
+\def\dodofixdlijstelementABC#1#2#3#4#5#6% weeden
+ {\endgraf
+ \leftskip=\getvalue{\??li#1\c!marge}% na de \endgraf !
+ \getvalue{\??li#1\c!voor}%
+ \doifelsenothing{#3}
+ {\doifelsevalue{\??li#1\c!titeluitlijnen}{\v!ja}
+ {\!!widtha=\!!zeropoint}
+ {\!!widtha=\getvalue{\??li#1\c!breedte}}}
+ {\!!widtha=\getvalue{\??li#1\c!breedte}}%
+ \getvalue{\??li\c!variant\getvalue{\??li#1\c!variant}}%
+ \endgraf
+ \def\makelijstelement##1##2%
+ {\doifelsevalue{\??li#1\c!interactie}{##1}
+ {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}%
+ \gotonextinternal{#1}{#2}{#6}{\copy0}}
+ {\hbox{##2}}}%
+ \doifvalue{\??li#1\c!interactie}{\v!tekst} % not supported
+ {\doassign[\??li#1][\c!interactie=\v!alles]}%
+ \makelijstelement\v!alles
+ {\hbox to \hsize
+ {\!!widthb=\hsize
+ \setbox2=\hbox \ifdim\!!widtha>\!!zeropoint to \!!widtha \fi
+ {\makelijstelement\v!sectienummer
+ {\dolistattributes{#1}\c!nummerkleur\c!nummer
+ {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}%
+ \hfill}}%
+ \setbox4=\hbox
+ {\doifvalue{\??li#1\c!paginanummer}{\v!ja}
+ {\doifsomething{#5}
+ {\hbox to 2em
+ {\hfill
+ \makelijstelement\v!paginanummer
+ {\dolistattributes{#1}\c!paginakleur\c!pagina
+ {\getvalue{\??li#1\c!paginacommando}
+ {\paginaprefix\??li#1[#5]%
+ \translatednumber[#5]}}}}}}}%
+ \vbox
+ {\hsize\!!widthb
+ \ifdim\!!widtha<\hsize
+ \hangindent=\wd2
+ \dimen2=\getvalue{\??li#1\c!afstand}%
+ \advance\hangindent by \dimen2
+ \hangafter=1
+ \ifvoid4
+ % we kunnen gewoon afbreken aan het eind
+ \else
+ \ifdim\lijstskip>\!!zeropoint\relax
+ \rightskip=\lijstskip\!!plus10em\relax
+ \parfillskip=-\rightskip
+ \fi
+ \fi
+ \else
+ \dimen2=\!!zeropoint
+ \fi
+ \parindent=\!!zeropoint\relax
+ \leavevmode
+ \box2\relax
+ \hskip\dimen2
+ \bgroup
+ \dolistattributes{#1}\c!tekstkleur\c!tekst
+ {\def\\{ }%
+ \dontconvertfont
+ \getvalue{\??li#1\c!tekstcommando}{#4}}%
+ \egroup
+ \ifvoid4
+ \ifdim\!!widtha<\hsize
+ \hfill\strut
+ \fi
+ \else
+ \nobreak\hskip.5em\lijstfill
+ \box4\relax
+ \relax
+ \fi}%
+ \hss}}%
+\nointerlineskip % anders verkeerde spatiering bij multi-line
+ \endgraf
+ \getvalue{\??li#1\c!na}}
+
+% overrulen interactie kan sneller, bv door hulpconstanten
+% te gebruiken en die te letten
+
+\def\dodofixdlijstelementD#1#2#3#4#5#6%
+ {\leftskip=\getvalue{\??li#1\c!marge}%
+ \bgroup
+ \ifvmode
+ \noindent\leavevmode
+ \fi
+ \doifvalue{\??li#1\c!interactie}{\v!tekst} % not supported
+ {\doassign[\??li#1][\c!interactie=\v!sectienummer]}%
+ \doifvalue{\??li#1\c!interactie}{\v!alles} % not supported
+ {\doassign[\??li#1][\c!interactie=\v!sectienummer]}%
+ \def\makelijstelement##1##2%
+ {\doifelsevalue{\??li#1\c!interactie}{##1}
+ {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}%
+ \gotonextinternal{#1}{#2}{#6}{\copy0}}
+ {\hbox{##2}}}%
+ \setbox4=\hbox
+ {\doifvalue{\??li#1\c!paginanummer}{\v!ja}
+ {\doifsomething{#5}
+ {\makelijstelement\v!paginanummer
+ {\dolistattributes{#1}\c!paginakleur\c!pagina
+ {\getvalue{\??li#1\c!paginacommando}
+ {\paginaprefix\??li#1[#5]%
+ \translatednumber[#5]}}}}}}%
+ \hbox
+ {\getvalue{\??li#1\c!links}%
+ \makelijstelement\v!sectienummer
+ {\dolistattributes{#1}\c!nummerkleur\c!nummer
+ {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}%
+ \getvalue{\??li#1\c!rechts}%
+ \hskip.5em}%
+ \nobreak
+ \tolerance3500
+ \dolistattributes{#1}\c!tekstkleur\c!tekst
+ {\def\\{ }%
+ \dontconvertfont
+ \getvalue{\??li#1\c!tekstcommando}{#4}}%
+ \ifvoid4\else
+ \nobreak
+ \hskip.75em\relax
+ \nobreak
+ \box4
+ \fi
+ \dimen0=\getvalue{\??li#1\c!afstand}\relax
+ \ifdim\dimen0<1em\relax
+ \hskip1em\!!plus1em\!!minus.25em\relax
+ \else
+ \hskip\dimen0\!!plus.5\dimen0\!!minus.25\dimen0\relax
+ \fi
+ \egroup}
+
+\def\dodofixdlijstelementE#1%
+ {\dodofixdlijstelementEFG{\localframed[\??li#1][\c!kleur=]}{#1}}
+
+\def\dodofixdlijstelementF%
+ {\dodofixdlijstelementEFG\relax}
+
+\def\dodofixdlijstelementG#1%
+ {\dodofixdlijstelementEFG\regelmidden{#1}}
+
+\def\dodofixdlijstelementEFG#1#2#3#4#5#6#7%
+ {\hbox
+ {\let\\=\relax
+ \dontconvertfont
+ \setbox0=\hbox
+ {#1{\dolocationattributes{\??li#2}
+ {\ignorespaces\showcontrastlocation{\??ia}{#7}{#5}}}}%
+ \gotonextinternal{#2}{#3}{#7}{\copy0}}}
+
+\def\schrijfnaarlijst[#1]#2#3%
+ {\doifsomething{#1}
+ {\convertargument#2\to\firstlistelement
+ \@EA\doschrijfnaarlijst\@EA{#1}{\firstlistelement}{#3}{\v!kop}}}
+
+\def\dotussenlijst#1#2#3#4% pas op: wordt ook elders gedefinieerd
+ {\doiftoclevelelse[#3]
+ {#2}
+ {}}
+
+\def\schrijftussenlijst[#1]#2%
+ {\@EA\doschrijftussenlijst\@EA{#1}{#2}} % #2 weg en \expanded
+
+% NOG ENGELS MAKEN
+
+\def\lijstlengte {\utilitylistlength}
+\def\lijstbreedte {\utilitylistwidth}
+\def\lijsthoogte {\utilitylistheight}
+
+\def\utilitylistlength {0}
+\def\utilitylistwidth {0pt}
+\def\utilitylistheight {0pt}
+
+\def\dobepaallijstkenmerken[#1][#2]%
+ {\begingroup
+ \doglobal\newcounter\utilitylistlength
+ \def\dolijstelement##1##2##3##4##5##6%
+ {\doiftoclevelelse[##5]
+ {\doglobal\increment\utilitylistlength
+ \hbox
+ {\doattributes
+ {\??li##1\c!tekst}
+ {\def\\{ }%
+ \dontconvertfont
+ \getvalue{\??li##1\c!tekstcommando}{##4}}}%
+ \global\utilitydonetrue}
+ {}}%
+ \dostellijstin[#1][#2]%
+ \getfromcommalist[#1][1]%
+ \dosettoclevel{\getvalue{\??li\commalistelement\c!criterium}}%
+ \setbox0=\vbox
+ {\doutilities{#1}{\jobname}{#1}{}{\par}}%
+ \xdef\utilitylistheight {\the\ht0}%
+ \xdef\utilitylistwidth {\the\wd0}%
+ \endgroup}
+
+\def\bepaallijstkenmerken%
+ {\dodoubleempty\dobepaallijstkenmerken}
+
+% \definieerreferentielijst
+% [externalfigure]
+% [commando=\toongrootfiguur,
+% voor=\pagina,
+% na=\pagina]
+%
+% \definieerreferentielijst
+% [externaltable]
+% [commando=\toongrotetabel,
+% voor=\pagina,
+% na=\pagina]
+%
+% \def\toongrootfiguur#1%
+% {\externfiguur[#1][kader=aan,factor=max]}
+%
+% \def\toongrotetabel#1%
+% {\switchtobodyfont[12pt]\haalbuffer[#1]}
+%
+% \schrijfnaarreferentielijst[externalfigure]{koe}{\externfiguur[koe][breedte=3cm,kader=aan]}
+% \schrijfnaarreferentielijst[externalfigure]{paard}{\externfiguur[paard][breedte=3cm,kader=aan]}
+%
+% \startbuffer[kanweg]
+% \starttabel[|||]
+% \HL
+% \VL test \VL test \VL\SR
+% \HL
+% \VL test \VL test \VL\FR
+% \VL test \VL test \VL\MR
+% \VL test \VL test \VL\LR
+% \HL
+% \stoptabel
+% \stopbuffer
+%
+% \schrijfnaarreferentielijst[externaltable]{kanweg}{\switchtbodyfont[5pt]\haalbuffer[kanweg]}
+%
+% \plaatsreferentielijst
+% [externalfigure,externaltable]
+
+% algemeen
+
+\def\referentiebutton#1[#2]%
+ {\bgroup
+ \let\referenceprefix=\empty
+ \setbox0=\hbox{\ignorespaces#1}%
+ \naarbox{\copy0}[#2]%
+ \egroup}
+
+\newcounter\referencecounter
+
+\def\doreferentielijstelement#1#2#3#4#5%
+ {\doiftoclevelelse[#4]
+ {\getvalue{\??rl#1\c!voor}%
+ \referentiebutton
+ {\getvalue{\??rl#1\c!commando}{#3}\pagereference[\r!to#2]}%
+ [\r!from#2]%
+ \global\utilitydonetrue
+ \getvalue{\??rl#1\c!na}}
+ {}}
+
+\def\doplaatsreferentielijst[#1][#2]%
+ {\begingroup
+% \let\doschrijfnaarreferentielijst=\gobblethreearguments
+ \stelreferentielijstin[#1][#2,\c!status=\v!stop]%
+ \getfromcommalist[#1][1]%
+ \dosettoclevel{\getvalue{\??rl\commalistelement\c!criterium}}%
+ \doutilities{#1}{\jobname}{#1}{}{\par}%
+ \endgroup}
+
+\def\plaatsreferentielijst%
+ {\dodoubleempty\doplaatsreferentielijst}
+
+\def\doschrijfnaarreferentielijst#1#2#3%
+ {\doifvalue{\??rl#1\c!status}{\v!start}
+ {\begingroup
+ \makesectionformat
+ \doifelse{\@@nmstatus}{\v!start}
+ {\def\dopaginanummer{\noexpand\pagenumber}}
+ {\def\dopaginanummer{0}}%
+ \edef\schrijfwegnaarlijst%
+ {\writeutilitycommand%
+ {\referencelistentry%
+ {#1}% tag
+ {#2}% number
+ {#3}% data
+ {\sectionformat::\dopaginanummer}%
+ {\noexpand\realfolio}}}%
+ \schrijfwegnaarlijst
+ \endgroup}}
+
+\def\schrijfnaarreferentielijst[#1]#2#3% #1=class #2=data #3=visualization
+ {\doifelsevalue{\??rl#1\c!status}{\v!start}
+ {\referentiebutton%
+ {#3%
+ \doglobal\increment\referencecounter
+ \pagereference[\r!from\referencecounter]%
+ \doschrijfnaarreferentielijst{#1}{\referencecounter}{#2}}%
+ [\r!to\referencecounter]}
+ {#3}}
+
+\def\referencelistentry#1%
+ {\executeifdefined{#1\c!lijst}\gobblefourarguments}
+
+\def\dodosetreferentielijst#1%
+ {\setvalue{#1\c!lijst}{\doreferentielijstelement{#1}}}
+
+\def\dodoresetreferentielijst#1%
+ {\setvalue{#1\c!lijst}{\gobblefourarguments}}
+
+\def\dodefinieerreferentielijst[#1][#2]%
+ {\stelreferentielijstin[#1]
+ [\c!commando=,
+ \c!status=\v!start,
+ \c!criterium=\v!alles,
+ \c!voor=,
+ \c!na=,
+ #2]
+ \setcounter{#1}{0}%
+ \addutilityreset{#1}%
+ \setvalue{\s!set#1}%
+ {\dodosetreferentielijst{#1}}%
+ \setvalue{\s!reset#1}%
+ {\dodoresetreferentielijst{#1}}}
+
+\def\definieerreferentielijst%
+ {\dodoubleempty\dodefinieerreferentielijst}
+
+\def\dostelreferentielijstin[#1][#2]%
+ {\getparameters[\??rl#1][#2]}
+
+\def\stelreferentielijstin%
+ {\dodoubleempty\dostelreferentielijstin}
+
+%I n=Inhoudsopgave
+%I c=\volledigeinhoud,\plaatsinhoud
+%I c=\stelinhoudin
+%I
+%I Er kan een inhoudsopgave worden opgeroepen met:
+%I
+%I \plaatsinhoud
+%I \volledigeinhoud
+%I
+%I De wijze waarop de inhoudsopgave wordt aangemaakt wordt
+%I ingesteld met:
+%I
+%I \stelinhoudin[instellingen]
+%I
+%I De instellingen komen overeen met de van lijsten.
+%P
+%I Een inhoudsopgave is een zogenaamde samengestelde lijst.
+%I Op termijn komt het mechanisme van samengestelde lijsten
+%I ook voor de gebruiker beschikbaar. Vooralsnog werkt het
+%I achter de schermen.
+%I
+%I De commando's zijn slim genoeg om meestal automatisch de
+%I juiste lijsten te genereren. Men kan echter met 'criterium'
+%I het niveau specificeren. Met 'niveau' geeft men aan tot welk
+%I niveau de inhoudsopgave moet worden weergegeven.
+
+\def\dostelsamengesteldelijstin[#1][#2]%
+ {\getparameters[\??ih#1][#2]%
+ \ExpandFirstAfter\stellijstin[\getvalue{\??ih#1\c!lijst}][#2]}
+
+\def\stelsamengesteldelijstin%
+ {\dodoubleargument\dostelsamengesteldelijstin}
+
+\def\doplaatssamengesteldelijst[#1][#2]%
+ {\begingroup
+ \getparameters[\??ih#1][#2]%
+ \dosettoclevel{\getvalue{\??ih#1\c!criterium}}%
+ \edef\samengesteldelijst{\getvalue{\??ih#1\c!lijst}}% om voorlopig nog
+ \stripspaces\from\samengesteldelijst\to\samengesteldelijst % compatible te
+ \ExpandFirstAfter\doifnumberelse{\getvalue{\??ih#1\c!niveau}}% blijven
+ {\!!counta=\getvalue{\??ih#1\c!niveau}% met de vorige implementatie
+ \advance\!!counta by 1\relax% accepteren we ook nummers (0==deel)
+ \getfromcommacommand[\samengesteldelijst][\!!counta]%
+ \edef\maximumlijst{\commalistelement}}%
+ {\edef\maximumlijst{\getvalue{\??ih#1\c!niveau}}}%
+ \!!counta=\getvalue{\??se\getvalue{\??ko\maximumlijst \c!sectie}\c!niveau}%
+ \let\!!stringa=\samengesteldelijst
+ \let\samengesteldelijst=\empty
+ \def\docommando##1%
+ {\ifnum\getvalue{\??se\getvalue{\??ko##1\c!sectie}\c!niveau}>\!!counta
+ \else
+ \addtocommalist{##1}\samengesteldelijst
+ \fi}%
+ \processcommacommand[\!!stringa]\docommando
+ \doifvalue{\??ih#1\c!koppeling}{\v!aan}
+ {\startlistreferences{#1}}%
+ \ExpandFirstAfter\dodoplaatssamengesteldelijst[\samengesteldelijst][#2]%
+ \stoplistreferences{#1}%
+ \endgroup}
+
+\def\dodoplaatssamengesteldelijst[#1][#2]%
+ {\dobeginoflist
+ \dostellijstin[#1][#2]%
+ \doutilities{#1}{\jobname}{#1}{}{\par}%
+ \doendoflist}
+
+\def\dovolledigesamengesteldelijst[#1][#2]%
+ {\systemsuppliedtitle[#1]{\headtext{#1}}%
+ \doplaatssamengesteldelijst[#1][#2]}
+
+\def\dodefinieersamengesteldelijst[#1][#2][#3]%
+ {\setvalue{\??ih#1\c!lijst}{#2}%
+ \getcommalistsize[#2]%
+ \getfromcommalist[#2][\commalistsize]%
+ \doeassign[\??ih#1][\c!niveau=\commalistelement]%
+ \getparameters
+ [\??ih#1]
+ [\c!criterium=\v!lokaal,
+ #3]%
+ \setvalue{\e!stel#1\e!in}%
+ {\dodoubleempty\dostelsamengesteldelijstin[#1]}%
+ \setvalue{\e!plaats#1}%
+ {\dodoubleempty\doplaatssamengesteldelijst[#1]}%
+ \setvalue{\e!volledige#1}%
+ {\dodoubleempty\dovolledigesamengesteldelijst[#1]}}
+
+\def\definieersamengesteldelijst%
+ {\dotripleempty\dodefinieersamengesteldelijst}
+
+%I n=Synoniemen
+%I c=\definieersynoniemen,\stelsynoniemenin
+%I
+%I Er kunnen meerdere lijsten worden gedefinieerd door middel
+%I van het commando:
+%I
+%I \definieersynoniemen[naam][namen][commando]
+%I
+%I Na dit commando zijn de volgende commando's beschikbaar:
+%I
+%I \naam{tekst}{synoniem}
+%I \commando{tekst}
+%I \volledigelijstmetnamen
+%I \plaatslijstmetnamen
+%P
+%I De commando's rond de lijst met afkortingen zijn gedefinieerd
+%I met de waarden: [afkorting][afkortingen][\voluit]. Beschikbare
+%I commando's zijn dus:
+%I
+%I \afkorting{afkorting}{betekenis}
+%I \voluit{afkorting}
+%I \volledigelijstmetafkortingen
+%I \plaatslijstmetafkortingen
+%I
+%I De betekenis kan worden opgeroepen met \voluit{afkorting}.
+%P
+%I De wijze van zetten kan worden ingesteld met het commando:
+%I
+%I \stelsynoniemenin[naam][synoniemletter=,tekstletter=,
+%I status=,plaats=,breedte=,criterium=,conversie=,
+%I expansie=]
+%I
+%I Als de status 'stop' is, dan worden geen synoniemen naar
+%I de lijst weggeschreven. Als het criterium 'alles' is,
+%I dan worden alle synoniemen in het overzicht opgenomen, zoniet,
+%I dan worden alleen gebruikte synoniemen opgenomen. Omdat
+%I standaard 'conversie' op 'nee' staat, worden afkortingen
+%I getoond.
+%P
+%I In principe is een synoniem pas beschikbaar als het is
+%I gedefinieerd. Het is echter mogelijk synoniemen te laden,
+%I mits de tekst tenminste eenmaal is verwerkt. Het is dus
+%I mogelijk synoniemen op te roepen die pas later worden
+%I gedefinieerd. Alleen de omschrijvingen zijn beschikbaar,
+%I dus niet de commando's (doordenkertje). Het laden vindt
+%I plaats met:
+%I
+%I \laadnamen
+%I
+%I of, zoals bij afkortingen:
+%I
+%I \laadafkortingen
+
+% Formaat tex-utility-input-file <jobname.tui>:
+%
+% synonym entry {tag} {pure} {text} {synonym}
+%
+% Deze file wordt met het programma TeXUtil omgezet in een
+% in te lezen TeXFile met de commando's:
+%
+% \synonymentry {tag} {pure} {text} {synonym}
+
+\newif\ifsynonymmeaning
+
+\def\dostelsynoniemenin[#1][#2]%
+ {\getparameters[\??sm#1][#2]}
+
+\def\stelsynoniemenin%
+ {\dodoubleargument\dostelsynoniemenin}
+
+\def\doresetsynonym#1%
+ {\letvalue{#1\s!entry}=\gobblethreearguments}
+
+\def\dohandlesynonymentry#1#2#3%
+ {\bgroup
+ \syndef
+ {\doattributes{\??sm#1\c!tekst}{#2}}
+ \ConvertToConstant\doifelse{#3}{}{\onbekend}{#3}
+ \par
+ \egroup}
+
+\def\synonymentry#1%
+ {\executeifdefined{#1\s!entry}\gobblethreearguments}
+
+\def\dosetsynonym#1%
+ {\doifdefinedelse{\??sm#1\c!commando}
+ {\global\utilitydonetrue
+ \setvalue{#1\s!entry}{\getvalue{\??sm#1\c!commando}}}
+ {\global\utilitydonetrue
+ \setvalue{#1\s!entry}{\dohandlesynonymentry}}%
+ \doordefinieren
+ [syndef]
+ [\c!plaats=\synplaats,
+ \c!breedte=\synbreedte,
+ \c!kopletter=,
+ \c!voor=,
+ \c!tussen=,
+ \c!na=]}
+
+\def\doplaatslijstmetsynoniemen#1#2%
+ {\witruimte
+ \begingroup
+ \def\currentsynonym{#1}%
+ \def\synplaats{\getvalue{\??sm#1\c!plaats}}%
+ \def\synbreedte{\getvalue{\??sm#1\c!breedte}}%
+ \stelwitruimtein[\v!geen]%
+ \doutilities{#1}{\jobname}{#2}{}{\par}%
+ \endgroup
+ \ifutilitydone\else\geenwitruimte\fi}
+
+\def\dovolledigelijstmetsynoniemen#1#2%
+ {\plaatsvolledig
+ {\systemsuppliedchapter}{#1}{\headtext{#2}}%
+ {\doplaatslijstmetsynoniemen{#1}{#2}}}
+
+\def\processsynonym#1#2#3%
+ {\begingroup % anders in mathmode lege \hbox, zie eenheden
+ \ifsynonymmeaning
+ \doattributes{\??sm#1\c!synoniem}{\synonymmeaningfalse#3}%
+ \else
+ \explicithmode
+ \doattributes{\??sm#1\c!tekst}{#2}%
+ \fi
+ \endgroup}
+
+\def\getsynonymmeaning#1#2%
+ {\doifdefinedelse{#2}
+ {{\synonymmeaningtrue\getvalue{#2}}}
+ {\showmessage{\m!systems}{18}{#1,#2}}}
+
+\def\dowritesynonym#1#2#3#4%
+ {\begingroup % anders in mathmode lege \hbox
+ \doifelsevalue{\??sm#1\c!expansie}{\v!ja}
+ {\immediatewriteutility{s e {#1} {#2} {#3} {#4}}}
+ {\convertargument#3\to\asciia
+ \convertargument#4\to\asciib
+ \immediatewriteutility{s e {#1} {#2} {\asciia} {\asciib}}}%
+ \endgroup}
+
+\def\preexecutesynonym#1#2#3#4%
+ {\ifdoinpututilities \else
+ \dowritesynonym{#1}{#2}{#3}{#4}%
+ \setgvalue{#2}{\donottest\processsynonym{#1}{#3}{#4}}%
+ \fi}
+
+\def\executesynonym#1#2#3#4%
+ {\preexecutesynonym{#1}{#2}{#3}{#4}%
+ \processsynonym{#1}{#3}{#4}}
+
+\def\expandsynonym#1#2#3#4%
+ {{\synonymmeaningtrue
+ \processsynonym{#1}{#3}{#4}}}
+
+\def\dodoloadsynonym#1#2#3#4%
+ {\setgvalue{#2}{\executesynonym{#1}{#2}{#3}{#4}}}
+
+\def\doloadsynonym#1%
+ {\setvalue{#1\s!entry}##1##2##3%
+ {\doifelsenothing{##1}
+ {\dodoloadsynonym{#1}{##2}{##2}{##3}}
+ {\dodoloadsynonym{#1}{##1}{##2}{##3}}%
+ \global\utilitydonetrue}}
+
+\def\dolaadsynoniemen#1#2%
+ {\bgroup
+ \let\dosetsynonym=\doloadsynonym
+ \showmessage{\m!systems}{19}{#2}%
+ \doutilities{#1}{\jobname}{}{}{}%
+ \egroup
+ \setvalue{\s!check#1}##1{}}
+
+\def\dodocomplexsynonym[#1][#2]#3#4%
+ {\getvalue{\s!check#1}{#2}%
+ \doifelsevalue{\??sm#1\c!conversie}{\v!ja}
+ {\setgvalue{#2}{\donottest\expandsynonym{#1}{#2}{#3}{#4}}}
+ {\doifelsevalue{\??sm#1\c!status}{\v!start}
+ {\doifelsevalue{\??sm#1\c!criterium}{\v!alles}
+ {\preexecutesynonym{#1}{#2}{#3}{#4}}
+ {\setgvalue{#2}{\donottest\executesynonym{#1}{#2}{#3}{#4}}}}
+ {\setgvalue{#2}{\donottest\processsynonym{#1}{#3}{#4}}}}}
+
+\def\docomplexsynonym[#1][#2][#3]#4#5%
+ {\ifthirdargument
+ \dodocomplexsynonym[#2][#1#3]{#4}{#5}%
+ \else
+ \dodocomplexsynonym[#2][#1#4]{#4}{#5}%
+ \fi}
+
+\def\dodefinieersynoniemen[#1][#2][#3][#4]%
+ {\stelsynoniemenin
+ [#1]
+ [\c!synoniemletter=,
+ \c!tekstletter=,
+ \c!status=\v!start,
+ \c!plaats=\v!links,
+ \c!criterium=,
+ \c!breedte=5em]%
+ \presetheadtext
+ [#2=\Woord{#2}]%
+ \setvalue{\e!stel#2\e!in}%
+ {\dodoubleargument\getparameters[\??sm#1]}%
+ \iffourthargument
+ \def#4##1%
+ {\donottest\getsynonymmeaning{#1}{\??sm:#1:##1}}%
+ \ifthirdargument
+ \def#3##1%
+ {\donottest\getvalue{\??sm:#1:##1}}%
+ \fi
+ \setvalue{#1}%
+ {\dotripleempty\docomplexsynonym[\??sm:#1:][#1]}%
+ \else
+ \ifthirdargument
+ \def#3##1%
+ {\donottest\getsynonymmeaning{#1}{##1}}%
+ \fi
+ \setvalue{#1}%
+ {\dotripleempty\docomplexsynonym[][#1]}%
+ \fi
+ \setvalue{\s!set#1}%
+ {\dosetsynonym{#1}}%
+ \setvalue{\s!reset#1}%
+ {\doresetsynonym{#1}}%
+ \setvalue{\s!check#1}##1%
+ {\checkdefined{synoniemen}{#1}{##1}}%
+ \addutilityreset{#1}%
+ \setvalue{\e!laad#2}%
+ {\dolaadsynoniemen{#1}{#2}}%
+ \setvalue{\e!plaats\e!lijstmet#2}%
+ {\doplaatslijstmetsynoniemen{#1}{#2}}%
+ \setvalue{\e!volledige\e!lijstmet#2}%
+ {\dovolledigelijstmetsynoniemen{#1}{#2}}}
+
+\def\definieersynoniemen%
+ {\doquadrupleempty\dodefinieersynoniemen}
+
+%I n=Sorteren
+%I c=\definieersorteren,\stelsorterenin
+%I
+%I Sorteren is een vereenvoudigde variant van 'synoniemen':
+%I
+%I \definieersorteren[naam][namen]
+%I
+%I Na dit commando zijn de volgende commando's beschikbaar:
+%I
+%I \naam{tekst}
+%I \volledigelijstmetnamen
+%I \plaatslijstmetnamen
+%P
+%I De wijze van zetten kan worden ingesteld met het commando:
+%I
+%I \stelsorterenin[naam][status=,commando=,voor=,na=,
+%I letter=,criterium=,expansie=]
+%I
+%I Met 'commando' kan met een bewerking uitvoeren op de
+%I onderdelen van een lijst.
+%I
+%I Als de status 'stop' is, dan worden geen sorteringen naar
+%I de lijst weggeschreven. Als het criterium 'alles' is,
+%I dan worden alle sorteringen in het overzicht opgenomen,
+%I zoniet, dan worden alleen gebruikte opgenomen.
+%P
+%I In principe is een item pas beschikbaar als het is
+%I gedefinieerd. Het is echter mogelijk items te laden,
+%I mits de tekst tenminste eenmaal is verwerkt. Het is dus
+%I mogelijk items op te roepen die pas later worden
+%I gedefinieerd.
+%I
+%I \laadnamen
+%I
+%I of, zoals bij logo's:
+%I
+%I \laadlogos
+%I
+%I Bij een eerste run zijn de commando's nog niet
+%I beschikbaar. Een logo kan dus het best worden opgeroepen
+%I met: \naam{...}, bijvoorbeeld \naam{PRAGMA} in plaats van
+%I \PRAGMA.
+
+% Formaat tex-utility-input-file <jobname.tui>:
+%
+% synonym entry {tag} {pure} {text} {}
+%
+% Deze file wordt met het programma TeXUtil omgezet in een
+% in te lezen TeXFile met de commando's:
+%
+% \synonymentry {tag} {pure} {text} {}
+
+\def\dostelsorterenin[#1][#2]%
+ {\getparameters[\??so#1][#2]}
+
+\def\stelsorterenin%
+ {\dodoubleargument\dostelsorterenin}
+
+\def\doresetsorteren#1%
+ {\letvalue{#1\s!entry}=\gobblethreearguments}
+
+\def\dosetsorteren#1%
+ {\setvalue{#1\s!entry}##1##2##3%
+ {\def\dowritesort####1####2####3{}%
+ \global\utilitydonetrue
+ \bgroup
+ \doifdefinedelse{\??so#1\c!commando}
+ {\getvalue{\??so#1\c!commando}{##2}}
+ {\getvalue{\??so#1\c!voor}%
+ \doattributes{\??so#1}{##2}%
+ \getvalue{\??so#1\c!na}}%
+ \egroup}}
+
+\def\doplaatslijstmetsorteren#1% NOG EEN RUWE VERSIE MAKEN
+ {\witruimte % ZONDER WITRUIMTE ETC ETC
+ \begingroup
+ \stelwitruimtein[\v!geen]%
+ \doutilities{#1}{\jobname}{#1}{}{\par}%
+ \endgroup
+ \ifutilitydone\else\geenwitruimte\fi}
+
+\def\dovolledigelijstmetsorteren#1#2%
+ {\plaatsvolledig
+ {\systemsuppliedchapter}{#1}{\headtext{#2}}
+ {\doplaatslijstmetsorteren{#1}}}
+
+\def\processsort#1#2#3%
+ {\explicithmode
+ \bgroup
+ \doattributes{\??so#1}{#2}%
+ \egroup}
+
+\def\dowritesort#1#2#3%
+ {\bgroup
+ \doifelsevalue{\??so#1\c!expansie}{\v!ja}
+ {\immediatewriteutility{s e {#1} {#2} {#3} {}}}
+ {\convertargument#3\to\asciia
+ \immediatewriteutility{s e {#1} {#2} {\asciia} {}}}%
+ \egroup}
+
+\def\synonymentry#1%
+ {\executeifdefined{#1\s!entry}\gobblethreearguments}
+
+\def\preexecutesort#1#2#3%
+ {\ifdoinpututilities \else
+ \dowritesort{#1}{#2}{#3}%
+ \setgvalue{#2}{\donottest\processsort{#1}{#3}{#2}}%
+ \fi}
+
+\def\executesort#1#2#3%
+ {\preexecutesort{#1}{#2}{#3}%
+ \processsort{#1}{#3}{#2}}
+
+\def\doloadsort#1%
+ {\setvalue{#1\s!entry}##1##2##3%
+ {\setgvalue{##1}{##2}%
+ \global\utilitydonetrue}}
+
+\def\dolaadsorteren#1#2%
+ {\bgroup
+ \let\dosetsorteren=\doloadsort
+ \showmessage{\m!systems}{20}{#2}%
+ \doutilities{#1}{\jobname}{}{}{}%
+ \egroup
+ \setvalue{\s!check#1}##1{}}
+
+\def\dodocomplexsort[#1][#2]#3%
+ {\getvalue{\s!check#1}{#2}%
+ \doifelsevalue{\??so#1\c!status}{\v!start}
+ {\doifelsevalue{\??so#1\c!criterium}{\v!alles}
+ {\preexecutesort{#1}{#2}{#3}}
+ {\setgvalue{#2}{\donottest\executesort{#1}{#2}{#3}}}}
+ {\setgvalue{#2}{\donottest\processsort{#1}{#3}{#2}}}}
+
+\def\docomplexsort[#1][#2][#3]#4%
+ {\ifthirdargument
+ \dodocomplexsort[#2][#1#3]{#4}
+ \else
+ \dowritesort{#2}{#4}{#4}%
+ \fi}
+
+\def\dodefinieersorteren[#1][#2][#3]%
+ {\getparameters[\??so#1]
+ [\c!commando=,
+ \c!status=\v!start,
+ \c!criterium=,
+ \c!letter=,
+ \c!voor=,
+ \c!na=\endgraf]%
+ \presetheadtext[#2=\Woord{#2}]%
+ \setvalue{\e!stel#2\e!in}[##1]%
+ {\getparameters[\??so#1][##1]}%
+ \ifthirdargument
+ \def#3##1%
+ {\getvalue{\??so:#1:##1}}
+ \setvalue{#1}%
+ {\dotripleempty\docomplexsort[\??so:#1:][#1]}%
+ \else
+ \setvalue{#1}%
+ {\dotripleempty\docomplexsort[][#1]}%
+ \fi
+ \setvalue{\s!set#1}%
+ {\dosetsorteren{#1}}%
+ \setvalue{\s!reset#1}%
+ {\doresetsorteren{#1}}%
+ \addutilityreset{#1}%
+ \setvalue{\e!laad#2}%
+ {\dolaadsorteren{#1}{#2}}%
+ \setvalue{\s!check#1}##1%
+ {\checkdefined{sorteren}{#1}{##1}}%
+ \setvalue{\e!plaats\e!lijstmet#2}%
+ {\doplaatslijstmetsorteren{#1}}%
+ \setvalue{\e!volledige\e!lijstmet#2}%
+ {\dovolledigelijstmetsorteren{#1}{#2}}}
+
+\def\definieersorteren%
+ {\dotripleempty\dodefinieersorteren}
+
+%I n=Afkortingen
+%I c=\afkorting,\volledigelijstmetafkortingen
+%I
+%I Een afkorting wordt gedefinieerd met:
+%I
+%I \afkorting{afkorting}{betekenis}
+%I
+%I en opgeroepen met:
+%I
+%I \voluit{afkorting}
+%I
+%I Een lijst met afkortingen wordt gegenereerd met:
+%I
+%I \plaatslijstmetafkortingen
+%I \volledigelijstmetafkortingen
+
+%T n=afkorting
+%T m=afk
+%T a=a
+%T
+%T \afkorting {?} {}
+
+%I n=Eenheden
+%I c=\eenheid,\betekenis,\wiskunde
+%I
+%I Een afkorting wordt gedefinieerd met:
+%I
+%I \eenheid [eenheid] {dimensie} {betekenis}
+%I
+%I en opgeroepen met:
+%I
+%I \betekenis {eenheid}
+%I
+%I Een voorbeeld van een definitie is:
+%I
+%I \eenheid [KUUB] {m^3} {inhoud}
+%I
+%I Een lijst met eenheden wordt gegenereerd met:
+%I
+%I \plaatslijstmeteenheden
+%I \volledigelijstmeteenheden
+%P
+%I Aanvullend zijn twee commando's beschikbaar die worden
+%I gebruikt bij het zetten van eenheden:
+%I
+%I \wiskunde{wiskundige commando's}
+%I \dimensie{wiskundige eenheid}
+%I
+%I Het eerste commando maakt $ binnen $ mogelijk, het
+%I laatste commando handelt ook de spatiering af.
+%I
+%I Een teveel aan spatiering kan ongedaan worden voorkomen
+%I met:
+%I
+%I \geendimensie{wiskundige eenheid}
+
+% documenteren \bmath ..\emath
+
+\def\bmath%
+ {\begingroup
+ \ifmmode
+ \let\emath=\endgroup
+ \else
+ $\def\emath{$\endgroup}%
+ \fi}
+
+\def\mathematics#1% % \bmath ...\emath kan ook maar
+ {\ifmmode#1\else$#1$\fi} % dit alternatief scheelt grouping
+
+\def\dimensionsignal{0.000058pt}
+
+\def\dimension#1%
+ {\def\dodimensionsignal{\kern\dimensionsignal}%
+ \ifdim\lastskip=\!!zeropoint\relax
+ \ifdim\lastkern=\!!zeropoint\relax
+ \ifmmode
+ \mathematics{\,\,\tf#1}%
+ \else
+ \mathematics{\tf#1}%
+ \fi
+ \else\ifdim\lastkern=\dimensionsignal
+ \mathematics{\,\tf#1}%
+ \else
+ \unkern\mathematics{\,\,\tf#1}%
+ \fi\fi
+ \else
+ \unskip\mathematics{\,\,\tf#1}%
+ \fi
+ \dodimensionsignal}
+
+\def\nodimension#1%
+ {\unskip#1\gdef\dodimensionsignal{}}
+
+%I n=Registers
+%I c=\definieerregister,\stelregisterin
+%I c=\volledigregister,\plaatsregister
+%I
+%I Er kunnen registers worden gedefinieerd met het commando:
+%I
+%I \definieerregister[naam][namen]
+%I
+%I Vanaf dat moment zijn de volgende commando's beschikbaar:
+%I
+%I \naam[ascii]{ingang+ingang+ingang}
+%I \zienaam[ascii]{ingang+ingang+ingang}{andere ingang}
+%I \plaatsnaam
+%I \volledigenaam
+%I
+%I of
+%I
+%I \plaatsregister[naam]
+%I \volledigregister[naam]
+%I
+%I De commando's rond de standaard index zijn gedefinieerd
+%I met de waarden: [index][indices]
+%P
+%I In de tekst dient een registerverwijzing voor het woord
+%I te staan, dus: we verwijzen naar \index{woord}woord.
+%I
+%I Bij koppen daarentegen plaatsen we \index na de kop:
+%I
+%I \subparagraaf{dat is dat}
+%I \index{ziezo}
+%I
+%I ........... tekst .....
+%I
+%I of
+%I
+%I \margewoord{ziezo}
+%I \index{ziezo}
+%I
+%I ........... tekst .....
+%I
+%I Ongewenste spaties na \index worden verwijderd! Wil men
+%I dus een spatie, dan moet dit worden afgedwongen met \ .
+%P
+%I Mocht het hierboven beschreven mechanisme interfereren
+%I met andere mechanismen, dan kan ook het volgende commando
+%I worden gebruikt:
+%I
+%I \schrijfnaarregister[naam][ascii]{ingang+ingang+ingang}
+%I
+%I waarbij [ascii] optioneel is.
+%P
+%I De registers kunnen worden ingesteld met het commando:
+%I
+%I \stelregisterin[naam][letter=,aanduiding=,n=,
+%I balanceren=,uitlijnen=,criterium=,afstand=,symbool=,
+%I expansie=]
+%I
+%I waarbij 'aanduiding' betrekking heeft op het al dan niet
+%I plaatsen van een letter ('ja' of 'nee') en 'letter' op de
+%I weergave van de letter.
+%I
+%I Met 'criterium' kan een subindex worden opgeroepen,
+%I bijvoorbeeld 'deel' of 'hoofdstuk', of als het niveau
+%I onbekend is: 'lokaal'. Standaard wordt een volledige index
+%I gegenereerd ('alles').
+%I
+%I In plaats van een paginanummer kan een symbool worden
+%I gezet: n (1,2,3,..), a (a,b,c,..), 1 (bolletjes) en
+%I 2 (rechthoekjes). Een symbool heeft alleen zin bij
+%I interactieve teksten.
+%I
+%I Voor eigen gebruik is \ifregistergeplaatst beschikbaar.
+%P
+%I In plaats van een + als scheider kan ook & worden
+%I gebruikt. Bovendien kan als eerste karakter worden opgegeven
+%I wat de scheider is:
+%I
+%I \index[abcformule]{&formule&$ax^2+bx+c$}
+%I
+%I Overigens gaat de & voor de +, zodat hier de specificatie
+%I niet per se nodig is. Let wel: dit is een kenmerk van
+%I texutil, en niet zozeer van ConTeXt.
+
+% Formaat tex-utility-input-file <jobname.tui>:
+%
+% i e {tag} {loc} {pure} {entry+..} {p:c:p:sp:ssp=>page} {realpage}
+% i s {tag} {loc} {pure} {entry+..} {other entry}
+%
+% In plaats van + kan een & worden gebruikt. Ook kan als
+% eerste karakter worden opgegeven wat de scheider is.
+%
+% Deze file wordt met het programma TeXUtil omgezet in
+% een in te lezen TeXFile met de commando's:
+%
+% \registerentrya {tag} {ingang}
+% \registerentryb {tag} {subingang}
+% \registerentryc {tag} {subsubingang}
+%
+% \registerpage {tag} {volgnummer} {paginanummer} {volgnummer}
+%
+% \registersee {tag} {andere ingang}
+%
+% \registerentry {tag} {letter}
+
+\def\dostelregisterin[#1][#2]%
+ {\getparameters[\??id#1][#2]%
+ \preparepaginaprefix{\??id#1}}
+
+\def\stelregisterin%
+ {\dodoubleargumentwithset\dostelregisterin}
+
+\def\getlastregisterentry#1%
+ {\def\docommando##1%
+ {\def\!!stringa{##1}}%
+ \processconcanatedlist[#1][+]\docommando
+ \!!stringa}
+
+\def\doprocessregister[#1]#2%
+ {\begingroup
+ \thisisnextinternal{\s!ind}%
+ \ifduplicate\getlastregisterentry{#2}\fi
+ \doifelsevalue{\??id\currentregister\c!expansie}{\v!ja}
+ {\edef\ascii{#2}}
+ {\convertargument#2\to\ascii}%
+ \makesectionformat
+ \edef\schrijfwegnaarregister%
+ {\writeutility%
+ {r e %
+ {\currentregister} %
+ {\nextinternalreference} %
+ {#1} %
+ {\ascii} %
+ {\sectionformat::\noexpand\pagenumber} %
+ {\noexpand\realfolio}}}%
+ \schrijfwegnaarregister
+ \getfirstcharacter\currentregister
+ \registerinfo{> \firstcharacter}{#2}%
+ \endgroup}
+
+\def\complexdoregister[#1]#2%
+ {\doprocessregister[#1]{#2}%
+ \ifvmode\nobreak\fi
+ \GotoPar}
+
+\def\doregister#1%
+ {\def\currentregister{#1}%
+ \complexorsimpleempty{doregister}}
+
+\def\complexdozieregister[#1]#2#3%
+ {\begingroup
+ \thisisnextinternal{\s!ind}%
+ \ifduplicate\getlastregisterentry{#2}\fi
+ \doifelsevalue{\??id\currentregister\c!expansie}{\v!ja}
+ {\edef\ascii{#2}}
+ {\convertargument#2\to\ascii}%
+ \makesectionformat
+ \edef\schrijfwegnaarregister%
+ {\writeutility%
+ {r s %
+ {\currentregister} %
+ {\nextinternalreference} %
+ {#1} %
+ {\ascii} %
+ {#3} %
+ {\sectionformat}}}%
+ \schrijfwegnaarregister
+ \endgroup
+ \registerinfo{> zie}{#2}%
+ \GotoPar}
+
+\def\dozieregister#1%
+ {\def\currentregister{#1}%
+ \complexorsimpleempty{dozieregister}}
+
+\def\doschrijfnaarregister[#1]% % de twee-traps-aanroep is nodig
+ {\edef\currentregister{#1}% % om gebruik van \ExpandBothAfter
+ \doprocessregister} % mogelijk te maken
+
+\def\schrijfnaarregister%
+ {\dodoubleempty\doschrijfnaarregister}
+
+\def\ifregistergeplaatst{\ifutilitydone}
+
+\newif\iffirstregisterpage
+
+\def\c!entrya{}
+\def\c!entryb{}
+\def\c!entryc{}
+
+\def\nextregisterpage%
+ {\iffirstregisterpage
+ \doglobal\newcounter\registerpagenumber
+ \fi
+ \doglobal\increment\registerpagenumber}
+
+\def\doregisterpagelocation#1%
+ {\nextregisterpage
+ \hbox to 1em{\hss#1\hss}}
+
+\def\setregisterpage#1%
+ {\let\registerpageseparator=\relax
+ \processaction
+ [\getvalue{\??id#1\c!symbool}]
+ [ \c!n=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{\sl\registerpagenumber}\/}},
+ \c!a=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{\sl\character{\registerpagenumber}\/}}},
+ 1=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{$\bullet$}}},
+ 2=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{\vrule\!!width1em\!!height1ex\!!depth\!!zeropoint}}},
+ \s!unknown=>{\def\registerpagesymbol{\getvalue{\??id#1\c!symbool}}%
+ \def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{\registerpagesymbol}}},
+ \s!default=>{\def\registerpageseparator%
+ {{\sl,}}%
+ \def\doregisterpage##1[##2]%
+ {{\strut\sl\paginaprefix{\??id##1}[##2]\translatednumber[##2]}}}]}
+
+\def\doresetregister#1%
+ {\letvalue{#1\s!entrya}=\gobbleoneargument
+ \letvalue{#1\s!entryb}=\gobbleoneargument
+ \letvalue{#1\s!entryc}=\gobbleoneargument
+ \letvalue{#1\s!see}=\gobbletwoarguments
+ \letvalue{#1\s!page}=\gobblethreearguments
+ \letvalue{#1\s!entry}=\gobbleoneargument}
+
+\def\registerentrya#1{\executeifdefined{#1\s!entrya}\gobbleoneargument}
+\def\registerentryb#1{\executeifdefined{#1\s!entryb}\gobbleoneargument}
+\def\registerentryc#1{\executeifdefined{#1\s!entryc}\gobbleoneargument}
+\def\registersee #1{\executeifdefined{#1\s!see}\gobbletwoarguments}
+\def\registerpage #1{\executeifdefined{#1\s!page}\gobblethreearguments}
+\def\registerentry #1{\executeifdefined{#1\s!entry}\gobbleoneargument}
+
+\newif\iffirstsubentry
+\newif\iffirstsubsubentry
+
+\newcounter\currententrylevel
+
+\let\c!entryletter=\empty
+\let\c!entrya =\relax
+\let\c!entryb =\relax
+\let\c!entryc =\relax
+
+\def\dosetpageregister#1%
+ {\dosetreglevel{\getvalue{\??id#1\c!criterium}}%
+ \setregisterpage{#1}%
+ \setvalue{#1\s!entrya}##1%
+ {\edef\currententrylevel{1}%
+ \global\let\c!entryb=\relax
+ \global\let\c!entryc=\relax
+ \gdef\c!entrya%
+ {\global\firstregisterpagetrue
+ \endgraf
+ \hangindent1em\noindent
+ \dohandleregisterentry{##1}%
+ \global\firstsubentrytrue
+ \global\firstsubsubentrytrue}}%
+ \setvalue{#1\s!entryb}##1%
+ {\edef\currententrylevel{2}%
+ \global\let\c!entryc=\relax
+ \global\def\c!entryb%
+ {\global\firstregisterpagetrue
+\global\let\c!entrya=\relax
+ \endgraf
+ \iffirstsubentry\nobreak\fi
+ \hangindent2em\noindent\hskip1em\relax
+ \dohandleregisterentry{##1}%
+ \global\firstsubentryfalse
+ \global\firstsubsubentrytrue}}%
+ \setvalue{#1\s!entryc}##1%
+ {\edef\currententrylevel{3}%
+ \gdef\c!entryc%
+ {\global\firstregisterpagetrue
+\global\let\c!entrya=\relax
+\global\let\c!entryb=\relax
+ \endgraf
+ \iffirstsubsubentry\nobreak\fi
+ \hangindent3em\noindent\hskip2em\relax
+ \dohandleregisterentry{(##1)}%
+ \global\firstsubsubentryfalse}}%
+ \setvalue{#1\s!page}##1##2##3%
+ {\doifreglevelelse[##2]
+ {\global\utilitydonetrue
+ \c!entryletter
+ \def\dohandleregisterentry####1%
+ {\bgroup
+ \if!!donea
+ \setbox0=\hbox{\showlocation{\getvalue{\??id#1\c!tekstcommando}{####1}}}%
+ \gotonextinternal{\s!ind}{##1}{##3}{\copy0}%
+ \else
+ \getvalue{\??id#1\c!tekstcommando}{####1}%
+ \fi
+ \egroup
+ \!!doneafalse}%
+ \!!doneafalse
+ \doifelsevalue{\??id#1\c!interactie}{\v!tekst}
+ {\ifcase\currententrylevel
+ \or
+ \!!doneatrue\c!entrya\c!entryb\c!entryc
+ \or
+ \c!entrya\!!doneatrue\c!entryb\c!entryc
+ \or
+ \c!entrya\c!entryb\!!doneatrue\c!entryc
+ \fi}
+ {\c!entrya\c!entryb\c!entryc}%
+ \global\let\c!entrya=\relax
+ \global\let\c!entryb=\relax
+ \global\let\c!entryc=\relax
+ \global\let\c!entryletter=\relax
+ \iffirstregisterpage
+ \expandafter\hskip\getvalue{\??id#1\c!afstand}\relax
+ \else
+ \registerpageseparator % || Moet anders
+ |\spatie|\relax % \relax needed because | looks ahead
+ \fi
+ \doifelsevalue{\??id#1\c!interactie}{\v!paginanummer}
+ {\bgroup
+ \setbox0=\hbox{\showlocation{\doregisterpage{#1}[##2]}}%
+ \gotonextinternal{\s!ind}{##1}{##3}{\copy0}%
+ \egroup}
+ {\hbox{\doregisterpage{#1}[##2]}}%
+ \ignorespaces
+ \global\firstregisterpagefalse}
+ {}}%
+ \setvalue{#1\s!see}##1##2%
+ {\doifreglevelelse[##2::0]
+ {{\global\utilitydonetrue
+ \endgraf
+ \noindent\hskip\getvalue{\??id#1\c!afstand}%
+ \sl\e!zie: ##1}}
+ {}}%
+ \setvalue{#1\s!entry}##1%
+ {\gdef\c!entryletter%
+ {\global\let\c!entryletter=\relax
+ \global\utilitydonetrue
+ \getvalue{\??id#1\c!voor}%
+ %\vskip\lineheight\vskip-\lineheight\goodbreak
+ \vskip\lineheight\goodbreak\vskip-\lineheight
+ \doifelsevalue{\??id#1\c!aanduiding}{\v!ja}
+ {\ifhmode\unskip\else\noindent\fi
+ \getvalue{\??id#1\c!commando}% % needed
+ {\doattributes{\??id#1}
+ {\doifvalue{\??id#1\c!refereren}{\v!aan}
+ {\pagereference[#1:##1]}%
+ \strut\ignorespaces##1}}%
+ \getvalue{\??id#1\c!na}%
+ \par\nobreak} % don't use \string##1, other hack
+ {\goodbreak % needed ##1 can be \string...
+ \doifvalue{\??id#1\c!refereren}{\v!aan}
+ {\pagereference[#1:##1]}}}}}
+
+\def\getalllistreferences#1#2%
+ {\convertargument#2\to\currentregisterentry
+ \doifdefinedelse{\??id#1\??id\currentregisterentry}
+ {\edef\alllistreferences%
+ {\getvalue{\??id#1\??id\currentregisterentry}}%
+ \beforesplitstring\alllistreferences\at::\to\internallistreference
+ \aftersplitstring\alllistreferences\at::\to\alllistreferences}
+ {\let\alllistreferences=\empty
+ \def\internallistreference{0}}}
+
+\def\dosetlinkregister#1%
+ {\dosetreglevel{\getvalue{\??id#1\c!criterium}}%
+ \setregisterpage{#1}%
+ \setvalue{#1\s!entrya}##1%
+ {\global\utilitydonetrue
+ \c!entryletter
+ \iflocation
+ \getalllistreferences{#1}{##1}%
+ \endgraf\hangindent1em\noindent
+ %
+ %\thisissomeinternal{\s!lin}{\internallistreference}%
+ %
+ \pagereference[\s!lin:\internallistreference]%
+ %
+ \getcommacommandsize[\alllistreferences]%
+ \getfromcommacommand[\alllistreferences][1]%
+ \ifnum\commalistsize=1
+ \let\firstlistreference=\empty
+ \let\midlistreference=\commalistelement
+ \let\lastlistreference=\empty
+ \else
+ \let\firstlistreference=\commalistelement
+ \getfromcommacommand[\alllistreferences][\commalistsize]%
+ \let\lastlistreference=\commalistelement
+ \ifnum\commalistsize=2
+ \let\midlistreference=\empty
+ \else
+ \!!counta=\commalistsize
+ \divide\!!counta by 2
+ \getfromcommacommand[\alllistreferences][\!!counta]%
+ \let\midlistreference=\commalistelement
+ \fi
+ \fi
+ \hskip-.25em\relax
+ \getvalue{\??id#1\c!tekstcommando}{##1}%
+ \hskip\getvalue{\??id#1\c!afstand}%
+ \def\dodocommando[####1-####2]%
+ {\gotonextinternal{\s!ind}{####1}{####2}{\copy0}}%
+ \def\docommando####1####2%
+ {\setbox0=\hbox{\showlocation{\hbox to 1em{\hss####2\hss}}}%
+ \ifx####1\empty
+ % \hskip\wd0 % (optioneel maken)
+ \else
+ \expandafter\dodocommando\expandafter[####1]%
+ \fi}%
+ {\docommando\firstlistreference\gobackwardcharacter}%
+ {\docommando\midlistreference\gotosomewherecharacter}%
+ {\docommando\lastlistreference\goforwardcharacter}%
+ \else
+ ##1%
+ \fi}%
+ \setvalue{#1\s!entry}##1% hetzelfde dus gemeenschappelijk
+ {\gdef\c!entryletter%
+ {\global\utilitydonetrue
+ \global\let\c!entryletter=\relax
+ \getvalue{\??id#1\c!voor}%
+ %\vskip\lineheight\vskip-\lineheight\goodbreak
+ \vskip\lineheight\goodbreak\vskip-\lineheight
+ \doifelsevalue{\??id#1\c!aanduiding}{\v!ja}
+ {\ifhmode\unskip\else\noindent\fi
+ \getvalue{\??id#1\c!commando}% % needed
+ {\doattributes{\??id#1}
+ {\doifvalue{\??id#1\c!refereren}{\v!aan}
+ {\pagereference[#1:##1]}%
+ \strut##1}}%
+ \getvalue{\??id#1\c!na}%
+ \par\nobreak} % don't use \string##1, other hack
+ {\goodbreak % needed ##1 can be \string...
+ \doifvalue{\??id#1\c!refereren}{\v!aan}
+ {\pagereference[#1:##1]}}}}}
+
+\def\dosetregister#1%
+ {\doifelsevalue{\??id#1\c!koppeling}{\v!ja}
+ {\dosetlinkregister{#1}}
+ {\dosetpageregister{#1}}}
+
+\newcounter\internallistreference
+
+\def\doloadregisterlinks#1%
+ {\dosetreglevel{\getvalue{\??id#1\c!criterium}}%
+ \setregisterpage{#1}%
+ \setvalue{#1\s!entrya}##1%
+ {\global\firstregisterpagetrue
+ \doglobal\convertargument##1\to\currentregisterentry % \doglobal nodig?
+ \doglobal\increment\internallistreference}%
+ \setvalue{#1\s!page}##1##2##3%
+ {\doifreglevelelse[##2]
+ {\global\utilitydonetrue
+ \iffirstregisterpage
+ \global\firstregisterpagefalse
+ \setxvalue{\??id#1\??id\currentregisterentry}%
+ {\internallistreference::##1-##3}%
+ \else
+ \setxvalue{\??id#1\??id\currentregisterentry}%
+ {\getvalue{\??id#1\??id\currentregisterentry},##1-##3}%
+ \fi}
+ {}}}
+
+\def\dokoppelregister[#1][#2]%
+ {\iflocation
+ \begingroup
+ \let\dosetregister=\doloadregisterlinks
+ \stelregisterin[#1][#2]%
+ \doutilities{#1}{\jobname}{#1}{}{}%
+ \endgroup
+ \fi}
+
+\def\koppelregister%
+ {\dodoubleempty\dokoppelregister}
+
+\def\doprocesslinkedregister[#1][#2]#3%
+ {\hbox
+ {\doprocessregister[#2]{#3}%
+ \let\firstlistreference=\empty
+ \let\lastlistreference=\empty
+ \let\selflistreference=\empty
+ \let\prevlistreference=\empty
+ \let\nextlistreference=\empty
+ \getalllistreferences{#1}{#3}%
+ \doifnot{\alllistreferences}{}
+ {\def\dodocommando[##1-##2]%
+ {\ifx\firstlistreference\empty
+ \def\firstlistreference{##1-##2}%
+ \fi
+ \def\lastlistreference{##1-##2}%
+ \ifnum##1<\nextinternalreference\relax
+ \def\prevlistreference{##1-##2}%
+ \else\ifnum##1>\nextinternalreference\relax
+ \def\nextlistreference{##1-##2}%
+ \def\dodocommando[####1-####2]%
+ {\def\lastlistreference{####1-####2}}%
+ \else
+ \def\selflistreference{##1-##2}%
+ \fi\fi}%
+ \def\docommando##1%
+ {\dodocommando[##1]}%
+ \processcommacommand[\alllistreferences]\docommando}%
+ \ifx\prevlistreference\empty
+ \let\prevlistreference=\lastlistreference
+ %\let\gobackwardcharacter=\gotoendcharacter
+ \fi
+ \ifx\nextlistreference\empty
+ \let\nextlistreference=\firstlistreference
+ %\let\goforwardcharacter=\gotobegincharacter
+ \fi
+ \ifx\prevlistreference\selflistreference
+ \let\prevlistreference=\empty
+ \let\nextlistreference=\empty
+ \fi
+ \def\dodocommando[##1-##2]%
+ {\gotonextinternal{\s!ind}{##1}{##2}{\copy0}}%
+ \def\docommando##1##2%
+ {\setbox0=\hbox to 1em{\hss\showlocation{##2}\hss}%
+ \ifx##1\empty
+ \hskip\wd0 % (optioneel maken)
+ \else
+ \expandafter\dodocommando\expandafter[##1]%
+ \fi}%
+ \bgroup
+ \docommando\prevlistreference{\gobackwardcharacter}%
+ \egroup
+ \bgroup
+ \doifreferencefoundelse{\s!lin:\internallistreference}
+ {\gotosomeinternal
+ {\s!lin}{\internallistreference}{\currentrealreference}
+ {\showlocation{#3}}}
+ {\hbox{#3}}%
+ \egroup
+ \bgroup
+ \docommando\nextlistreference{\goforwardcharacter}%
+ \egroup}}
+
+\def\dodolinkedregister[#1][#2]#3%
+ {\bgroup
+ \def\currentregister{#1}%
+ \iflocation
+ \doifelsevalue{\??id#1\c!koppeling}{\v!ja}
+ {\def\next{\doprocesslinkedregister[#1][#2]{#3}}}
+ {\def\next{\doprocessregister[#2]{#3}}}% ook hier [#1]
+ \else
+ \def\next{\doprocessregister[#2]{#3}}%
+ \fi
+ \next
+ \egroup
+ \ifvmode\nobreak\fi
+ \GotoPar}
+
+\def\dolinkedregister#1%
+ {\dodoubleempty\dodolinkedregister[#1]}
+
+\def\complexdoplaatsregister[#1]%
+ {\begingroup
+ \stelregisterin[\currentregister][#1]%
+ \raggedright
+ \startkolommen
+ [\c!n=\getvalue{\??id\currentregister\c!n},
+ \c!balanceren=\getvalue{\??id\currentregister\c!balanceren},
+ \c!uitlijnen=\getvalue{\??id\currentregister\c!uitlijnen}]%
+ \mindermeldingen
+ \startopelkaar[\v!blanko]%
+ \doutilities{\currentregister}{\jobname}{\currentregister}{}{\par}%
+ \stopopelkaar
+ \stopkolommen
+ \endgroup}
+
+\def\doplaatsregister[#1]%
+ {\def\currentregister{#1}%
+ \complexorsimpleempty{doplaatsregister}}
+
+\def\plaatsregister%
+ {\dosingleargument\doplaatsregister}
+
+\def\complexdovolledigregister[#1]% \@EA's kunnen weg
+ {\@EA\plaatsvolledig\@EA{\@EA\systemsuppliedchapter\@EA}%
+ \@EA{\@EA\currentregister\@EA}%
+ \@EA{\@EA\headtext\@EA{\currentregister}}%
+ {\complexdoplaatsregister[#1]}}
+
+\def\dovolledigregister[#1]%
+ {\def\currentregister{#1}%
+ \complexorsimpleempty{dovolledigregister}}
+
+\def\volledigregister%
+ {\dosingleargument\doplaatsregister}
+
+\def\dodefinieerregister[#1][#2]%
+ {\stelregisterin[#1]%
+ [\c!n=2,
+ \c!balanceren=\v!ja, % \v!nee komt niet zo vaak voor
+ \c!uitlijnen=\v!nee,
+ \c!voor=\blanko, % binnen kolommen: \blanko[\v!regel]
+ \c!na=,
+ \c!symbool=,
+ \c!interactie=\v!paginanummer,
+ \c!afstand=1em,
+ \c!letter=\v!vet,
+ \c!aanduiding=\v!ja,
+ \v!deel\c!nummer=\v!ja,
+ \v!hoofdstuk\c!nummer=\v!nee,
+ \c!criterium=\v!alles,
+ \c!commando=,
+ \c!refereren=\v!aan]%
+ \presetheadtext[#1=\Woord{#1}]%
+ \setvalue{#1}%
+ {\doregister{#1}}%
+ \setvalue{\e!gekoppelde#1}%
+ {\dolinkedregister{#1}}%
+ \setvalue{\s!set#1}%
+ {\dosetregister{#1}}%
+ \setvalue{\s!reset#1}%
+ {\doresetregister{#1}}%
+ \addutilityreset{#1}%
+ \setvalue{\e!zie#1}%
+ {\dozieregister{#1}}%
+ \setvalue{\e!plaats#1}%
+ {\doplaatsregister[#1]}%
+ \setvalue{\e!volledige#1}%
+ {\dovolledigregister[#1]}%
+ \setvalue{\e!stel#1\e!in}[##1]%
+ {\getparameters[\??id#1][##1]}}
+
+\def\definieerregister%
+ {\dodoubleargument\dodefinieerregister}
+
+\def\registerlengte {\utilityregisterlength}
+
+\def\utilityregisterlength {0}
+
+\def\dobepaalregisterkenmerken[#1][#2]%
+ {\begingroup
+ \stelregisterin[#1][#2]%
+ \dosetreglevel{\getvalue{\??id#1\c!criterium}}%
+ \setvalue{#1\s!page}##1##2##3%
+ {\doifreglevelelse[##2]
+ {\doglobal\increment\utilitylistlength
+ \global\utilitydonetrue}
+ {}}%
+ \doglobal\newcounter\utilityregisterlength
+ \setbox0=\vbox
+ {\doutilities{#1}{\jobname}{#1}{}{}}%
+ \endgroup}
+
+\def\bepaalregisterkenmerken%
+ {\dodoubleempty\dobepaalregisterkenmerken}
+
+%I n=Index
+%I c=\index,\zieindex,\volledigeindex
+%I
+%I Een ingang naar de index wordt gecreeerd met:
+%I
+%I \index[ascii]{ingang+ingang+ingang}
+%I
+%I Een verwijzing wordt gecreerd met:
+%I
+%I \zieindex[ascii]{ingang+ingang+ingang}{andere ingang}
+%I
+%I Een index kan (vooralsnog) alleen een eenvoudig
+%I zetcommando afhandelen, bijvoorbeeld: \index{\bf{test}} of
+%I \index{\kap{anwb}}. Meer is vaak niet nodig.
+%I
+%I Als een ingang niet goed gesorteerd wordt, dient [ascii]
+%I te worden meegegeven: \index[anwb]{\kap{anwb}}.
+%I
+%I Een index wordt gegenereerd met:
+%I
+%I \plaatsindex
+%I \volledigeindex
+
+%T n=index
+%T m=ind
+%T a=i
+%T
+%T \index{?}
+
+%I n=Buffers
+%I c=\startbuffer,\haalbuffer,\typebuffer
+%I
+%I Een stuk tekst kan in een buffer worden opgeslagen en
+%I later worden opgeroepen. Dit kan de opbouw van de
+%I ruwe ASCII-file ten goede komen.
+%I
+%I \startbuffer[naam]
+%I \stopbuffer
+%I
+%I Een buffer is eigenlijk een tijdelijke file. Deze file
+%I heeft de extensie 'tmp' en overschrijft dus een file met
+%I dezelfde naam!
+%I
+%I Een buffer kan worden opgeroepen met:
+%I
+%I \haalbuffer[naam]
+%I \typebuffer[naam]
+%I
+%I In alle gevallen is de naam optioneel en mag dus worden
+%I weggelaten.
+%P
+%I Voor en na het wegschrijven kunnen commando's worden
+%I uitgevoerd. Deze worden ingesteld met:
+%I
+%I \stelbufferin[voor=,na=]
+%P
+%I Omdat het argument optioneel is, wat moet worden getest,
+%I worden alle spaties tot het eerste woord onderdrukt. Dit
+%I betekent dat als er moet worden getypt (\typebuffer) en
+%I terwijl voor het eerste woord spaties moeten staan, er
+%I bewust wel (!) een naam moet worden opgegeven.
+
+% nog \definieerbuffer[naam]
+%
+% \startnaam == \startbuffer[#1][naam]
+
+% \EveryPar%
+% {\doglobal\newcounter\NOfLines}
+%
+% \EveryLine%
+% {\doglobal\increment\NOfLines%
+% \hskip-3em%
+% \hbox to 3em{\hss\NOfLines\hskip1em}}
+
+%\def\dostartbuffer[#1][#2]%
+% {\showmessage{\m!systems}{15}{#1}%
+% \doifelse{#2}{}
+% {\let\stopbuffer=\relax % \undefined
+% \convertargument\stopbuffer\to\endofblock}
+% {\letvalue{#2}=\relax % \undefined
+% \@EA\convertargument\csname#2\endcsname\to\endofblock}%
+% \def\closeblock%
+% {\immediate\closeout\tmpblocks
+% \egroup
+% \getvalue{#2}}%
+% \doifelsenothing{#1}
+% {\immediate\openout\tmpblocks=\jobname.\f!temporaryextension}
+% {\immediate\openout\tmpblocks=#1.\f!temporaryextension}%
+% \setupcopyblock
+% \def\writeoutblocks##1{}%
+% \copyblockline}
+
+\def\processnextbufferline#1#2#3%
+ {\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run
+ \convertargument#1 \to\next
+ \doifinstringelse{\endofblock}{\next}
+ {\ifnum\nestedbufferlevel=0\relax % \relax ?
+ \def\next{#2}%
+ \else
+ \decrement\nestedbufferlevel\relax
+ \def\next{#3}%
+ \fi}
+ {\doifinstringelse{\beginofblock}{\next}
+ {\increment\nestedbufferlevel\relax
+ \def\next{#3}}
+ {\def\next{#3}}}%
+ \next}
+
+\def\dostartbuffer[#1][#2][#3]%
+ {\showmessage{\m!systems}{15}{#1}%
+ \doifelse{#3}{}
+ {\let\stopbuffer=\relax % \undefined
+ \convertargument startbuffer\to\beginofblock % else a space
+ \let\processnextblockline=\processnextbufferline
+ \convertargument\stopbuffer\to\endofblock}
+ {\letvalue{#3}=\relax % \undefined
+ \@EA\convertargument\csname#2\endcsname\to\beginofblock
+ \@EA\convertargument\csname#3\endcsname\to\endofblock}%
+ \def\closeblock%
+ {\immediate\closeout\tmpblocks
+ \egroup
+ \getvalue{#3}}%
+ \doifelsenothing{#1}
+ {\immediate\openout\tmpblocks=\jobname.\f!temporaryextension}
+ {\immediate\openout\tmpblocks=#1.\f!temporaryextension}%
+ \newcounter\nestedbufferlevel
+ \setupcopyblock
+ \def\writeoutblocks##1{}%
+ \copyblockline}
+
+\def\startbuffer%
+ {\bgroup
+ \obeylines % nodig, anders gaat 't fout als direct \starttabel (bv)
+ \dotripleempty\dostartbuffer}
+
+\def\dobuffer[#1]#2%
+ {\doifelsenothing{#1}
+ {#2{\jobname.\f!temporaryextension}{}{}}
+ {#2{#1.\f!temporaryextension}{}{}}}
+
+\def\dohaalbuffer[#1]%
+ {\@@buvoor
+\beginrestorecatcodes
+ \showmessage{\m!systems}{16}{#1}%
+ \dobuffer[#1]\readjobfile
+\endrestorecatcodes
+ \@@buna}
+
+\def\haalbuffer%
+ {\dosingleempty\dohaalbuffer}
+
+\def\dotypebuffer[#1]%
+ {\bgroup
+ % no, just like \starttyping % \setuptyping[\c!voor=\@@buvoor,\c!na=\@@buna]%
+ \showmessage{\m!systems}{17}{#1}%
+ \dobuffer[#1]\typefile
+ \egroup}
+
+\def\typebuffer%
+ {\dosingleempty\dotypebuffer}
+
+\def\stelbufferin%
+ {\dodoubleargument\getparameters[\??bu]}
+
+%I n=Tekstblokken
+%I c=\definieerblok,\verbergblokken,\handhaafblokken
+%I c=\gebruikblokken,\selecteerblokken,\stelblokin
+%I
+%I Het is mogelijk blokken tekst te verbergen en op andere
+%I plaatsen in de tekst op te roepen. Voorbeelden hiervan
+%I zijn vragen en antwoorden. De antwoorden kunnen onder de
+%I vragen worden ingetypt en bijvoorbeeld in een apart
+%I hoofdstuk worden opgenomen.
+%I
+%I Een tekstblok wordt gedefinieerd met het commando
+%I
+%I \definieerblok[naam]
+%I
+%I en wordt vervolgens steeds omringd door de commando's
+%I
+%I \beginvannaam
+%I tekst
+%I \eindvannaam
+%P
+%I Het zetten van blokken kan worden onderdrukt met het
+%I commando
+%I
+%I \verbergblokken[naam,naam,...]
+%I
+%I wat weer ongedaan gemaakt kan worden met:
+%I
+%I \handhaafblokken[naam,naam,...]
+%I
+%I Blokken kunnen worden opgeroepen met de commando's
+%I
+%I \gebruikblokken[naam,naam,...]
+%I \selecteerblokken[naam,naam,...][criterium=]
+%I
+%I Als criterium kan worden opgegeven: alles of hoofdstuk. In het
+%I laatste geval worden alleen de bij het actulele hoofdstuk horende
+%I blokken tussengevoegd.
+%P
+%I Men moet zonodig eerst het (opnieuw) aanmaken van referenties
+%I onderdrukken met het commando \stelrefererenin[status=stop].
+%I
+%I Genummerde tekstonderdelen (b.v. \doornummeren[vraag]) moeten
+%I desgewenst worden gereset (b.v.\resetvraag)
+%P
+%I De met het volgende commando in te stellen parameters hebben
+%I betrekking op het gebruiken van blokken:
+%I
+%I \stelblokin[naam][voor=,na=,binnen=,letter=]
+%I
+%I Een blok wordt altijd binnen een groep uitgevoerd ({ }).
+%I Zowel 'voor' als 'na' worden buiten deze groep
+%I uitgevoerd, en 'binnen' binnen de groep.
+%P
+%I Soms is het wenselijk tijdens \gebruikblokken sommige blokken
+%I wel 'uit te voeren' maar niet (nogmaals) in de tekst op te
+%I nemen. Als een blok wordt definieerd met:
+%I
+%I \beginvannaam[-]
+%I tekst
+%I \eindvannaam
+%I
+%I dan wordt het ter plaatse al dan niet gezet en bij het later
+%I oproepen wel verwerkt maar niet gezet.
+%I
+%I Als in de tekst een blok wel moet worden verwerkt, maar niet
+%I gezet, dan kan [+] worden opgegeven.
+%P
+%I Het handhaven, verbergen en gebruiken van blokken kan door
+%I de hele tekst plaatsvinden. Binnen ieder hoofdstuk kunnen
+%I bijvoorbeeld blokken worden gedefinieerd die aan het eind van
+%I het hoofdstuk worden opgeroepen. Dit mechanisme noodzaakt
+%I tenminste twee maal verwerken van de file met TeX.
+%I
+%I Een tweede pass is echter niet nodig als na het gebruik geen
+%I nieuwe blokken meer worden gedefinieerd. In dat geval kan
+%I vlak voordat de blokken worden opgeroepen, het commando
+%I
+%I \geenblokkenmeer
+%I
+%I worden gegeven. Dit scheelt tijd.
+
+% In eerste instantie is gebruik gemaakt van een utilityfile. Dit
+% is echter niet perse noodzakelijk. Wellicht dat als er blokken
+% moeten worden gesorteerd, toch weer texutil moet worden
+% gebruikt.
+
+% In de block-move variant hieronder wordt gebruik gemaakt van
+% de in de \answer-macro van Knuth gebruikte copieermethode.
+% Blokken kunnen worden
+%
+% \gehandhaafd : in de tekst worden opgenomen ‚n gecopieerd
+% \verborgen : alleen worden gecopieerd
+% \gebruikt : later in de tekst worden opgenomen
+% \geselecteerd : later selectief in de tekst worden opgenomen
+%
+% Ieder blok wordt gecopieerd naar de file 'jobname.tmp'.
+% Daarnaast wordt een blok tijdelijk opgeslagen in de file
+% 'texutil.tmp'. Handhaven kom tneer op het opnieuw inlezen van
+% deze file.
+%
+% De file 'jobname.tmp' wordt later gecopieerd naar de file
+% 'jobname.tum'. Dit is nodig om in een eerdere run verzamelde
+% blokken te kunnen verwerken.
+
+% Werken met \copie gaat fout. Bovendien zijn de spaties
+% belangrijk!
+%
+% \def\c!copie{copie} % vervalt, verkeerde catcodes
+
+% The use of \string prevents spaces kreeping in when
+% converting the string. Although we can use \meaning in a
+% more direct way, we prfer to use \convertargument, because
+% this way the macro's are more readible.
+
+\def\blockversion {1996.03.10}
+
+\def\@@blockerrormessage%
+ {\showmessage{\m!textblocks}{1}{}%
+ \global\let\@@blockerrormessage=\relax}
+
+\def\thisisblockversion#1%
+ {\doifnot{\blockversion}{#1}%
+ {\@@blockerrormessage
+ \endinput}}
+
+\def\stopcopyingblocks%
+ {\ifcopyingblocks
+ \immediate\closeout\outblocks
+ \copyblockfile
+ \global\copyingblocksfalse
+ \fi}
+
+\def\dodosetblockcounters[#1:#2]#3%
+ {\setvalue{\??se\s!old#3}{#1}%
+ \doifnot{#3}{\lastsection}
+ {\dodosetblockcounters[#2:0]{\getvalue{\??se#3\c!na}}}}
+
+\def\dosetblockcounters[#1#2::#3]%
+ {\ifblockpermitted
+ \dodosetblockcounters[#3:0]\firstsection
+ \setsectiontype[#1]%
+ \def\@@sectionvalue##1{\getvalue{\??se\s!old##1}}%
+ \def\@@sectionconversion##1##2{##2}% to get rid of {##2}
+ \fi}
+
+\def\setblockcounters%
+ {\@EA\dosetblockcounters\@EA[\blockstatus]}
+
+\def\getblockstatus#1%
+ {\dosetblklevel{\getvalue{\??by\@@bscriterium}}%
+ \doifblklevelelse[#1]
+ {\global\blockpermittedtrue}
+ {\global\blockpermittedfalse}%
+ \def\blockstatus{#1}}
+
+\newwrite\outblocks
+\newread\inpblocks
+\newwrite\tmpblocks
+
+\newif\ifcopyingblocks
+
+\newbox\blockbox
+
+\newif\ifvisible
+\visibletrue
+
+\newif\ifblockpermitted
+
+\newcount\blocklevel
+\blocklevel=0
+
+\newif\ifoldinbijlagen
+
+\def\opentmpblock%
+ {\immediate\openout\tmpblocks=\f!utilityfilename.\f!temporaryextension}
+
+\def\closetmpblock%
+ {\immediate\write\tmpblocks{}% een lege regel is handig voor \par commando's
+ \immediate\closeout\tmpblocks}
+
+\newif\iftmpblockstarted
+
+\def\writetmpblock#1%
+ {\iftmpblockstarted
+ \immediate\write\tmpblocks{#1}%
+ \else
+ \doifsomething{#1}
+ {\tmpblockstartedtrue
+ \immediate\write\tmpblocks{\string#1}}%
+ \fi}
+
+\def\startcopyingblocks%
+ {\global\copyingblocksfalse}
+
+\def\checkcopyingblocks%
+ {\ifcopyingblocks
+ \else
+ \immediate\openout\outblocks\f!utilityfilename.\f!blockextension
+ \immediate\write\outblocks{\string\thisisblockversion{\blockversion}}%
+ \global\copyingblockstrue
+ \fi}
+
+\def\stopcopyingblocks%
+ {\ifcopyingblocks
+ \immediate\closeout\outblocks
+ \copyblockfile
+ \global\copyingblocksfalse
+ \fi}
+
+\def\geenblokkenmeer%
+ {\stopcopyingblocks}
+
+\def\copyblockfile
+ {\ifcopyingblocks
+ \begingroup
+ \showmessage{\m!textblocks}{2}{\jobname.\f!blockextension}%
+ \openlocin{\inpblocks}{\f!utilityfilename.\f!blockextension}%
+ \immediate\openout\outblocks\jobname.\f!blockextension
+ \setupcopyblock
+ \catcode`\^^M=\@@ignore\relax
+ \def\copynextline
+ {\read\inpblocks to \!!stringa
+ \immediate\write\outblocks{\!!stringa}%
+ \ifeof\inpblocks
+ \def\copynextline{}%
+ \fi
+ \copynextline}%
+ \copynextline
+ \immediate\closein\inpblocks
+ \immediate\closeout\outblocks
+ \immediate\openout\tmpblocks\f!utilityfilename.\f!blockextension
+ \immediate\closeout\tmpblocks
+ \endgroup
+ \fi}
+
+\def\loadallblocks#1%
+ {\beginrestorecatcodes
+\catcode`\^^M=\@@endofline\relax
+ \readjobfile{#1.\f!blockextension}
+ {\showmessage{\m!textblocks}{3}{#1.\f!blockextension}}
+ {\showmessage{\m!textblocks}{4}{}}%
+ \endrestorecatcodes}
+
+\def\setupcopyblock%
+ {\!!counta=1\relax
+ \loop
+ \catcode\!!counta=\@@other
+ \advance\!!counta by 1\relax
+ \ifnum\!!counta<255\relax
+ \repeat
+ \obeylines}
+
+\def\writeoutblocks%
+ {\immediate\write\outblocks}
+
+\def\processnextblocklineAB#1#2#3%
+ {\convertargument#1 \to\next
+ \doifinstringelse{\endofblockA}{\next}
+ {\def\next{#2}}
+ {\doifinstringelse{\endofblockB}{\next}
+ {\def\next{#2}}
+ {\def\next{#3}}}%
+ \next}
+
+\bgroup
+\obeylines
+\gdef\copyblocklineAB#1
+ {\processnextblocklineAB{#1}%
+ {\closeblock}%
+ {\writeoutblocks{#1}%
+ \writetmpblock{#1}%
+ \copyblocklineAB}}
+\gdef\skipblocklineAB#1
+ {\processnextblocklineAB{#1}%
+ {\closeblock}%
+ {\skipblocklineAB}}
+\egroup
+
+\def\processnextblockline#1#2#3%
+ {\convertargument#1 \to\next
+ \doifinstringelse{\endofblock}{\next}
+ {\def\next{#2}}
+ {\def\next{#3}}%
+ \next}
+
+\bgroup
+\obeylines
+\gdef\copyblockline#1
+ {\processnextblockline{#1}%
+ {\closeblock}%
+ {\writeoutblocks{#1}%
+ \writetmpblock{#1}%
+ \copyblockline}}
+\gdef\skipblockline#1
+ {\processnextblockline{#1}%
+ {\closeblock}%
+ {\skipblockline}}
+\egroup
+
+\def\skipblock#1%
+ {\checkcopyingblocks
+ \@EA\convertargument\string\thiswasblock{#1}\to\endofblock
+%testen : \expanded{\convertargument\string\thiswasblock{#1}\noexpand\to\noexpand\endofblock}%
+ \let\openblock=\begingroup
+ \let\closeblock=\endgroup
+ \openblock
+ \setupcopyblock
+ \skipblockline}
+
+\def\doafterblock#1#2{}
+\def\dobeforeblock#1#2{}
+
+\def\thisisblock#1%
+ {\executeifdefined{\s!thisisblock#1}{\skipblock{#1}}}
+
+\def\thiswasblock#1%
+ {\getvalue{\s!thiswasblock#1}}
+
+\def\saveblock#1#2%
+ {\checkcopyingblocks
+ \obeylines
+ %\@EA\convertargument\string\eindvan#1\to\endofblockA
+ \@EA\@EA\@EA\convertargument\@EA\string\csname\e!eindvan#1\endcsname\to\endofblockA
+%testen: \expanded{\convertargument\string\csname\e!eindvan#1\endcsname\to\endofblockA}%
+ \@EA\convertargument\string\eindvanblok[#1]\to\endofblockB % MULTI LINGUAL MAKEN
+ \def\openblock%
+ {\dobeforeblock{#1}{#2}%
+ \opentmpblock
+ \begingroup
+ \makesectionformat
+ \immediate\write\outblocks{}%
+ \immediate\write\outblocks{\string\thisisblock{#1}{\sectionformat}[#2]}}%
+ \def\closeblock%
+ {\immediate\write\outblocks{}% handig voor \par commando's
+ \immediate\write\outblocks{\string\thiswasblock{#1}}%
+ \endgroup
+ \closetmpblock
+ \doafterblock{#1}{#2}%
+ \egroup}%
+ \openblock
+ \setupcopyblock
+ \copyblocklineAB}
+
+\def\copyblock%
+ {\def\opentmpblock{}%
+ \def\closetmpblock{}%
+ \def\writetmpblock##1{}%
+ \saveblock}
+
+\def\loadoneblock%
+ {\readjobfile{\f!utilityfilename.\f!temporaryextension}{}{}}
+
+\def\dodefinieerblok[#1]%
+ {\passeerblok[#1]%
+ \handhaafblokken[#1]%
+ \stelblokin
+ [#1]
+ [\c!voor=\blanko,
+ \c!na=\blanko,
+ \c!binnen=,
+ \c!letter=,
+ \c!file=\jobname]}
+
+\def\definieerblok%
+ {\dosingleargument\dodefinieerblok}
+
+\def\dostelblokin[#1][#2]%
+ {\getparameters[\??tb#1][#2]}
+
+\def\stelblokin%
+ {\dodoubleargument\dostelblokin}
+
+\def\passeerblok[#1]%
+ {\setvalue{\s!thisisblock#1}##1[##2]%
+ {\skipblock{#1}}}
+
+\def\doverbergblok[#1][#2][#3]%
+ {\doifelsenothing{#2}
+ {\global\blockpermittedfalse
+ \edef\bloktitel{#1}}
+ {\doifelsenothing{#3}
+ {\global\blockpermittedtrue
+ \edef\bloktitel{#1}}
+ {\doifcommonelse{#2}{#3}
+ {\global\blockpermittedfalse
+ \edef\bloktitel{#1:#2}}
+ {\global\blockpermittedtrue
+ \edef\bloktitel{#1:#3}}}}%
+ \ifblockpermitted
+ \showwarning{\m!textblocks}{5}{\bloktitel}%
+ \def\next%
+ {\def\dobeforeblock####1####2%
+ {\begingroup}%
+ \def\doafterblock####1####2%
+ {\endgroup
+ \doexecuteloadedblock{#1}}%
+ \saveblock{#1}{#3}}%
+ \else
+ \doifinsetelse{+}{#3}
+ {\showwarning{\m!textblocks}{6}{\bloktitel}%
+ \def\next%
+ {\def\dobeforeblock####1####2%
+ {\begingroup
+ \global\visiblefalse}%
+ \def\doafterblock####1####2%
+ {{\setbox0=\vbox
+ {\catcode`\^^M=\@@endofline\relax
+ \loadoneblock
+ \par}}%
+ \endgroup}%
+ \saveblock{#1}{#3}}}%
+ {\showwarning{\m!textblocks}{7}{\bloktitel}%
+ \def\next%
+ {\def\dobeforeblock####1####2%
+ {\begingroup
+ \globaldefs=-1\relax}%
+ \def\doafterblock####1####2%
+ {\endgroup}%
+ \copyblock{#1}{#3}}}%
+ \fi
+ \next}
+
+\def\doverbergblokken[#1][#2]%
+ {\def\docommando##1%
+ {\setvalue{\e!beginvan##1}%
+ {\bgroup\obeylines\dotripleempty\doverbergblok[##1][#2]}}%
+ \processcommalist[#1]\docommando}
+
+\def\verbergblokken%
+ {\dodoubleempty\doverbergblokken}
+
+\def\doexecuteloadedblock#1%
+ {\blockpermittedtrue % ?
+ \getvalue{\??tb#1\c!voor}%
+ \bgroup
+ \doattributes{\??tb#1}{}%
+ \visibletrue
+ \catcode`\^^M=\@@endofline\relax
+ \getvalue{\??tb#1\c!binnen}%
+ \loadoneblock
+ \par
+ \egroup
+ \getvalue{\??tb#1\c!na}}
+
+\def\dohandhaafblok[#1][#2][#3]%
+ {\doifelsenothing{#2}
+ {\global\blockpermittedtrue
+ \edef\bloktitel{#1}}
+ {\doifcommonelse{#2}{#3}
+ {\global\blockpermittedtrue
+ \edef\bloktitel{#1:#2}}
+ {\doifinsetelse{\v!alles}{#2}
+ {\doifelse{#3}{}
+ {\global\blockpermittedtrue
+ \edef\bloktitel{#1}}
+ {\global\blockpermittedfalse
+ \edef\bloktitel{#1:#3}}}
+ {\global\blockpermittedfalse
+ \doifelse{#3}{}
+ {\edef\bloktitel{#1}}
+ {\edef\bloktitel{#1:#3}}}}}%
+ \ifblockpermitted
+ \showwarning{\m!textblocks}{8}{\bloktitel}%
+ \def\dobeforeblock##1##2%
+ {\begingroup}%
+ \def\doafterblock##1##2%
+ {\endgroup
+ \doexecuteloadedblock{#1}}%
+ \else
+ \showwarning{\m!textblocks}{9}{\bloktitel}%
+ \fi
+ \saveblock{#1}{#3}}
+
+\def\dohandhaafblokken[#1][#2]%
+ {\def\docommando##1%
+ {\setvalue{\e!beginvan##1}%
+ {\bgroup\obeylines\dotripleempty\dohandhaafblok[##1][#2]}}%
+ \processcommalist[#1]\docommando}
+
+\def\handhaafblokken%
+ {\dodoubleempty\dohandhaafblokken}
+
+\def\dodogebruikblok#1#2#3#4%
+ {\getblockstatus{#2}%
+ \ifblockpermitted%
+ \doifelsenothing{#4}
+ {\edef\bloktitel{#1}}
+ {\doifnotcommon{#3}{#4}
+ {\global\blockpermittedfalse}%
+ \edef\bloktitel{#1:#3}}%
+ \else
+ \edef\bloktitel{#1}%
+ \fi
+ \ifblockpermitted
+ \def\next%
+ {\global\advance\blocklevel by 1\relax
+ \doifinsetelse{-}{#3}
+ {\showwarning{\m!textblocks}{10}{\bloktitel}%
+ \setvalue{\s!thiswasblock#1}%
+ {\par\egroup}%
+ \setbox0=\vbox\bgroup}
+ {\showwarning{\m!textblocks}{11}{\bloktitel}%
+ \setvalue{\s!thiswasblock#1}%
+ {\par
+ \egroup
+ \getvalue{\??tb#1\c!na}%
+ \global\advance\blocklevel by -1\relax}%
+ \getvalue{\??tb#1\c!voor}%
+ \bgroup
+ \doattributes{\??tb#1}{}%
+ \visibletrue
+ \getvalue{\??tb#1\c!binnen}}}%
+ \else
+ \def\next%
+ {\showwarning{\m!textblocks}{12}{\bloktitel}%
+ \skipblock{#1}}%
+ \fi
+ \next}
+
+\def\dogebruikblok[#1][#2]%
+ {\setvalue{\s!thisisblock#1}##1[##2]%
+ {\dodogebruikblok{#1}{##1}{##2}{#2}}}
+
+\def\dogebruikblokken[#1][#2]%
+ {\def\docommando##1%
+ {\dogebruikblok[##1][#2]}%
+ \processcommalist[#1]\docommando
+ \getfromcommalist[#1][1]%
+ \doifdefined{\??tb\commalistelement\c!file}
+ {\loadallblocks{\getvalue{\??tb\commalistelement\c!file}}}%
+ \endgroup}
+
+\def\gebruikblokken%
+ {\begingroup
+ \doassign[\??bs][\c!criterium=\v!alles]%
+ \dodoubleempty\dogebruikblokken}
+
+\def\doselecteerblokken[#1][#2][#3]%
+ {\doifelsenothing{#3}
+ {\getparameters[\??bs][#2]%
+ \dogebruikblokken[#1][]}
+ {\getparameters[\??bs][#3]%
+ \dogebruikblokken[#1][#2]}}%
+
+\def\selecteerblokken%
+ {\begingroup
+ \doassign[\??bs][\c!criterium=\v!alles]%
+ \dotripleempty\doselecteerblokken}
+
+\def\beginvanblok[#1]% % er wordt ook gechecked op \eindvanblok[..]
+ {\getvalue{\e!beginvan#1}}
+
+%I n=Achtergronden
+%I c=\stelachtergrondenin
+%I
+%I Achter de tekst kan een achtergrond worden geplaatst.
+%I Voor de afzonderlijke elementen van een tekst wordt een
+%I achtergrond gedefinieerd met het commando:
+%I
+%I \stelachtergrondenin
+%I [boven,hoofd,tekst,voet,onder]
+%I [linkerrand,rechterrand,linkermarge,reachtermarge,tekst]
+%I [achtergrond=,kleur=,raster=]
+%I
+%I Voor de hele bladzijde gebruiken we:
+%I
+%I \stelachtergrondenin
+%I [pagina]
+%I [achtergrond=,kleur=,raster=]
+%P
+%I Het is mogelijk elk blok iets ruimer om de tekst te
+%I plaatsen met:
+%I
+%I \stelachtergrondenin
+%I [pagina]
+%I [offset=,diepte=]
+%I
+%I Een offset van .25\korpsgrootte en een diepte van
+%I .5\korpsgrootte voldoen aardig.
+%I
+%I Er kunnen ronde hoeken worden gezet met:
+%I
+%I \stelachtergrondenin
+%I [pagina]
+%I [hoek=,straal=]
+%I
+%I Hierbij kan voor hoek de instelling rond of recht worden
+%I meegegeven en voor straal een dimensie.
+
+% Don't use \@@mawhatevercommand directly, use \getvalue instead.
+
+\newif\ifnewbackground
+\newif\ifsomebackground
+
+\newbox\leftbackground
+\newbox\rightbackground
+
+\def\doaddpagebackground#1#2%
+ {\doifvaluesomething{\??ma#1\c!achtergrond}
+ {\setbox2=\vbox
+ {\offinterlineskip
+ \localframed
+ [\??ma#1]
+ [\c!breedte=\papierbreedte,\c!hoogte=\papierhoogte]%, \c!offset=\v!overlay]
+ {\getvalue{\??ma#1\c!commando}}}%
+ \wd2=\!!zeropoint
+ \dp2=\!!zeropoint
+ \setbox#2=\vbox
+ {\hbox{\box2\box#2}}}}
+
+\def\addpagebackground#1%
+ {\doifbothsidesoverruled
+ \doaddpagebackground{\v!rechterpagina}{#1}%
+ \orsideone
+ \doaddpagebackground{\v!rechterpagina}{#1}%
+ \orsidetwo
+ \doaddpagebackground{\v!linkerpagina}{#1}%
+ \od
+ \doaddpagebackground{\v!pagina}{#1}}
+
+\let\pagebackgroundhoffset = \!!zeropoint
+\let\pagebackgroundvoffset = \!!zeropoint
+\let\pagebackgrounddepth = \!!zeropoint
+
+% #1 = breedte
+% #2 = hoogte
+% #3 = pos
+% #4 = pos
+
+% \def\dododopagebodybackground#1#2#3#4%
+% {\doifelsevaluenothing{\??ma#3#4\c!achtergrond}
+% {\doifelsevalue{\??ma#3#4\c!kader}{\v!aan} % niet waterdicht, ook deelkaders
+% {\!!doneatrue}
+% {\!!doneafalse}}
+% {\!!doneatrue}%
+% \if!!donea
+% \localframed
+% [\??ma#3#4]
+% [\c!breedte=#1,\c!hoogte=#2,\c!offset=\v!overlay]
+% {\getvalue{\??ma#3#4\c!commando}}%
+% \else
+% \hskip#1%
+% \fi}
+
+\def\dododopagebodybackground#1#2#3#4%
+ {\edef\!!stringe{\??ma#3#4}%
+ \doifelsevaluenothing{\!!stringe\c!achtergrond }
+ {\doifelsevalue{\!!stringe\c!kader }\v!aan\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!linker\c!kader }\v!aan\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!rechter\c!kader}\v!aan\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!boven\c!kader }\v!aan\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!onder\c!kader }\v!aan\!!doneatrue
+ \!!doneafalse}}}}}
+ \!!doneatrue
+ \if!!donea
+ \localframed
+ [\??ma#3#4]
+ [\c!breedte=#1,\c!hoogte=#2,\c!offset=\v!overlay]
+ {\getvalue{\??ma#3#4\c!commando}}%
+ \else
+ \hskip#1%
+ \fi}
+
+\def\dodopagebodybackground#1#2%
+ {\setbox0=\vbox to #2
+ \bgroup\hbox\bgroup
+ \swapmargins
+ \goleftonpage
+ \dododopagebodybackground\linkerrandbreedte#2#1\v!linkerrand
+ \hskip\linkerrandafstand
+ \hskip\pageseparation
+ \dododopagebodybackground\linkermargebreedte#2#1\v!linkermarge
+ \hskip\linkermargeafstand
+ \dododopagebodybackground\zetbreedte#2#1\v!tekst
+ \hskip\rechtermargeafstand
+ \dododopagebodybackground\rechtermargebreedte#2#1\v!rechtermarge
+ \hskip\pageseparation
+ \hskip\rechterrandafstand
+ \dododopagebodybackground\rechterrandbreedte#2#1\v!rechterrand
+ \egroup\egroup
+ \wd0=\!!zeropoint\relax
+ \box0\relax}
+
+\def\setbackgroundbox#1#2%
+ {\global\setbox#1=\vbox
+ {\offinterlineskip
+ \mindermeldingen
+ \calculatereducedvsizes
+ #2\relax
+ \vskip-\bovenhoogte
+ \vskip-\bovenafstand
+ \dodopagebodybackground\v!boven\bovenhoogte
+ \vskip\bovenafstand
+ \dodopagebodybackground\v!hoofd\hoofdhoogte
+ \vskip\hoofdafstand
+ \dodopagebodybackground\v!tekst\teksthoogte
+ \vskip\voetafstand
+ \dodopagebodybackground\v!voet\voethoogte
+ \vskip\onderafstand
+ \dodopagebodybackground\v!onder\onderhoogte
+ \vfilll}%
+ \smashbox#1}
+
+\def\setbackgroundboxes%
+ {\ifsomebackground\ifnewbackground
+ \showmessage{\m!layouts}{8}{}%
+ \docheckbackgrounddefinitions
+ \setbackgroundbox\leftbackground\relax
+ \ifdubbelzijdig
+ \setbackgroundbox\rightbackground\doswapmargins
+ \fi
+ \global\newbackgroundfalse
+ \doifelsevaluenothing{\??ma\v!tekst\v!tekst\c!achtergrond}
+ {\global\let\pagebackgroundhoffset=\!!zeropoint
+ \global\let\pagebackgroundvoffset=\!!zeropoint
+ \global\let\pagebackgrounddepth=\!!zeropoint}
+ {\bgroup
+ \dimen0=\getvalue{\??ma\v!pagina\c!offset}%
+ \doifnothing
+ {\getvalue{\??ma\v!boven\v!tekst\c!achtergrond}%
+ \getvalue{\??ma\v!onder\v!tekst\c!achtergrond}}
+ {\xdef\pagebackgroundhoffset{\the\dimen0}}%
+ \doifnothing
+ {\getvalue{\??ma\v!tekst\v!rechterrand\c!achtergrond}%
+ \getvalue{\??ma\v!tekst\v!linkerrand\c!achtergrond}}
+ {\xdef\pagebackgroundvoffset{\the\dimen0}%
+ \dimen0=\getvalue{\??ma\v!pagina\c!diepte}%
+ \xdef\pagebackgrounddepth{\the\dimen0}}%
+ \egroup}%
+ \fi\fi}
+
+\def\getbackgroundbox%
+ {\ifsomebackground
+ \setbackgroundboxes
+ \startinteractie
+ \doifmarginswapelse
+ {\copy\leftbackground}
+ {\copy\rightbackground}%
+ \stopinteractie
+ \fi}
+
+% saves us hundreds of unused hash entries if not needed
+
+\def\docheckbackgrounddefinitions% allocates about 1000 hash-entries
+ {\doifdefined{\??ma\v!pagina\c!achtergrond}% skip first pass
+ {\def\dodocommando##1##2%
+ {\copylocalframed[\??ma##1##2][\??ma\v!pagina]%
+ \getparameters[\??ma##1##2]
+ [\c!achtergrond=,\c!kader=,\c!kleur=,\c!raster=]%
+ \copyparameters
+ [\??ma##1##2\c!kader][\??ma##1##2]
+ [\c!kleur,\c!raster]%
+ \copyparameters
+ [\??ma##1##2\c!achtergrond][\??ma##1##2]
+ [\c!kleur,\c!raster]}%
+ \def\docommando##1%
+ {\dodocommando##1\v!linkerrand \dodocommando##1\v!linkermarge
+ \dodocommando##1\v!tekst
+ \dodocommando##1\v!rechtermarge \dodocommando##1\v!rechterrand}%
+ \docommando\v!boven \docommando\v!hoofd
+ \docommando\v!tekst
+ \docommando\v!voet \docommando\v!onder
+ \def\docheckbackgrounddefinitions%
+ {\global\somebackgroundtrue}}}
+
+\def\dostelachtergrondenin[#1][#2][#3]%
+ {\docheckbackgrounddefinitions
+ \global\newbackgroundtrue
+ \iffirstargument % \dostelachtergrondenin zonder arg mag
+ \ifthirdargument
+ \def\docommando##1%
+ {\doifinsetelse{##1}{\v!pagina,\v!linkerpagina,\v!rechterpagina}
+ {\getparameters[\??ma##1][#3]%
+ \dosetpageseparation}
+ {\def\dodocommando####1%
+ {\getparameters[\??ma##1####1][#3]}
+ \processcommalist[#2]\dodocommando}}%
+ \processcommalist[#1]\docommando
+ \else
+ \doifcommonelse{#1}{\v!pagina,\v!linkerpagina,\v!rechterpagina}
+ {\def\docommando##1%
+ {\getparameters[\??ma##1][#2]}%
+ \processcommalist[#1]\docommando
+ \dosetpageseparation}
+ {\dostelachtergrondenin
+ [#1]
+ [\v!linkerrand,\v!linkermarge,\v!tekst,\v!rechtermarge,\v!rechterrand]
+ [#2]}%
+ \fi
+ \fi}
+
+\def\stelachtergrondenin%
+ {\dotripleempty\dostelachtergrondenin}
+
+% a lot of setups, including short ones
+
+\presetlocalframed [\??ma\v!pagina]
+\presetlocalframed [\??ma\v!linkerpagina]
+\presetlocalframed [\??ma\v!rechterpagina]
+
+\copyparameters
+ [\??ma\v!pagina\c!kader][\??ma\v!pagina]
+ [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
+
+\copyparameters
+ [\??ma\v!pagina\c!achtergrond][\??ma\v!pagina]
+ [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
+
+\copyparameters
+ [\??ma\v!linkerpagina\c!kader][\??ma\v!linkerpagina]
+ [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
+
+\copyparameters
+ [\??ma\v!linkerpagina\c!achtergrond][\??ma\v!linkerpagina]
+ [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
+
+\copyparameters
+ [\??ma\v!rechterpagina\c!kader][\??ma\v!rechterpagina]
+ [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
+
+\copyparameters
+ [\??ma\v!rechterpagina\c!achtergrond][\??ma\v!rechterpagina]
+ [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster]
+
+\def\@@pageseparation {6pt}
+\def\pageseparation {0pt}
+
+\def\paginascheiding {\pageseparation}
+
+\def\dosetpageseparation%
+ {\let\pageseparation=\!!zeropoint
+ \let\showpageseparation=\relax
+ \processaction
+ [\getvalue{\??ma\v!pagina\c!scheider}]
+ [ \v!ruim=>\let\pageseparation=\@@pageseparation
+ \let\showpageseparation=\showloosepageseparation,
+ \v!passend=>\let\pageseparation=\@@pageseparation
+ \let\showpageseparation=\showtightpageseparation]}
+
+\def\showloosepageseparation%
+ {\ifdim\pageseparation>\!!zeropoint\relax
+ \bgroup
+ \setbox0=\hbox
+ {\vrule
+ \!!width\pageseparation
+ \!!depth\papierhoogte
+ \!!height\papierhoogte}%
+ \ht0=\!!zeropoint
+ \dp0=\!!zeropoint
+ \box0
+ \egroup
+ \fi}
+
+\def\showtightpageseparation%
+ {\ifdim\pageseparation>\!!zeropoint\relax
+ \bgroup
+ \dimen0=\teksthoogte
+ \advance\dimen0 by \kopwit
+ \doifsometextlineelse{\v!hoofd}
+ {\advance\dimen0 by \hoofdhoogte
+ \advance\dimen0 by \hoofdafstand}
+ {}%
+ \dimen2=\papierhoogte
+ \advance\dimen2 by -\dimen0
+%\advance\dimen0 by -1cm % nog eens optie
+%\advance\dimen2 by -1cm % nog eens optie
+ \setbox0=\hbox
+ {\vrule
+ \!!width\pageseparation
+ \!!depth\dimen2
+ \!!height\dimen0}%
+ \ht0=\!!zeropoint
+ \dp0=\!!zeropoint
+ \box0
+ \egroup
+ \fi}
+
+%I n=File-management
+%I c=\starttekst,\startprojekt,\startonderdeel,\startprodukt
+%I c=\startomgeving,\startdeelomgeving
+%I
+%I Een eenvoudige tekst wordt gestart en gestopt met de
+%I commando's:
+%I
+%I \starttekst
+%I \stoptekst
+%P
+%I Het is mogelijk een projektstructuur op te zetten. Per
+%I projekt wordt een file aangemaakt waarin de volgende
+%I commando's voorkomen:
+%I
+%I \startprojekt naam
+%I \stopprojekt
+%I
+%I Als deze file in TeX wordt geladen, dan worden alle
+%I produkten achter elkaar gezet.
+%I
+%I Een produkt wordt gedefinieerd met:
+%I
+%I \startprodukt naam
+%I \stopprodukt
+%I
+%I Deze file kan zelfstandig door TeX worden gehaald.
+%P
+%I Een omgeving wordt gedefinieerd door:
+%I
+%I \startomgeving naam
+%I \stopomgeving
+%I
+%I Een onderdeel wordt gedefinieerd door:
+%I
+%I \startonderdeel naam
+%I \stoponderdeel
+%I
+%I Files worden eerst gezocht op het actuele gebied. Als een
+%I file niet aanwezig is wordt op de 'roots' gezocht.
+%I
+%I Een onderdeel kan zelfstandig door TeX worden gehaald.
+%P
+%I Binnen een projekt, produkt, omgeving of onderdeel komen
+%I de volgende instellingen voor (tussen haakjes=facultatief):
+%I
+%I projekt omgeving produkt onderdeel
+%I
+%I \projekt naam * *
+%I \omgeving naam (*) (*) (*) (*)
+%I \produkt naam *
+%I \onderdeel naam (*) (*)
+%I
+%I Binnen een omgeving kunnen deelomgevingen worden gedefinieerd
+%I die alleen voor bepaalde produkten, onderdelen enz. gelden.
+%I
+%I \startdeelomgeving[naam,...,naam]
+%I commando's
+%I \stopdeelomgeving
+%P
+%I Het programma TeXEdit doorzoekt bij het aanmaken van een
+%I file-menu de hele tekst op de genoemde commando's. Bij een
+%I lange tekst kan dit misschien 'te' lang duren. Met het
+%I commando:
+%I
+%I \geenfilesmeer
+%I
+%I kan worden aangegeven dat er geen structuurcommando's meer
+%I volgen.
+%I
+%I Ten behoeve van TeXUtil moet in plaats van het commando
+%I \input het commando \verwerkfile{naam} worden gebruikt.
+%P
+%I Als men standaard een en ander wil instellen, dan kan men
+%I dit doen in de file 'cont-sys.tex'. Deze file wordt direkt
+%I na het opstarten geladen cq. uitgevoerd. Daarnaast wordt,
+%I indien aanwezig, de file 'cont-new.tex' geladen.
+
+%T n=starttekst
+%T m=sta
+%T a=x
+%T
+%T \starttekst
+%T
+%T ?
+%T
+%T \stoptekst
+
+\def\currentproject {}
+\def\currentproduct {}
+\def\currentenvironment {}
+\def\currentcomponent {}
+
+\def\loadedfiles {}
+\def\processedfiles {}
+
+\let\geenfilesmeer=\relax
+
+\newcounter\textlevel
+\newcounter\fileprocesslevel
+
+\setvalue{\c!file::0}{\jobname}
+
+\def\processedfile%
+ {\getvalue{\c!file::\fileprocesslevel}}
+
+\def\processfile#1%
+ {\doglobal\increment\fileprocesslevel
+ \setxvalue{\c!file::\fileprocesslevel}{#1}%
+ \@EA\doglobal\@EA\addtocommalist\@EA{#1}\processedfiles
+ \readlocfile{#1}{}{}
+ \doglobal\decrement\fileprocesslevel}
+
+\def\registreerfileinfo#1#2%
+ {\immediatewriteutility{f #1 {#2}}}
+
+\doifundefined{preloadfonts} {\let\preloadfonts=\relax}
+\doifundefined{preloadspecials} {\let\preloadspecials=\relax}
+
+\def\loadsystemfiles%
+ {\readsysfile{\f!newfilename}
+ {\showmessage{\m!systems}{2}{\f!newfilename}}{}%
+ \readsysfile{\f!oldfilename}
+ {\showmessage{\m!systems}{2}{\f!oldfilename}}{}%
+ \readsysfile{\f!filfilename}
+ {\showmessage{\m!systems}{2}{\f!filfilename}}{}%
+ \readsysfile{\f!sysfilename}
+ {\showmessage{\m!systems}{2}{\f!sysfilename}}{}}
+
+\def\loadoptionfile%
+ {\readsysfile{\f!optfilename}
+ {\showmessage{\m!systems}{2}{\f!optfilename}}{}}
+
+% \newevery \everyjob \EveryJob
+% \appendtoks ... \to \everyjob
+
+\appendtoks \meldaanmaakdatum \to \everyjob
+\appendtoks \loadsystemfiles \to \everyjob
+\appendtoks \preloadfonts \to \everyjob
+\appendtoks \settopskip \to \everyjob
+\appendtoks \preloadspecials \to \everyjob
+\appendtoks \openspecialfile \to \everyjob
+\appendtoks \checkutilityfile \to \everyjob
+\appendtoks \openutilities \to \everyjob
+\appendtoks \loadoptionfile \to \everyjob
+\appendtoks \loadtwopassdata \to \everyjob
+\appendtoks \setupfootnotes \to \everyjob % eigenlijk ergens anders
+ % hangt af van korps
+\let\normalend=\end
+\newevery \everybye \EveryBye
+
+\def\end%
+ {\the\everybye
+ \normalend}
+
+\appendtoks \pagina[\v!laatste] \pagina
+ \ifarrangingpages\poparrangedpages\fi \to \everybye
+
+\appendtoks \registreerfileinfo{e}{\jobname} \to \everybye
+\appendtoks \stopcopyingblocks \to \everybye
+\appendtoks \closeutilities \to \everybye
+\appendtoks \closespecialfile \to \everybye
+
+\def\starttekst%
+ {\ifnum\textlevel=0\relax
+ \registreerfileinfo{b}{\jobname}%
+ \startcopyingblocks
+ \fi
+ \doglobal\increment\textlevel\relax}
+
+\def\stoptekst%
+ {\doglobal\decrement\textlevel\relax
+ \ifnum\textlevel>0\relax
+ \let\next=\relax
+ \else
+ \let\next=\end
+ \fi
+ \next}
+
+\def\doexecutefileonce#1%
+ {\beforesplitstring#1\at.\to\currentfile
+ \ExpandBothAfter\doifnotinset{\currentfile}{\loadedfiles}%
+ {\ExpandFirstAfter\addtocommalist{\currentfile}\loadedfiles
+ \doexecutefile{#1}}}
+
+\def\doexecutefile#1%
+ {\registreerfileinfo{b}{#1}
+ \processfile{#1}%
+ \registreerfileinfo{e}{#1}}
+
+\def\donotexecutefile#1%
+ {}
+
+\def\verwerkfile#1 %
+ {\doexecutefile{#1}}
+
+\def\omgeving #1 % at outermost level only
+ {\def\startomgeving ##1 {}%
+ \let\stopomgeving=\relax
+ \startreadingfile
+ \readlocfile{#1}{}{}%
+ \stopreadingfile}
+
+\newcounter\filelevel
+
+\def\!!donextlevel#1#2#3#4#5#6\\%
+ {\beforesplitstring#6\at.\to#1
+ \ifnum\filelevel=0\relax
+ \starttekst
+ \def\projekt ##1 {#2{##1}}%
+ \def\omgeving ##1 {#3{##1}}%
+ \def\produkt ##1 {#4{##1}}%
+ \def\onderdeel ##1 {#5{##1}}%
+ \fi
+ \increment\filelevel\relax
+ \ExpandFirstAfter\addtocommalist{#1}\loadedfiles}
+
+\def\doprevlevel%
+ {\ifnum\filelevel=1\relax
+ \let\next=\stoptekst
+ \else
+ \decrement\filelevel\relax
+ \let\next=\endinput
+ \fi
+ \next}
+
+\def\startprojekt #1 %
+ {\!!donextlevel\currentproject
+ \donotexecutefile\doexecutefileonce
+ \doexecutefileonce\doexecutefile#1\\}
+
+\def\stopprojekt%
+ {\doprevlevel}
+
+\def\startprodukt #1 %
+ {\!!donextlevel\currentproduct
+ \doexecutefileonce\doexecutefileonce
+ \donotexecutefile\doexecutefile#1\\}
+
+\def\stopprodukt%
+ {\doprevlevel}
+
+\def\startonderdeel #1 %
+ {\!!donextlevel\currentcomponent
+ \doexecutefileonce\doexecutefileonce
+ \donotexecutefile\doexecutefile#1\\}
+
+\def\stoponderdeel%
+ {\doprevlevel}
+
+\def\startomgeving #1 %
+ {\!!donextlevel\currentenvironment
+ \donotexecutefile\doexecutefileonce
+ \donotexecutefile\donotexecutefile#1\\}
+
+\def\stopomgeving%
+ {\doprevlevel}
+
+\long\def\skipdeelomgeving#1\stopdeelomgeving%
+ {}
+
+\def\startdeelomgeving[#1]%
+ {\def\partialenvironments{}%
+ \def\docommando##1%
+ {\beforesplitstring##1\at.\to\someevironment
+ \ExpandFirstAfter\addtocommalist{\someevironment}\partialenvironments}%
+ \processcommalist[#1]\docommando
+ \ExpandBothAfter\doifcommonelse
+ {\currentproject,\currentproduct,
+ \currentcomponent,\currentenvironment}
+ {\partialenvironments}
+ {\let\stopdeelomgeving=\relax
+ \let\next=\relax}
+ {\let\next=\skipdeelomgeving}%
+ \next}
+
+\def\startproduct{\startproduct}
+\def\stopproduct {\stopproduct}
+\def\startproject{\startprojekt}
+\def\stopproject {\stopprojekt}
+
+\def\project{\projekt}
+\def\product{\produkt}
+
+\def\deelomgeving #1 %
+ {\doexecutefileonce{#1}}
+
+\expanded
+ {\long\noexpand\def\csname\e!start\e!instellingen\endcsname##1 ##2\csname\e!stop\e!instellingen\endcsname%
+ {\noexpand\long\noexpand\setvalue{\??su##1}{##2}}}
+
+\long\def\startsetups#1 #2\stopsetups% for international purposes
+ {\long\setvalue{\??su#1}{#2}}
+
+\def\dodosetups#1%
+ {\getvalue{\??su#1}}
+
+\def\dosetups[#1]%
+ {\iffirstargument
+ \dodosetups{#1}%
+ \else
+ \expandafter\dodosetups
+ \fi}
+
+\def\setups%
+ {\dosingleargument\dosetups}
+
+\newif\ifvoorlopig
+\voorlopigfalse
+
+\newif\ifconcept
+\conceptfalse
+
+\def\infofont%
+ {\getvalue{7pttttf}}
+
+%\def\mathinfofont%
+% {\eightpoint\tt}
+
+\edef\utilityversion {1996.03.15}
+\edef\contextversion {\the\normalyear.\the\normalmonth.\the\normalday\normalspace}
+\edef\copyrightversion {Copyright 1990-\the\normalyear\normalspace / PRAGMA / J. Hagen - A.F. Otten}
+
+% Nog toevoegen:
+%
+% For calculating random numbers we use Donald Arseneau's macros.
+
+\def\meldaanmaakdatum%
+ {\writeline
+ \writestring{This is CONTEXT version <\contextversion>
+ interface <\currentinterface>
+ responses <\currentresponses>}%
+ \writeline
+ \writestring{This package is based on Plain TeX. It uses an adapted version of the}%
+ \writestring{extended mark mechanism of J. Fox (1987) and a few parts of the sidefloat}%
+ \writestring{mechanism of D. Comenetz (1993). Most of D.E. Knuth's Plain TeX}%
+ \writestring{(\fmtversion) is available and can be used without problems. This package}%
+ \writestring{uses TaBlE, a package designed and copyrighted by M.J. Wichura (1988).}%
+ \writestring{Only a few auxiliary files are generated, of which some must be processed}%
+ \writestring{by TeXUtil (\utilityversion). The current blockversion is \blockversion.}%
+ \writeline
+ \writestring{\copyrightversion}%
+ \writeline}
+
+\startinterface dutch
+
+\def\meldaanmaakdatum%
+ {\writeline
+ \writestring{Dit is CONTEXT versie <\contextversion>
+ interface <\currentinterface>
+ meldingen <\currentresponses>}%
+ \writeline
+ \writestring{Dit pakket is gebaseerd op Plain TeX. Er wordt gebruik gemaakt van een}%
+ \writestring{aangepaste versie van het mark mechanisme van J. Fox (1987) en onderdelen}%
+ \writestring{van het sidefloat mechanisme van D. Comenetz (1993). De functionaliteit}%
+ \writestring{van D.E. Knuth's Plain TeX (\fmtversion) is grotendeels beschikbaar en kan}%
+ \writestring{zonder problemen worden gebruikt. Dit pakket gebruikt TaBlE, ontworpen door}%
+ \writestring{M.J. Wichura (1988), die ook het auteursrecht bezit. Er worden slechts een}%
+ \writestring{paar hulpfiles gegenereerd, waarvan er enkele moeten worden bewerkt door}%
+ \writestring{TeXUtil (\utilityversion). Het blokmechanisme heeft versienummer \blockversion.}%
+ \writeline
+ \writestring{\copyrightversion}%
+ \writeline}
+
+\stopinterface
+
+\startinterface german
+
+\def\meldaanmaakdatum%
+ {\writeline
+ \writestring{Dies ist CONTEXT Version <\contextversion>
+ Interface <\currentinterface>
+ Meldungen <\currentresponses>}%
+ \writeline
+ \writestring{Dieses Paket basiert auf Plain-TeX und benutzt eine angepasste Version}%
+ \writestring{des erweiterten mark-Mechanismus von J. Fox (1987) und einige Teile des}%
+ \writestring{sidefloat-Mechanismus von D. Comenetz (1993). Ein Grossteil D.E. Knuths}%
+ \writestring{Plain-TeX (\fmtversion) ist verfuegbar und kann ohne Probleme benutzt werden.}%
+ \writestring{Dieses Paket benutzt TaBlE, ein von M.J. Wichura (1988) erstelltes und}%
+ \writestring{geschuetztes Paket. Nur einige Hilfsdateien werden erstellt; einige davon}%
+ \writestring{muessen von TeXUtil (\utilityversion) bearbeitet werden. Die aktuelle Block-}%
+ \writestring{version ist \blockversion.}%
+ \writeline
+ \writestring{\copyrightversion}%
+ \writeline}
+
+\stopinterface
+
+\def\meldveranderingen%
+ {\writeline
+ \writestring{Currently, the reference mechanism of ConTeXt is optimized as well as}%
+ \writestring{extended. There is also beta grid snapping in combination with some}%
+ \writestring{more footnote features. Please report any anomalities to pragma@pi.net.}%
+ \writeline
+ \writestring{At this moment some pdfTeX primitives and functionality are under}%
+ \writestring{reconstruction. Please use the most recent tpd special driver!}%
+ \writeline
+ \writestring{Interactive floats are temporary out of order. Sorry.}}
+
+\appendtoks \meldveranderingen \to \everybye
+
+\def\doplaatsversieaanduiding#1#2%
+ {\doifsomething{#2}
+ {\@EA\convertargument#2\to\ascii
+ \ #1: \ascii\
+ \!!doneatrue}}
+
+\def\plaatsversieaanduiding%
+ {\ifvoorlopig
+ \vskip\!!sixpoint
+ \hbox to \zetbreedte
+ {\infofont
+ Versie: \currentdate\
+ \doplaatsversieaanduiding{Project}\currentproject
+ \doplaatsversieaanduiding{Produkt}\currentproduct
+ \doplaatsversieaanduiding{Onderdeel}\currentcomponent
+ \if!!donea\else\ File: \jobname\fi
+ \hss\reportpagedimensions}%
+ \fi
+ \ifconcept
+ \vskip\!!sixpoint
+ \hbox to \zetbreedte
+ {\infofont
+ Concept: \currentdate
+ \hss\reportpagedimensions}%
+ \fi}
+
+% tot hier
+
+\def\doversie[#1]%
+ {\voorlopigfalse
+ \conceptfalse
+ \overfullrule=\!!zeropoint
+ \processaction
+ [#1]
+ [\v!voorlopig=>\voorlopigtrue
+ \overfullrule=5pt,
+ \v!concept=>\concepttrue]}
+
+\def\versie%
+ {\dosingleargument\doversie}
+
+\newbox\referentieinfobox
+\newbox\registerinfobox
+\newbox\floatinfobox
+
+\def\dotestinfo#1#2#3%
+ {\ifvoorlopig
+ \begingroup
+ \convertargument#3\to\ascii
+ \xdef\extratestinfo%
+ {#2 \ascii}%
+ \gdef\totaltestinfo%
+ {\global\setbox#1=\vbox
+ {\unvbox#1\relax
+ \hbox
+ {\infofont
+ \strut
+ \expandafter\doboundtext\expandafter
+ {\extratestinfo}
+ {\rechtermargebreedte}
+ {..}%
+ \quad}}}%
+ \endgroup
+ \ifinner
+ \aftergroup\totaltestinfo
+ \else
+ \totaltestinfo
+ \fi
+ \fi}
+
+\def\referentieinfo%
+ {\dotestinfo\referentieinfobox}
+
+\def\registerinfo%
+ {\dotestinfo\registerinfobox}
+
+\def\floatinfo%
+ {\dotestinfo\floatinfobox}
+
+\def\plaatstestinfo%
+ {\setbox0=\vbox to \teksthoogte
+ {\forgetall
+ \hsize\rechtermargebreedte
+ \ifvoid\floatinfobox\else
+ \infofont\strut Plaatsblokken
+ \vskip\!!sixpoint
+ \unvbox\floatinfobox
+ \vskip\!!twelvepoint
+ \fi
+ \ifvoid\referentieinfobox\else
+ \infofont\strut Verwijzingen
+ \vskip\!!sixpoint
+ \unvbox\referentieinfobox
+ \vskip\!!twelvepoint
+ \fi
+ \ifvoid\registerinfobox\else
+ \infofont\strut Registers
+ \vskip\!!sixpoint
+ \unvbox\registerinfobox
+ \fi
+ \vss}%
+ \wd0=\!!zeropoint
+ \box0\relax}
+
+%I n=Commando's
+%I c=\definieer,\naam
+%I c=\gebruikcommandos
+%I
+%I Het is mogelijk eigen commando's te definieren met behulp
+%I van het commando:
+%I
+%I \definieer[aantal argumenten]\commando{betekenis}
+%I
+%I Een argument kan worden opgeroepen door een # gevolgd
+%I een nummer, bijvoorbeeld #2.
+%I
+%I \definieer\test{ziezo} \ziezo
+%I \definieer[1]\test{ziezo #1} \ziezo{}
+%I \definieer[2]\test{ziezo #1 en #2} \ziezo{}{}
+%P
+%I In commandonamen mogen alleen karakters voorkomen. Mocht
+%I onverhoopt een cijfer nodig zijn, dan kunnen dergelijke
+%I commando's worden opgeroepen met:
+%I
+%I \naam{}
+%I
+%I In een aantal gevallen, bijvoorbeeld bij het wegschrijven
+%I naar lijsten, worden commando's \noexpand-ed. Dit is
+%I bijvoorbeeld het geval bij synoniemen en sorteren, als
+%I het criterium ongelijk is aan 'alles'. Dergelijke (zelf)
+%I gedefinieerde commando's dienen eerst te worden
+%I geactiveerd met :
+%I
+%I \gebruikcommandos{\commando}
+%I
+%I Er mogen meerdere commando's tegelijk worden opgegeven:
+%I
+%I \gebruikcommandos{\alfa,\beta,gamma}
+%I
+%I waarbij de \ facultatief is. Er wordt niets gezet!
+
+% \docommando kan niet worden gebruikt omdat deze macro
+% soms lokaal wordt gebruikt
+
+% te zijner tijd:
+%
+% \definevariable {pc} % ProtectedCommand
+%
+% \def\executeprotected#1%
+% {\csname\??pc\string#1\endcsname}
+%
+% \def\defineprotected#1#2%
+% {\expandafter\def\csname\??pc\string#2\endcsname}
+%
+% \def\defineunprotected#1%
+% {\def#1}
+%
+% \def\doprotected%
+% {\ifx\next\define
+% \let\next=\defineprotected
+% \else
+% \let\next=\executeprotected
+% \fi
+% \next}
+%
+% \def\unexpanded%
+% {\futurelet\next\doprotected}
+%
+% \unexpanded\define\ziezo{ziezo}
+%
+% \unexpanded\ziezo
+
+\def\complexdodefinieer[#1]#2#3%
+ {\ifx#2\undefined
+ \else
+ \showmessage{\m!systems}{4}{\string#2}%
+ \fi
+ \ifcase0#1\def#2{#3}%
+ \or\def#2##1{#3}%
+ \or\def#2##1##2{#3}%
+ \or\def#2##1##2##3{#3}%
+ \or\def#2##1##2##3##4{#3}%
+ \or\def#2##1##2##3##4##5{#3}%
+ \or\def#2##1##2##3##4##5##6{#3}%
+ \or\def#2##1##2##3##4##5##6##7{#3}%
+ \or\def#2##1##2##3##4##5##6##7##8{#3}%
+ \or\def#2##1##2##3##4##5##6##7##8##9{#3}%
+ \else\def#2{#3}%
+ \fi}
+
+\def\definieer%
+ {\complexorsimpleempty{dodefinieer}}
+
+\def\naam#1%
+ {\donottest\getvalue{#1}}
+
+\def\gebruikcommandos#1%
+ {\bgroup
+ \def\docommando##1%
+ {\setbox0=\hbox{\getvalue{\string##1}##1}}%
+ \processcommalist[#1]\docommando
+ \egroup}
+
+%I n=Groeperen
+%I c=\start,\definieerstartstop
+%I
+%I Met behulp van de volgende commando's kan de werking van
+%I andere commando's worden beperkt:
+%I
+%I \start[label]
+%I \stop[label]
+%I
+%I Men is vrij in de keuze van het commentaar. Het gebruik
+%I van deze commando's komt overeen met het gebruiken van {}.
+%P
+%I Er kunnen \start-\stop-paren worden gedefinieerd en
+%I ingesteld met:
+%I
+%I \definieerstartstop[label][voor=,na=,commandos=,
+%I letter=]
+%I
+%I De aan 'voor' en 'na' toegekende commando's worden voor
+%I \start en na \stop uitgevoerd; de aan 'commando'
+%I toegekende commando's direct na \start.
+%I
+%I Naast het \start-\stop-paar is ook het verkorte commando
+%I beschikbaar:
+%I
+%I \label{tekst}
+
+\def\complexstart[#1]% % bgroup toegevoegd
+ {\bgroup\getvalue{\e!start#1}}
+
+\def\simplestart%
+ {\bgroup}
+
+\def\complexstop[#1]%
+ {\getvalue{\e!stop#1}\egroup} % egroup toegevoegd
+
+\def\simplestop%
+ {\egroup}
+
+\def\start%
+ {\complexorsimple{\e!start}}
+
+\def\stop%
+ {\complexorsimple{\e!stop}}
+
+\def\dodefinieerstartstop[#1][#2]%
+ {\getparameters
+ [\??be#1]
+ [\c!voor=,
+ \c!na=,
+ \c!commandos=,
+ \c!letter=,
+ #2]%
+ \setvalue{#1}##1%
+ {\bgroup
+ \getvalue{\??be#1\c!commandos}%
+ \doattributes{\??be#1}{##1}%
+ \egroup}%
+ \setvalue{\e!start#1}%
+ {\getvalue{\??be#1\c!voor}%
+ \bgroup
+ \getvalue{\??be#1\c!commandos}%
+ \dostartattributes{\??be#1}{}}%
+ \setvalue{\e!stop#1}%
+ {\dostopattributes
+ \egroup
+ \getvalue{\??be#1\c!na}}}
+
+\def\definieerstartstop%
+ {\dodoubleargument\dodefinieerstartstop}
+
+%I n=Verbergen
+%I c=\startverbergen
+%I
+%I Een deel van de tekst kan (tijdelijk) worden
+%I overgeslagen door deze te omhullen met de commando's:
+%I
+%I \startverbergen
+%I \stopverbergen
+
+% the buffer mechanism handles nesting, add some switch
+
+\setvalue{\e!start\e!verbergen}%
+ {\startbuffer[buf-\nofpostponedblocks]
+ [\e!start\e!verbergen][\e!stop\e!verbergen]}
+
+% gejat van Knuth (zie \copyright, p356)
+
+\def\omcirkeld#1%
+ {{\ooalign{\hfil\raise0.07ex\hbox{{\tfx#1}}\hfil\crcr\mathhexbox20D}}}
+
+\def\copyright
+ {\omcirkeld{c}}
+
+%I n=Systeem
+%I c=\stelsysteemin
+%I
+%I Systeemvariabelen kunnen worden ingesteld met het
+%I commando:
+%I
+%I \stelsysteemin[resolutie=,korps=]
+%I
+%I Aan 'resolutie' dient het aantal dpi (300).
+
+\def\dostelsysteemin[#1]%
+ {\getparameters[\??sv][#1]%
+ \beforesplitstring\@@svresolutie\at dpi\to\@@svresolutie
+ \let\outputresolution=\@@svresolutie}
+
+\def\stelsysteemin%
+ {\dosingleargument\dostelsysteemin}
+
+% Default-instellingen (verborgen)
+
+\resetutilities
+
+% Uitgestelde instellingen
+
+\def\dooutput{\sidefloatoutput} % redefinition of \dooutput
+
+% Default-instellingen (zichtbaar)
+
+\stelsysteemin
+ [\c!resolutie=300dpi,
+ \c!korps=\normalizedlocalbodyfontsize] % of iets anders
+
+% Pas op:
+%
+% Omdat er geen fonts geladen zijn kunnen we bij de maten geen
+% em's gebruiken. Bij afstanden is dit geen probleem, omdat
+% deze pas een rol spelen als er al een font geladen is.
+
+\stellayoutin
+ [ \c!kopwit=.08417508418\papierhoogte, % .08333 2.5cm
+ %\c!boven=.03367003367\papierhoogte, % .03331 1.0cm
+ \c!boven=\!!zeropoint,
+ \c!bovenafstand=\!!zeropoint,
+ \c!hoofd=.06734006734\papierhoogte, % .06667 2.0cm
+ \c!hoofdafstand=\!!zeropoint,
+ \c!hoogte=.84175084175\papierhoogte, % .83333 25.0cm
+ \c!voetafstand=\@@lyhoofdafstand,
+ \c!voet=.06734006734\papierhoogte, % .06667 2.0cm
+ \c!onderafstand=\@@lybovenafstand,
+ \c!onder=\!!zeropoint,
+ \c!rugwit=.11904761905\papierbreedte, % 2.5cm
+ %\c!rand=.14285714286\papierbreedte, % 3.0cm
+ \c!rand=\!!zeropoint,
+ \c!randafstand=\@@lymargeafstand,
+ %\c!marge=\@@lyrugwit,
+ %\c!marge=.07888078409\papierbreedte, % rugwit-2*afstand
+ \c!marge=.12649983170\papierbreedte, % snijwit-2*afstand
+ \c!margeafstand=.02008341748\papierbreedte, % 12.0pt
+ \c!linkerrand=\@@lyrand,
+ \c!linkerrandafstand=\@@lyrandafstand,
+ \c!linkermarge=\@@lymarge,
+ \c!linkermargeafstand=\@@lymargeafstand,
+ \c!breedte=.71428571429\papierbreedte, % 15.0cm
+ \c!rechtermargeafstand=\@@lymargeafstand,
+ \c!rechtermarge=\@@lymarge,
+ \c!rechterrandafstand=\@@lyrandafstand,
+ \c!rechterrand=\@@lyrand,
+ \c!kopoffset=\!!zeropoint,
+ \c!rugoffset=\!!zeropoint,
+ \c!letter=,
+ \c!markering=\v!uit,
+ \c!plaats=\v!enkelzijdig,
+ \c!schaal=1,
+ \c!nx=1,
+ \c!ny=1,
+ \c!grid=\v!nee,
+ \c!regels=]
+
+% instellingen hierop terugvallen, bijvoorbeeld de volgende:
+
+\definieerpapierformaat [A0] [\c!breedte=841mm, \c!hoogte=1189mm]
+\definieerpapierformaat [A1] [\c!breedte=594mm, \c!hoogte=841mm]
+\definieerpapierformaat [A2] [\c!breedte=420mm, \c!hoogte=594mm]
+\definieerpapierformaat [A3] [\c!breedte=297mm, \c!hoogte=420mm]
+\definieerpapierformaat [A4] [\c!breedte=210mm, \c!hoogte=297mm]
+\definieerpapierformaat [A5] [\c!breedte=148mm, \c!hoogte=210mm]
+\definieerpapierformaat [A6] [\c!breedte=105mm, \c!hoogte=148mm]
+\definieerpapierformaat [A7] [\c!breedte=74mm, \c!hoogte=105mm]
+\definieerpapierformaat [A8] [\c!breedte=52mm, \c!hoogte=74mm]
+\definieerpapierformaat [A9] [\c!breedte=37mm, \c!hoogte=52mm]
+
+\definieerpapierformaat [B0] [\c!breedte=1000mm,\c!hoogte=1414mm]
+\definieerpapierformaat [B1] [\c!breedte=707mm, \c!hoogte=1000mm]
+\definieerpapierformaat [B2] [\c!breedte=500mm, \c!hoogte=707mm]
+\definieerpapierformaat [B3] [\c!breedte=354mm, \c!hoogte=500mm]
+\definieerpapierformaat [B4] [\c!breedte=250mm, \c!hoogte=354mm]
+\definieerpapierformaat [B5] [\c!breedte=177mm, \c!hoogte=250mm]
+\definieerpapierformaat [B6] [\c!breedte=125mm, \c!hoogte=177mm]
+\definieerpapierformaat [B7] [\c!breedte=88mm, \c!hoogte=125mm]
+\definieerpapierformaat [B8] [\c!breedte=63mm, \c!hoogte=88mm]
+\definieerpapierformaat [B9] [\c!breedte=44mm, \c!hoogte=63mm]
+
+\definieerpapierformaat [C0] [\c!breedte=917mm, \c!hoogte=1297mm]
+\definieerpapierformaat [C1] [\c!breedte=649mm, \c!hoogte=917mm]
+\definieerpapierformaat [C2] [\c!breedte=459mm, \c!hoogte=649mm]
+\definieerpapierformaat [C3] [\c!breedte=324mm, \c!hoogte=459mm]
+\definieerpapierformaat [C4] [\c!breedte=229mm, \c!hoogte=324mm]
+\definieerpapierformaat [C5] [\c!breedte=162mm, \c!hoogte=229mm]
+\definieerpapierformaat [C6] [\c!breedte=115mm, \c!hoogte=162mm]
+\definieerpapierformaat [C7] [\c!breedte=81mm, \c!hoogte=115mm]
+\definieerpapierformaat [C8] [\c!breedte=57mm, \c!hoogte=81mm]
+\definieerpapierformaat [C9] [\c!breedte=40mm, \c!hoogte=57mm]
+
+\definieerpapierformaat [S3] [\c!breedte=300pt, \c!hoogte=225pt]
+\definieerpapierformaat [S4] [\c!breedte=400pt, \c!hoogte=300pt]
+\definieerpapierformaat [S5] [\c!breedte=500pt, \c!hoogte=375pt]
+\definieerpapierformaat [S6] [\c!breedte=600pt, \c!hoogte=450pt]
+
+\definieerpapierformaat [CD] [\c!breedte=120mm, \c!hoogte=120mm]
+
+\definieerpapierformaat [letter] [\c!breedte=8.5in, \c!hoogte=11in]
+\definieerpapierformaat [legal] [\c!breedte=8.5in, \c!hoogte=14in]
+\definieerpapierformaat [folio] [\c!breedte=8.5in, \c!hoogte=13in]
+\definieerpapierformaat [executive] [\c!breedte=7.25in, \c!hoogte=10.5in]
+
+\definieerpapierformaat [envelope 9] [\c!breedte=8.88in, \c!hoogte=3.88in]
+\definieerpapierformaat [envelope 10] [\c!breedte=9.5in, \c!hoogte=4.13in]
+\definieerpapierformaat [envelope 11] [\c!breedte=10.38in,\c!hoogte=4.5in]
+\definieerpapierformaat [envelope 12] [\c!breedte=11.0in, \c!hoogte=4.75in]
+\definieerpapierformaat [envelope 14] [\c!breedte=11.5in, \c!hoogte=5.0in]
+\definieerpapierformaat [monarch] [\c!breedte=7.5in, \c!hoogte=3.88in]
+\definieerpapierformaat [check] [\c!breedte=8.58in, \c!hoogte=3.88in]
+\definieerpapierformaat [DL] [\c!breedte=220mm, \c!hoogte=110mm]
+
+% Let op: na \stellayoutin (omdat dit wordt aangeroepen).
+
+\stelpapierformaatin
+ [A4][A4]
+
+\stelinterliniein
+ [\c!hoogte=.72,
+ \c!diepte=.28,
+ \c!boven=1.0,
+ \c!onder=0.4,
+ \c!regel=2.8ex]
+
+\stelkolommenin
+ [\c!n=2,
+ \c!lijn=\v!uit,
+ \c!tolerantie=\v!soepel,
+ \c!afstand=1.5\korpsgrootte, % influenced by switching
+ \c!hoogte=,
+ \c!balanceren=\v!ja,
+ \c!uitlijnen=\v!tekst,
+ \c!blanko={\v!regel,\v!vast},
+ \c!optie=,
+ \c!lijndikte=\linewidth,
+ \c!offset=.5\korpsgrootte]
+
+\stelhoofdtekstenin [\v!tekst] [] []
+\stelhoofdtekstenin [\v!marge] [] []
+\stelhoofdtekstenin [\v!rand] [] []
+
+\stelvoettekstenin [\v!tekst] [] []
+\stelvoettekstenin [\v!marge] [] []
+\stelvoettekstenin [\v!rand] [] []
+
+\stelteksttekstenin [\v!tekst] [] []
+\stelteksttekstenin [\v!marge] [] []
+\stelteksttekstenin [\v!rand] [] []
+
+\stelondertekstenin [\v!tekst] [] []
+\stelondertekstenin [\v!marge] [] []
+\stelondertekstenin [\v!rand] [] []
+
+\stelboventekstenin [\v!tekst] [] []
+\stelboventekstenin [\v!marge] [] []
+\stelboventekstenin [\v!rand] [] []
+
+\stelhoofdin [\c!status=\v!normaal,\c!voor=,\c!na=]
+\stelvoetin [\c!status=\v!normaal,\c!voor=,\c!na=]
+\steltekstin [\c!status=\v!normaal,\c!voor=,\c!na=]
+\stelbovenin [\c!status=\v!normaal,\c!voor=,\c!na=]
+\stelonderin [\c!status=\v!normaal,\c!voor=,\c!na=]
+
+\stelhoofdin [\c!na=\vss]
+\steltekstin [\c!voor=\vss,\c!na=\vss]
+\stelvoetin [\c!voor=\vss]
+
+\stelbovenin [\c!voor=\vss,\c!na=\vss]
+\stelonderin [\c!voor=\vss,\c!na=\vss]
+
+\stelhoofdin
+ [\v!tekst]
+ [\c!strut=\v!ja,
+ \c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!hoofd\v!tekst\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!hoofd\v!tekst\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!hoofd\v!tekst\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!hoofd\v!tekst\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelhoofdin
+ [\v!marge]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!hoofd\v!marge\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!hoofd\v!marge\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!hoofd\v!marge\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!hoofd\v!marge\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelhoofdin
+ [\v!rand]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!hoofd\v!rand\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!hoofd\v!rand\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!hoofd\v!rand\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!hoofd\v!rand\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelvoetin
+ [\v!tekst]
+ [\c!strut=\v!ja,
+ \c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!voet\v!tekst\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!voet\v!tekst\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!voet\v!tekst\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!voet\v!tekst\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelvoetin
+ [\v!marge]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!voet\v!marge\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!voet\v!marge\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!voet\v!marge\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!voet\v!marge\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelvoetin
+ [\v!rand]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!voet\v!rand\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!voet\v!rand\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!voet\v!rand\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!voet\v!rand\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelbovenin
+ [\v!tekst]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!boven\v!tekst\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!boven\v!tekst\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!boven\v!tekst\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!boven\v!tekst\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelbovenin
+ [\v!marge]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!boven\v!marge\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!boven\v!marge\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!boven\v!marge\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!boven\v!marge\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelbovenin
+ [\v!rand]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelonderin
+ [\v!tekst]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!boven\v!rand\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!boven\v!rand\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelonderin
+ [\v!marge]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!onder\v!marge\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!onder\v!marge\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!onder\v!marge\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!onder\v!marge\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelonderin
+ [\v!rand]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!onder\v!rand\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!onder\v!rand\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!onder\v!rand\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!onder\v!rand\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\steltekstin
+ [\v!tekst]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!tekst\v!tekst\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!tekst\v!tekst\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!tekst\v!tekst\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!tekst\v!tekst\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\steltekstin
+ [\v!marge]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!tekst\v!marge\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!tekst\v!marge\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!tekst\v!marge\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!tekst\v!marge\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\steltekstin
+ [\v!rand]
+ [\c!letter=,
+ \c!kleur=,
+ \c!linkertekst=,
+ \c!middentekst=,
+ \c!rechtertekst=,
+ \c!kantlijntekst=,
+ \c!margetekst=,
+ \c!linkerletter=\getvalue{\??tk\v!tekst\v!rand\c!letter},
+ \c!rechterletter=\getvalue{\??tk\v!tekst\v!rand\c!letter},
+ \c!linkerkleur=\getvalue{\??tk\v!tekst\v!rand\c!kleur},
+ \c!rechterkleur=\getvalue{\??tk\v!tekst\v!rand\c!kleur},
+ \c!linkerbreedte=,
+ \c!rechterbreedte=]
+
+\stelnummeringin
+ [\c!variant=\v!enkelzijdig,
+ \c!plaats={\v!hoofd,\v!midden},
+ \c!conversie=\v!cijfers,
+ \c!links=,
+ \c!rechts=,
+ \c!wijze=\v!per\v!deel,
+ \c!tekst=,
+ \v!hoofdstuk\c!nummer=\v!nee,
+ \v!deel\c!nummer=\v!ja,
+ \c!nummerscheider=--,
+ \c!tekstscheider=\tfskip,
+ \c!status=\v!start,
+ \c!commando=,
+ \c!letter=\v!normaal,
+ \c!kleur=]
+
+\stelblankoin
+ [\v!standaard,
+ \v!groot]
+
+\stelkoppenin
+ [\c!variant=\v!normaal,
+ \c!sectienummer=\v!ja,
+ \c!scheider=.,
+ \c!commando=]
+
+\definieersectieblok [\v!hoofdtekst] [\v!hoofdteksten] [\c!nummer=\v!ja]
+\definieersectieblok [\v!bijlage] [\v!bijlagen] [\c!nummer=\v!ja]
+\definieersectieblok [\v!inleiding] [\v!inleidingen] [\c!nummer=\v!nee]
+\definieersectieblok [\v!uitleiding] [\v!uitleidingen] [\c!nummer=\v!nee]
+
+\definieersectie[\v!sectie-1] % deel
+\definieersectie[\v!sectie-2] % hoofdstuk
+\definieersectie[\v!sectie-3] % paragraaf
+\definieersectie[\v!sectie-4] % subparagraaf
+\definieersectie[\v!sectie-5] % subsubparagraaf
+\definieersectie[\v!sectie-6] % subsubsubparagraaf
+\definieersectie[\v!sectie-7] % subsubsubsubparagraaf
+
+% \c!eigennummer ook hier?
+
+\definieerkop
+ [\v!deel]
+ [\c!sectie=\v!sectie-1]
+
+\definieerkop
+ [\v!hoofdstuk]
+ [\c!sectie=\v!sectie-2]
+
+\definieerkop
+ [\v!paragraaf]
+ [\c!sectie=\v!sectie-3]
+
+\definieerkop
+ [\v!sub\v!paragraaf]
+ [\c!sectie=\v!sectie-4,
+ \c!default=\v!paragraaf]
+
+\definieerkop
+ [\v!sub\v!sub\v!paragraaf]
+ [\c!sectie=\v!sectie-5,
+ \c!default=\v!paragraaf]
+
+\definieerkop
+ [\v!sub\v!sub\v!sub\v!paragraaf]
+ [\c!sectie=\v!sectie-6,
+ \c!default=\v!paragraaf]
+
+\definieerkop
+ [\v!sub\v!sub\v!sub\v!sub\v!paragraaf]
+ [\c!sectie=\v!sectie-7,
+ \c!default=\v!paragraaf]
+
+\definieerkop
+ [\v!titel]
+ [\c!koppeling=\v!hoofdstuk,
+ \c!default=\v!hoofdstuk,
+ \c!verhoognummer=\v!nee]
+
+\definieerkop
+ [\v!onderwerp]
+ [\c!koppeling=\v!paragraaf,
+ \c!default=\v!paragraaf,
+ \c!verhoognummer=\v!nee]
+
+\definieerkop
+ [\v!sub\v!onderwerp]
+ [\c!koppeling=\v!sub\v!paragraaf,
+ \c!default=\v!sub\v!paragraaf,
+ \c!verhoognummer=\v!nee]
+
+\definieerkop
+ [\v!sub\v!sub\v!onderwerp]
+ [\c!koppeling=\v!sub\v!sub\v!paragraaf,
+ \c!default=\v!sub\v!sub\v!paragraaf,
+ \c!verhoognummer=\v!nee]
+
+\definieerkop
+ [\v!sub\v!sub\v!sub\v!onderwerp]
+ [\c!koppeling=\v!sub\v!sub\v!sub\v!paragraaf,
+ \c!default=\v!sub\v!sub\v!sub\v!paragraaf,
+ \c!verhoognummer=\v!nee]
+
+\definieerkop
+ [\v!sub\v!sub\v!sub\v!sub\v!onderwerp]
+ [\c!koppeling=\v!sub\v!sub\v!sub\v!sub\v!paragraaf,
+ \c!default=\v!sub\v!sub\v!sub\v!sub\v!paragraaf,
+ \c!verhoognummer=\v!nee]
+
+\stelsectiein
+ [\v!sectie-2]
+ [\v!bijlage\c!conversie=\v!Letter,
+ \c!vorigenummer=\v!nee]
+
+\stelkopin
+ [\v!deel]
+ [\c!plaatskop=\v!nee]
+
+\stelkopin
+ [\v!hoofdstuk]
+ [\v!bijlage\c!label=\v!bijlage,
+ \v!hoofdtekst\c!label=\v!hoofdstuk] % bijlageconversie=\Character
+
+\stelkopin
+ [\v!paragraaf]
+ [\v!bijlage\c!label=\v!paragraaf,
+ \v!hoofdtekst\c!label=\v!paragraaf] % bijlageconversie=\Character
+
+\stelkopin
+ [\v!sub\v!paragraaf]
+ [\v!bijlage\c!label=\v!sub\v!paragraaf,
+ \v!hoofdtekst\c!label=\v!sub\v!paragraaf] % bijlageconversie=\Character
+
+\stelkopin
+ [\v!sub\v!sub\v!paragraaf]
+ [\v!bijlage\c!label=\v!sub\v!sub\v!paragraaf,
+ \v!hoofdtekst\c!label=\v!sub\v!sub\v!paragraaf] % bijlageconversie=\Character
+
+\stelkopin
+ [\v!deel,\v!hoofdstuk]
+ [\c!uitlijnen=\v!normaal,
+ \c!doorgaan=\v!nee,
+ \c!pagina=\v!rechts,
+ \c!hoofd=,
+ \c!letter=\tfc,
+ \c!voor={\blanko[2*\v!groot]},
+ \c!na={\blanko[2*\v!groot]}]
+
+\stelkopin
+ [\v!paragraaf]
+ [\c!uitlijnen=\v!normaal,
+ \c!letter=\tfa,
+ \c!voor={\blanko[2*\v!groot]},
+ \c!na=\blanko]
+
+\definieersamengesteldelijst
+ [\v!inhoud]
+ [\v!deel,
+ \v!hoofdstuk,
+ \v!paragraaf,
+ \v!sub\v!paragraaf,
+ \v!sub\v!sub\v!paragraaf,
+ \v!sub\v!sub\v!sub\v!paragraaf,
+ \v!sub\v!sub\v!sub\v!sub\v!paragraaf]
+ [\c!niveau=\v!sub\v!sub\v!sub\v!sub\v!paragraaf,
+ \c!criterium=\v!lokaal]
+
+\stelblokkopjesin
+ [\c!plaats=\v!onder,
+ \c!voor=\blanko,
+ \c!tussen={\blanko[\v!middel]},
+ \c!na=\blanko,
+ \c!breedte=\v!passend,
+ \c!kopletter=\v!vet,
+ \c!letter=\v!normaal,
+ \c!kleur=,
+ \c!uitlijnen=,
+ \c!nummer=\v!ja,
+ \c!wijze=\@@nrwijze,
+ \c!blokwijze=\@@nrblokwijze,
+ \c!sectienummer=\@@nrsectienummer,
+ \c!conversie=\v!cijfers]
+
+\stelplaatsblokkenin
+ [\c!plaats=\v!midden,
+ \c!breedte=\v!passend,
+ \c!hoogte=\v!passend,
+ \c!offset=\v!overlay,
+ \c!kader=\v!uit,
+ \c!straal=.5\korpsgrootte,
+ \c!hoek=\v!recht,
+ \c!achtergrond=,
+ \c!achtergrondraster=\@@rsraster,
+ \c!achtergrondkleur=,
+ \c!bovenkader=,
+ \c!onderkader=,
+ \c!linkerkader=,
+ \c!rechterkader=,
+ \c!voor=,
+ \c!na=,
+ \c!voor\c!wit=\v!groot,
+ \c!na\c!wit=\v!groot,
+ \c!zij\c!voor\c!wit=\@@bkvoorwit,
+ \c!zij\c!na\c!wit=\@@bknawit,
+ \c!marge=1em,
+ \c!nboven=2,
+ \c!nonder=0,
+ \c!nregels=4]
+
+\stelplaatsbloksplitsenin
+ [\c!conversie=\v!letter, % \v!romeins
+ \c!regels=3]
+
+\stelwitruimtein
+ [\v!geen]
+
+\inspringen
+ [\v!nooit]
+
+\stelinspringenin
+ [\v!geen]
+
+\stelopsommingenin % undocumented
+ [\c!niveaus=6,
+ \c!marge=\!!zeropoint,
+ \c!breedte=1.5em,
+ \c!factor=0,
+ \c!afstand=.5em,
+ \c!marletter=\c!type,
+ \c!symletter=,
+ \c!kopletter=,
+ \c!markleur=,
+ \c!symkleur=,
+ \c!kopkleur=,
+ \c!kopvoor=,
+ \c!kopna=\blanko,
+ \c!voor=\blanko,
+ \c!tussen=\blanko,
+ \c!na=\blanko,
+ \c!afsluiter=.,
+ \c!plaatsafsluiter=\v!ja,
+ \c!binnen=,
+ \c!n=2,
+ \c!items=4,
+ \c!symbool=\itemlevel]
+
+\steldoorspringenin
+ [\c!letter=\v!normaal,
+ \c!kopletter=\v!normaal,
+ \c!kleur=,
+ \c!kopkleur=,
+ \c!breedte=\v!passend,
+ \c!tekst=...,
+ \c!monster=,
+ \c!voor=\blanko,
+ \c!na=\blanko,
+ \c!scheider={ :}]
+
+\stelnummerenin
+ [\c!wijze=\v!per\v!hoofdstuk,
+ \c!blokwijze=,
+ \c!sectienummer=\v!ja,
+ \c!status=\v!start]
+
+\stelformulesin
+ [\c!wijze=\@@nrwijze,
+ \c!blokwijze=,
+ \c!sectienummer=\@@nrsectienummer,
+ \c!plaats=\v!rechts,
+ \c!links=(,
+ \c!rechts=)]
+
+\stelreferentielijstin
+ [\c!letter=\v!normaal]
+
+\stelinmargein
+ [\c!letter=\v!vet,
+ \c!kleur=,
+ \c!plaats=\v!beide,
+ \c!uitlijnen=\v!binnen,
+ \c!voor=,
+ \c!na=]
+
+\stelinmargein
+ [\v!links]
+ [\c!plaats=\v!links,
+ \c!uitlijnen=\v!links]
+
+\stelinmargein
+ [\v!rechts]
+ [\c!plaats=\v!rechts,
+ \c!uitlijnen=\v!rechts]
+
+\versie
+ [\v!definitief]
+
+\stelpaginanummerin
+ [\c!nummer=1]
+
+\stelsubpaginanummerin
+ [\c!wijze=\v!per\v!deel,
+ \c!status=\v!stop]
+
+\stelsmallerin
+ [\c!links=1.5em,
+ \c!rechts=1.5em,
+ \c!midden=1.5em]
+
+\stelregelnummerenin
+ [\c!conversie=\v!cijfers,
+ \c!start=1,
+ \c!stap=1,
+ \c!plaats=\v!inmarge,
+ \c!letter=,
+ \c!kleur=,
+ \c!breedte=2em,
+ \c!prefix=,
+ \c!refereren=\v!aan]
+
+\definieeropmaak
+ [\v!standaard]
+ [\c!breedte=\zetbreedte,
+ \c!hoogte=\teksthoogte,
+ \c!voffset=\!!zeropoint,
+ \c!hoffset=\!!zeropoint,
+ \c!pagina=\v!rechts,
+ \c!dubbelzijdig=\v!leeg]
+
+\stelpositionerenin
+ [\c!eenheid=\s!cm,
+ \c!factor=1,
+ \c!schaal=1,
+ \c!xstap=\v!absoluut,
+ \c!ystap=\v!absoluut,
+ \c!offset=\v!ja,
+ \c!xoffset=\!!zeropoint,
+ \c!yoffset=\!!zeropoint]
+
+\stelregelsin
+ [\c!voor=\blanko,
+ \c!na=\blanko,
+ \c!inspringen=\v!nee]
+
+\steldoordefinierenin
+ [\c!plaats=\v!links,
+ \c!kopletter=\v!vet,
+ \c!letter=\v!normaal,
+ \c!kleur=,
+ \c!kopkleur=,
+ \c!breedte=8em,
+ \c!afstand=0pt,
+ \c!hang=,
+ \c!monster=,
+ \c!uitlijnen=,
+ \c!inspringen=\v!nee,
+ \c!voor=\blanko,
+ \c!tussen=\blanko,
+ \c!na=\blanko,
+ \c!commando=]
+
+\steldoornummerenin
+ [\c!plaats=\v!boven,
+ \c!kopletter=\v!vet,
+ \c!kopkleur=,
+ \c!letter=\v!normaal,
+ \c!kleur=,
+ \c!breedte=8em,
+ \c!afstand=0pt,
+ \c!hang=,
+ \c!monster=,
+ \c!uitlijnen=,
+ \c!inspringen=\v!nee,
+ \c!voor=\blanko,
+ \c!tussen=\blanko,
+ \c!na=\blanko,
+ \c!tekst=,
+ \c!niveaus=3, % to be upward compatible
+ \c!conversie=, % to be upward compatible
+ \c!wijze=\v!per\v!tekst,
+ \c!sectienummer=\v!ja,
+ \c!scheider=.,
+ \c!afsluiter=,
+ \c!nummer=]
+
+\stelkoppeltekenin
+ [\c!teken=\compoundhyphen]
+
+\stelnaastplaatsenin
+ [\c!status=\v!stop]
+
+\steltolerantiein
+ [\v!horizontaal,\v!zeerstreng]
+
+\steltolerantiein
+ [\v!vertikaal,\v!streng]
+
+\steluitlijnenin
+ [\v!onder,
+ \v!breedte]
+
+\stelspatieringin
+ [\v!opelkaar]
+
+\definieerregister
+ [\v!index]
+ [\v!indices]
+
+\definieerplaatsblok
+ [\v!figuur]
+ [\v!figuren]
+
+\definieerplaatsblok
+ [\v!tabel]
+ [\v!tabellen]
+
+\stelplaatsblokin
+ [\v!tabel]
+ [\c!kader=\v!uit]
+
+\definieerplaatsblok
+ [\v!intermezzo]
+ [\v!intermezzos]
+
+\definieerplaatsblok
+ [\v!grafiek]
+ [\v!grafieken]
+
+\definieersynoniemen
+ [\v!afkorting]
+ [\v!afkortingen]
+ [\voluit]
+
+\stelsynoniemenin
+ [\v!afkorting]
+ [\c!tekstletter=\v!kapitaal,
+ \c!synoniemletter=,
+ \c!tekstkleur=,
+ \c!synoniemkleur=,
+ \c!plaats=\v!links,
+ \c!breedte=5em,
+ \c!status=\v!start]
+
+\definieersorteren
+ [\v!logo]
+ [\v!logos]
+
+\definieersynoniemen
+ [\v!eenheid]
+ [\v!eenheden]
+ [\betekenis]
+
+\stelsynoniemenin
+ [\v!eenheid]
+ [\c!tekstletter=\donottest\dimension]
+
+\stelmargeblokkenin
+ [\c!status=\v!start,
+ \c!plaats=\v!inmarge,
+ \c!breedte=\rechtermargebreedte,
+ \c!letter=,
+ \c!kleur=,
+ \c!uitlijnen=,
+ \c!links=,
+ \c!rechts=,
+ \c!boven=,
+ \c!tussen=\blanko,
+ \c!onder=\vfill,
+ \c!voor=,
+ \c!na=]
+
+\stelachtergrondenin
+ [\v!pagina,\v!linkerpagina,\v!rechterpagina]
+ [\c!kader=\v!uit,
+ \c!straal=.5\korpsgrootte,
+ \c!hoek=\v!recht,
+ \c!achtergrond=,
+ \c!raster=\@@rsraster,
+ \c!kleur=,
+ \c!kaderoffset=\getvalue{\??ma\v!pagina\c!offset},
+ \c!achtergrondoffset=\getvalue{\??ma\v!pagina\c!offset},
+ \c!offset=\!!zeropoint,
+ \c!diepte=\!!zeropoint,
+ \c!scheider=\v!nee]
+
+\stelbufferin
+ [\c!voor=,
+ \c!na=]
+
+\stellijstin
+ [\v!deel]
+ [\c!breedte=0em,
+ \c!voor={\blanko\pagina[\v!voorkeur]},
+ \c!na=\blanko,
+ \c!label=\v!ja,
+ \c!scheider=:,
+ \c!afstand=1em]
+
+\stellijstin
+ [\v!hoofdstuk]
+ [\c!breedte=2em,
+ \c!voor={\blanko\pagina[\v!voorkeur]},
+ \c!na=]
+
+\stellijstin
+ [\v!paragraaf]
+ [\c!breedte=3em]
+
+\stellijstin
+ [\v!sub\v!paragraaf]
+ [\c!breedte=4em]
+
+\stellijstin
+ [\v!sub\v!sub\v!paragraaf]
+ [\c!breedte=5em]
+
+\stellijstin
+ [\v!sub\v!sub\v!sub\v!paragraaf]
+ [\c!breedte=6em]
+
+\stellijstin
+ [\v!sub\v!sub\v!sub\v!sub\v!paragraaf]
+ [\c!breedte=7em]
+
+\def\documentstyle%
+ {\showmessage{\m!systems}{3}{}
+ \stoptekst}
+
+\protect
+
+\endinput