summaryrefslogtreecommitdiff
path: root/tex/context/base/core-int.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-int.tex')
-rw-r--r--tex/context/base/core-int.tex1978
1 files changed, 1976 insertions, 2 deletions
diff --git a/tex/context/base/core-int.tex b/tex/context/base/core-int.tex
index 74377e35a..e99c6af56 100644
--- a/tex/context/base/core-int.tex
+++ b/tex/context/base/core-int.tex
@@ -15,6 +15,66 @@
\writestatus{loading}{Context Core Macros / Interaction}
+\startmessages dutch library: interactions
+ title: interactie
+ 1: aspect ratio -- x -- (b x h)
+ 2: actief
+ 3: niet actief
+ 4: geen paginasynchronisatie (--) in hmode
+\stopmessages
+
+\startmessages english library: interactions
+ title: interaction
+ 1: aspect ratio -- x -- (b x h)
+ 2: active
+ 3: inactive
+ 4: no pagesynchronisation (--) in hmode
+\stopmessages
+
+\startmessages german library: interactions
+ title: Interaktion
+ 1: Aspekt des Verhaeltnis -- x -- (B x H)
+ 2: aktiv
+ 3: inaktiv
+ 4: keine Seitensynchronisation (--) im hmode
+\stopmessages
+
+\startmessages czech library: interactions
+ title: interakce
+ 1: pomer -- x -- (s x v)
+ 2: aktivni
+ 3: neaktivni
+ 4: zadna strankova synchronizace (--) v hmode
+\stopmessages
+
+\startmessages dutch library: versions
+ title: versie
+ 1: er mankeert een @+
+ 2: markeren pagina's
+ 3: geselecteerde pagina's: --
+\stopmessages
+
+\startmessages english library: versions
+ title: version
+ 1: missing @+
+ 2: marking pages
+ 3: selected pages: --
+\stopmessages
+
+\startmessages german library: versions
+ title: Version
+ 1: fehlendes @+
+ 2: Erstelle Seiten
+ 3: Ausgewaehlte Seiten: --
+\stopmessages
+
+\startmessages czech library: versions
+ title: verze
+ 1: postradam @+
+ 2: oznacuji se strany
+ 3: oznacene strany: --
+\stopmessages
+
\unprotect
\definesystemconstant {link}
@@ -168,6 +228,1761 @@
\fi
\egroup}
+\let\setupinteractionscreens\empty
+
+\def\berekeninteractiescherm%
+ {\doifelse{\@@scbreedte}{\v!passend}
+ {\!!widtha=\linkerrandbreedte
+ \advance\!!widtha by \linkerrandafstand
+ \advance\!!widtha by \paginascheiding
+ \advance\!!widtha by \linkermargebreedte
+ \advance\!!widtha by \linkermargeafstand
+ \ifdim\rugwit>\!!widtha\ifdim\rugwit>\!!zeropoint\relax
+ \advance\rugwit by -\!!widtha
+ \fi\fi
+ \advance\!!widtha by \zetbreedte
+ \advance\!!widtha by \rechtermargeafstand
+ \advance\!!widtha by \rechtermargebreedte
+ \advance\!!widtha by \paginascheiding
+ \advance\!!widtha by \rechterrandafstand
+ \advance\!!widtha by \rechterrandbreedte
+ \scratchdimen=\@@scrugwit
+ \advance\scratchdimen by \@@scrugoffset
+ \advance\!!widtha by 2\scratchdimen}
+ {\doifelse{\@@scbreedte}{\v!max}
+ {\!!widtha=\printpapierbreedte}
+ {\!!widtha=\@@scbreedte}}%
+ \doifelse{\@@schoogte}{\v!passend}
+ {\!!heighta=\bovenhoogte
+ \advance\!!heighta by \bovenafstand
+ \ifdim\kopwit>\!!heighta\ifdim\kopwit>\!!zeropoint\relax
+ \advance\kopwit by -\!!heighta
+ \fi\fi
+ \advance\!!heighta by \zethoogte
+ \advance\!!heighta by \onderafstand
+ \advance\!!heighta by \onderhoogte
+ \scratchdimen=\@@sckopwit
+ \advance\scratchdimen by \@@sckopoffset
+ \advance\!!heighta by 2\scratchdimen}
+ {\doifelse{\@@schoogte}{\v!max}
+ {\!!heighta=\printpapierhoogte}
+ {\!!heighta=\@@schoogte}}%
+ \doif{\@@scwachttijd}{\v!geen}{\def\@@scwachttijd{0}}}
+
+\def\initializeidentity% The macro is not to be changed;
+ {\iflocation % only the \@@ia-variables may be set!
+ \dosetupidentity % Although ConTeXt is the producer
+ {\@@iatitel} % we no longer set this field, since
+ {\@@iasubtitel} % we don't want to be bothered with
+ {\@@iaauteur} % remarks about third party documents
+ {\jobname.tex} % and/or associated with documents
+ {\@@iadatum}% % produced outside our control.
+ \global\let\initializeidentity\relax
+ \fi}
+
+\appendtoks \initializeidentity \to \everyshipout
+
+\def\initializepaper%
+ {\bgroup
+ \doif\@@pcstatus\v!start\locationfalse
+ \iflocation % without screen settings
+ \egroup
+ \dosetuppaper
+ {\papierformaat}
+ {\the\papierbreedte}
+ {\the\papierhoogte}%
+ \else
+ \egroup
+ \dosetuppaper
+ {\printpapierformaat}
+ {\the\printpapierbreedte}
+ {\the\printpapierhoogte}%
+ \fi}
+
+\def\doinitializepaper%
+ {\bgroup
+ \berekeninteractiescherm
+ \ifdim\!!widtha>\papierbreedte\ifdim\!!widtha>\!!zeropoint
+ \papierbreedte=\!!widtha
+ \fi\fi
+ \ifdim\!!heighta>\papierhoogte\ifdim\!!heighta>\!!zeropoint
+ \papierhoogte=\!!heighta
+ \fi\fi
+ \dosetuppaper
+ {\printpapierformaat}
+ {\the\papierbreedte}
+ {\the\papierhoogte}%
+ \egroup}
+
+\def\dosetupinteractionscreens% met a, b en \number
+ {\doifnot{\@@pcstatus}{\v!start}
+ {\bgroup
+ \berekeninteractiescherm
+ \processaction
+ [\@@scoptie]
+ [ \v!max=>\!!counte=1,
+ \v!bookmark=>\!!counte=2,
+ \s!unknown=>\!!counte=0,
+ \s!default=>\!!counte=0]%
+ \showmessage{\m!interactions}{1} % niet waterdicht
+ {\@EA\withoutpt\the\!!widtha,\@EA\withoutpt\the\!!heighta}%
+ \dosetupscreen
+ {\number\rugoffset}{\number\kopoffset}
+ {\number\!!widtha}{\number\!!heighta}
+ {\the\!!counte}%
+ \egroup}}
+
+\def\dostelinteractieschermin[#1]%
+ {\getparameters[\??sc][#1]%
+ \ifproductionrun
+ \let\initializepaper\doinitializepaper
+ \let\setupinteractionscreens\dosetupinteractionscreens
+ \fi}
+
+\def\stelinteractieschermin%
+ {\dosingleempty\dostelinteractieschermin}
+
+%D Due to requests I finally decided to support bookmarks, a
+%D driver dependant way of showing tables of content. The most
+%D simple way of support is hooking bookmark generation into
+%D the existing list mechanisms. That way users can generate
+%D bookmarks automatically, although its entirely valid to add
+%D bookmarks by defining alternative ones. These will be added
+%D at the appropriate place in the list.
+
+% \hoofdstuk{het eerste hoofdstuk}
+%
+% \bookmark {de eerste bookmark} % optional overuled hoofdstuk
+%
+% .... text ....
+%
+% \placebookmarks [hoofdstuk,paragraaf,subparagraaf,subsubparagraaf,mylist]
+% [open list]
+%
+% \bookmark[mylist]{whatever}
+
+\def\@@bookmark {bm::}
+\def\@@booklevel{bl::}
+\def\@@bookcount{bc::}
+
+\definieerlijst[\@@bookmark]
+
+\appendtoks\flushpostponedbookmark\to\everypar
+\appendtoks\flushpostponedbookmark\to\neverypar
+
+\let\flushpostponedbookmark\relax
+
+\def\simplebookmark#1%
+ {\ifx\flushpostponedbookmark\relax \else
+ \bgroup
+ \convertargument#1\to\ascii
+ \writestatus{system}{clashing bookmarks: \ascii}% ECHTE MESSAGE MAKEN
+ \egroup
+ \fi
+ \gdef\flushpostponedbookmark%
+ {\global\let\flushpostponedbookmark\relax
+ \schrijfnaarlijst[\@@bookmark]{}{#1}}}
+
+\def\complexbookmark[#1]#2%
+ {\schrijfnaarlijst[#1]{}{#2}}
+
+\definecomplexorsimple\bookmark
+
+%\def\insertbookmark[#1]#2%
+% {\bgroup
+% \doifreferencefoundelse{#1}
+% {\doinsertbookmark{0}{0}{#2}{\currentrealreference}}{1}
+% {\unknownreference{#1}}%
+% \egroup}
+
+\newif\iftracebookmarks \tracebookmarksfalse
+
+\let\tracebookmarks\tracebookmarkstrue
+
+\def\placebookmarks%
+ {\dodoubleempty\doplacebookmarks}
+
+\def\doplacebookmarks[#1][#2]%
+ {\iflocation
+ \iffirstargument
+ \bgroup
+ \ifsecondargument
+ \edef\openbookmarklist{#2}%
+ \else
+ \let\openbookmarklist=\empty
+ \fi
+ \global\let\bookmarklevellist=\empty
+ \def\bookmarklevelcount{0}%
+ \doprocessbookmarks[#1]\dogetbookmarkelement
+ \dolijstelement{}{}{}{}{}{}% needed to finish the first pass
+ \doprocessbookmarks[#1]\doputbookmarkelement
+ \flushbookmark
+ \egroup
+ \else
+ \expanded{\placebookmarks\@EA[\getvalue{\??ih\v!inhoud\c!lijst}]}%
+ \fi
+ \fi}
+
+\def\doprocessbookmarks[#1]#2%
+ {\let\dolijstelement=#2\relax
+ \scratchcounter=0
+ \def\docommando##1%
+ {\advance\scratchcounter by 1
+ \getlistlevel[##1]\listlevel{\the\scratchcounter}%
+ \setxvalue{\@@bookcount\the\scratchcounter}{1}%
+ \setxvalue{\@@booklevel##1}{\listlevel}}%
+ \processcommalist[#1]\docommando
+ \setxvalue{\@@bookcount0}{1}%
+ \global\chardef\currentbookmarklevel=0
+ \global\chardef\previousbookmarklevel=0
+ \doutilities{#1,\@@bookmark}{\jobname}{#1}{}{}}
+
+\def\dodogetbookmarkelement#1#2#3#4#5#6%
+ {%\doifsomething{#1}
+ % {\global\chardef\currentbookmarklevel=\getvalue{\@@booklevel#1}}%
+ \doifelsenothing{#1}
+ {\global\chardef\currentbookmarklevel=0\relax}
+ {\global\chardef\currentbookmarklevel=\getvalue{\@@booklevel#1}\relax}%
+ \ifnum\currentbookmarklevel>\previousbookmarklevel
+ \setxvalue{\@@bookcount\the\currentbookmarklevel}{1}%
+ \else\ifnum\currentbookmarklevel<\previousbookmarklevel
+ \bgroup
+ \!!counta=\previousbookmarklevel
+ \doloop
+ {\let\bookmarktag=\empty
+ \!!countb=\!!counta
+ \advance\!!countb by -1
+ \dorecurse{\!!countb}
+ {\edef\bookmarktag%
+ {\bookmarktag\getvalue{\@@bookcount\recurselevel}:}}%
+ \edef\bookmarklevelcount%
+ {\getvalue{\@@bookcount\the\!!counta}}%
+ \xdef\bookmarklevellist%
+ {\bookmarklevellist/\bookmarktag:\bookmarklevelcount/}%
+ \advance\!!counta by -1
+ \ifnum\!!counta=\currentbookmarklevel
+ \exitloop
+ \fi}%
+ \egroup
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\currentbookmarklevel\endcsname\relax
+ \else
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\previousbookmarklevel\endcsname\relax
+ \fi\fi
+ \global\utilitydonetrue
+ \global\chardef\previousbookmarklevel=\currentbookmarklevel}
+
+\def\getbookmarklevelcount%
+ {\@EA\def\@EA\docommando\@EA[\@EA##\@EA1\@EA/\bookmarktag:##2/##3]%
+ {\def\bookmarklevelcount{##2}}%
+ \@EA\@EA\@EA\docommando\@EA\@EA\@EA[\@EA\bookmarklevellist\@EA/\bookmarktag:0/]}
+
+\def\dodoputbookmarkelement#1#2#3#4#5#6%
+ {%\doifsomething{#1}
+ % {\global\chardef\currentbookmarklevel=\getvalue{\@@booklevel#1}}%
+ \doifelsenothing{#1}
+ {\global\chardef\currentbookmarklevel=0\relax}
+ {\global\chardef\currentbookmarklevel=\getvalue{\@@booklevel#1}\relax}%
+ \ifnum\currentbookmarklevel>\previousbookmarklevel
+ \setxvalue{\@@bookcount\the\currentbookmarklevel}{1}%
+ \else\ifnum\currentbookmarklevel<\previousbookmarklevel
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\currentbookmarklevel\endcsname\relax
+ \else
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\previousbookmarklevel\endcsname\relax
+ \fi\fi
+ \let\bookmarktag=\empty
+ \!!countb\currentbookmarklevel
+ \dorecurse{\!!countb}
+ {\edef\bookmarktag%
+ {\bookmarktag\getvalue{\@@bookcount\recurselevel}:}}%
+ \getbookmarklevelcount
+ \iftracebookmarks
+ \bgroup
+ \par
+ \bookmarktag\quad
+ \dorecurse{\currentbookmarklevel}{\quad}\unskip#1\quad
+ (\bookmarklevelcount)\quad
+ \egroup
+ \fi
+ \global\chardef\previousbookmarklevel=\currentbookmarklevel
+ \global\utilitydonetrue
+ \insertsomebookmark
+ {#1}
+ {\the\currentbookmarklevel}
+ {\bookmarklevelcount}
+ {#4}
+ {#6}}
+
+\def\dogetbookmarkelement#1#2#3#4#5#6%
+ {\doifnot{#1}{\@@bookmark}
+ {\dodogetbookmarkelement{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\def\doputbookmarkelement#1#2#3#4#5#6%
+ {\doifelse{#1}{\@@bookmark}
+ {\localbookmark{#4}}
+ {\flushbookmark
+ \dodoputbookmarkelement{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\let\flushbookmark=\relax
+\let\localbookmark=\gobbleoneargument
+
+\def\insertsomebookmark#1#2#3#4#5%
+ {\gdef\flushbookmark%
+ {\doinsertsomebookmark{#1}{#2}{#3}{#4}{#5}{g}}%
+ \gdef\localbookmark##1%
+ {\doinsertsomebookmark{#1}{#2}{#3}{##1}{#5}{l}}}
+
+\def\doinsertsomebookmark#1#2#3#4#5#6%
+ {\global\utilitydonetrue
+ \global\let\localbookmark=\gobbleoneargument
+ \global\let\flushbookmark=\relax
+ \doifinstringelse{#1}{\openbookmarklist}
+ {\chardef\openbookmark=1}
+ {\chardef\openbookmark=0}%
+ \iftracebookmarks(#6: #4)\quad(\the\openbookmark)\par\fi
+ \doinsertbookmark{#2}{#3}{#4}{#5}{\openbookmark}}
+
+% \startinteractiemenu[rechts]
+% \but [eerste] eerste \\
+% \txt hello world \\
+% \but [tweede] tweede \\
+% \nop \\
+% \but [tweede] tweede \\
+% \rul whow \\
+% \but [tweede] tweede \\
+% \raw hello world \\
+% \but [tweede] tweede \\
+% \com \vfill \\
+% \but [derde] derde \\
+% \stopinteractiemenu
+
+\newif\iflocationmenupermitted
+
+\def\testinteractiemenu#1%
+ {\iflocation
+ \doifelse{\@@iamenu}{\v!aan}
+ {\doifelsevalue{\??am#1\c!status}{\v!start}
+ {\global\locationmenupermittedtrue}
+ {\global\locationmenupermittedfalse}}
+ {\global\locationmenupermittedfalse}%
+ \else
+ \global\locationmenupermittedfalse
+ \fi}
+
+\def\doblokkeerinteractiemenu[#1][#2][#3]%
+ {\def\dodoblokkeerinteractiemenu##1%
+ {\doifelse{#3}{}
+ {\setevalue{\??am##1\c!blokkade}{}}
+ {\edef\interactieblokkade{\getvalue{\??am##1\c!blokkade}}
+ \def\docommando####1%
+ {#1{####1}{\interactieblokkade}}% #1 = \remove or \add
+ \processcommalist[#3]\docommando
+ \setevalue{\??am##1\c!blokkade}{\interactieblokkade}}}%
+ \processcommalist[#2]\dodoblokkeerinteractiemenu}
+
+\def\blokkeerinteractiemenu%
+ {\dotripleempty\doblokkeerinteractiemenu[\addtocommalist]}
+
+\def\geefinteractiemenuvrij%
+ {\dotripleempty\doblokkeerinteractiemenu[\removefromcommalist]}
+
+% ja : kader/achtergrond met tekst
+% leeg : kader/achtergrond maar geen tekst
+% nee : alleen ruimte reserveren
+% geen : helemaal weglaten
+
+\newif\iflocationdummy
+\newif\ifskippedmenuitem
+
+\def\dosetlocationbox#1[#2]#3#4%
+ {\global\skippedmenuitemfalse
+ \setbox\locationbox=\hbox
+ {% anders cyclische aanroep !
+ \resetgoto
+ \iflocationdummy
+ \edef\locationboxborder{\getvalue{#1\c!kader}}%
+ \edef\locationboxbackground{\getvalue{#1\c!achtergrond}}%
+ \else
+ \edef\locationboxborder{\v!uit}%
+ \edef\locationboxbackground{}%
+ \fi
+ \localframed[#1]
+ [\c!kader=\locationboxborder,
+ \c!achtergrond=\locationboxbackground,
+ #2]
+ {\dolocationattributes{#1}\c!letter\c!kleur{#3}}}%
+ \hbox{#4{\box\locationbox}}}%{\copy\locationbox}}}
+
+\def\setlocationboxyes#1[#2]#3[#4]%
+ {\ifx\currentouterreference\empty
+ \ifrealreferencepage\!!doneatrue\else\!!doneafalse\fi
+ %\doifelse{\currentrealreference}{\realfolio}
+ % {\!!doneatrue}{\!!doneafalse}%
+ \else
+ \!!doneafalse
+ \fi
+ \if!!donea
+ \ifcase0\getvalue{#1\c!zelfdepagina}\relax
+ \bgroup
+ \locationdummytrue
+ \setevalue{#1\c!kleur}{\getvalue{#1\c!contrastkleur}}%
+ \dosetlocationbox{#1}[#2,\c!leeg=\v!nee]{#3}{\gotolocation{#4}}%
+ \egroup
+ \or
+ \locationdummytrue
+ \dosetlocationbox{#1}[#2,\c!leeg=\v!ja]{#3}{\gotolocation{#4}}%
+ \or
+ \locationdummyfalse
+ \dosetlocationbox{#1}[#2,\c!leeg=\v!ja]{#3}{\gotolocation{#4}}%
+ \or
+ \locationdummyfalse
+ \global\skippedmenuitemtrue
+ \fi
+ \else
+ \locationdummytrue
+ \dosetlocationbox{#1}[#2,\c!leeg=\v!nee]{#3}{\gotolocation{#4}}%
+ \fi}
+
+\def\setlocationboxnop#1[#2]#3[#4]%
+ {\ifcase\getvalue{#1\c!onbekendeverwijzing}\relax
+ \locationdummytrue
+ \dosetlocationbox{#1}[#2,\c!leeg=\v!nee]{#3}{}%
+ \or
+ \locationdummytrue
+ \dosetlocationbox{#1}[#2,\c!leeg=\v!ja]{#3}{}%
+ \or
+ \locationdummyfalse
+ \dosetlocationbox{#1}[#2,\c!leeg=\v!ja]{#3}{}%
+ \or
+ \locationdummyfalse
+ \global\skippedmenuitemtrue
+ \fi}
+
+%\def\setlocationbox#1[#2]#3[#4]%
+% {\doifinstringelse{#4}{\getvalue{#1\c!blokkade}}
+% {\setlocationboxnop{#1}[#2]{#3}[#4]}
+% {\doifreferencefoundelse{#4}
+% {\setlocationboxyes{#1}[#2]{#3}[#4]}
+% {\setlocationboxnop{#1}[#2]{#3}[#4]%
+% \unknownreference{#4}}}}
+
+\def\setlocationbox#1[#2]#3[#4]%
+ {\doifreferencepermittedelse{#4}{\getvalue{#1\c!blokkade}}
+ {\setlocationboxyes{#1}[#2]{#3}[#4]}
+ {\setlocationboxnop{#1}[#2]{#3}[#4]}}
+
+%\dolocationattributes{#1}\c!letter\c!kleur{#3}}}%
+
+\def\dodosetlocationcommanditem#1#2#3[#4]#5\\%
+ {\bgroup
+ \leavevmode
+ \doifelse{#5}{[]}
+ {\doifinstringelse{=}{#4}
+ {#3}
+ {\setlocationbox{\??am#1}[]{#3}[#4]}}
+ {#3}%
+ \ifskippedmenuitem \else
+ \getvalue{\??am#1#2}%
+ \fi
+ \egroup}
+
+\def\dosetlocationcommanditem#1#2#3%
+ {\dodosetlocationcommanditem{#1}{#2}#3[]\\}
+
+\def\setlocationnop#1[#2]#3%
+ {\localframed[#1][#2]{#3}}
+
+\def\executeamboxcommands#1#2#3#4#5%
+ {\processaction
+ [\getvalue{\??am#1\c!dummy}]
+ [ \v!ja=>\chardef\handleunknownmenuitem=0\relax,
+ \v!leeg=>\chardef\handleunknownmenuitem=1\relax,
+ \v!nee=>\chardef\handleunknownmenuitem=2\relax]%
+ \getvalue{\??am#1#3}\relax
+ \ifextendedmenu
+ \setamboxcommands{#1}{#4}%
+ \def\next%
+ {\ignorespaces#2}%
+ \else
+ \def\dolocationcommand##1%
+ {\dosetlocationcommanditem{#1}{#4}{##1}}%
+ \def\next%
+ {\processcommalist[#2]\dolocationcommand}%
+ \fi
+ \next
+ \unskip
+ \getvalue{\??am#1#5}}
+
+\def\setamboxcommands#1#2%
+ {\def\@@amboxcommand##1\\%
+ {\bgroup
+ \leavevmode\ignorespaces##1\unskip\relax
+ \ifskippedmenuitem \else
+ \getvalue{\??am#1#2}%
+ \fi
+ \egroup
+ \ignorespaces}%
+ \def\raw[##1]##2\\%
+ {\@@amboxcommand\naarbox{\ignorespaces##2\unskip}[##1]\\}%
+ \def\but[##1]##2\\%
+ {\@@amboxcommand\setlocationbox{\??am#1}[]{\ignorespaces##2\unskip}[##1]\\}%
+ \def\got[##1]##2\\% pas op! offset
+ {\@@amboxcommand\setlocationbox{\??am#1}[\c!kader=\v!uit,\c!achtergrond=]{\ignorespaces##2\unskip}[##1]\\}%
+ \def\nop##1\\%
+ {\@@amboxcommand\phantom{\localframed[\??am#1][]{}}\\}%
+ \def\txt##1\\%
+ {\@@amboxcommand\localframed[\??am#1][\c!kader=\v!uit,\c!achtergrond=]{\ignorespaces##1\unskip}\\}%
+ \def\rul##1\\%
+ {\@@amboxcommand\localframed[\??am#1][]{\ignorespaces##1\unskip}\\}%
+ \def\com##1\\%
+ {\ignorespaces##1\unskip\ignorespaces}}
+
+\def\@@amhbox#1#2#3#4%
+ {\testinteractiemenu{#3}%
+ \iflocationmenupermitted
+ \bgroup
+\showcomposition
+ \def\dolocationcommand##1%
+ {\dosetlocationcommanditem{#3}{##1}}%
+ \dimen0=\zetbreedte
+ \advance\dimen0 by \pagebackgroundhoffset
+ \advance\dimen0 by \pagebackgroundhoffset
+ \advance\dimen0 by -\getvalue{\??am#3\c!linkeroffset}%
+ \advance\dimen0 by -\getvalue{\??am#3\c!rechteroffset}%
+ \setbox0=\hbox to \dimen0
+ {\forgetall
+ \executeamboxcommands{#3}{#4}\c!links\c!midden\c!rechts}%
+ \wd0=\zetbreedte
+ % geen \ht=#2 setting (yet)
+ \hskip-\pagebackgroundhoffset
+ \hskip \getvalue{\??am#3\c!linkeroffset}%
+ \box0\relax
+ \egroup
+ \else
+ #1\relax
+ \fi}
+
+\def\@@amvbox#1#2#3#4% don't change skipping, this one works!
+ {\testinteractiemenu{#3}%
+ \iflocationmenupermitted
+ \bgroup
+\showcomposition
+ \dimen0=\teksthoogte
+ \advance\dimen0 by \pagebackgroundvoffset
+ \advance\dimen0 by \pagebackgroundvoffset
+ \advance\dimen0 by \pagebackgrounddepth
+ \advance\dimen0 by -\getvalue{\??am#3\c!bovenoffset}%
+ \advance\dimen0 by -\getvalue{\??am#3\c!onderoffset}%
+ \setbox0=\vbox to \dimen0
+ {\forgetall % Voor't geval de afstand
+ \stelblankoin[\v!standaard]% % (tijdelijk) is aangepast.
+ \hsize#2\relax
+ \executeamboxcommands{#3}{#4}\c!voor\c!tussen\c!na}%
+ \setbox0=\vbox
+ {\vskip-\pagebackgroundvoffset
+ \vskip\getvalue{\??am#3\c!bovenoffset}%
+ \ht0=\!!zeropoint
+ \box0
+ \vskip\pagebackgroundvoffset}% overbodig
+ \ht0=\teksthoogte
+ \wd0=#2\relax
+ \box0
+ \egroup
+ \else
+ #1\relax
+ \fi}
+
+\setvalue{\??am\s!do\v!rechts}%
+ {\@@amvbox{\dodummypageskip\v!rechts}\rechterrandbreedte}
+
+\setvalue{\??am\s!do\v!links}%
+ {\@@amvbox{\dodummypageskip\v!links}\linkerrandbreedte}
+
+\setvalue{\??am\s!do\v!boven}%
+ {\@@amhbox{\dodummypageskip\v!boven}\bovenhoogte}
+
+\setvalue{\??am\s!do\v!onder}%
+ {\@@amhbox{\dodummypageskip\v!onder}\onderhoogte}
+
+\def\dointeractiemenu#1#2%
+ {\getvalue{\??am\s!do\getvalue{\??am#1\c!plaats}}{#1}{#2}}
+
+\unexpanded\def\interactiemenu[#1]%
+ {\getvalue{\??am\c!menu#1}}
+
+\def\horizontaalinteractiemenu#1#2#3#4%
+ {\ifdim#2>\!!zeropoint % new
+ \dimen2=\!!zeropoint
+ \setbox0=\hbox
+ {\def\docommando##1%
+ {\doifnotvalue{\??am##1\c!status}{\v!geen}
+ {\hskip\dimen2
+ \setbox2=\hbox to #2
+ {\getvalue{\??am##1#3}\interactiemenu[##1]\getvalue{\??am##1#4}}%
+ \doifelsevalue{\??am##1\c!afstand}{\v!overlay}
+ {\dimen2=\!!zeropoint
+ \wd2=\!!zeropoint}%
+ {\dimen2=\getvalue{\??am##1\c!afstand}}%
+ \box2}}%
+ \startinteractie
+ \processcommacommand[\getvalue{\??am#1}]\docommando
+ \stopinteractie}%
+ \wd0=#2\relax
+ \box0\relax
+ \fi}
+
+\def\vertikaalinteractiemenu#1#2#3#4%
+ {\ifdim#2>\!!zeropoint % new
+ \dimen2=\!!zeropoint
+ \setbox0=\vbox
+ {\def\docommando##1%
+ {\doifnotvalue{\??am##1\c!status}{\v!geen}
+ {\vskip\dimen2
+ \setbox2=\vbox to #2
+ {\getvalue{\??am##1#3}\interactiemenu[##1]\getvalue{\??am##1#4}}%
+ \doifelsevalue{\??am##1\c!afstand}{\v!overlay}
+ {\dimen2=\!!zeropoint
+ \offinterlineskip
+ \dp2=\!!zeropoint
+ \ht2=\!!zeropoint}%
+ {\dimen2=\getvalue{\??am##1\c!afstand}}%
+ \box2}}%
+ \startinteractie
+ \processcommacommand[\getvalue{\??am#1}]\docommando
+ \stopinteractie}%
+ \ht0=#2\relax
+ \dp0=\!!zeropoint
+ \box0\relax
+ \fi}
+
+\def\interactiemenus[#1]%
+ {\iflocation
+ \processaction
+ [#1]
+ [ \v!links=>\horizontaalinteractiemenu\v!links\linkerrandbreedte\c!links\c!rechts,
+ \v!rechts=>\horizontaalinteractiemenu\v!rechts\rechterrandbreedte\c!links\c!rechts,
+ \v!boven=>\vertikaalinteractiemenu\v!boven\bovenhoogte\c!voor\c!na,
+ \v!onder=>\vertikaalinteractiemenu\v!onder\onderhoogte\c!voor\c!na]%
+ \else
+ \dodummypageskip{#1}%
+ \fi}
+
+\setvalue{\??am\v!links }{}
+\setvalue{\??am\v!rechts}{}
+\setvalue{\??am\v!boven }{}
+\setvalue{\??am\v!onder }{}
+
+\newif\ifextendedmenu
+
+\def\dodefinieerinteractiemenu[#1][#2][#3]%
+ {\ConvertToConstant\doifelse{#3}{}
+ {\setvalue{\??am\c!menu#1}%
+ {\extendedmenufalse\dointeractiemenu{#1}{#2}}}
+ {\setvalue{\??am\c!menu#1}%
+ {\extendedmenufalse\dointeractiemenu{#1}{}}%
+ \presetlocalframed[\??am#1]%
+ \letvalue{\??am#1\c!blokkade}\empty
+ \edef\!!stringe{\getvalue{\??am#2}}%
+ \addtocommalist{#1}\!!stringe
+ \letvalue{\??am#2}=\!!stringe
+ \doifnot{#1}{#2}
+ {\copyparameters[\??am#1][\??am#2]
+ [\c!links,\c!midden,\c!rechts,\c!voor,\c!na,\c!tussen,
+ \c!breedte,\c!hoogte,\c!afstand,\c!offset,\c!kader,
+ \c!achtergrond,\c!achtergrondkleur,\c!achtergrondraster,
+ \c!letter,\c!kleur,\c!contrastkleur,\c!zelfdepagina,\c!onbekendeverwijzing,
+ \c!linkeroffset,\c!rechteroffset,\c!bovenoffset,\c!onderoffset]}%
+ \ConvertToConstant\doifinstringelse{=}{#3}
+ {\getparameters[\??am#1][\c!plaats=#2,#3]}%
+ {\doifnot{#2}{#3}
+ {\copyparameters[\??am#1][\??am#3]
+ [\c!links,\c!midden,\c!rechts,\c!voor,\c!na,\c!tussen,
+ \c!breedte,\c!hoogte,\c!afstand,\c!offset,\c!kader,
+ \c!achtergrond,\c!achtergrondkleur,\c!achtergrondraster,
+ \c!letter,\c!kleur,\c!zelfdepagina,\c!onbekendeverwijzing,
+ \c!linkeroffset,\c!rechteroffset,\c!bovenoffset,\c!onderoffset]}%
+ \getparameters[\??am#1][\c!plaats=#2]}}}
+
+\def\definieerinteractiemenu%
+ {\dotripleempty\dodefinieerinteractiemenu}
+
+\processbetween{\e!interactiemenu}\dostartinteractiemenu
+
+\def\dostartinteractiemenu#1%
+ {\dodostartinteractiemenu#1\dodostopinteractiemenu}
+
+\def\dodostartinteractiemenu[#1]#2\dodostopinteractiemenu%
+ {\setvalue{\??am\c!menu#1}{\extendedmenutrue\dointeractiemenu{#1}{#2}}}
+
+\def\dododostelinteractiemenuin#1%
+ {\processaction
+ [\getvalue{#1}]
+ [ \v!ja=>\setvalue{#1}{0},
+ \v!leeg=>\setvalue{#1}{1},
+ \v!nee=>\setvalue{#1}{2},
+ \v!geen=>\setvalue{#1}{3},
+ \s!default=>\setvalue{#1}{1}]}
+
+\def\dodostelinteractiemenuin[#1][#2]%
+ {\def\docommando##1%
+ {\getparameters[\??am##1][#2]%
+ \dododostelinteractiemenuin{\??am##1\c!onbekendeverwijzing}%
+ \dododostelinteractiemenuin{\??am##1\c!zelfdepagina}}%
+ \processcommalist[#1]\docommando}
+
+\def\dostelinteractiemenuin[#1][#2]%
+ {\ConvertToConstant\doifinstringelse{=}{#2}
+ {\dodostelinteractiemenuin[#1][#2]}
+ {\dodefinieerinteractiemenu[#1][#2][]}}
+
+\def\stelinteractiemenuin%
+ {\dodoubleargument\dostelinteractiemenuin}
+
+% \scherm moet worden als \pagina
+
+\def\simplescherm% zou niet nodig moeten zijn
+ {\iflocation
+ \pagina[\v!ja]%
+ \fi}
+
+\def\complexscherm[#1]%
+ {\iflocation
+ \pagina[#1]%
+ \fi}
+
+\definecomplexorsimple\scherm
+
+\def\domenubutton[#1][#2]#3[#4]%
+ {\bgroup
+ \locationdummytrue
+ \iffirstargument
+ \ifsecondargument
+ \setlocationbox{\??am#1}[#2]{#3}[#4]%
+ \else
+ \ConvertToConstant\doifinstringelse{=}{#1}
+ {\setlocationbox{\??bt}[#1]{#3}[#4]}
+ {\setlocationbox{\??am#1}[]{#3}[#4]}%
+ \fi
+ \else
+ \setlocationbox{\??bt}[]{#3}[#4]%
+ \fi
+ \egroup}
+
+\unexpanded\def\menubutton%
+ {\dodoubleempty\domenubutton}
+
+\def\domenubox[#1][#2]#3%
+ {\bgroup
+ \def\setlocationbox##1[##2]##3[##4]%
+ {\localframed[##1][##2]%
+ {\dolocationattributes{##1}\c!letter\c!kleur{##3}}}%
+ \domenubutton[#1][#2]#3[]%
+ \egroup}
+
+\def\menubox%
+ {\dodoubleempty\domenubox}
+
+% Hier volgen de synchronisatiemacro's:
+
+\def\syncprefix{sync}
+\def\syncmarker{syncmark}
+
+%\definieermarkering[\syncmarker]
+%\stelmarkeringin[\syncmarker][\c!expansie=\v!ja]
+
+\newmark\syncmarker
+
+\newcounter\synccounter
+
+\newif\ifsynchronisation
+
+\def\startsynchronisatie%
+ {\iflocation\ifsynchronisation
+ \doglobal\increment\synccounter
+ \fi\fi}
+
+\def\stopsynchronisatie%
+ {\iflocation\ifsynchronisation
+ %\thisisdestination{\syncprefix:\synccounter}%
+ \paginareferentie[\syncprefix:\synccounter]%
+ \ifvmode
+ \@EA\setmark\@EA\syncmarker\@EA{\synccounter} % \marking[\syncmarker]{\synccounter}%
+ \else
+ \showmessage{\m!interactions}{4}{\synccounter}%
+ \fi
+ \fi\fi}
+
+\def\synchroniseer%
+ {\startsynchronisatie
+ \stopsynchronisatie}
+
+\def\dostelsynchronisatiein[#1]%
+ {\getparameters[\??sy][#1]%
+ \doifelse{\@@systatus}{\v!start}
+ {\synchronisationtrue}
+ {\synchronisationfalse}}
+
+\def\stelsynchronisatiein%
+ {\dosingleargument\dostelsynchronisatiein}
+
+\def\definieersynchronisatie%
+ {\dosingleargument\dodefinieersynchronisatie}
+
+\def\stelsynchronisatiebalkin%
+ {\dodoubleargument\getparameters[\??ba]}
+
+\presetlocalframed[\??ba]
+
+\setvalue{synchronisatie\v!pagina}[#1]%
+ {\bgroup
+ \setupinteraction[\c!breedte=\!!zeropoint]%
+ \setbox0=\hbox
+ {\localframed[\??ba][]%
+ {\dolocationattributes\??ba\c!letter\c!kleur{\strut\@@batekst}}}%
+ \mindermeldingen
+ \def\onder%
+ {\leaders\hrule\!!depth1ex\!!height-.5ex\hfil}%
+ \def\boven##1##2##3%
+ {\dimen0=\wd0
+ \divide\dimen0 by 3
+ \multiply\dimen0 by ##2\relax
+ \dimen2=.25em
+ \advance\dimen0 by -##3\dimen2
+ %\gotodestination
+ % {}{#1}{\syncprefix:##1}{}
+ % {\hbox to \dimen0{\color[\locationcolor\@@bakleur]{\onder}}}}%
+ \naarbox
+ {\hbox to \dimen0{\color[\locationcolor\@@bakleur]{\onder}}}%
+ [#1::\syncprefix:##1]}%
+ \hbox
+ {\def\check##1##2%
+ {\edef##2{0##1\syncmarker}%
+ \ifnum0##2=0 \def##2{1}\fi}%
+ \check\gettopmark\top
+ \check\getfirstmark\first
+ \check\getbotmark\bot
+ \setbox2=\hbox to \wd0
+ {\ifnum\top=\first\relax
+ \ifnum\first=\bot\relax
+ \boven\first30\relax
+ \else
+ \boven\first21\hss\boven\bot11\relax
+ \fi
+ \else
+ \ifnum\first=\bot\relax
+ \boven\top11\hss\boven\first21\relax
+ \else
+ \boven\top11\hss\boven\first11\hss\boven\bot11\relax
+ \fi
+ \fi}%
+ \wd2=\!!zeropoint\box2
+ \box0\relax}%
+ \egroup}
+
+\setvalue{synchronisatie\v!lokaal}[#1]%
+ {\bgroup
+ \setupinteraction[\c!breedte=\!!zeropoint]%
+ \def\blackrule{\hbox{\vrule\!!height.5em\!!width.5em}}%
+ %\gotodestination
+ % {}{##1}{\syncprefix:#1}{0}
+ % {\color[\locationcolor\@@bakleur]{\blackrule}}%
+ \naarbox %
+ {\color[\locationcolor\@@bakleur]{\blackrule}}%
+ [#1::\syncprefix:\synccounter]%
+ \egroup}
+
+\def\synchronisatiebalk[#1][#2]%
+ {\iflocation\ifsynchronisation
+ \bgroup
+ \stelsynchronisatiebalkin
+ [\c!tekst=\getvalue{doc:des:#1},#2]%
+ \getvalue{synchronisatie\@@bavariant}[#1]%
+ \egroup
+ \fi\fi}
+
+% Dit is leuke toepassing van glue!
+
+\newbox\meterbox
+
+\newif\ifbalksymbool
+
+\def\doganaareenpagina#1#2#3% nog checken !
+ {\checkreferences % nodig ??
+ \iflocation
+ \ifnum#3=\realpageno
+ {#2}%
+ \else
+ \doifelsenothing{#1}
+ {\hbox{\gotorealpage{}{}{#3}
+ {#2}}}
+ {\hbox{\gotorealpage{}{}{#3}
+ {\dolocationattributes{#1}\c!letter\c!kleur{#2}}}}%
+ \fi
+ \else
+ {#2}%
+ \fi}
+
+\def\interactiebalka%
+ {\iflocation
+ \bgroup
+ \setupinteraction[\c!breedte=\!!zeropoint]%
+ \setupblackrules[\c!hoogte=\v!max,\c!diepte=\v!max]% maten ??
+ \!!widthb=\@@ibbreedte\relax
+ \advance\!!widthb by -2.75em\relax
+ \!!widtha=\!!widthb\relax
+ \divide\!!widtha by \lastpage\relax
+ \bgroup
+ \advance\realpageno by -1\relax
+ \ifvoid\meterbox
+ \bgroup
+ \processaction
+ [\@@ibstap]
+ [ \v!klein=>\dimen0=.25em\relax,
+ \v!middel=>\dimen0=.5em\relax,
+ \v!groot=>\dimen0=1em\relax,
+ \s!unknown=>\dimen0=\!!widtha]%
+ \ifdim\!!widtha<\dimen0\relax
+ \!!counta=\dimen0\relax
+ \!!countb=\!!widtha
+ \divide\!!counta by \!!countb
+ \else
+ \!!counta=\@@ibstap\relax
+ \fi
+ \!!widtha=\!!counta\!!widtha
+ \setbox0=\hbox{\blackrule[\c!breedte=\!!widtha]}%
+ \global\setbox\meterbox=\hbox to \!!widthb
+ {\hss
+ \for \teller=1 \to \lastpage \step \!!counta \do
+ {\gotorealpage{}{}{\teller}{\copy0}}%
+ \hss}%
+ \global\wd\meterbox=\!!zeropoint\relax
+ \egroup
+ \fi
+ \egroup
+ \noindent
+ \strut
+ \hbox to \@@ibbreedte
+ {\mindermeldingen
+ \setupblackrules[\c!breedte=1em]%
+ \doganaareenpagina\??ib\blackrule\firstpage
+ \hss
+ \color[middlegray]{\copy\meterbox}%
+ \hbox to \!!widthb
+ {\ifdim\!!widtha<1em\relax
+ \!!widtha=1em\relax
+ \fi
+ \setupblackrules[\c!breedte=\!!widtha]%
+ \ifnum\realpageno>1\relax
+ \!!counta=\realpageno
+ \advance\!!counta by -2\relax
+ \hskip\!!zeropoint\!!plus\!!counta sp\relax % cm gives overflow
+ \doganaareenpagina\??ib\blackrule\prevpage
+ \fi
+ \color[\@@ibcontrastkleur]{\blackrule[\c!breedte=.5em]}%
+ \ifnum\realpageno<\lastpage\relax
+ \doganaareenpagina\??ib\blackrule\nextpage
+ \!!counta=\lastpage\relax
+ \advance\!!counta by -\realpageno
+ \advance\!!counta by -1\relax
+ \hskip\!!zeropoint\!!plus\!!counta sp\relax % cm gives overflow
+ \fi}%
+ \hss
+ \doganaareenpagina\??ib\blackrule\lastpage}%
+ \egroup
+ \fi}
+
+\presetlocalframed[\??ib]
+
+\def\interactiebalkc%
+ {\iflocation
+ \ifnum\lastpage>1
+ \hbox to \@@ibbreedte
+ {\setupblackrules[\c!hoogte=\@@ibhoogte,\c!diepte=\@@ibdiepte]%
+ \def\gotox##1%
+ {\doganaareenpagina{}{\blackrule[\c!breedte=##1]}}%
+ \dimen0=\@@ibbreedte\relax
+ \advance\dimen0 by -4em
+ \!!counta=\lastpage
+ \advance\!!counta by -1
+ \divide\dimen0 by \!!counta
+ \!!counta=\realpageno
+ \advance\!!counta by -1
+ \!!widtha=\!!counta\dimen0\relax
+ \!!countb=\lastpage
+ \advance\!!countb by -\realpageno
+ \!!widthb=\!!countb\dimen0
+ \startcolor[\locationcolor\@@ibkleur]%
+ \gotox{1em}\firstpage
+ \hss
+ \gotox{\!!widtha}\prevpage
+ \color[\@@ibcontrastkleur]{\blackrule[\c!breedte=1em]}%
+ \gotox{\!!widthb}\nextpage
+ \hss
+ \gotox{1em}\lastpage
+ \stopcolor}%
+ \fi
+ \fi}
+
+\def\interactiebalkd%
+ {\iflocation\ifshowingsubpage
+ \ifnum\nofsubpages>1
+ \hbox
+ \bgroup
+ \setupinteraction[\c!breedte=\!!zeropoint]%
+ \ifbalksymbool % beter: 3 chars assign en 3*box
+ \setupsymbolset[\@@iasymboolset]%
+ \setbox0=\hbox{\symbol[\v!vorige]}%
+ \setbox2=\hbox{\symbol[\v!ergens]}%
+ \setbox4=\hbox{\symbol[\v!volgende]}%
+ \else
+ \setbox0=\hbox
+ {\vrule
+ \!!height\@@ibhoogte
+ \!!depth\@@ibdiepte
+ \!!width\@@ibbreedte}%
+ \setbox2=\copy0
+ \setbox4=\copy0
+ \fi
+ \startcolor[\locationcolor\@@ibkleur]%
+ \for\teller=1\to\nofsubpages\step1\do
+ {\bgroup
+ \increment(\teller,\firstsubpage)\relax
+ \decrement\teller\relax
+ \ifnum\teller<\realpageno\relax
+ \gotorealpage{}{}{\teller}{\copy0}\relax
+ \else\ifnum\teller=\realpageno\relax
+ \color
+ [\@@ibcontrastkleur]
+ {\gotorealpage{}{}{\teller}{\copy2}}%
+ \else
+ \gotorealpage{}{}{\teller}{\copy4}\relax
+ \fi\fi
+ \egroup
+ \hskip\@@ibafstand}%
+ \unskip
+ \stopcolor
+ \egroup
+ \fi
+ \fi\fi}
+
+\def\interactiebalke% KAN WORDEN GECOMBINEERD MET D
+ {\iflocation\ifshowingsubpage
+ \ifnum\nofsubpages>1
+ \bgroup
+ \!!widthb=\@@ibafstand
+ \multiply\!!widthb by \nofsubpages
+ \advance\!!widthb by -\@@ibafstand % (n-1)
+ \!!widtha=\@@ibbreedte
+ \advance\!!widtha by -\!!widthb
+ \divide\!!widtha by \nofsubpages\relax
+ \ifdim\!!widtha<\@@ibafstand\relax
+ \interactiebalkf
+ \else
+ \setupinteraction[\c!breedte=\!!zeropoint]%
+ \noindent
+ \hbox to \@@ibbreedte
+ \bgroup
+ \ifbalksymbool
+ \setupsymbolset[\@@iasymboolset]%
+ \setbox0=\hbox{\symbol[\v!vorige]}%
+ \setbox2=\hbox{\symbol[\v!ergens]}%
+ \setbox4=\hbox{\symbol[\v!volgende]}%
+ \else
+ \setbox0=\hbox
+ {\vrule
+ \!!height\@@ibhoogte
+ \!!depth\@@ibdiepte
+ \!!width\!!widtha}%
+ \setbox2=\copy0
+ \setbox4=\copy0
+ \fi
+ \startcolor[\locationcolor\@@ibkleur]%
+ \for\teller=1\to\nofsubpages\step1\do
+ {\bgroup
+ \increment(\teller,\firstsubpage)\relax
+ \decrement\teller\relax
+ \ifnum\teller<\realpageno\relax
+ \gotorealpage{}{}{\teller}{\copy0}\relax
+ \else\ifnum\teller=\realpageno\relax
+ \color
+ [\@@ibcontrastkleur]
+ {\gotorealpage{}{}{\teller}{\copy2}}%
+ \else
+ \gotorealpage{}{}{\teller}{\copy4}\relax
+ \fi\fi
+ \egroup
+ \hss}%
+ \unskip
+ \stopcolor
+ \egroup
+ \fi
+ \egroup
+ \fi
+ \fi\fi}
+
+\def\interactiebalkf% !! KAN WORDEN GECOMBINEERD MET D !!
+ {\iflocation\ifshowingsubpage
+ \ifnum\nofsubpages>1
+ \setupinteraction[\c!breedte=\!!zeropoint]%
+ \noindent
+ \hbox to \@@ibbreedte
+ \bgroup
+ \!!countb=0
+ \loop
+ \advance\!!countb by 1
+ \!!countc=\nofsubpages
+ \divide\!!countc by \!!countb
+ \advance\!!countc by 1
+ \!!widthb=\@@ibafstand
+ \multiply\!!widthb by \!!countc
+ \advance\!!widthb by -\@@ibafstand
+ \!!widtha=\@@ibbreedte
+ \advance\!!widtha by -\!!widthb
+ \divide\!!widtha by \!!countc
+ \ifdim\!!widtha<\@@ibafstand\relax
+ \repeat
+\advance\!!countc by -2
+\!!widtha=-\@@ibafstand
+\!!widtha=\!!countc\!!widtha
+\advance\!!widtha by \@@ibbreedte
+\advance\!!countc by 1
+\divide\!!widtha by \!!countc
+ \ifbalksymbool
+ \setupsymbolset[\@@iasymboolset]%
+ \setbox0=\hbox{\symbol[\v!vorige]}%
+ \setbox4=\hbox{\symbol[\v!ergens]}%
+ \setbox8=\hbox{\symbol[\v!volgende]}%
+ \setbox2=\copy4
+ \setbox6=\copy4
+ \else
+ \setbox0=\hbox
+ {\vrule
+ \!!height\@@ibhoogte
+ \!!depth\@@ibdiepte
+ \!!width\!!widtha}%
+ \setbox4=\copy0
+ \setbox8=\copy0
+ \setbox2=\hbox
+ {\vrule
+ \!!height.5\ht0
+ \!!depth.5\dp0
+ \!!width\!!widtha}%
+ \ht2=\ht0
+ \dp2=\dp0
+ \setbox6=\copy2
+ \fi
+ \def\gotox##1%
+ {\ifnum\teller=\realpageno
+ \color
+ [\@@ibcontrastkleur]
+ {\gotorealpage{}{}{\teller}{\copy##1}}%
+ \else
+ \gotorealpage{}{}{\teller}{\copy##1}%
+ \fi
+ \!!countf=0
+ \hss}%
+ \startcolor[\locationcolor\@@ibkleur]%
+ \!!countc=\realpageno \advance\!!countc by -2
+ \!!countd=\realpageno \advance\!!countd by 2
+ \!!countf=0
+ \for\teller=\firstsubpage\to\lastsubpage\step1\do
+ {\!!doneafalse
+ \advance\!!countf by 1
+ \ifnum\teller=\firstsubpage\relax \!!doneatrue \fi
+ \ifnum\teller=\lastsubpage\relax \!!doneatrue \fi
+ \ifnum\teller>\!!countc \ifnum\teller<\!!countd \!!doneatrue \fi\fi
+ \if!!donea
+ \ifnum\teller<\realpageno
+ \gotox0%
+ \else\ifnum\teller>\realpageno
+ \gotox4%
+ \else
+ \gotox8%
+ \fi\fi
+ \else\ifnum\!!countf=\!!countb
+ \ifnum\teller<\realpageno
+ \gotox2%
+ \else\ifnum\teller>\realpageno
+ \gotox6%
+ \else
+ \gotox4%
+ \fi\fi
+ \fi\fi}%
+ \unskip
+ \stopcolor
+ \egroup
+ \fi
+ \fi\fi}
+
+\def\interactiebalkb%
+ {\ifnum\lastpage>\firstpage\relax
+ \interactiebuttons
+ [\v!eerstepagina,
+ \v!vorigepagina,
+ \v!volgendepagina,
+ \v!laatstepagina]%
+ \fi}
+
+\def\interactiebalkg%
+ {\ifnum\lastsubpage>\firstsubpage\relax
+ \interactiebuttons
+ [\v!eerstesubpagina,
+ \v!vorigesubpagina,
+ \v!volgendesubpagina,
+ \v!laatstesubpagina]%
+ \fi}
+
+\def\checkinteractiebalk#1#2#3%
+ {\ifdim\@@ibbreedte=\!!zeropoint\def\@@ibbreedte{#1}\fi
+ \doifnothing{\@@ibhoogte}{\def\@@ibhoogte{#2}}%
+ \doifnothing{\@@ibdiepte}{\def\@@ibdiepte{#3}}}
+
+\def\complexinteractiebalk[#1]%
+ {\doifelse{#1}{\v!reset}
+ {\global\setbox\meterbox=\box\voidb@x}%
+ {\bgroup
+ \iflocation
+ \checksubpages % goes wrong / loads \numberofpages too
+ \getparameters[\??ib][#1]%
+ \doif{\@@ibstatus}{\v!start}
+ {\startinteractie
+ \processaction % breedte defaults !
+ [\@@ibvariant]
+ [ c=>\checkinteractiebalk{.5em}\v!max \v!max,
+ d=>\checkinteractiebalk{.5em}{.5em} \!!zeropoint,
+ e=>\checkinteractiebalk{.5em}{.5em} \!!zeropoint,
+ f=>\checkinteractiebalk{.5em}{.5em} \!!zeropoint,
+ \s!default=>\checkinteractiebalk{10em}\v!ruim\!!zeropoint,
+ \s!unknown=>\checkinteractiebalk{10em}\v!ruim\!!zeropoint]%
+ \doifelse{\@@ibsymbool}{\v!ja}
+ {\balksymbooltrue}{\balksymboolfalse}%
+ \getvalue{interactiebalk\@@ibvariant}%
+ \stopinteractie}%
+ \fi
+ \egroup}}
+
+\definecomplexorsimpleempty\interactiebalk
+
+\def\stelinteractiebalkin%
+ {\dodoubleargument\getparameters[\??ib]}
+
+% Er wordt vooralsnog uitgegaan van een symmetrische
+% start-stop situatie.
+
+\def\c!profiel!! {profiel:} % brrr
+\def\c!versie!! {versie:}
+
+\def\dodefinieerprofiel[#1][#2]%
+ {\iflocation
+ \def\dododefinieerprofiel##1%
+ {\def\dodododefinieerprofiel####1%
+ {\doifdefinedelse{\c!profiel!!####1}%
+ {\edef\!!stringa{\getvalue{\c!profiel!!####1}}%
+ \setevalue{\c!profiel!!####1}{\!!stringa,##1}}%
+ {\setevalue{\c!profiel!!####1}{##1}}}%
+ \processcommalist[#2]\dodododefinieerprofiel}%
+ \processcommalist[#1]\dododefinieerprofiel
+ \fi}
+
+\def\definieerprofiel%
+ {\dodoubleargument\dodefinieerprofiel}
+
+% Als met \getpar wordt gewerkt, dan moet \next worden toegepast.
+
+% TZT initialisatie!
+
+\def\profilepage{}
+
+\let\dosetprofilepage=\relax
+\let\dogetprofilepage=\relax
+
+\def\processprofile#1[#2]%
+ {\iflocation
+ \par % needed for pdftex
+ \bgroup
+ \dosetprofilepage
+ \dogetprofilepage
+ \def\processoneprofile##1##2%
+ {\ExpandBothAfter\doifinsetelse{##2}{\processedprofiles}%
+ {\doifsomething{##1}{(##1)}}%
+ {\addtocommalist{##2}\processedprofiles
+ ##1\relax
+ \ifcase#1\relax
+ \dobeginofprofile
+ {##2}
+ {\number\papierbreedte}{\number\papierhoogte}
+ {\profilepage}%
+ \else
+ \doendofprofile
+ \fi}}%
+ \def\processedprofiles{}%
+ \def\doprocessprofile##1%
+ {\doifelse{\@@pfoptie}{\v!test}%
+ {\goodbreak\blanko\nobreak\tt[\spatie
+ \ifcase#1\v!start\else\v!stop\fi profiel\spatie ##1:\spatie
+ \doifdefinedelse{\c!profiel!!##1}%
+ {\def\dodoprocessprofile####1%
+ {\processoneprofile
+ {\naar{####1}[\c!profiel!!####1]}%
+ {####1}%
+ \spatie}%
+ \processcommacommand
+ [\getvalue{\c!profiel!!##1}]\dodoprocessprofile}%
+ {- }%
+ ]\nobreak\blanko}%
+ {\doifdefined{\c!profiel!!##1}%
+ {\def\dodoprocessprofile####1%
+ {\processoneprofile{}{####1}}%
+ \processcommacommand
+ [\getvalue{\c!profiel!!##1}]\dodoprocessprofile}}}%
+ \processcommalist[#2]\doprocessprofile
+ \egroup
+ \par % needed for pdftex
+ \fi}
+
+\def\startprofiel[#1]%
+ {\iflocation
+ \bgroup
+ \addtocommalist{#1}\actualprofile
+ \def\stopprofiel%
+ {\processprofile1[#1]%
+ \egroup}%
+ \DoAfterFi\processprofile0[#1]%
+ \fi}
+
+\let\stopprofiel=\relax
+
+\def\dovolgprofiel#1[#2]%
+ {\iflocation
+ \hbox
+ {\dostartgoto
+ \data
+ {\dolocationattributes\??ia\c!letter\c!kleur{#1\presetgoto}}%
+ \start
+ \dostartgotoprofile
+ {\number\buttonwidth}{\number\buttonheight}
+ {#2}%
+ \stop
+ \dostopgotoprofile
+ \dostopgoto}%
+ \else
+ {#1}%
+ \fi}
+
+\def\volgprofiel#1[#2]%
+ {\iflocation
+ \doif{\@@pfoptie}{\v!test}{\pagereference[\c!profiel!!#2]}%
+ \dovolgprofiel{#1}[#2]%
+ \fi}
+
+\def\stelprofielenin%
+ {\dodoubleargument\getparameters[\??pf]}
+
+% Als er nog geen tekst op de pagina staat, dan heeft het
+% profiel betrekking op het bovenstaande, dus soms een vorige
+% pagina! Vreemd, omdat PDF paginagewijs werkt. Gelukkig
+% biedt /page een oplossing. Echter: expansie van een
+% \special kan niet worden uitgesteld, zodat alleen een
+% two-pass een oplossing vormt. Het onderstaande kan komen
+% te vervallen als Acrobat dit ondervangt. Het scheelt een
+% pass en een lijst.
+%
+% Er kunnen eventueel twee lijsten worden gebruikt. Een voor
+% het begin (start) en een voor het eind (stop). Nu staat
+% alles in een lijst.
+
+\definetwopasslist{\s!profile}
+
+\newcounter\currentprofile
+
+\def\dosetprofilepage%
+ {\doglobal\increment\currentprofile
+ \edef\docommando%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!profile}%
+ {\currentprofile}%
+ {\noexpand\realfolio}}}%
+ \docommando}
+
+\def\dogetprofilepage%
+ {\gettwopassdata{\s!profile}%
+ \let\profilepage=\twopassdata}
+
+\newcounter\versionlevel
+\newcounter\versionorder
+
+\newif\ifrecentversion
+
+\let\oldatcharacter=@
+
+\def\minimumversion{0}
+\def\actualversion{0}
+
+\def\dostelversiesin[#1]%
+ {\getparameters[\??ve][#1]
+ \stripcharacter.\from\@@venummer\to\minimumversion
+ \setversion}
+
+\def\stelversiesin%
+ {\dosingleargument\dostelversiesin}
+
+\definetwopasslist{\s!versionbegin}
+\definetwopasslist{\s!versionend}
+
+\def\actualprofile{}
+
+\def\doresetpageversion%
+ {\edef\docommando%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!versionend}%
+ {\versionorder}%
+ {\noexpand\realfolio}}}%
+ \docommando}
+
+\def\dosetpageversion#1%
+ {\recentversiontrue
+ \doglobal\increment\versionorder\relax
+ \edef\docommando%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!versionbegin}%
+ {\versionorder}%
+ {\noexpand\realfolio}}}%
+ \docommando
+ \let\resetpageversion=\doresetpageversion}
+
+\def\recentcontributions{}
+
+\def\checkrecentcontributions%
+ {\gettwopassdata{\s!versionbegin}%
+ \iftwopassdatafound
+ \!!counta=\twopassdata\relax
+ \gettwopassdata{\s!versionend}%
+ \iftwopassdatafound
+ \!!countb=\twopassdata\relax
+ \doglobal\increment\versionorder\relax
+ \writeutilitycommand%
+ {\twopassentry%
+ {\s!versionbegin}%
+ {\versionorder}%
+ {\the\!!counta}}%
+ \writeutilitycommand%
+ {\twopassentry%
+ {\s!versionend}%
+ {\versionorder}%
+ {\the\!!countb}}%
+ \for\teller=\!!counta\to\!!countb\step1\do%
+ {\@EA\doglobal\@EA\addtocommalist\@EA{\teller}{\recentcontributions}}%
+ \let\next=\checkrecentcontributions
+ \else
+ \let\next=\relax
+ \fi
+ \else
+ \let\next=\relax
+ \fi
+ \next}
+
+\def\docheckpageversion%
+ {\ExpandBothAfter\doifinsetelse{\realfolio}{\recentcontributions}
+ {\geselecteerdtrue}%
+ {\geselecteerdfalse}}
+
+\let\setpageversion = \gobbleoneargument
+\let\resetpageversion = \relax
+\let\checkpageversion = \relax
+
+\def\complexstartversie[#1]%
+ {\bgroup
+ \doifelse{\actualprofile}{}%
+ {\startprofiel[#1]}%
+ {\startprofiel[#1,\actualprofile]}%
+ \def\docomplexstartversie##1%
+ {\stripcharacter.\from##1\to\actualversion
+ \ifnum\versionlevel>0\relax
+ \ifnum\actualversion=0\relax
+ \setpageversion\actualversion % unknown version
+ \else
+ \ifnum\actualversion<\minimumversion\relax
+ \relax % old version
+ \else
+ \setpageversion\actualversion % new version
+ \fi
+ \fi
+ \fi}%
+ \doglobal\increment\versionlevel\relax
+ \doifelsenothing{#1}
+ {\docomplexstartversie{0}}%
+ {\processcommalist[#1]\docomplexstartversie}}
+
+\definecomplexorsimpleempty\startversie
+
+\def\stopversie%
+ {\stopprofiel
+ \doglobal\decrement\versionlevel
+ \ifnum\versionlevel<0\relax
+ \showmessage{\m!versions}{1}{}%
+ \else
+ \resetpageversion
+ \egroup
+ \fi}
+
+\bgroup
+\catcode`@=\active
+\gdef\setversion%
+ {\catcode`@=\active % we can't use \@@active here
+ \long\def@##1##2 %
+ {\ifx##1+%
+ \startversie[##2]%
+ \else\ifx##1-%
+ \stopversie
+ \else
+ \oldatcharacter##1##2 %
+ \fi\fi}}
+\egroup
+
+\def\markeerversie%
+ {\showmessage{\m!versions}{2}{}%
+ \let\setpageversion=\dosetpageversion
+ \let\resetpageversion=\relax
+ \let\checkpageversion=\relax}
+
+\def\selecteerversie%
+ {\checkrecentcontributions
+ \showmessage{\m!versions}{3}{\recentcontributions}%
+ \let\setpageversion=\gobbleoneargument
+ \let\resetpageversion=\relax
+ \let\checkpageversion=\docheckpageversion
+ \setversion}
+
+\def\dodefinieerversie[#1][#2]%
+ {\setvalue{\c!versie!!#1}{#2}%
+ \definieerprofiel[#1][#2]}
+
+\def\definieerversie%
+ {\dodoubleargument\dodefinieerversie}
+
+\def\volgversie%
+ {\volgprofiel}
+
+\def\volgprofielversie#1[#2][#3]%
+ {\def\docommando##1%
+ {\definieerprofiel[#2#3][##1]}%
+ \processcommacommand[\getvalue{\c!versie!!#3}]\docommando
+ \volgprofiel#1[#2#3]}
+
+\newcounter\currentpagetransition
+
+\newif\ifrandomtransitions
+
+\def\stelpaginaovergangenin%
+ {\dosingleempty\dostelpaginaovergangenin}
+
+\def\dostelpaginaovergangenin[#1]%
+ {\doifelsenothing{#1}
+ {\doifnot{\@@scwachttijd}{\v!geen}
+ {\let\setpagetransition\setsomepagedelay}}
+ {\doifelse{#1}{\v!start}
+ {\doifnot{\@@scwachttijd}{\v!geen}
+ {\let\setpagetransition\setsomepagedelay}}
+ {\doglobal\newcounter\currentpagetransition
+ \doifinsetelse{#1}{\v!reset,\v!stop}
+ {\let\setpagetransition\relax}
+ {\let\setpagetransition\setsomepagetransition
+ \doifinsetelse{\v!willekeurig}{#1}
+ {\randomtransitionstrue}{\randomtransitionsfalse}%
+ \edef\userpagetransitions{#1}%
+ \@EA\removefromcommalist\@EA{\v!willekeurig}\userpagetransitions
+ \ifx\userpagetransitions\empty
+ \let\userpagetransitions\pagetransitions
+ \fi}}}}
+
+\def\setsomepagedelay%
+ {\expanded{\dosetpagetransition{0}{\@@scwachttijd}}}
+
+\def\setsomepagetransition%
+ {\iflocation
+ \ifrandomtransitions
+ \expanded{\getcommalistsize[\userpagetransitions]}%
+ \getrandomnumber{\currentpagetransition}{1}{\commalistsize}%
+ \else
+ \doglobal\increment\currentpagetransition
+ \fi
+ \expanded{\getfromcommalist[\userpagetransitions][\currentpagetransition]}%
+ \doifnumberelse{\commalistelement}
+ {\expanded{\getfromcommalist[\pagetransitions][\commalistelement]}}
+ {}%
+ \ifx\commalistelement\empty
+ \doglobal\newcounter\currentpagetransition
+ \setsomepagetransition
+ \else
+ \doifelse{\@@scwachttijd}{\v!geen}
+ {\expanded{\dosetpagetransition{\commalistelement}{0}}}
+ {\expanded{\dosetpagetransition{\commalistelement}{\@@scwachttijd}}}%
+ \fi
+ \fi}
+
+\prependtoks \setpagetransition \to \everyshipout
+
+% temporary here
+
+%D \startbuffer
+%D \dorecurse{10}
+%D {\horizontalpositionbar
+%D \pos\recurselevel \min1 \max10
+%D \token\framed{\recurselevel}%
+%D \\}
+%D
+%D \hbox to 15em
+%D {\hss
+%D \dorecurse{10}
+%D {\verticalpositionbar\pos\recurselevel\min1\max10\token\blokje\\
+%D \hss}}
+%D \stopbuffer
+
+\def\horizontalpositionbar\pos#1\min#2\max#3\token#4\\%
+ {\hbox to \hsize
+ {\hskip\!!zeropoint\!!plus #1\!!fill
+ \hskip\!!zeropoint\!!plus-#2\!!fill
+ #4\relax
+ \hskip\!!zeropoint\!!plus #3\!!fill
+ \hskip\!!zeropoint\!!plus-#1\!!fill}}
+
+\def\verticalpositionbar\pos#1\min#2\max#3\token#4\\%
+ {\vbox to \vsize
+ {\vskip\!!zeropoint\!!plus #1\!!fill
+ \vskip\!!zeropoint\!!plus-#2\!!fill
+ \hbox{#4}\relax
+ \vskip\!!zeropoint\!!plus #3\!!fill
+ \vskip\!!zeropoint\!!plus-#1\!!fill}}
+
+\def\horizontalgrowingbar\pos#1\min#2\max#3\height#4\depth#5\\%
+ {\hbox to \hsize
+ {\scratchcounter=#1\relax
+ \advance\scratchcounter by -#2\relax
+ \advance\scratchcounter by 1\relax
+ \leaders\vrule\hskip\!!zeropoint\!!plus \scratchcounter\!!fill
+ \vrule\!!width\!!zeropoint\!!height#4\!!depth#5\relax
+ \hskip\!!zeropoint\!!plus #3\!!fill
+ \hskip\!!zeropoint\!!plus-#1\!!fill}}
+
+\def\verticalgrowingbar\pos#1\min#2\max#3\width#4\\%
+ {\vbox to \vsize
+ {\scratchcounter=#1\relax
+ \advance\scratchcounter by -#2\relax
+ \advance\scratchcounter by 1\relax
+ \leaders\hrule\vskip\!!zeropoint\!!plus\scratchcounter\!!fill
+ \hrule\!!width#4\!!height\!!zeropoint\!!depth\!!zeropoint
+ \vskip\!!zeropoint\!!plus #3\!!fill
+ \vskip\!!zeropoint\!!plus-#1\!!fill}}
+
+\newbox\commentbox
+
+\def\flushcomments%
+ {\ifvoid\commentbox\else
+ \inmarge{\hbox{\raise\ht\strutbox\box\commentbox}}%
+ \fi}
+
+\def\stelcommentaarin%
+ {\dodoubleargument\getparameters[\??cc]}
+
+\setvalue{\e!start\e!commentaar}% the dummy triple gobbles trailing spaces
+ {\dotripleempty\dostartcommentaar}
+
+\def\dostartcommentaar[#1][#2][#3]%
+ {\bgroup
+ \doifassignmentelse{#1}
+ {\getparameters[\??cc][#1]}
+ {\getparameters[\??cc][\c!titel=#1,#2]}%
+ \bgroup
+ \obeylines
+ \doif{\@@ccspatie}{\v!ja}{\obeyspaces}%
+ \long\def\docommando##1%
+ {\egroup
+ \global\setbox\commentbox=\hbox
+ {\!!widtha=\@@ccbreedte
+ \!!heighta=\@@cchoogte
+ \doinsertcomment
+ {\@@cctitel}{\number\!!widtha}{\number\!!heighta}
+ {\@@cckleur}{0}{\@@ccsymbool}{##1}%
+ \hskip\ifvoid\commentbox\@@ccmarge\else\@@ccafstand\fi
+ \box\commentbox
+ \egroup}}%
+ \grabuntil{\e!stop\e!commentaar}\docommando}
+
+\def\commentaar%
+ {\dodoubleempty\docommentaar}
+
+\def\docommentaar[#1][#2]#3%
+ {\bgroup
+ \doifassignmentelse{#1}
+ {\getparameters[\??cc][#1]}
+ {\getparameters[\??cc][\c!titel=#1,#2]}%
+ \!!widtha=\@@ccbreedte
+ \!!heighta=\@@cchoogte
+ \hbox to \!!zeropoint
+ {\hskip-\@@ccmarge
+ \raise\ht\strutbox\hbox
+ {\doPDFinsertcomment
+ {\@@cctitel}{\number\!!widtha}{\number\!!heighta}
+ {\@@cckleur}{0}{\@@ccsymbool}{#3}}}%
+ \egroup
+ \ignorespaces}
+
+% \startcommentaar
+% hello beautiful\\world
+% \stopcommentaar
+%
+% \startcommentaar[hallo]
+% hello \<< \'e\'erste \>>
+% beautiful
+% world
+% \stopcommentaar
+%
+% \startcommentaar[hallo][kleur=groen,breedte=4cm,hoogte=3cm]
+% hello \<< \'e\'erste \>>
+% beautiful
+% world
+% \stopcommentaar
+%
+% \startcommentaar[hallo][kleur=groen,breedte=4cm,hoogte=3cm]
+% hello \<< \'e\'erste \>>
+%
+% beautiful
+%
+% world
+% \stopcommentaar
+%
+% \startcommentaar[symbool=Balloon]
+% Do we want this kind of rubish? And, why isn't this and
+% some more features related to text annotations so poorly
+% (actually not) documented? Anyhow, by providing this
+% functionality we demonstrate that \pdfTeX\ can do it. By
+% the way, it's funny that when in Acrobat we scale up the
+% text, the symbols scale down.
+% \stopcommentaar
+
+\def\doregistermenubuttons[#1][#2]% [menu id] [register]
+ {\bgroup
+ \ifsecondargument
+ \stelinteractiemenuin
+ [#1][\c!onbekendeverwijzing=\v!ja,\c!zelfdepagina=\v!ja]%
+ \def\docommando##1%
+ {\noindent
+ \menubutton[#1]{##1}[#2:##1]%
+ \space}%
+ \else
+ \def\docommando##1%
+ {\noindent
+ \button[\c!onbekendeverwijzing=\v!ja,\c!zelfdepagina=\v!ja]{##1}[#1:##1]%
+ \space}%
+ \fi
+ \handletokens abcdefghijklmnopqrstuvwxyz\with\docommando
+ \egroup}
+
+\def\registermenubuttons%
+ {\dodoubleempty\doregistermenubuttons}
+
\stelkoppelingenin
[\c!afstand=.25em,
\c!breedte=\v!passend,
@@ -178,6 +1993,165 @@
\c!achtergrondraster=\@@rsraster,
\c!achtergrondkleur=]
-\protect
+\definieerinteractiemenu
+ [\v!rechts]
+ [\v!rechts]
+ [\c!voor=,
+ \c!na=\vfil,
+ \c!tussen=\blanko,
+ \c!afstand=\bodyfontsize, % 12pt
+ \c!links=\hss,
+ \c!rechts=\hss,
+ \c!breedte=\rechterrandbreedte,
+ \c!hoogte=\v!ruim]
+
+\definieerinteractiemenu
+ [\v!links]
+ [\v!links]
+ [\c!voor=,
+ \c!na=\vfil,
+ \c!tussen=\blanko,
+ \c!afstand=\bodyfontsize, % 12pt
+ \c!links=\hss,
+ \c!rechts=\hss,
+ \c!breedte=\linkerrandbreedte,
+ \c!hoogte=\v!ruim]
+
+\definieerinteractiemenu
+ [\v!onder]
+ [\v!onder]
+ [\c!voor=\vss,
+ \c!na=\vss,
+ \c!midden=\hfil,
+ \c!afstand=\bodyfontsize, % 12pt
+ \c!breedte=\v!passend,
+ \c!hoogte=\v!ruim]
+
+\definieerinteractiemenu
+ [\v!boven]
+ [\v!boven]
+ [\c!voor=\vss,
+ \c!na=\vss,
+ \c!midden=\hfil,
+ \c!afstand=\bodyfontsize, % 12pt
+ \c!breedte=\v!passend,
+ \c!hoogte=\v!ruim]
+
+\stelinteractiemenuin
+ [\v!links,\v!rechts,\v!boven,\v!onder]
+ [\c!offset=.25em,
+ \c!kader=\v!aan,
+ \c!achtergrond=,
+ \c!achtergrondkleur=,
+ \c!achtergrondraster=\@@rsraster,
+ \c!letter=\@@ialetter,
+ \c!kleur=\@@iakleur,
+ \c!contrastkleur=\@@iacontrastkleur,
+ \c!status=\v!start,
+ \c!zelfdepagina=\v!ja,
+ \c!onbekendeverwijzing=\v!leeg,
+ \c!bovenoffset=\!!zeropoint,
+ \c!onderoffset=\!!zeropoint,
+ \c!linkeroffset=\!!zeropoint,
+ \c!rechteroffset=\!!zeropoint]
+
+%\stelbovenin [\v!tekst] [\c!middentekst={\interactiemenus[\v!boven]}]
+%\stelonderin [\v!tekst] [\c!middentekst={\interactiemenus[\v!onder]}]
+
+\def\plaatsrechterrandblok {\interactiemenus[\v!rechts]}
+\def\plaatslinkerrandblok {\interactiemenus[\v!links]}
+\def\plaatsboventekstblok {\interactiemenus[\v!boven]}
+\def\plaatsondertekstblok {\interactiemenus[\v!onder]}
+
+\def\plaatsboventekstblok%
+ {\vbox to \bovenhoogte
+ {\getvalue{\??tk\v!boven\v!tekst\c!voor}
+ \interactiemenus[\v!boven]
+ \getvalue{\??tk\v!boven\v!tekst\c!na}
+ \kern\!!zeropoint}}
+
+\def\plaatsondertekstblok%
+ {\vbox to \onderhoogte
+ {\getvalue{\??tk\v!onder\v!tekst\c!voor}
+ \interactiemenus[\v!onder]
+ \getvalue{\??tk\v!onder\v!tekst\c!na}
+ \kern\!!zeropoint}}
+
+\stelinteractieschermin
+ [\c!breedte=\printpapierbreedte,
+ \c!hoogte=\printpapierhoogte,
+ \c!rugoffset=\!!zeropoint,
+ \c!kopoffset=\!!zeropoint,
+ \c!rugwit=\rugwit,
+ \c!kopwit=\kopwit,
+ \c!optie=\c!min,
+ \c!wachttijd=\v!geen]
+
+\stelbuttonsin
+ [\c!status=\v!start,
+ \c!breedte=\v!passend,
+ \c!hoogte=\v!ruim,
+ \c!offset=0.25em,
+ \c!kader=\v!aan,
+ \c!achtergrond=,
+ \c!achtergrondraster=\@@rsraster,
+ \c!achtergrondkleur=,
+ \c!letter=\@@ialetter,
+ \c!kleur=\@@iakleur,
+ \c!contrastkleur=\@@iacontrastkleur,
+ \c!zelfdepagina=\v!ja,
+ \c!onbekendeverwijzing=\v!ja]
+
+\stelinteractiebalkin
+ [\c!status=\v!start,
+ \c!variant=a,
+ \c!symbool=\v!nee,
+ \c!breedte=\rechterrandbreedte,
+ \c!hoogte=, % these are taken care
+ \c!diepte=, % of at calling time
+ \c!afstand=.5em, % beter relateren aan breedte
+ \c!stap=1,
+ \c!kleur=\@@iakleur,
+ \c!contrastkleur=\@@iacontrastkleur,
+ \c!kader=\v!aan,
+ \c!achtergrond=,
+ \c!achtergrondraster=\@@rsraster,
+ \c!achtergrondkleur=]
+
+\stelsynchronisatiebalkin
+ [\c!variant=\v!pagina,
+ \c!breedte=\rechterrandbreedte,
+ \c!letter=\@@ialetter,
+ \c!kleur=\@@iakleur,
+ \c!achtergrond=,
+ \c!achtergrondraster=\@@rsraster,
+ \c!achtergrondkleur=]
+
+\stelsynchronisatiein
+ [\c!status=\v!stop]
+
+\stelprofielenin
+ [\c!optie=]
+
+\stelprogrammasin
+ [\c!gebied=]
+
+\stelpaginaovergangenin
+ [\v!reset]
+
+\stelcommentaarin
+ [\c!marge=2.5em,
+ \c!afstand=1em,
+ \c!breedte=.3\tekstbreedte,
+ \c!hoogte=.2\teksthoogte,
+ \c!kleur=\@@iakleur,
+ \c!titel=,
+ \c!spatie=\v!nee,
+ \c!symbool=\v!normaal]
+
+\stelversiesin % beware, @ is made active here,
+ [\c!nummer=1, % therefore we set this one at the end
+ \c!letter=\ss,
+ \c!kleur=]
-\endinput
+\protect \endinput