diff options
Diffstat (limited to 'tex/context/base/core-01a.tex')
-rw-r--r-- | tex/context/base/core-01a.tex | 32458 |
1 files changed, 16216 insertions, 16242 deletions
diff --git a/tex/context/base/core-01a.tex b/tex/context/base/core-01a.tex index 0e6983f07..0cd073f02 100644 --- a/tex/context/base/core-01a.tex +++ b/tex/context/base/core-01a.tex @@ -1,16242 +1,16216 @@ -%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&#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 +%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 \presetnormallineheight \to \everybodyfont
+\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 util
+ 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% made global
+ {\global\indentationfalse
+ \gdef\checkindentation%
+ {\donoindentation
+ \gdef\checkindentation{\global\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~}}
+
+% kan vaker worden toegepast:
+
+\def\doadaptleftskip#1%
+ {\processaction[#1] % \ExpandFirstAfter
+ [\v!standaard=>\advance\leftskip by
+ \ifdim\voorwit=\!!zeropoint\@@sllinks\else\voorwit\fi,
+ \v!ja=>\advance\leftskip by
+ \ifdim\voorwit=\!!zeropoint\@@sllinks\else\voorwit\fi,
+ \v!nee=>,
+ \s!unknown=>\advance\leftskip by #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
+\ifx\normalizedbodyfontsize\undefined
+ \def\normalizedbodyfontsize{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\topskipcorrection%
+ {\ifdim\topskip>\openstrutheight
+ \vskip\topskip
+ \vskip-\openstrutheight
+ \fi
+ \vbox{\strut}
+ \vskip-\openlineheight}
+
+\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
+
+\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:
+
+\def\defaultwidowpenalty{2000} % was: 1000
+\def\defaultclubpenalty {2000} % was: 800
+
+\widowpenalty=\defaultwidowpenalty\relax
+\clubpenalty =\defaultclubpenalty \relax
+
+% Bovendien definieren we enkele extra \fill's:
+
+\def\hfilll%
+ {\hskip\!!zeropoint\!!plus1filll\relax}
+
+\def\vfilll%
+ {\vskip\!!zeropoint\!!plus1filll\relax}
+
+% 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
+%\ifgridsnapping % evt altijd, nog testen
+% \getnoflines\vsize
+% \vsize=\noflines\openlineheight % local is better and ok
+% \advance\vsize by .5\openlineheight % collect enough data
+%\fi
+ \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}%
+\ifgridsnapping
+ \widowpenalty=0 % is gewoon beter
+ \clubpenalty =0 % zeker bij grids
+\else
+ \widowpenalty=\defaultwidowpenalty
+ \clubpenalty=\defaultclubpenalty
+\fi
+ \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
+ \fuzzysnappedbox{#1}{#2}%
+ \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
+ \adaptfuzzypagegoal} % watch this hack!
+
+\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,
+ \v!halveregel=>\tussenwit=.5\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.
+
+%D There are two ways to influence the interline spacing. The
+%D most general and often most consistent way is using
+%D
+%D \showsetup{\y!stelinterliniein}
+%D
+%D For instance
+%D
+%D \starttypen
+%D \setupinterlinespace[line=2.8ex]
+%D \stoptypen
+%D
+%D This setting adapts itself to the bodyfontsize, while for
+%D instance saying
+%D
+%D \starttypen
+%D \setupinterlinespace[line=12pt]
+%D \stoptypen
+%D
+%D sets things fixed for all sizes, which is definitely not
+%D what we want. Therefore one can also say:
+%D
+%D \starttypen
+%D \definecorpsenvironment[9pt][interlinespace=11pt]
+%D \stoptypen
+%D
+%D One can still use \type{\setupinterlinespace} (without
+%D arguments) to set the interline space according to the
+%D current font, e.g. a \type{\bfa}.
+
+\newif\iflocalinterlinespace
+
+\def\bodyfontinterlinespecs%
+ {\??ft\normalizedbodyfontsize\c!interlinie}
+
+\def\bodyfontinterlinespace%
+ {\csname\bodyfontinterlinespecs\endcsname}
+
+\def\presetnormallineheight%
+ {\edef\normallineheight{\@@itregel}%
+ \iflocalinterlinespace \else
+ \doifdefined{\bodyfontinterlinespecs}
+ {\doifsomething{\bodyfontinterlinespace}
+ {\edef\normallineheight{\bodyfontinterlinespace}}}%
+ \fi}
+
+\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} % overbodig \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%
+ {\localinterlinespacetrue
+ \setfontparameters
+ \localinterlinespacefalse}
+
+\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% ook nog \v!halveregel+fuzzysnap
+ {\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}
+
+\newif\iffuzzyvskip
+
+\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,
+ \v!halveregel=>\global\fuzzyvskiptrue\global\advance\blankoskip by .5\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
+ \iffuzzyvskip
+ \removelastfuzzyvskip
+ \fuzzyvskip\blankoskip\relax
+ \else
+ \removelastskip
+ \vskip\blankoskip\relax
+ \fi
+ \fi
+ \else
+ % Now, what happens to fuzzy skips?
+ \fi
+ \fi
+ \fi
+ \fi
+ \global\fuzzyvskipfalse
+ \presetindentation}
+
+\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.
+
+\let\currentvoorwit=\empty
+
+\newdimen\voorwit
+
+\newif\ifindentfirstparagraph % \indentfirstparagraphtrue
+
+\def\presetindentation%
+ {\ifindentfirstparagraph\else\noindentation\fi}
+
+\def\dostelinspringenin[#1]%
+ {\processallactionsinset
+ [#1]
+ [ \v!eerste=>\indentfirstparagraphtrue,
+ \v!volgende=>\indentfirstparagraphfalse,
+ \s!default=>\dodostelinspringenin,
+ \s!unknown=>\let\currentvoorwit=\commalistelement
+ \dodostelinspringenin]}
+
+\def\dodostelinspringenin%
+ {\assigndimension{\currentvoorwit}{\voorwit}{1em}{1.5em}{2em}%
+ \parindent=\voorwit\relax}
+
+\def\stelinspringenin%
+ {\dosingleempty\dostelinspringenin}
+
+\def\doinspringen[#1]%
+ {\processallactionsinset
+ [#1]
+ [ \v!nee=>\parindent=\voorwit\relax\noindent,
+ \v!niet=>\parindent=\voorwit\relax\noindent,
+ \v!ja=>\parindent=\voorwit\relax, % geen \indent !
+ \v!eerste=>\indentfirstparagraphtrue,
+ \v!volgende=>\indentfirstparagraphfalse,
+ \v!altijd=>\parindent=\voorwit\relax, % geen \indent !
+ \v!nooit=>\parindent=\!!zeropoint\relax]}
+
+\def\inspringen%
+ {\dosingleargument\doinspringen}
+
+\def\nietinspringen{\inspringen[\v!nee,\v!volgende]}
+\def\welinspringen {\inspringen[\v!ja,\v!eerste]}
+
+%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&#3&\tttf\string#3\cr}
+
+\def\tooninstellingen% % engels maken
+ {\noindent
+ \vbox
+ {\forgetall
+ \mindermeldingen
+ \switchtobodyfont[\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 \normallineheight
+ \tooninstellingB{hoogte} \relax \strutheightfactor
+ \tooninstellingB{diepte} \relax \strutdepthfactor
+ \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
+ \doadaptleftskip{\getvalue{\??op1\c!marge}}%
+ \dosetraggedcommand{\@@oouitlijnen}\raggedcommand
+ \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
+ \dosomebreak\allowbreak % toegevoegd
+ \getvalue{\??op1\c!na}%
+ \doif{\@@oospringvolgendein}{\v!nee}{\noindentation}%
+ \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 \??dd#1\s!do\c!commando levert 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!status moet in dat geval \v!start zijn.
+%
+% herimplementeren met \nextbox en \unhbox\unvbox
+
+\newbox\@@definitiebox
+
+\def\@@definitiewoord#1%
+ {\getvalue{\??dd#1\s!do\c!commando}{#1}}
+
+\def\normal@@definitiewoord#1[#2]#3%
+ {\doattributes
+ {\??dd#1\v!kop}
+ {\getvalue{\??dd#1\c!commando}%
+ {\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\@@definitiehangend#1[#2]#3%
+ {\skip0=-\leftskip % uggly trick
+ \@@dostartdefinitie{#1}[#2]{#3}% % adds \c!marge to \leftskip
+ \advance\skip0 by \leftskip % but useful
+ \ifdim\skip0=\!!zeropoint
+ \skip0=1.5em % just some default
+ \advance\leftskip by \skip0
+ \fi
+ \hskip-\skip0 % no hang in the first line
+ \unhcopy\@@definitiebox
+ \ifdim\!!widthb=\!!zeropoint
+ \kern.75em % another default
+ \else
+ \kern\!!widthb
+ \fi
+ \ignorespaces
+ \@@dodefinitie{#1}}
+
+\def\@@dostartdefinitie#1[#2]#3%
+ {\getvalue{\??dd#1\c!voor}%
+ \begingroup
+ \doadaptleftskip{\getvalue{\??dd#1\c!marge}}%
+ \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\s!do\c!lokaal}%
+ \parindent=\!!zeropoint\relax
+ \noindent
+ \ignorespaces}
+
+\def\@@stopdefinitie#1%
+ {\par
+ \dostopattributes
+ \endgroup
+ \egroup % temporary hack
+ \getvalue{\??dd#1\c!na}%
+ \doifvalue{\??dd#1\c!springvolgendein}{\v!nee}{\noindentation}%
+ \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]% % beter: \ifsingleargument
+ {\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!marge,
+ \c!springvolgendein,\c!uitlijnen,\c!tekst,\c!afstand,\c!commando]%
+ \getparameters[\??dd#1]
+ [\s!do\c!status=\v!stop,
+ \s!do\c!commando=\normal@@definitiewoord,
+ #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!status}{\v!start}
+ {\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}
+
+\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!status=\v!start,
+ \s!do\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!commando,
+ \c!monster,\c!hang,\c!uitlijnen,\c!voor,\c!tussen,\c!na,
+ \c!niveaus,\c!wijze,\c!blokwijze,\c!scheider,\c!marge,
+ \c!springvolgendein,\c!afsluiter,\c!sectienummer,\c!nummer]%
+ \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!commando,\c!marge,
+ \c!monster,\c!hang,\c!uitlijnen,\c!voor,\c!tussen,\c!na,
+ \c!springvolgendein,\c!links,\c!rechts,\c!koppeling]%
+ \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} % vervallen
+\def\woordinrechter{\inrechtermarge} % vervallen
+
+\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 / engels
+ {\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
+ \def\next%
+ {\dododosomekop{#1}[#2]{\sectiebloklabel{#1}}{#3}{#4}}%
+ \else
+ \def\next%
+ {\dododosomekop{#1}[#2]{\sectiebloklabel{#1}}{\getvalue{\@@sectie\c!nummer}}{#3}}%
+ \fi
+ \next}
+
+\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}%
+ \edef\numberheaddistance {\getvalue{\??ko#1\c!afstand}}%
+ \edef\numberheadalternative{\getvalue{\??ko#1\c!variant}}%
+ \dostelkopvariantin[\numberheadalternative]%
+ \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
+ \ifdisplaysectionhead\getvalue{\??ko#1\c!na}\fi
+ \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
+ \ifdisplaysectionhead\getvalue{\??ko#1\c!na}\fi
+ \else
+ % do nothing
+ \fi
+ \fi
+ \flushingcolumnfloatstrue
+ \ifdisplaysectionhead\else\expandafter\GotoPar\fi}
+
+% \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
+ \ifdisplaysectionhead\@EA\snaptogrid\@EA\hbox\fi
+ {\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}%
+ \ifdisplaysectionhead\endgraf\fi}}}}%
+ \ifdisplaysectionhead
+ \endgraf
+ \nointerlineskip
+ \dosomebreak\nobreak
+ \fi
+ #4%
+ \ifdisplaysectionhead
+ \prevdepth\openstrutdepth % \dp\strutbox % ivm grid
+ \fi
+ \stopsynchronisatie
+ \egroup
+ \doifvalue{\??ko#1\c!springvolgendein}{\v!nee}{\noindentation}}
+
+\def\doplaatskopnummertekst#1#2#3#4#5%
+ {\bgroup
+ \forgetall
+ %\showcomposition
+ \mindermeldingen
+ \postponefootnotes
+ \def\localkopsetup%
+ {\dolocalkopsetup{#1}}%
+ \startsynchronisatie
+ \ifdisplaysectionhead\@EA\snaptogrid\@EA\hbox\fi
+ {\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}%
+ \ifdisplaysectionhead\endgraf\fi}}}}%
+ \ifdisplaysectionhead
+ \endgraf
+ \nointerlineskip
+ \dosomebreak\nobreak
+ \fi
+ #5%
+ \ifdisplaysectionhead
+ \prevdepth\openstrutdepth % \dp\strutbox % important, see comment
+ \fi
+ \stopsynchronisatie
+ \egroup
+ \doifvalue{\??ko#1\c!springvolgendein}{\v!nee}{\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}\hskip\numberheaddistance}%
+ \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\plaatskopunknown#1#2%
+ {}
+
+\def\plaatskopintekst#1#2%
+ {\bgroup
+ \localkopsetup
+ \doifsomething{#1}{{#1}\hskip\numberheaddistance}%
+ {\begstrut#2}%
+ \hskip\numberheaddistance
+ \egroup}
+
+% 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!afstand=,
+ \c!pagina=,
+ \c!hoofd=,
+ \c!letter=,
+ \c!nummercommando=,
+ \c!tekstcommando=,
+ \c!eigennummer=\v!nee,
+ \c!nummer=\v!ja,
+ \c!kleur=,
+ \c!springvolgendein=\v!nee,
+ \c!doorgaan=\v!ja,
+ \c!plaatskop=\v!ja,
+ \c!verhoognummer=\v!ja,
+ \c!variant=\@@kovariant,
+ \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!afstand,\c!variant,\c!springvolgendein,
+ %\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!afstand,\c!variant,\c!springvolgendein,
+ %\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
+\newif\ifdisplaysectionhead \displaysectionheadtrue
+
+\def\dostelkopvariantin[#1]%
+ {\displaysectionheadtrue
+ \processaction
+ [#1]
+ [ \v!normaal=>\def\@@plaatskop{\plaatskopnormaal},
+ \v!midden=>\def\@@plaatskop{\plaatskopmidden},
+ \v!marge=>\def\@@plaatskop{\plaatskopinmarge},
+ \v!inmarge=>\def\@@plaatskop{\plaatskopinmarge},
+ \v!tekst=>\def\@@plaatskop{\plaatskopintekst}\displaysectionheadfalse,
+ \v!unknown=>\def\@@plaatskop{\plaatskopunknown}]}
+
+\def\dostelkoppenin[#1]%
+ {\getparameters[\??ko][#1]%
+ \doifelse{\@@kosectienummer}{\v!ja}
+ {\sectienummertrue}
+ {\sectienummerfalse}%
+ \dostelkopvariantin[\@@kovariant]}
+
+\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{\s!lst:#1\currentsectionformat}{\realfolio}%
+ \setxvalue{\v!vorige\v!lokale#1}{\s!lst:#1\previoussectionformat}%
+ \setxvalue{\v!huidige\v!lokale#1}{\s!lst:#1\currentsectionformat}%
+ \doifelse{\currentsectionformat}{}
+ {\setglobalcrossreference
+ {\v!vorige#1}{}{\realfolio}{}}
+ {\setglobalsystemreference\rt!list
+ {\v!vorige#1}{\getvalue{\v!vorige\v!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{\v!huidige\v!lokale####1}}}%
+ \processcommacommand[\updatedlistreferences]\docommando
+ \global\let\updatelistreferences=\relax
+ \global\let\updatedlistreferences=\empty}%
+ \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
+%\ifgridsnapping
+% \advance\dimen0 by .5\openlineheight % \vsize slightly too large
+%\fi
+ \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
+%\ifgridsnapping
+% \advance\dimen0 by .5\openlineheight % \vsize slightly too large
+%\fi
+ \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% is die page reference echt nodig?
+ {\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!}}
+
+\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!springvolgendein=\v!nee,
+ \c!pagina=\v!rechts,
+ \c!hoofd=,
+ \c!letter=\tfc,
+ \c!afstand=.75em,
+ \c!voor={\blanko[2*\v!groot]},
+ \c!na={\blanko[2*\v!groot]}]
+
+\stelkopin
+ [\v!paragraaf]
+ [\c!uitlijnen=\v!normaal,
+ \c!letter=\tfa,
+ \c!afstand=.75em,
+ \c!springvolgendein=\v!nee,
+ \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!springvolgendein=\v!ja,
+ \c!breedte=1.5em,
+ \c!factor=0,
+ \c!afstand=.5em,
+ \c!uitlijnen=\v!normaal,
+ \c!marletter=\c!type, % \c! ???
+ \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!marge=\v!nee,
+ \c!voor=\blanko,
+ \c!tussen=\blanko,
+ \c!na=\blanko,
+ \c!springvolgendein=\v!ja,
+ \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!marge=\v!nee,
+ \c!voor=\blanko,
+ \c!tussen=\blanko,
+ \c!na=\blanko,
+ \c!springvolgendein=\v!ja,
+ \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=,
+ \c!commando=]
+
+\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
+
\ No newline at end of file |