summaryrefslogtreecommitdiff
path: root/tex/context/base/main-002.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/main-002.tex')
-rw-r--r--tex/context/base/main-002.tex1181
1 files changed, 1181 insertions, 0 deletions
diff --git a/tex/context/base/main-002.tex b/tex/context/base/main-002.tex
new file mode 100644
index 000000000..169f5a0aa
--- /dev/null
+++ b/tex/context/base/main-002.tex
@@ -0,0 +1,1181 @@
+%D \module
+%D [ file=main-002,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=1B (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. See mreadme.pdf for
+%C details.
+
+%D This module is still to be split and documented.
+
+\writestatus{loading}{Context Core Macros (2)}
+
+\unprotect
+
+%I n=Items
+%I c=\items,\stelitemsin
+%I
+%I Met het commando \items kunnen invullijsten worden
+%I gegenereerd:
+%I
+%I \items{alternatief1,alternatief2,...,alternatiefN}
+%I
+%I Als in plaats van een alternatief een - wordt gegeven,
+%I dan wordt ruimte opengelaten.
+%I
+%I De wijze waarop items worden weergegeven wordt ingesteld
+%I met het commando:
+%I
+%I \stelitemsin[plaats=,symbool=,breedte=,n=,voor=,
+%I tussen=,na=,uitlijnen=]
+%I
+%I Mogelijke plaatsen zijn links, rechts, onder, boven en
+%I inmarge. Als breedte wordt de breedte van de totale tekst
+%I opgegeven. Het aantal is facultatief, eventueel kan er
+%I 'onbekend' worden meegegeven. Uitlijnen is 'ja' of 'nee'.
+%P
+%I Indien gewenst, kan de instelling direkt achter \item worden
+%I geplaatst:
+%I
+%I \items[plaats=,symbool=,...]{alternatief1,...}
+%I
+%I In plaats van een symbool kan ook een van de volgende
+%I aanduidingen worden meegegeven:
+%I
+%I a a, b, c, d, ...
+%I A A, B, C, D, ...
+%I n 1, 2, 3, 4, ...
+%I r i, ii, iii, ...
+%I R I, II, III, ...
+%I
+%I Eventueel kan een nummer worden meegegeven. In dat
+%I geval wordt het overeenkomstige symbool van de
+%I opsomming gebruikt (1--n).
+
+%\def\checkinterlineskip%
+% {\ifvmode
+% \ifdim\lastskip>\!!zeropoint\relax
+% \nointerlineskip
+% \else\ifdim\lastkern>\!!zeropoint\relax
+% \nointerlineskip
+% \fi\fi
+% \fi}
+
+\def\horitems#1#2% #1=breedte #2=commandos
+ {\dimen0=#1\relax
+ \divide\dimen0 by \nofitems
+ \!!counta=0\relax
+ \def\docommando##1%
+ {\advance\!!counta by 1\relax
+ \processaction
+ [\@@isuitlijnen]
+ [ \v!links=>\hbox to \dimen0{\strut##1\hss},
+ \v!rechts=>\hbox to \dimen0{\hss\strut##1},
+ \v!midden=>\hbox to \dimen0{\hss\strut##1\hss},
+ \v!marge=>\ifnum\!!counta=1\hss\else\hfill\fi
+ \strut##1%
+ \ifnum\!!counta=\nofitems\hss\else\hfill\fi,
+ \s!default=>\hbox to \dimen0{\hss\strut##1\hss}, % midden
+ \s!unknown=>\hbox to \dimen0{\strut##1\hss}]}% % links
+ \hbox to #1{\hss#2\hss}}
+
+\def\veritems#1#2% #1=breedte #2=commandos
+ {\dimen0=#1\relax
+ \def\docommando##1%
+ {\ifdim\dimen0<\!!zeropoint\relax % the - was a signal
+ \hbox to -\dimen0{\hss\strut##1}%
+ \else\ifdim\dimen0>\!!zeropoint\relax
+ \hbox to \dimen0{\strut##1\hss}%
+ \else
+ \hbox{\strut##1}%
+ \fi\fi}%
+ \vbox{#2}}
+
+\def\dostelitemsin[#1]% maakt direkt gebruik van \??ss en \??cv
+ {\getparameters[\??is][#1]%
+ \doif{\@@isbreedte}{\v!onbekend}
+ {\def\@@isbreedte{\hsize}}%
+ \doifdefinedelse{\??cv\@@issymbool}
+ {\def\doitembullet##1{\convertnumber{\@@issymbool}{##1}}}
+ {\doifdefined{\??ss\@@issymbool}
+ {\def\doitembullet##1{\symbol[\@@issymbool]}}}}
+
+\def\makeitemsandbullets#1%
+ {\doifelse{\@@isn}{\v!onbekend}
+ {\getcommalistsize[#1]%
+ \edef\nofitems{\commalistsize}}
+ {\edef\nofitems{\@@isn}}%
+ \setbox0=\hbox
+ {\doitems
+ {\@@isbreedte}
+ {\processcommalist[#1]\docommando}}%
+ \setbox2=\hbox
+ {\doitems
+ {\@@isbulletbreedte}
+ {\herhaal[\nofitems*\docommando{\strut\doitembullet{\herhaler}}]}}}
+
+\def\dostartitems#1#2#3%
+ {\let\doitems=#2
+ \def\@@isbulletbreedte{#3}%
+ \makeitemsandbullets{#1}%
+ \@@isvoor}
+
+\def\dostopitems%
+ {\@@isna
+ \egroup}
+
+\setvalue{doitems\v!boven}#1%
+ {\dostartitems{#1}\horitems\@@isbreedte
+ \noindent\vbox
+ {\forgetall
+ \doifsomething{\@@issymbool}
+ {\doifnot{\@@issymbool}{\v!geen}
+ {\box2
+ \@@istussen
+ \nointerlineskip}}%
+ \box0}%
+ \dostopitems}
+
+\setvalue{doitems\v!onder}#1%
+ {\dostartitems{#1}\horitems\@@isbreedte
+ \noindent\vbox
+ {\forgetall
+ \box0
+ \doifsomething{\@@issymbool}
+ {\@@istussen
+ \nointerlineskip
+ \box2}}%
+ \dostopitems}
+
+\setvalue{doitems\v!inmarge}#1%
+ {\dostartitems{#1}{\veritems}{-1.5em}% - is a signal
+ \noindent\hbox{\llap{\box2\hskip\linkermargeafstand}\box0}%
+ \dostopitems}
+
+\setvalue{doitems\v!links}#1%
+ {\advance\hsize by -1.5em\relax
+ \dostartitems{#1}{\veritems}{1.5em}%
+ \noindent\hbox{\box2\box0}%
+ \dostopitems}
+
+\setvalue{doitems\v!rechts}#1%
+ {\dostartitems{#1}{\veritems}{0em}%
+ \noindent\hbox{\box0\hskip-\wd2\box2}%
+ \dostopitems}
+
+\def\stelitemsin%
+ {\dosingleargument\dostelitemsin}
+
+\def\complexitems[#1]%
+ {\bgroup
+ \stelitemsin[#1]%
+ \parindent=\!!zeropoint
+ \setlocalhsize
+ \hsize=\localhsize
+ \mindermeldingen
+ \doifundefined{doitems\@@isplaats}%
+ {\let\@@isplaats\v!links}%
+ \getvalue{doitems\@@isplaats}}
+
+\definecomplexorsimpleempty\items
+
+%I n=Tabulatie (1)
+%I c=\definieeralineas,\stelalineasin
+%I
+%I Er kunnen paragrafen in meerdere kolommen worden gezet na
+%I het commando:
+%I
+%I \definieeralineas[naam][n=,voor=,na=,afstand=,
+%I hoogte=,lijn=,binnen=]
+%I
+%I Kolommen worden vervolgens gezet met:
+%I
+%I \startnaam .... \naam .... \naam .... \stopnaam
+%I
+%I of (soms verwarrend):
+%I
+%I \naam .... \naam .... \naam .... \naam
+%I
+%I of (lekker kort):
+%I
+%I \naam .... \\ .... \\ .... \\
+%I
+%I waarbij het aantal malen .... \naam of \\ gelijk is
+%I aan n. Naast \naam en \\ is ook \volgendenaam toegestaan.
+%P
+%I Het is mogelijk per kolom een en ander in te stellen met
+%I het commando:
+%I
+%I \stelalineasin[naam][kolomnummer][afstand=,breedte=,
+%I hoogte=,boven=,onder=,letter=,binnen=,lijn=,
+%I uitlijnen=,tolerantie=]
+
+% Te zijner tijd [plaats=boven,onder,midden] implementeren,
+% in dat geval moet eerst de maximale hoogte worden bepaald.
+%
+% Overigens kan een en ander mooier met \halign.
+
+\def\dodefinieeralineas[#1][#2]%
+ {\setvalue{\s!do\s!next#1}%
+ {\def\\{\getvalue{#1}}}%
+ \setvalue{#1}%
+ {\getvalue{\s!do\s!next#1}%
+ \dostartalineas{#1}}%
+ \setvalue{\e!volgende#1}%
+ {\getvalue{#1}}%
+ \setvalue{\e!start#1}%
+ {\bgroup
+ \setvalue{\s!do\s!next#1}{}%
+ \setvalue{\e!stop#1}%
+ {\getvalue{#1}%
+ \egroup}%
+ \getvalue{#1}}%
+ \getparameters[\??al#1]%
+ [\c!n=3,
+ \c!voor=\blanko,
+ \c!na=\blanko,
+ \c!afstand=1em,
+ \c!hoogte=\v!passend,
+ \c!lijn=\v!uit,
+ \c!commando=,
+ \c!uitlijnen=,
+ \c!tolerantie=\v!soepel,
+ \c!letter=,
+ \c!kleur=,
+ \c!boven=,
+ \c!boven=\vss,
+ \c!onder=\vfill,
+ #2]%
+ \setvalue{\e!stel#1\e!in}%
+ {\stelalineasin[#1]}%
+ \dorecurse
+ {\getvalue{\??al#1\c!n}}
+ {\stelalineasin[#1][\recurselevel]
+ [\c!breedte=,
+ \c!onder=\getvalue{\??al#1\c!onder},
+ \c!boven=\getvalue{\??al#1\c!boven},
+ \c!hoogte=\getvalue{\??al#1\c!hoogte},
+ \c!letter=\getvalue{\??al#1\c!letter},
+ \c!kleur=\getvalue{\??al#1\c!kleur},
+ \c!lijn=\getvalue{\??al#1\c!lijn},
+ \c!uitlijnen=\getvalue{\??al#1\c!uitlijnen},
+ \c!tolerantie=\getvalue{\??al#1\c!tolerantie},
+ \c!afstand=\getvalue{\??al#1\c!afstand}]}%
+ \stelalineasin[#1][1][\c!afstand=0em]}
+
+% nog monster
+%
+%\assignwidth
+% {\!!widtha}
+% {\getvalue{\??dd#1\c!breedte}}
+% {\doifelsevaluenothing{\??dd#1\c!monster}
+% {\hskip
+% {\doattributes
+% {\??al#1}\c!letter\c!kleur
+% {\getvalue{\??dd#1\c!monster}}}}
+% {0pt}
+
+\def\definieeralineas%
+ {\dodoubleargument\dodefinieeralineas}
+
+\def\dostelalineasin[#1][#2][#3]%
+ {\doifelse{#2}{\v!elk}
+ {\dorecurse
+ {\getvalue{\??al#1\c!n}}
+ {\getparameters[\??al#1\herhaler][#3]}}
+ {\ConvertToConstant\doifelse{#3}{}
+ {\getparameters[\??al#1][#2]}
+ {\def\docommando##1%
+ {\getparameters[\??al#1##1][#3]}%
+ \processcommalist[#2]\docommando}}}
+
+\def\stelalineasin%
+ {\dotripleempty\dostelalineasin}
+
+\newcount\alteller
+\newcount\alnsize
+\newdimen\alhsize
+
+\def\doalinealijn#1#2%
+ {\doifelsevalue{\??al#2\the\alteller\c!lijn}{\v!aan}
+ {\expandafter\dimen2=#1\relax
+ \hskip.5\dimen2
+ \hskip-\linewidth
+ \vrule\!!width\linewidth
+ \hskip.5\dimen2}
+ {\hskip#1}}
+
+\def\dostartalinea#1%
+ {\doifelsevaluenothing{\??al#1\the\alteller\c!breedte}
+ {\!!widtha=\alhsize\relax
+ \divide\!!widtha by \alnsize}
+ {\!!widtha=\getvalue{\??al#1\the\alteller\c!breedte}\relax}%
+ \dostartattributes
+ {\??al#1\the\alteller}\c!letter\c!kleur
+ {}%
+ \doifelsevalue{\??al#1\the\alteller\c!hoogte}{\v!passend}
+ {\setbox0=\vtop}
+ {\setbox0=\vtop to \getvalue{\??al#1\the\alteller\c!hoogte}}%
+ \bgroup
+ \blanko[\v!blokkeer]%
+ \forgetall
+ \getvalue{\??al#1\the\alteller\c!boven}%
+ \getvalue{\??al#1\c!binnen}%
+ \hsize=\!!widtha % setting \wd afterwards removed
+ \getvalue{\??al#1\the\alteller\c!binnen}%
+ \edef\!!stringa{\getvalue{\??al#1\the\alteller\c!uitlijnen}}% nodig?
+ \expandafter\steluitlijnenin\expandafter[\!!stringa]%
+ \edef\!!stringa{\getvalue{\??al#1\the\alteller\c!tolerantie}}% nodig?
+ \expandafter\steltolerantiein\expandafter[\!!stringa]%
+ \ignorespaces
+ \endgraf
+ \ignorespaces
+ %
+ % Nadeel van de onderstaande constructie is dat \everypar
+ % binnen een groep kan staan en zo steeds \begstruts
+ % worden geplaatst. Mooi is anders dus moet het anders!
+ %
+ % Hier is \Everypar niet nodig.
+ %
+ \everypar{\begstrut\everypar{}}%
+ %
+ \ignorespaces\geenspatie % dubbel: \ignorespaces
+ \getvalue{\??al#1\the\alteller\c!commando}}
+
+\def\dostopalinea#1%
+ {\ifvmode
+ \removelastskip
+ \else
+ \unskip\endstrut\endgraf
+ \fi
+ \getvalue{\??al#1\the\alteller\c!onder}%
+ \egroup
+ \ifdim\wd0=\!!zeropoint % no data
+ \wd0=\!!widtha
+ \fi
+ \box0
+ \dostopattributes
+ \ifnum\alteller<\getvalue{\??al#1\c!n}\relax
+ \def\next{\doalinea{#1}}%
+ \else
+ \def\next{\dostopalineas{#1}}%
+ \fi
+ \next}
+
+\def\doalinea#1%
+ {\global\advance\alteller by 1\relax
+ \doifelsevaluenothing{\??al#1\the\alteller\c!afstand}
+ {\doifnot{\the\alteller}{1}
+ {\hskip\getvalue{\??al#1\c!afstand}}}
+ {\doifelse{\the\alteller}{1}%
+ {\hskip\getvalue{\??al#1\the\alteller\c!afstand}}
+ {\doalinealijn{\getvalue{\??al#1\the\alteller\c!afstand}}{#1}}}%
+ \setvalue{#1}{\dostopalinea{#1}}%
+ \dostartalinea{#1}}
+
+\def\dostartalineas#1%
+ {\global\alteller=0\relax
+ \parindent=\!!zeropoint
+ \setlocalhsize
+ \alhsize=\localhsize
+ \alnsize=\getvalue{\??al#1\c!n}\relax
+ \dorecurse
+ {\getvalue{\??al#1\c!n}}
+ {\doifelsevaluenothing{\??al#1\recurselevel\c!afstand}
+ {\doifnot{\recurselevel}{1}
+ {\global\advance\alhsize by -\getvalue{\??al#1\c!afstand}\relax}}
+ {\global\advance\alhsize by -\getvalue{\??al#1\recurselevel\c!afstand}\relax}%
+ \doifvaluesomething{\??al#1\recurselevel\c!breedte}
+ {\global\advance\alnsize by -1\relax
+ \global\advance\alhsize by -\getvalue{\??al#1\recurselevel\c!breedte}\relax}}%
+ %\witruimte % gaat fout bij \framed
+ \getvalue{\??al#1\c!voor}%
+ \leavevmode % gaat wel goed bij \framed
+ \vbox\bgroup\hbox\bgroup
+ \doalinea{#1}}
+
+\def\dostopalineas#1%
+ {\egroup
+ \egroup
+ \par
+ \getvalue{\??al#1\c!na}}%
+
+%I n=Tabulatie (2)
+%I c=\steltabin,\tab
+%I
+%I Eenvoudige tabulatie is mogelijk met het commando:
+%I
+%I \tab{tekst} tekst tekst tekst .....
+%I
+%I Instelling vindt plaats met het commando:
+%I
+%I \steltabin[monster=,breedte=,kopletter=,voor,na=]
+%I
+%I Dit commando is een vereenvoudigde variant van het
+%I commando \doordefinieren. In de regel kan volstaan
+%I worden met het opgeven van een monster. Dit is het
+%I woord dat de breedte bepaalt.
+
+\def\dosteltabin[#1]%
+ {\getparameters[\??ta]
+ [\c!kopletter=\v!normaal,
+ \c!kopkleur=,
+ \c!letter=\v!normaal,
+ \c!kleur=,
+ \c!breedte=\v!ruim,
+ \c!monster={\hskip4em},
+ \c!voor=,
+ \c!na=,
+ #1]%
+ \doordefinieren
+ [tab]
+ [\c!kopletter=\@@takopletter,
+ \c!kopkleur=\@@takleur,
+ \c!monster=\@@tamonster,
+ \c!breedte=\@@tabreedte,
+ \c!voor=\@@tavoor,
+ \c!na=\@@tana]}
+
+\def\steltabin%
+ {\dosingleargument\dosteltabin}
+
+%I n=Diversen
+%I c=\celsius,\bedrag,\breuk
+%I c=\procent,\promille
+%I
+%I De volgende commando's vatten (vooral mathematische)
+%I zetcommando's samen:
+%I
+%I \chem{symbool}{onder}{boven} chemische symbolen
+%I \celsius{graden} graden Celsius (..~øC)
+%I \breuk{boven}{onder} breuken («)
+%I \bedrag{getal} geldbedragen (Ÿ~..)
+%I \punten[n] puntjes (. . .)
+%I \ongeveer plus-minus (ñ)
+%I \inch inch ('')
+%I \doorsnede \circ doorsneden met /
+%I \graden ø (^\circ)
+%I \procent percentage (vgl promille)
+%I \promille promilage
+%I \dollar dollar teken
+%I \sterling pound sterling teken
+%I \florijn gulden teken
+
+% The following macro's are derived from PPCHTEX and
+% therefore take some LaTeX font-switching into account.
+
+\newif\ifloweredsubscripts
+
+% Due to some upward incompatibality of LaTeX to LaTeX2.09
+% and/or LaTeX2e we had to force \@@chemieletter. Otherwise
+% some weird \nullfont error comes up.
+
+\doifundefined{@@chemieletter}{\def\@@chemieletter{\rm}}
+
+\def\beginlatexmathmodehack%
+ {\ifmmode
+ \let\endlatexmathmodehack=\relax
+ \else
+ \def\endlatexmathmodehack{$}$\@@chemieletter
+ \fi}
+
+\def\setsubscripts%
+ {\beginlatexmathmodehack
+ \def\dosetsubscript##1##2##3%
+ {\dimen0=##3\fontdimen5##2%
+ \setxvalue{@@\string##1\string##2}{\the##1##2\relax}%
+ ##1##2=\dimen0\relax}%
+ \def\dodosetsubscript##1##2%
+ {\dosetsubscript{##1}{\textfont2}{##2}%
+ \dosetsubscript{##1}{\scriptfont2}{##2}%
+ \dosetsubscript{##1}{\scriptscriptfont2}{##2}}%
+ %\dodosetsubscript{\fontdimen14}{?}%
+ \dodosetsubscript{\fontdimen16}{.7}%
+ \dodosetsubscript{\fontdimen17}{.7}%
+ \global\loweredsubscriptstrue
+ \endlatexmathmodehack}
+
+\def\resetsubscripts%
+ {\ifloweredsubscripts
+ \beginlatexmathmodehack
+ \def\doresetsubscript##1##2%
+ {\dimen0=\getvalue{@@\string##1\string##2}\relax
+ ##1##2=\dimen0}%
+ \def\dodoresetsubscript##1%
+ {\doresetsubscript{##1}{\textfont2}%
+ \doresetsubscript{##1}{\scriptfont2}%
+ \doresetsubscript{##1}{\scriptscriptfont2}}%
+ %\dodoresetsubscript{\fontdimen14}%
+ \dodoresetsubscript{\fontdimen16}%
+ \dodoresetsubscript{\fontdimen17}%
+ \global\loweredsubscriptsfalse
+ \endlatexmathmodehack
+ \fi}
+
+\let\beginlatexmathmodehack = \relax
+\let\endlatexmathmodehack = \relax
+
+\def\chem#1#2#3%
+ {\bgroup
+ \setsubscripts
+ \mathematics{\hbox{#1}_{#2}^{#3}}%
+ \resetsubscripts
+ \egroup}
+
+\def\celsius#1%
+ {#1\mathematics{^\circ}C}
+
+\def\graden%
+ {\mathematics{^\circ}}
+
+\def\inch%
+ {\hbox{\rm\char125\relax}}
+
+\def\breuk#1#2%
+ {\mathematics{#1\over#2}}
+
+%\def\bedrag#1%
+% {\mathematics{f~}\hbox{#1}}
+
+\def\bedragprefix{\mathematics{f\normalfixedspace}}
+\def\bedragsuffix{}
+
+\def\bedrag#1%
+ {\strut\hbox\bgroup
+ \let\normalfixedspace~%
+ \def~{\futurelet\next\dofixedspace}%
+ \def\dofixedspace%
+ {\hskip.5em\relax
+ \ifx\next,%
+ \hphantom,\let\next\gobbleoneargument
+ \else\ifx\next.%
+ \hphantom.\let\next\gobbleoneargument
+ \else
+ \let\next\relax
+ \fi\fi
+ \next}%
+ \bedragprefix#1\bedragsuffix
+ \egroup}
+
+% \definieeralineas[test][n=3]
+%
+% \stelalineasin[test][3][breedte=4cm,uitlijnen=links]
+%
+% \startopelkaar
+% \test hans \\ ton \\ \bedrag{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{~.~~1,--} \\
+% \test hans \\ ton \\ \bedrag{~.~~1,~~} \\
+% \test hans \\ ton \\ \bedrag{~.100,--} \\
+% \test hans \\ ton \\ \subtot{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{1.000,--} \\
+% \test hans \\ ton \\ \totaal{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{nihil,--} \\
+% \test hans \\ ton \\ \totaal{nihil,--} \\
+% \test hans \\ ton \\ \subtot{nihil,--} \\
+% \stopopelkaar
+
+\def\doorsnede%
+ {\hbox{\rlap/$\circ$} }
+
+\def\complexpunten[#1]%
+ {\dimen0=.5em\relax
+ \multiply\dimen0 by #1\relax
+ \hbox to \dimen0
+ {\leaders\hbox to .5em{\hss.\hss}\hss}}
+
+\def\simplepunten%
+ {\complexpunten[5]}
+
+\definecomplexorsimple\punten
+
+\def\ongeveer%
+ {\mathematics{\pm}}
+
+\def\permille%
+ {\mathematics{^{\scriptscriptstyle0}\kern-.25em/\kern-.2em_{\scriptscriptstyle00}}}
+
+\def\percent%
+ {\mathematics{^{\scriptscriptstyle0}\kern-.25em/\kern-.2em_{\scriptscriptstyle0}}}
+
+\let\promille=\permille
+\let\procent =\percent
+
+\def\permine%
+ {\dontleavehmode
+ \bgroup
+ \setbox0=\hbox
+ {\mathematics{+}}%
+ \hbox to \wd0
+ {\hss
+ \mathematics{^{\scriptscriptstyle-}\kern-.4em/\kern-.3em_{\scriptscriptstyle-}}%
+ \hss}%
+ \egroup}
+
+% for compatibility
+
+\def\unknown%
+ {\dontleavehmode\punten[3]}
+
+% currency
+
+\def\dollar%
+ {\bgroup
+ \ifnum\fam=\itfam
+ \sl
+ \else\ifnum\fam=\bifam
+ \bs
+ \fi\fi
+ \$%
+ \egroup}
+
+\def\sterling%
+ {\bgroup
+ \ifnum\fam=\bffam
+ \bi
+ \else\ifnum\fam=\bifam
+ \bi
+ \else\ifnum\fam=\bsfam
+ \bi
+ \else
+ \it
+ \fi\fi\fi
+ \$%
+ \egroup}
+
+\def\florijn%
+ {\bgroup
+ \ifnum\fam=\bffam
+ \bi
+ \else\ifnum\fam=\bifam
+ \bi
+ \else\ifnum\fam=\bsfam
+ \bi
+ \else
+ \it
+ \fi\fi\fi
+ f%
+ \egroup}
+
+%I n=Citaten
+%I c=\startcitaat,\citaat,\stelcitatenin
+%I c=\citeer,\stelciterenin
+%I
+%I Als variant op \startsmaller is het volgende commando
+%I beschikbaar:
+%I
+%I \startcitaat
+%I tekst
+%I \stopcitaat
+%I
+%I Rond de tekst worden in de marge dubbele quotes
+%I geplaatst. Ook bij dit commando kunnen tussen [] maten
+%I worden opgegeven:
+%I
+%I \startcitaat[2*links,rechts]
+%I
+%I In de lopende tekst kan gebruik worden gemaakt van:
+%I
+%I \citaat{tekst}
+%I \citeer{tekst}
+%I
+%I Het eerste commando levert dubbele quotes en het tweede
+%I enkele quotes.
+%P
+%I Er zijn twee varianten (1 en 2) beschikbaar die kunnen
+%I worden ingesteld met:
+%I
+%I \stelciterenin
+%I [letter=]
+
+\newsignal\quotationsignal
+\def\quotationskip{.125em}
+
+\def\stelciterenin%
+ {\dodoubleargument\getparameters[\??ci]}
+
+\def\stelcitatenin%
+ {\stelciterenin}
+
+\def\dostartcitaat[#1]%
+ {\bgroup
+ \@@civoor
+ \doifelsenothing{#1}
+ {\let\dostopcitaat=\relax}
+ {\startsmaller[#1]
+ \let\dostopcitaat=\stopsmaller}%
+ \dostartattributes\??ci\c!letter\c!kleur{}%
+ \setbox0=\hbox{\getvalue{\??la\currentlanguage\c!leftquotation}}%
+ \hskip-\wd0
+ \box0\relax
+ \ignorespaces}
+
+\def\stopcitaat%
+ {\unskip\hsmash{\getvalue{\??la\currentlanguage\c!rightquotation}}%
+ \dostopattributes
+ \dostopcitaat
+ \@@cina
+ \egroup}
+
+\def\startcitaat%
+ {\dosingleempty\dostartcitaat}
+
+\def\dohandlequotation#1%
+ {\ifdim\lastskip=\quotationsignal
+ \unskip\hskip\quotationskip
+ \fi
+ \penalty\!!tenthousand\hskip\!!zeropoint % == \prewordbreak
+ \strut % new, needed below
+ \getvalue{\??la\currentlanguage#1}%
+ \penalty\!!tenthousand\hskip\quotationsignal} % +- \prewordbreak
+
+\unexpanded\def\citaat%
+ {\groupedcommand
+ {\dohandlequotation\c!leftquotation}
+ {\dohandlequotation\c!rightquotation}}
+
+\unexpanded\def\citeer%
+ {\doifelse{\@@ciletter}{\v!normaal}
+ {\let\next=\doquotedcite}
+ {\let\next=\doattributedcite}%
+ \next}
+
+\def\doquotedcite%
+ {\groupedcommand
+ {\dohandlequotation\c!leftquote}
+ {\dohandlequotation\c!rightquote}}
+
+\def\doattributedcite%
+ {\groupedcommand
+ {\dostartattributes\??ci\c!letter\c!kleur}
+ {\dostopattributes}}
+
+% The previous one fails in \placefloat[left]{}{}, so instead
+% we use the next alternative, where the first one is handled
+% outside group. Watch the strut.
+
+\unexpanded\def\citaat%
+ {\dohandlequotation\c!leftquotation
+ \groupedcommand{}{\dohandlequotation\c!rightquotation}}
+
+\def\doquotedcite%
+ {\dohandlequotation\c!leftquote
+ \groupedcommand{}{\dohandlequotation\c!rightquote}}
+
+% Tijden horen hier niet thuis en zullen in een aparte
+% module worden ondergebracht. voorlopig handhaven we ze nog
+% even. Een implementatie met \doordefinieren zou beter voldoen
+% omdat een en ander dan instelbaar wordt. Het is trouwens
+% zowieso beter het commando \tijd te reserveren voor de
+% systeemtijd.
+
+\def\tijd#1%
+ {\setbox0=\hbox{00.00}%
+ \hbox to \wd0{\hfill#1}}
+
+\def\tijdspan#1#2%
+ {\hbox{\tijd{#1}~---~\tijd{#2}}}
+
+\def\activiteit#1#2%
+ {\activity{\tijdspan{#1}{#2}}}
+
+\def\activiteit#1#2%
+ {\sym{\tijdspan{#1}{#2}}}
+
+%I n=Toevoegen
+%I c=\toevoegen
+%I
+%I Er kan witruimte worden gemarkeerd met het commando:
+%I
+%I \toevoegen[instelling]{korte tekst}
+%I
+%I waarbij als instellingen mogelijk zijn: klein, middel of
+%I groot.
+
+\def\dotoevoegen#1%
+ {\def\next{#1}%
+ \herhaal[#1*{\inlinker{\next~+}\def\next{}\crlf}]}
+
+\def\complextoevoegen[#1]%
+ {\blanko
+ \processaction
+ [#1]
+ [ \v!klein=>\dotoevoegen{3},
+ \v!middel=>\dotoevoegen{6},
+ \v!groot=>\dotoevoegen{9},
+ \s!default=>\dotoevoegen{6},
+ \s!unknown=>\dotoevoegen{#1}]
+ \blanko}
+
+\definecomplexorsimpleempty\toevoegen
+
+%I n=Roosters
+%I c=\rooster
+%I
+%I Er kunnen roosters (te vergelijken met ruitjespapier)
+%I worden gemaakt met:
+%I
+%I \rooster[nx=,ny=,dx=,dy=,eenheid=,xstap=,ystap=,
+%I offset=,schaal=,factor=]
+%I
+%I De instelling [nx=20,ny=20,dx=.5,dy=.5,eenheid=cm] levert
+%I een patroon van 10cm bij 10cm van hokjes van 0.5cm op.
+%I
+%I Met '.stap' kunnen getallen langs de assen worden gezet.
+%I als 0 wordt ingevuld (default), dan worden geen getallen
+%I gezet. Met offset (ja of nee) kan men aangeven of de
+%I getallen langs de assen binnen of buiten de box rond
+%I het rooster vallen (vergelijk \stelpositionerenin).
+%I
+%I !! Dit commando wordt nog aangepast/uitgebreid. !!
+
+\def\dorooster[#1]%
+ {\begingroup
+ \getparameters[\??rt]
+ [\c!x=0,\c!y=0,
+ \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,
+ \c!plaats=\v!links,
+ #1]%
+ \startpositioneren
+ \dimen0=\@@rtdx\@@rteenheid\relax
+ \dimen0=\@@rtschaal\dimen0\relax
+ \dimen0=\@@rtfactor\dimen0\relax
+ \multiply\dimen0 by \@@rtnx\relax
+ \dimen2=\@@rtdy\@@rteenheid\relax
+ \dimen2=\@@rtschaal\dimen2\relax
+ \dimen2=\@@rtfactor\dimen2\relax
+ \multiply\dimen2 by \@@rtny\relax
+ \def\horline
+ {\vbox
+ {\hrule
+ \!!width \dimen0
+ \!!height \linewidth
+ \!!depth \!!zeropoint}}%
+ \def\verline%
+ {\vrule
+ \!!width \linewidth
+ \!!height \dimen2
+ \!!depth \!!zeropoint}%
+ \doglobal\newcounter\@@roosterc
+ \doglobal\newcounter\@@roosterd
+ \doglobal\newcounter\@@roostere
+ \def\setlegend##1##2##3%
+ {\gdef\@@roosterc{0}%
+ \dimen0=2em\relax
+ \dimen2=##2\@@rteenheid\relax
+ \dimen2=\@@rtschaal\dimen2\relax
+ \dimen2=\@@rtfactor\dimen2\relax
+ \divide\dimen0 by \dimen2\relax
+ \xdef\@@roostere{\number\dimen0}%
+ \ifnum\@@roostere>50
+ \gdef\@@roostere{100}%
+ \else\ifnum\@@roostere>10
+ \gdef\@@roostere{50}%
+ \else\ifnum\@@roostere>5
+ \gdef\@@roostere{10}%
+ \else\ifnum\@@roostere>1
+ \gdef\@@roostere{5}%
+ \else
+ \gdef\@@roostere{1}%
+ \fi\fi\fi\fi
+ \gdef\@@roosterd{0}%
+ \def\legend%
+ {\ifnum\@@roosterd=0\relax
+ \vbox
+ {\increment(\@@roosterc,##1)%
+ \hbox to 2em{\hss\@@roosterc\hss}}%
+ \global\let\@@roosterd=\@@roostere
+ \fi
+ \doglobal\decrement\@@roosterd
+ \doglobal\increment(\@@roosterc,##1)}}%
+ \def\draw##1##2##3##4##5##6##7##8##9%
+ {\stelpositionerenin
+ [\c!status=##8,
+ \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]%
+ \doifelse{##9}{\v!midden}
+ {\scratchdimen=##3pt\scratchdimen=.5\scratchdimen
+ \edef\@@psxx{\withoutpt\the\scratchdimen}%
+ \scratchdimen=##4pt\scratchdimen=.5\scratchdimen
+ \edef\@@psyy{\withoutpt\the\scratchdimen}%
+ \scratchcounter=##2\advance\scratchcounter by -1
+ \edef\@@pszz{\the\scratchcounter}}
+ {\edef\@@psxx{0}\edef\@@psyy{0}\edef\@@pszz{##2}}%
+ \positioneer(\@@psxx,\@@psyy){##1}%
+ \stelpositionerenin
+ [\c!status=##8,
+ \c!xstap=\v!relatief,
+ \c!ystap=\v!relatief,
+ \c!schaal=\@@rtschaal,
+ \c!factor=\@@rtfactor,
+ \c!offset=\@@rtoffset,
+ \c!eenheid=\@@rteenheid]%
+ \dorecurse{\@@pszz}{\positioneer(##3,##4){##5}}}%
+ \draw
+ \verline\@@rtnx\@@rtdx0\verline\!!zeropoint\!!zeropoint\v!start\empty
+ \draw
+ \horline\@@rtny0\@@rtdy\horline\!!zeropoint\!!zeropoint\v!start\empty
+ \tfx
+ \doifnot{\@@rtxstap}{0}
+ {\setlegend\@@rtxstap\@@rtdx\@@rtx
+ \draw\legend\@@rtnx\@@rtdx0\legend{-1em}{-1.5em}\v!overlay\@@rtplaats}%
+ \doifnot{\@@rtystap}{0}
+ {\setlegend\@@rtystap\@@rtdy\@@rty
+ \draw\legend\@@rtny0\@@rtdy\legend{-2em}{-.75ex}\v!overlay\@@rtplaats}%
+ \stoppositioneren
+ \endgroup}
+
+\def\rooster%
+ {\dosingleempty\dorooster}
+
+%I n=Literatuurlijsten
+%I c=\stelpublicatiesin,\startpublicatie,\publicatie
+%I
+%I Literatuurlijsten kunnen worden opgemaakt met het commando:
+%I
+%I \startpublicatie[referentie]
+%I \naam ....
+%I \titel ....
+%I \jaar ....
+%I \plaats ....
+%I \uitgever ....
+%I \stoppublicatie
+%I
+%I Een publicatie wordt opgeroepen met:
+%I
+%I \publicatie[referentie]
+%P
+%I Het formaat kan worden ingesteld met het commando:
+%I
+%I \stelpublicatiesin[variant=,voor=,na=,nummeren=,
+%I breedte=,kopletter=,links=,rechts=]
+%I
+%I waarbij mogelijke varianten zijn: normaal apa en normaal.
+%I Nummeren kan 'ja' of 'nee' zijn; links en rechts
+%I hebben betrekking op de weergave in de tekst en zijn
+%I standaard [ en ].
+
+% Dit wordt:
+%
+% \doorverwijzen[naam][instellingen] enz.
+%
+% waarbij <naam> bijvoorbeeld publicatie is. Dit levert:
+%
+% \start<naam>
+% \stop<naam>
+%
+% \beginvan<naam>
+% \eindvan<naam>
+%
+% \publicatie
+%
+% \volledigelijstmetpublicaties
+%
+% eigenlijk kan ook door... zo worden uitgebreid!
+
+\doornummeren
+ [@publicatie]
+ [\c!plaats=\v!links,
+ \c!breedte=\@@pbbreedte,\c!hang=,\c!monster=,
+ \c!voor=\@@pbvoor,\c!na=\@@pbna,\c!tussen=,
+ \c!kopletter=\@@pbkopletter,\c!letter=,
+ \c!kopkleur=\@@pbkopkleur,\c!kleur=,
+ \c!wijze=\@@pbwijze,\c!blokwijze=\@@pbblokwijze,
+ \c!tekst=,\c!links=\@@pblinks,\c!rechts=\@@pbrechts]
+
+\def\dostelpublicatiesin[#1]%
+ {\getparameters[\??pb][#1]}
+
+\def\stelpublicatiesin%
+ {\dosingleargument\dostelpublicatiesin}
+
+\def\apa@publicatie%
+ {\doifsomething{\@@pb@naam}{\@@pb@naam,\spatie}%
+ \doifsomething{\@@pb@titel}{{\sl\@@pb@titel}.\spatie}%
+ \doifsomething{\@@pb@jaar}{(\@@pb@jaar).\spatie}%
+ \doifsomething{\@@pb@plaats}{\@@pb@plaats\doifelsenothing{\@@pb@uitgever}{.}{:\spatie}}%
+ \doifsomething{\@@pb@uitgever}{\@@pb@uitgever.}}
+
+\def\normaal@publicatie%
+ {\@@pb@naam, \@@pb@titel, \@@pb@jaar, \@@pb@pagina, \@@pb@plaats, \@@pb@uitgever.}
+
+\def\complexstartpublicatie[#1]#2\stoppublicatie%
+ {\bgroup%
+ \def\dosetpublicatie%
+ {\processcommalist
+ [naam,titel,jaar,plaats,pagina,uitgever]
+ \setpublicatie
+ \ignorespaces}%
+ \def\setpublicatie##1%
+ {\setvalue{\??pb @##1}{}%
+ \setvalue{##1}####1{\setvalue{\??pb @##1}{####1}\ignorespaces}}%
+ \def\getpublicatie%
+ {\doifsomething{\@@pbvariant}{\getvalue{\@@pbvariant @publicatie}}}%
+ \doifelse{\@@pbnummeren}{\v!ja}%
+ {\@publicatie[#1]\dosetpublicatie#2\getpublicatie\par}%
+ {\@@pbvoor
+ \dosetpublicatie\ignorespaces#2\getpublicatie
+ \@@pbna}%
+ \egroup}
+
+\definecomplexorsimpleempty\startpublicatie
+
+\def\publicatie#1[#2]%
+ {\@@pblinks\in{#1}[#2]\@@pbrechts}
+
+%I n=Kenmerken
+%I c=\kenmerk,\kenmerkdatum
+%I
+%I Er kan een kenmerk worden gezet met het commando:
+%I
+%I \kenmerk[bet=,ken=,dat=,van=,aan=,ref=]
+%I
+%I waarbij de verplichte parameters staan voor 'betreft',
+%I 'kenmerk' en 'datum' en de optionele voor 'van', 'aan' en
+%I 'referentie'.
+%I
+%I Een kenmerk-datum kan worden gezet met het commando:
+%I
+%I \kenmerkdatum
+%I
+%I zodat een kenmerk er bijvoorbeeld uitziet als:
+%I
+%I \kenmerk
+%I [bet=rekening eerste termijn,
+%I ken=\kenmerkdatum.sork.gvk / afo,
+%I dat=\currentdate]
+
+\def\kenmerkdatum%
+ {\currentdate[\v!kenmerk]}
+
+\def\dokenmerk[#1]%
+ {\geenhoofdenvoetregels
+ \bgroup
+ \getparameters
+ [\??km]
+ [\c!bet=\unknown,\c!dat=\unknown,\c!ken=\unknown,
+ \c!van=, \c!aan=, \c!ref=, #1]%
+ % moet anders, hoort niet in 01b
+ \assigntranslation[nl=referentie,en=reference,du=Referenz, sp=referencia]\to\@@@kmref
+ \assigntranslation[nl=van, en=from, du=Von, sp=de]\to\@@@kmvan
+ \assigntranslation[nl=aan, en=to, du=An, sp=a]\to\@@@kmaan
+ \assigntranslation[nl=betreft, en=concerns, du=Betreff, sp=]\to\@@@kmbet
+ \assigntranslation[nl=datum, en=date, du=Datum, sp=fecha]\to\@@@kmdat
+ \assigntranslation[nl=kenmerk, en=mark, du=Kennzeichen,sp=]\to\@@@kmken
+ %
+ \definetabulate[\s!dummy][|l|p|]
+ \startdummy
+ \NC\@@@kmbet\EQ\@@kmbet\NC\NR
+ \NC\@@@kmdat\EQ\@@kmdat\NC\NR
+ \NC\@@@kmken\EQ\kap{\@@kmken}\NC\NR
+ \doifsomething{\@@kmvan\@@kmaan}{\NC\NC\NC\NR}%
+ \doifsomething{\@@kmvan}{\NC\@@@kmvan\EQ\@@kmvan\NC\NR}%
+ \doifsomething{\@@kmaan}{\NC\@@@kmaan\EQ\@@kmaan\NC\NR}%
+ \doifsomething{\@@kmref}{\NC\NC\NC\NR\NC\@@@kmref\EQ\@@kmref\NC\NR}%
+ \stopdummy
+ \egroup}
+
+\def\kenmerk%
+ {\dosingleargument\dokenmerk}
+
+% NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW
+% NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW
+
+\def\??ri{@@ri}
+
+\def\stelrijenin%
+ {\dodoubleargument\getparameters[\??ri]}
+
+\def\complexstartrijen[#1]%
+ {\bgroup
+ \stelrijenin[#1]%
+ \let\do@@rionder=\relax
+ \def\rij%
+ {\do@@rionder
+ \egroup
+ \dimen0=\vsize
+ \divide\dimen0 by \@@rin
+ \advance\dimen0 by -\lineskip
+ \vbox to \dimen0
+ \bgroup
+ \@@riboven
+ \let\do@@rionder=\@@rionder
+ \ignorespaces}%
+ \bgroup
+ \rij}
+
+\definecomplexorsimpleempty\startrijen
+
+\def\stoprijen%
+ {\do@@rionder
+ \egroup
+ \egroup}
+
+\stelrijenin
+ [n=2,
+ boven=,
+ onder=\vfill]
+
+% NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW
+% NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW NIEUW
+
+% Standaardinstellingen
+
+\stelitemsin
+ [\c!plaats=\v!links,
+ \c!symbool=5,
+ \c!breedte=\hsize,
+ \c!uitlijnen=\v!midden,
+ \c!n=\v!onbekend,
+ \c!voor=\blanko,
+ \c!tussen={\blanko[\v!middel]},
+ \c!na=\blanko]
+
+\steltabin
+ [\c!plaats=\v!links]
+
+\stelpublicatiesin
+ [\c!nummeren=\v!ja,
+ \c!variant=\c!apa,
+ \c!breedte=2em,
+ \c!hang=,
+ \c!monster=,
+ \c!voor=,
+ \c!na=,
+ \c!tussen=,
+ \c!kopletter=,
+ \c!kopkleur=,
+ \c!letter=,
+ \c!kleur=,
+ \c!blokwijze=\v!per\v!tekst,
+ \c!wijze=\v!per\v!tekst,
+ \c!tekst=,
+ \c!links={[},
+ \c!rechts={]}]
+
+\stelciterenin
+ [\c!letter=\v!normaal,
+ \c!kleur=,
+ \c!voor=\startsmaller,
+ \c!na=\stopsmaller]
+
+\protect
+
+\endinput