From 73000ea3b7c8225c980f40ef90b86e2d57fe4003 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 11 May 2000 00:00:00 +0200 Subject: stable 2000.05.11 --- tex/context/base/colo-ini.tex | 8 +- tex/context/base/colo-rgb.tex | 2 +- tex/context/base/cont-cz.tex | 35 + tex/context/base/cont-fil.tex | 48 +- tex/context/base/cont-new.tex | 915 +- tex/context/base/cont-old.tex | 61 +- tex/context/base/cont-usr.ori | 20 +- tex/context/base/context.tex | 38 +- tex/context/base/core-01a.tex | 17088 ------------------------------------- tex/context/base/core-01b.tex | 1504 ---- tex/context/base/core-01c.tex | 703 -- tex/context/base/core-01d.tex | 2331 ----- tex/context/base/core-01e.tex | 422 - tex/context/base/core-02a.tex | 198 - tex/context/base/core-02b.tex | 171 - tex/context/base/core-02d.tex | 49 - tex/context/base/core-buf.tex | 871 ++ tex/context/base/core-con.tex | 59 +- tex/context/base/core-des.tex | 860 ++ tex/context/base/core-fig.tex | 249 +- tex/context/base/core-fil.tex | 33 + tex/context/base/core-fld.tex | 36 +- tex/context/base/core-fnt.tex | 91 + tex/context/base/core-gen.tex | 8 +- tex/context/base/core-grd.tex | 30 +- tex/context/base/core-int.tex | 1978 ++++- tex/context/base/core-itm.tex | 583 ++ tex/context/base/core-lst.tex | 889 ++ tex/context/base/core-mar.tex | 126 + tex/context/base/core-mps.tex | 64 +- tex/context/base/core-mul.tex | 125 +- tex/context/base/core-nav.tex | 5 + tex/context/base/core-new.tex | 19 +- tex/context/base/core-not.tex | 12 +- tex/context/base/core-num.tex | 133 + tex/context/base/core-pag.tex | 32 +- tex/context/base/core-par.tex | 296 + tex/context/base/core-ref.tex | 229 +- tex/context/base/core-reg.tex | 48 +- tex/context/base/core-rul.tex | 157 +- tex/context/base/core-sec.tex | 1491 ++++ tex/context/base/core-syn.tex | 395 + tex/context/base/core-tab.tex | 74 +- tex/context/base/core-tbl.tex | 407 +- tex/context/base/core-uti.tex | 368 + tex/context/base/core-var.tex | 16 + tex/context/base/core-ver.tex | 8 +- tex/context/base/core-vis.tex | 6 +- tex/context/base/enco-ans.tex | 2 +- tex/context/base/enco-chi.tex | 92 +- tex/context/base/enco-ec.tex | 4 +- tex/context/base/enco-ibm.tex | 2 +- tex/context/base/enco-il2.tex | 3 +- tex/context/base/enco-ini.tex | 18 +- tex/context/base/enco-lat.tex | 4 +- tex/context/base/enco-pdf.tex | 2 +- tex/context/base/enco-vis.tex | 4 +- tex/context/base/enco-win.tex | 50 +- tex/context/base/font-ber.tex | 67 +- tex/context/base/font-chi.tex | 107 +- tex/context/base/font-cmr.tex | 6 +- tex/context/base/font-fil.tex | 175 +- tex/context/base/font-ini.tex | 134 +- tex/context/base/font-map.tex | 2 +- tex/context/base/font-ppl.tex | 26 + tex/context/base/font-uni.tex | 16 +- tex/context/base/java-ini.tex | 4 +- tex/context/base/lang-alt.tex | 34 +- tex/context/base/lang-chi.tex | 57 +- tex/context/base/lang-ger.tex | 2 +- tex/context/base/lang-ini.tex | 21 +- tex/context/base/lang-sla.tex | 2 +- tex/context/base/m-chart.tex | 94 +- tex/context/base/m-chemic.tex | 6 + tex/context/base/m-pictex.tex | 68 +- tex/context/base/main-001.tex | 10650 +++++++++++++++++++++++ tex/context/base/main-002.tex | 1181 +++ tex/context/base/main-003.tex | 657 ++ tex/context/base/mult-com.tex | 145 +- tex/context/base/mult-con.tex | 252 +- tex/context/base/mult-ini.tex | 23 +- tex/context/base/mult-sys.tex | 9 +- tex/context/base/ppchtex.tex | 4 +- tex/context/base/s-abr-01.tex | 2 + tex/context/base/s-chi-00.tex | 47 + tex/context/base/s-faq-01.tex | 20 +- tex/context/base/s-map-01.tex | 5 +- tex/context/base/s-pre-00.tex | 10 +- tex/context/base/s-pre-05.tex | 15 +- tex/context/base/spec-dvi.tex | 40 + tex/context/base/spec-fdf.tex | 100 +- tex/context/base/spec-ini.tex | 204 +- tex/context/base/spec-pdf.tex | 11 +- tex/context/base/spec-tpd.tex | 68 +- tex/context/base/supp-box.tex | 319 +- tex/context/base/supp-eps.tex | 13 +- tex/context/base/supp-fil.tex | 4 +- tex/context/base/supp-fun.tex | 99 +- tex/context/base/supp-lan.tex | 113 +- tex/context/base/supp-mis.tex | 12 + tex/context/base/supp-mpe.tex | 342 + tex/context/base/supp-mps.tex | 99 +- tex/context/base/supp-pdf.tex | 131 +- tex/context/base/symb-ini.tex | 11 +- tex/context/base/syst-ext.tex | 221 +- tex/context/base/syst-gen.tex | 113 +- tex/context/base/syst-tex.tex | 2 +- tex/context/base/verb-ini.tex | 12 +- tex/context/config/cont-cz.ini | 2 + tex/context/config/cont-de.ini | 2 + tex/context/config/cont-en.ini | 2 + tex/context/config/cont-nl.ini | 2 + tex/context/config/cont-uk.ini | 2 + tex/context/config/cont-usr.tex | 20 +- tex/context/config/context.ini | 2 + tex/generic/context/m-ch-de.tex | 10 - tex/generic/context/m-ch-en.tex | 10 - tex/generic/context/m-ch-nl.tex | 10 - tex/generic/context/m-metapo.tex | 89 - tex/generic/context/ppchtex.noc | 205 - tex/latex/context/m-ch-de.sty | 1 - tex/latex/context/m-ch-en.sty | 1 - tex/latex/context/m-ch-nl.sty | 1 - tex/latex/context/m-metapo.sty | 1 - tex/latex/context/m-pictex.sty | 1 - 125 files changed, 24586 insertions(+), 25002 deletions(-) create mode 100644 tex/context/base/cont-cz.tex delete mode 100644 tex/context/base/core-01a.tex delete mode 100644 tex/context/base/core-01b.tex delete mode 100644 tex/context/base/core-01c.tex delete mode 100644 tex/context/base/core-01d.tex delete mode 100644 tex/context/base/core-01e.tex delete mode 100644 tex/context/base/core-02a.tex delete mode 100644 tex/context/base/core-02b.tex delete mode 100644 tex/context/base/core-02d.tex create mode 100644 tex/context/base/core-buf.tex create mode 100644 tex/context/base/core-des.tex create mode 100644 tex/context/base/core-itm.tex create mode 100644 tex/context/base/core-lst.tex create mode 100644 tex/context/base/core-mar.tex create mode 100644 tex/context/base/core-num.tex create mode 100644 tex/context/base/core-par.tex create mode 100644 tex/context/base/core-sec.tex create mode 100644 tex/context/base/core-syn.tex create mode 100644 tex/context/base/core-uti.tex create mode 100644 tex/context/base/font-ppl.tex create mode 100644 tex/context/base/main-001.tex create mode 100644 tex/context/base/main-002.tex create mode 100644 tex/context/base/main-003.tex create mode 100644 tex/context/base/s-chi-00.tex create mode 100644 tex/context/base/supp-mpe.tex create mode 100644 tex/context/config/cont-cz.ini create mode 100644 tex/context/config/cont-de.ini create mode 100644 tex/context/config/cont-en.ini create mode 100644 tex/context/config/cont-nl.ini create mode 100644 tex/context/config/cont-uk.ini create mode 100644 tex/context/config/context.ini delete mode 100644 tex/generic/context/m-ch-de.tex delete mode 100644 tex/generic/context/m-ch-en.tex delete mode 100644 tex/generic/context/m-ch-nl.tex delete mode 100644 tex/generic/context/m-metapo.tex delete mode 100644 tex/generic/context/ppchtex.noc delete mode 100644 tex/latex/context/m-ch-de.sty delete mode 100644 tex/latex/context/m-ch-en.sty delete mode 100644 tex/latex/context/m-ch-nl.sty delete mode 100644 tex/latex/context/m-metapo.sty delete mode 100644 tex/latex/context/m-pictex.sty (limited to 'tex') diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex index f8bb83543..d5b9beb6e 100644 --- a/tex/context/base/colo-ini.tex +++ b/tex/context/base/colo-ini.tex @@ -72,7 +72,7 @@ 5: onbekend systeem -- 6: palet -- is beschikbaar 7: palet -- is niet beschikbaar - 8: (verkeerde) specificatie -- bij -- wordt zwart + 8: specificatie -- bij -- wordt zwart 9: -- kleurruimte wordt niet ondersteund 10: -- kleurruimte wordt ondersteund 11: kleur wordt vertaald in grijs @@ -87,7 +87,7 @@ 5: unknown system -- 6: palette -- is available 7: palette -- is not available - 8: (invalid) specification -- at color -- becomes black + 8: specification -- at color -- becomes black 9: -- color space is not supported 10: -- color space is supported 11: color is converted to gray @@ -102,7 +102,7 @@ 5: unbekanntes System -- 6: palette -- ist verfuegbar 7: palette -- ist nicht verfuegbar - 8: (ungueltige) Spezifikation -- bei Farbe -- wird schwarz + 8: Spezifikation -- bei Farbe -- wird schwarz 9: -- Farbraum wird nicht unterstuetzt 10: -- Farbraum wird unterstuetzt 11: Farbe wird in Grau umgewandelt @@ -117,7 +117,7 @@ 5: neznamy system -- 6: palette -- je k dispozici 7: palette -- neni k dispozici - 8: (naplatna) specifikace -- v barve -- bude cerna + 8: specifikace -- v barve -- bude cerna 9: -- prostor barev neni podporovan 10: -- prostor barev je podporovan 11: barva je prevedena na sed diff --git a/tex/context/base/colo-rgb.tex b/tex/context/base/colo-rgb.tex index 445b8ed8e..19934eee7 100644 --- a/tex/context/base/colo-rgb.tex +++ b/tex/context/base/colo-rgb.tex @@ -30,7 +30,7 @@ \definecolor [yellow] [r=1, g=1, b=0] \definecolor [white] [r=1, g=1, b=1] -\definecolor [black] [r=0, g=0, b=0] +\definecolor [black] [s=0] \definecolor [gray] [s=.9] \definecolor [darkred] [r=.8, g=0, b=0] diff --git a/tex/context/base/cont-cz.tex b/tex/context/base/cont-cz.tex new file mode 100644 index 000000000..e2ba2b56e --- /dev/null +++ b/tex/context/base/cont-cz.tex @@ -0,0 +1,35 @@ +%D \module +%D [ file=cont-cz, +%D version=1998.12.02, +%D title=\CONTEXT, +%D subtitle=\CONTEXT\ Czech Format Generation, +%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. + +\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{czech} + +\input context.tex + +\unprotect + +\setupcurrentlanguage[\s!cz] + +\loaduserspecifications + +\installlanguage [\s!en] [\c!status=\v!start] +\installlanguage [\s!de] [\c!status=\v!start] +\installlanguage [\s!sk] [\c!status=\v!start] +\installlanguage [\s!cz] [\c!status=\v!start] + +\setupbodyfont [csr,rm,12pt] + +\protect + +\dump + +\endinput diff --git a/tex/context/base/cont-fil.tex b/tex/context/base/cont-fil.tex index 6a81465b8..0f68ef860 100644 --- a/tex/context/base/cont-fil.tex +++ b/tex/context/base/cont-fil.tex @@ -15,22 +15,36 @@ \definefilesynonym [chemie] [chemic] -\definefilesynonym [unit] [units] -\definefilesynonym [eenheid] [units] -\definefilesynonym [einheit] [units] - -\definefilesynonym [finance] [financ] - -\definefilesynonym [pre-general] [pre-00] - -\definefilesynonym [pre-original] [pre-01] -\definefilesynonym [pre-green] [pre-02] -\definefilesynonym [pre-funny] [pre-03] -\definefilesynonym [pre-colorful] [pre-04] -\definefilesynonym [pre-fuzzy] [pre-05] -\definefilesynonym [pre-polish] [pre-06] - -\definefilesynonym [abr-pseudocaps] [abr-01] -\definefilesynonym [abr-smallcaps] [abr-02] +\definefilesynonym [unit] [units] +\definefilesynonym [eenheid] [units] +\definefilesynonym [einheit] [units] + +\definefilesynonym [finance] [financ] + +\definefilesynonym [pre-general] [pre-00] + +\definefilesynonym [pre-original] [pre-01] +\definefilesynonym [pre-green] [pre-02] +\definefilesynonym [pre-funny] [pre-03] +\definefilesynonym [pre-colorful] [pre-04] +\definefilesynonym [pre-fuzzy] [pre-05] +\definefilesynonym [pre-polish] [pre-06] +\definefilesynonym [pre-spider] [pre-07] +\definefilesynonym [pre-split] [pre-08] +\definefilesynonym [pre-windows] [pre-09] +\definefilesynonym [pre-grow] [pre-10] +\definefilesynonym [pre-stack] [pre-11] +\definefilesynonym [pre-arrows] [pre-12] +\definefilesynonym [pre-writing] [pre-13] +\definefilesynonym [pre-wonder] [pre-14] +\definefilesynonym [pre-balls] [pre-15] +\definefilesynonym [pre-knot] [pre-16] + +\definefilesynonym [abr-pseudocaps] [abr-01] +\definefilesynonym [abr-smallcaps] [abr-02] + +\definefilesynonym [chinese] [chi-00] +\definefilesynonym [chi-simplified] [chi-01] +\definefilesynonym [chi-traditional] [chi-02] \endinput diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index d42da211d..ef0d14211 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -17,327 +17,423 @@ \unprotect \writestatus{\m!systems}{beware: some patches loaded from cont-new.tex!} - -% Speeds up when having a field with thousands of clones, -% which we happen to have -) - -\def\getmainfieldkids#1% - {\let\@@FieldKids\empty - \ifdefinemainfield - \definerawpasslist{fld:#1}% runtime defined by system - \moverawpasslist{fld:#1}\@@FieldKids + +%D Hm. Needed for low level calls, like in verbatim. + +\def\startcolormode#1% + {\ifincolor + \doifcolorelse{#1} + {\getcurrentcolorspecs{#1}% + \expandafter\dostartcolormode\currentcolorspecs\od} + {\dostopcolormode}% \fi} - -%D Let's also support a negative offset. - -\def\dooutlinebox#1\color#2\offset#3\corner#4\radius#5\depth#6\toggle#7\\% - {\vbox % rules on top of box - {\dimen0=#3\relax - \dimen2=\wd#1\advance\dimen2 by 2\dimen0 - \dimen4=\ht#1\advance\dimen4 by \dimen0 - \dimen6=\dp#1\advance\dimen6 by \dimen0\advance\dimen6 by #6\relax -\ifdim\dimen6<\!!zeropoint - \advance\dimen4 by \dimen6 \dimen8=-\dimen6 \dimen6=\!!zeropoint -\else - \dimen8=\!!zeropoint + +\def\stopcolormode% + {\ifincolor\dostopcolormode\fi} + +%D New table stuff. + +\readfile{supp-ali}{}{} % alignment stuff +\readfile{core-ntb}{}{} % new table mechanism + +\ifx\alignmentclass\undefined \else % [|lg{.}|] \NG 12.34 \NC + +\gdef\handletabulatecharalign#1 % space delimited ! + {\edef\alignmentclass{\tabulatecolumn}% + \edef\alignmentcharacter{\getvalue{\@@tabalign@@\tabulatecolumn}}% + \ifcase\tabulatepass\or + \setfirstpasscharacteralign\checkalignment{#1}% + \fi % force hsize + \setsecondpasscharacteralign\checkalignment{#1}} + \fi - \setbox\extraframebox=\hbox - {\dostrokedbox\width\dimen2\height\dimen4\depth\dimen6% - \corner#4\radius#5\toggle#7\\}% - \setbox\extraframebox=\hbox - {\raise\dimen8\vbox{\moveleft#3\box\extraframebox}}% - \wd\extraframebox=\wd#1% - \ht\extraframebox=\ht#1% - \dp\extraframebox=\dp#1% - \hbox - {%\copy#1\hskip-\wd#1% - \box#1\hskip-\wd\extraframebox % faster - \doifelsenothing{#2} % speeds up a little - {\box\extraframebox} - {\color[#2]{\box\extraframebox}}}}} - -%D More chinese: - -\unexpanded\def\uc#1#2% used in tricky situations - {\bgroup - \edef\unicodeone{#1}% - \edef\unicodetwo{#2}% - \futurelet\nextglyph\dohandleucflowglyph} -\def\dohandleucflowglyph% - {\unicodeposition=\unicodeone\unicodetwo\relax - \handleunicodeglyph +%D A funny (but rather stupid) one. + +\def\removebottomthings% + {\dorecurse{5}{\unskip\unkern\unpenalty}} + +%D We also support broad here: + +\def\dosetraggedcommand#1% + {\expanded{\dodosetraggedcommand{#1}}} + +\def\dodosetraggedcommand#1% + {\doifinsetelse{\v!ruim} {#1}{\!!doneatrue}{\!!doneafalse}% + \doifinsetelse{\v!breed}{#1}{\!!donebtrue}{\!!donebfalse}% + \let\raggedcommand\relax + \let\raggedtopcommand\empty + \let\raggedbottomcommand\empty + \ExpandFirstAfter\processallactionsinset + [#1] + [ \v!links=>\if!!donea \def\raggedcommand{\veryraggedleft}% + \else \def\raggedcommand{\raggedleft}% + \fi, + \v!rechts=>\if!!donea \def\raggedcommand{\veryraggedright}% + \else \def\raggedcommand{\raggedright}% + \fi, + \v!midden=>\if!!doneb \def\raggedcommand{\raggedwidecenter}% + \else\if!!donea \def\raggedcommand{\veryraggedcenter}% + \else \def\raggedcommand{\raggedcenter}% + \fi\fi, + \v!hoog=>\let\raggedbottomcommand\vfilll, % bonus, pretty strong + \v!laag=>\let\raggedtopcommand \vfilll, % used with \framed + \v!nee=>\def\raggedcommand{\raggedright}, + \v!ja=>\let\raggedcommand\relax, + \v!normaal=>\let\raggedcommand\relax]} + +%D Sometimes a capstrut comes in handy +%D +%D \starttabulatie[|Tl|l|l|] +%D \NC yes \NC normal strut \NC {\toonstruts\setupstrut[ja]\strut} \NC \NR +%D \NC no \NC no strut \NC {\toonstruts\setupstrut[nee]\strut} \NC \NR +%D \NC kap \NC a capital strut (i.e. Q) \NC {\toonstruts\setupstrut[kap]\strut} \NC \NR +%D \NC A B \unknown \NC a character strut (e.g. A) \NC {\toonstruts\setupstrut[A]\strut} \NC \NR +%D \NC \NC a normal strut \NC {\toonstruts\setupstrut\strut} \NC \NR +%D \stoptabulatie + +\def\setstrut% + {\setstrutdimen\strutheight\strutheightfactor\spacingfactor + \setstrutdimen\strutdepth \strutdepthfactor \spacingfactor + \dosetstrut} + +\def\setcharstrut#1% + {\setbox\strutbox=\hbox{#1}% + \edef\strutheight{\the\ht\strutbox}% + \edef\strutdepth {\the\dp\strutbox}% + \dosetstrut} + +\def\setcapstrut% could be M, but Q has descender + {\setcharstrut{Q}} + +\def\setupstrut% + {\dosingleempty\dosetupstrut} + +\def\dosetupstrut[#1]% + {\processaction + [#1] + [ \v!ja=>\setstrut, + \v!nee=>\setnostrut, + \v!kap=>\setcapstrut, + \s!default=>\setstrut, + \s!unknown=>\setcharstrut{\commalistelement}]} + +%D Centered looks nicer: + +\def\dosetstrut% + {\let\strut=\normalstrut + \setbox\strutbox=\normalhbox + {\normalhbox to \!!zeropoint + {% \hss % new, will be option + \vrule + \!!width \strutwidth + \!!height\strutheight + \!!depth \strutdepth + \hss}}} + +%D in case of no color we don't want to see the rules + +\def\dophantombox#1\\{\hphantom{\dofilledbox#1\\}} + +\def\raster[#1]% + {\groupedcommand{\startraster[#1]}{\stopraster}} + +\def\setgraybox\width#1\height#2\depth#3\raster#4\corner#5\radius#6\\% + {\doifelsenothing{#4} + {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\} + {\raster[#4]% + {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}} + +\def\setcolorbox\width#1\height#2\depth#3\color#4\corner#5\radius#6\\% + {\ifincolor + \doifcolorelse{#4}{\color[#4]% + {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}} + {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}% + \else + \dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\% + \fi} + +%D more and more + +\def\lhbox{\dowithnextbox{\hbox to \hsize{\box\nextbox\hss }}\hbox} +\def\mhbox{\dowithnextbox{\hbox to \hsize{\hss\box\nextbox\hss}}\hbox} +\def\rhbox{\dowithnextbox{\hbox to \hsize{\hss\box\nextbox }}\hbox} + +\let\lefthbox =\lhbox +\let\midhbox =\mhbox +\let\righthbox=\rhbox + +%D to be tested + +\def\docomplexuit[#1::#2]% + {\dontleavehmode % added, but probably not needed + \bgroup + \doifdefinedelse{\v!file:::#1} + {\def\doexternaldocument[##1][##2][##3]% + {\naar{##3}[#1::#2]}% + \getvalue{\v!file:::#1}} + {\tttf[#1]}% \egroup} -%D Some adaptions due to active /'s. This goes to supp-lan.tex. +%D Makes sense: -%D And then came the Polish users, and who can deny them? Like -%D the German \TEX\ users demand an active \type {"}, the -%D Polish cannot do without the \type {/}. The next alternative -%D is a bit slower but far the most robust alternative. As a -%D bonus it also offers \type {|^|} and even \type {|||} which -%D both result in a breakable|^|bar. -%D -%D The trick we use here is to convert the argument to a -%D string and compare this string to string'd tokens. +\def\removelastskip% \ifvmode the plain tex one \fi + {\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi\fi} -\def\activedotextmodediscretionary#1% - {\bgroup - \let\nextnextnext\egroup - \def\handlecompoundcharacter##1% new, needed for polish - {\getvalue{\@nc@\string##1}}% where / is active - \def\next##1#1% - {\def\next{\activedododotextmodediscretionary#1{##1}}% - \futurelet\nextnext\next}% - \next} +%D More hyphention control, will be combined with hz setup. -\def\activedododotextmodediscretionary#1#2% - {\convertargument#2\to\discretionarytoken - \def\textmodediscretionary{\getvalue{textmodediscretionary\string#1}}% - \ifx#1\nextnext % takec care of ||| and +++ and ...... - \prewordbreak\discretionary{\hbox{$#1$}}{}{\hbox{$#1$}}% - \allowbreak\postwordbreak - \def\nextnextnext{\afterassignment\egroup\let\next=}% - \else\ifx\discretionarytoken\empty - \checkafterdiscretionary - \bgroup - \checkbeforediscretionary - \prewordbreak\hbox{\textmodediscretionary\nextnext}\allowbreak\postwordbreak - \egroup - \else\convertargument=\to\next\ifx\next\discretionarytoken - \prewordbreak\textmodediscretionary - \else\convertargument~\to\next\ifx\next\discretionarytoken - \prewordbreak\discretionary{-}{}{\thinspace}\postwordbreak - \else\convertargument_\to\next\ifx\next\discretionarytoken - \prewordbreak\discretionary{\textmodediscretionary} - {\textmodediscretionary}{\textmodediscretionary}\prewordbreak - \else\convertargument(\to\next\ifx\next\discretionarytoken - \ifdim\lastskip>\!!zeropoint\relax - (\prewordbreak - \else - \prewordbreak\discretionary{}{(-}{(}\prewordbreak - \fi - \else\convertargument)\to\next\ifx\next\discretionarytoken - \ifx\nextnext\blankspace - \prewordbreak)\relax - \else\ifx\nextnext\space - \prewordbreak)\relax - \else - \prewordbreak\discretionary{-)}{}{)}\prewordbreak - \fi\fi - \else\convertargument'\to\next\ifx\next\discretionarytoken - \prewordbreak\discretionary{-}{}{'}\postwordbreak - \else\convertargument<\to\next\ifx\next\discretionarytoken - \beginofsubsentence\prewordbreak\beginofsubsentencespacing - \else\convertargument>\to\next\ifx\next\discretionarytoken - \endofsubsentencespacing\prewordbreak\endofsubsentence - \else\convertargument^\to\next\ifx\next\discretionarytoken - \prewordbreak\discretionary{\hbox{$|$}}{}{\hbox{$|$}}% - \allowbreak\postwordbreak - \else - \checkafterdiscretionary - \bgroup - \checkbeforediscretionary - \prewordbreak - \discretionary{\hbox{#2}}{}{\hbox{#2}}% - \allowbreak\postwordbreak - \egroup - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \nextnextnext} - -%D Since we don't have to bother about active characters any -%D longer, we end up with a pretty simple activating macro: - -\def\enableactivediscretionaries% - {\let\dotextmodediscretionary=\activedotextmodediscretionary} - -\enableactivediscretionaries - -\def\handlecompoundcharacter#1% - {\def\dohandlecompoundcharacter% - {\ifx\next\bgroup - %\def\next{\dodohandlecompoundcharacter#1}% % handle "{ee} -> \"ee - %\let\next\relax % forget "{ee} -> ee - \def\next{\handlecompoundcharacterone#1}% % ignore "{ee} -> "ee - \else\ifx\next\egroup - \def\next{\getvalue{\@nc@\string#1}}% - \else\ifx\next\blankspace - \def\next{\getvalue{\@nc@\string#1}}% - \else - \def\next{\dodohandlecompoundcharacter#1}% - \fi\fi\fi - \next}% - \futurelet\next\dohandlecompoundcharacter} - -%D So far for supp-lan.tex. - -%D For Berend: - -\def\simpledoblanko% - {\doifelse{\currentwitruimte}{\v!geen} - {\blanko[\currentblanko]} - {\blanko[\s!default]}} - -\definieerblanko - [\s!default] - [\v!wit] - -%\definieerblanko -% [\s!default] -% [\v!groot] - -%D Yes or no: - -\def\collectlocalfootnotes% - {\def\localfootinsert##1% was \gdef, but never reset! - {%\message{[local footnote]}% - \global\setbox\localpostponedfootnotes=\vbox\bgroup - \unvbox\localpostponedfootnotes - \let\next}} - -\def\doplaatskoptekst#1#2#3#4% - {\beginheadplacement{#1}% - \setbox0=\hbox - {\getvalue{\??ko#1\c!commando} - {} % no number - {\doattributes - {\??ko#1}\c!letter\c!kleur - {\doattributes - {\??ko#1}\c!tekstletter\c!tekstkleur - {\dontconvertfont - \ifdisplaysectionhead\stelinterliniein -\else - \stelspatieringin -\fi - #2% - \getvalue{\??ko#1\c!voorcommando}% - \getvalue{\??ko#1\c!tekstcommando}% - {\ifdisplaysectionhead - \setstrut\begstrut#3\endstrut -\xdef\localheaddepth{\the\dp\strutbox}% - \else - #3% - \fi}% - \getvalue{\??ko#1\c!nacommando}% - \ifdisplaysectionhead\endgraf\fi}}}}% - \endheadplacement{#1}{#4}} - -\def\doplaatskopnummertekst#1#2#3#4#5% - {\beginheadplacement{#1}% - \setbox0=\hbox - {\getvalue{\??ko#1\c!commando}% - {\doattributes{\??ko#1}\c!letter\c!kleur - {\doattributes{\??ko#1}\c!nummerletter\c!nummerkleur - {\getvalue{\??ko#1\c!voorcommando}% - \getvalue{\??ko#1\c!nummercommando}% - {\ifdisplaysectionhead - \setstrut\begstrut#3\endstrut - \else - #3% - \fi}}}} - {\doattributes{\??ko#1}\c!letter\c!kleur - {\doattributes{\??ko#1}\c!tekstletter\c!tekstkleur - {\dontconvertfont - \ifdisplaysectionhead\stelinterliniein -\else - \stelspatieringin -\fi - #2% - \getvalue{\??ko#1\c!tekstcommando}% - {\ifdisplaysectionhead - \setstrut\begstrut#4\endstrut -\xdef\localheaddepth{\the\dp\strutbox}% - \else - #4% - \fi}% - \getvalue{\??ko#1\c!nacommando}% - \ifdisplaysectionhead\endgraf\fi}}}}% - \endheadplacement{#1}{#5}} +\def\nohyphens% + {\ifx\dohyphens\relax + \edef\dohyphens% + {\hyphenpenalty\the\hyphenpenalty + \exhyphenpenalty\the\exhyphenpenalty\relax}% + \fi + \hyphenpenalty\@M\exhyphenpenalty\@M} -%D depth +\let\dohyphens\relax -\def\beginheadplacement#1% +%D Better (a mere copy with \dohyphens): + +\bgroup \catcode`\~=\active \catcode`\/=\active + +\unexpanded\gdef\hyphenatedurl#1% {}{} handles accents {\bgroup - \gdef\localheaddepth{\dp\strutbox}% - \everypar{}% needed indeed - \noindent % ipv \witruimte elders, na \forgetall ! - \bgroup - \forgetall % now we may forget everything - %\showcomposition - \mindermeldingen - \postponefootnotes - \iflocation\ifdisplaysectionhead\else\noninterferingmarks\fi\fi - \setupinteraction - [\c!letter=, - \c!kleur=, - \c!contrastkleur=]% - \strictouterreferencestrue % tzt instelling - \def\localkopsetup% - {\dolocalkopsetup{#1}}% - \startsynchronisatie} - -\def\endheadplacement#1#2% - {\doifvaluenothing{\??ko#1\c!file}{\locationfalse}% - \ifdisplaysectionhead - \let\headlastlinewidth\!!zeropoint - \snaptogrid\hbox - {\iflocation - \ifautocrossdocument - \naarbox{\box0}[\getvalue{\??ko#1\c!file}::#1]% - \else - \hbox{\box0}% - \fi - \else - \hbox{\box0}% - \fi - \doflushfootnotes}% new - \endgraf - \nointerlineskip - \dosomebreak\nobreak - #2% - \else - \strut - \doflushfootnotes % new - \iflocation - \ifautocrossdocument - \hhboxindent=\ifcontinuoushead\headlastlinewidth\else\!!zeropoint\fi - \unhhbox0\with{\naarbox{\box\hhbox}[\getvalue{\??ko#1\c!file}::#1]}% - \advance\lasthhboxwidth by \numberheaddistance - \xdef\headlastlinewidth{\the\lasthhboxwidth}% - \else - \unhbox0 - \global\let\headlastlinewidth\!!zeropoint - \fi - \else - \unhbox0 - \global\let\headlastlinewidth\!!zeropoint - \fi - #2% - \dimen0=\numberheaddistance - \hskip\dimen0 \!!plus \dimen0 \!!minus .25\dimen0 - \hskip\headsignal\ignorespaces + \ifnum\hyphenpenalty<10000 \else + \def\discretionary##1##2##3{##1\allowbreak##2}% \fi - \ifdisplaysectionhead - \ifgridsnapping % important, font related depth, see comment - \prevdepth\dp\strutbox - \else - \prevdepth\localheaddepth - \fi + \obeyhyphens + \def\splitbefore##1% + {\setbox\scratchbox=\hbox{##1{}{}}% + \ifcase\urlsplitmode + \box\scratchbox + \or + \postwordbreak\box\scratchbox\prewordbreak + \or + \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak + \else + \postwordbreak\box\scratchbox\prewordbreak + \fi}% + \def\splitafter##1% + {\ifcase\urlsplitmode + ##1{}{}% + \or + \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak + \or + \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak + \else + \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak + \fi}% + \def\flushurl% + {\savedurl\let\savedurl\empty}% + \def\\% + {\spliturl\#}% + \let\~=\tildeletter \let~=\~% + \let\/=\slashletter \let/=\/% + \let\savedurl\empty + \handletokens#1\with\scanurl + \egroup} + +\egroup + +%D A prelude to strategies. Note for myself: overloads +%D previous stuff from local pragma test files. + +\def\s!strategy{strategy} + +\def\currentstrategypass {1} +\def\currentstrategyvariable{0} +\def\maximumstrategypass {8} + +\newconditional\strategypassneeded +\newconditional\strategypassforced + +\definetwopasslist{\s!strategy} + +\def\registerstrategypass% + {\ifnum\currentstrategypass>\maximumstrategypass \else + \ifconditional\strategypassforced + \doglobal\increment\currentstrategypass + \else%\ifconditional\strategypassneeded + %\doglobal\increment\currentstrategypass + \fi%\fi \fi - \stopsynchronisatie - \egroup - \egroup -\doflushfootnotes % new, still needed? - \ifdisplaysectionhead - \doifvalue{\??ko#1\c!springvolgendein}{\v!nee}{\noindentation}% - \else - \nonoindentation % recently added, was a bug - \fi} + \savecurrentvalue\currentstrategypass{\currentstrategypass}} + +\appendtoks \registerstrategypass \to \everybye % \everylastshipout -%D Due to polish active /'s we have to deal a bit more -%D robust with filename: +\def\setstrategyvariable#1#2% key value + {%\doifnotstrategyvariable{#1}{\global\settrue\strategypassneeded}% + \doglobal\increment\currentstrategyvariable + \expanded{\immediatewriteutilitycommand{\noexpand + \twopassentry{\s!strategy}{\currentstrategyvariable}{#1::#2}}}} -%D ... +\def\doifstrategyvariableelse#1#2#3% + {\getstrategyvariable{#1}\iftwopassdatafound#2\else#3\fi} + +\def\getstrategyvariable#1% key + {\findtwopassdata{\s!strategy}{#1::}% + \setxvalue{\s!strategy:#1}{\twopassdata}} + +\def\retainstrategyvariable#1% key + {\expanded{\setstrategyvariable{#1}{\strategyvariable{#1}}}} + +\def\strategyvariable#1% key + {\csname\s!strategy:#1\endcsname} + +\let\stratvar\strategyvariable + +\def\forcestrategy{\global\settrue \strategypassforced} +\def\abortstrategy{\global\setfalse\strategypassforced} + +\def\doifstrategyvariableelse#1#2#3% + {\getstrategyvariable{#1}\iftwopassdatafound#2\else#3\fi} + +\def\doifstrategyvariable #1#2{\doifstrategyvariableelse{#1}{#2}{}} +\def\doifnotstrategyvariable#1#2{\doifstrategyvariableelse{#1}{}{#2}} + +%D New: only at start of columns; may change ! + +\definesystemvariable {ks} % KolomSpan + +\def\setupcolumnspan[#1]% + {\getparameters[\??ks][#1]} + +\presetlocalframed + [\??ks] + +\setupcolumnspan + [\c!n=2, + \c!offset=\v!overlay, + \c!kader=\v!uit] + +\newbox\columnspanbox \let\postprocesscolumnspanbox\gobbleoneargument + +\def\dostartcolumnspan[#1]% + {\bgroup + \setupcolumnspan[#1]% + \forgetall +% + \ifbinnenkolommen + \advance\hsize by \intercolumnwidth + \hsize=\@@ksn\hsize + \advance\hsize by -\intercolumnwidth + \fi +% + \dowithnextbox + {\setbox\columnspanbox=\box\nextbox +\ifbinnenkolommen\wd\columnspanbox=\hsize\fi + \postprocesscolumnspanbox\columnspanbox + \scratchdimen=\ht\columnspanbox + \setbox\columnspanbox=\hbox % depth to be checked, probably option! + {\localframed[\??ks][\c!offset=\v!overlay]{\box\columnspanbox}}% + \ht\columnspanbox=\scratchdimen + \dp\columnspanbox=\dp\strutbox + \wd\columnspanbox=\hsize + \ifbinnenkolommen + \ifnum\@@ksn>1 + \setvsize + \dohandleallcolumns + {\ifnum\currentcolumn>\@@ksn\else + \global\setbox\currenttopcolumnbox=\vbox + {\ifnum\currentcolumn=1 + \snaptogrid\vbox{\copy\columnspanbox} + \else + \snaptogrid\vbox{\vphantom{\copy\columnspanbox}} + \fi}% + \wd\currenttopcolumnbox=\hsize + \global\advance\vsize by -\ht\currenttopcolumnbox + \fi} + \global\pagegoal=\vsize + \else + \snaptogrid\vbox{\box\columnspanbox} + \fi + \else + \snaptogrid\vbox{\box\columnspanbox} + \fi + \prevdepth\dp\strutbox + \egroup} + \vbox\bgroup +% \ifbinnenkolommen +% \advance\hsize by \intercolumnwidth +% \hsize=\@@ksn\hsize +% \advance\hsize by -\intercolumnwidth +% \fi + %\topskipcorrection % becomes an option ! + \EveryPar{\begstrut\EveryPar{}}} % also ! + +\def\startcolumnspan% + {\dosingleempty\dostartcolumnspan} + +\def\stopcolumnspan% + {\egroup} + +%D A test: + +\def\EndTableParBox% + {\removelastskip % added + %\MakeStrut{0pt}{\StrutDepthFactor\StrutUnit} % removed +\par +\ifnum\prevgraf>0 + \strut + \vskip-\lineheight +\fi + \egroup % finishes the \vtop begun by \BeginTableParbox + \getboxheight\scratchdimen\of\box\scratchbox\relax % added + \ifdim\scratchdimen>\TABLEparheight % added + \global\TABLEparheight=\scratchdimen % added + \fi % added + \box\scratchbox} + +%D A few local optimizations and new features: + +\readfile {cont-loc} {} {} + +%D For Ton: + +\def\plaatsexterndocument[#1]% + {\def\doexternaldocument[##1][##2][##3]% + {\readlocfile{##2}{}{}}% + \getvalue{\v!file:::#1}} + +%D For me: + +\beginTEX + +\def\p!doifinstringelse#1#2% + {\def\pp!doifinstringelse##1#1##2##3\war% + {\csname if\if##2@fals\else tru\fi e\endcsname}% + \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here + +\endTEX + +\beginETEX \unless + +\def\p!doifinstringelse#1#2% + {\def\pp!doifinstringelse##1#1##2##3\war% + {\unless\if##2@}% + \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here + +\endETEX + +%D For Willy's nested commented buffers: + +\def\processnextbufferline#1#2#3% + {\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run + \convertargument#1 \to\next + \doifinstringelse{\delcharacter\texcommentsymbol}{\delcharacter\next} + {\def\next{#3}} + {\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} %D Some day: @@ -351,10 +447,7 @@ % \flushmargincontent[#1][#2]{#3}% % \markeer[\v!margetitel]{#3}}} -%D Table - - -%D New indeed. Undocumented and under development. +%D Undocumented and still under development. \def\startsimplecolumns% {\dosingleempty\dostartsimplecolumns} @@ -364,36 +457,49 @@ \getparameters[\??kl][\c!breedte=\hsize,\c!afstand=1em,\c!n=2,#1]% \setrigidcolumnhsize\@@klbreedte\@@klafstand\@@kln \setbox\scratchbox=\vbox\bgroup - \forgetall} + \forgetall} % \blanko[\v!blokkeer] \def\stopsimplecolumns% - {\removelastskip + {\removebottomthings \egroup \rigidcolumnbalance\scratchbox \egroup} -%D Aha. +%D Improved: + +\newbox\rigidcolumnbox \def\rigidcolumnbalance#1% - {\global\chardef\rigidcolumnbox=#1\relax - \ifnum\rigidcolumns=1 - \ifinner\ifhmode\box\else\unvbox\fi\else\unvbox\fi\rigidcolumnbox + {\ifnum\rigidcolumns=1 % tzt ook h/d correctie + \ifinner\ifhmode\box\else\unvbox\fi\else\unvbox\fi#1\relax \else - \hbox to \savedrigidhsize % was \hsize - {\vbadness=10000 - \tabskip\!!zeropoint + \vbox + {\forgetall + \dontcomplain \setbox\rigidcolumnbox=\vbox - {\unvbox\rigidcolumnbox - \unpenalty\removelastskip}% get rid of \blank's - \splittopskip=\openstrutheight -\splittopskip=\!!zeropoint - %\scratchdimen=\ht\rigidcolumnbox % sensitive for overflow - %\divide\scratchdimen by \rigidcolumns % therefore we need the hack: - \scratchdimen=1pt - \divide\scratchdimen by \rigidcolumns - \expanded{\scratchdimen=\withoutpt{\the\scratchdimen}\ht\rigidcolumnbox}% - \advance\scratchdimen by \ht\strutbox - \valign{##\vfill\cr\dorigidcolumnsplits}}% + {\line{}\goodbreak\unvbox#1\removebottomthings}% + \splittopskip=\openstrutheight + \setbox\scratchbox=\vsplit\rigidcolumnbox to \!!zeropoint + \scratchdimen=\ht\rigidcolumnbox + \divide\scratchdimen by \rigidcolumns + \getnoflines\scratchdimen + \scratchdimen=\noflines\lineheight + \setbox\scratchbox=\hbox to \savedrigidhsize + {\dorecurse{\rigidcolumns} + {\setbox\scratchbox=\vsplit\rigidcolumnbox to \scratchdimen + \dp\scratchbox=\openstrutdepth + \vtop + \ifalignrigidcolumns to + \ifstretchrigidcolumns\vsize\else\scratchdimen\fi + \fi + {\unvbox\scratchbox}% + \hfill}% + \hfillneg}% + \advance\scratchdimen by -\openstrutdepth + \setbox\scratchbox\hbox{\raise\scratchdimen\box\scratchbox} + \dp\scratchbox=\openstrutdepth + \ht\scratchbox=\scratchdimen + \box\scratchbox} \fi} %D Is this a better default? @@ -410,127 +516,56 @@ \def\stopgeheel {\stopregelcorrectie} -%D Can save lots of mpgraph files when using pdftex: +%D Under construction: -\newif\ifrecycleMPslots \recycleMPslotsfalse - -\def\allocateMPslot#1% - {\ifrunMPgraphics - \ifcase\pdfoutput \recycleMPslotsfalse \fi - \else - \recycleMPslotsfalse - \fi - \ifrecycleMPslots - \doloop - {\doifundefined{\recurselevel MP} - {\global\letvalue{\recurselevel MP}=\empty - \global#1=\recurselevel\exitloop}}% - %\message{[MP slot + \number#1]% - \else - \global\advance#1 by 1 - \fi} - -\def\deallocateMPslot#1% - {\ifrunMPgraphics - \ifcase\pdfoutput \recycleMPslotsfalse \fi - \else - \recycleMPslotsfalse - \fi - \ifrecycleMPslots - \global\letbeundefined{\number#1MP}% - %\message{[MP slot - \number#1]}% - \fi} - -%D For Taco and David: (to be documented and added to -%D setupb too). - -\def\definereferenceformat% - {\dodoubleargument\dodefinereferenceformat} - -\def\dodefinereferenceformat[#1][#2]% - {\iffirstargument - \getparameters[\??rf#1] - [\c!links={[}, - \c!rechts={]}, - \c!tekst=, - \c!label=, - \c!commando=\in, - #2]% - \unexpanded\setvalue{#1}{\doexecutereferenceformat{#1}}% - \fi} +\def\resetpositions% + {\let\someposition=\gobblesevenarguments % old + \let\pxypos =\gobblefourarguments % new + \let\pxywhdpos =\gobblesevenarguments} % new -\def\noexecutelabelreferenceformat#1% - {\doifvaluesomething{\??rf#1\c!tekst} - {\gdef\textofreference{\getvalue{\??rf#1\c!tekst}}}% - \getvalue{\??rf#1\c!commando}} - -\def\doexecutelabelreferenceformat#1% - {\getvalue{\??rf#1\c!commando}% - {\leftlabeltext {\getvalue{\??rf#1\c!label}}}% - {\rightlabeltext{\getvalue{\??rf#1\c!label}}}} - -\def\doexecutereferenceformat#1% - {\gdef\leftofreference {\getvalue{\??rf#1\c!links }}% - \gdef\rightofreference{\getvalue{\??rf#1\c!rechts}}% - \global\let\textofreference\empty % otherwise ~ added - \doifelsevaluenothing{\??rf#1\c!label} - {\let\next\noexecutelabelreferenceformat} - {\let\next\doexecutelabelreferenceformat}% - \next{#1}} - -\let\leftofreference \relax -\let\rightofreference\relax -\let\textofreference \relax - -\def\dodododoinatreference#1#2#3[#4]% - {\ifx\next\bgroup - \dododododoinatreference - {\leftofreference#1\ignorespaces#3\rightofreference}{#2}[#4]% - \else - \dododododoinatreference - {\leftofreference#1\rightofreference}{#2#3}[#4]% - \fi} +\resetpositions -\def\dododododoinatreference#1#2[#3]% +%D Some more box stuff, related to positioning (under +%D construction). Nice stuff for a tips and tricks maps +%D article. +%D +%D \starttypen +%D \raisebox{100pt}\hbox{test} +%D \raisebox50pt\hbox{test} +%D \hsmash{\raisebox{100pt}\hbox{test}} +%D \stoptypen + +\def\doraiselowerbox#1#2% a nice trick us used to accept + {\def\next% % both direct and {} dimensions + {\dowithnextbox + {\setbox\nextbox=\hbox{#1\scratchdimen\box\nextbox}% + \ht\nextbox=\ht\strutbox + \dp\nextbox=\dp\strutbox + \box\nextbox}}% + \afterassignment\next\scratchdimen=#2} + +\def\raisebox{\doraiselowerbox\raise} +\def\lowerbox{\doraiselowerbox\raise} + +%D It's more convenient to use \type {\columnwidth} instead +%D of messing around with boxes each time. + +\newdimen\columnwidth +\newdimen\gutterwidth + +\def\determinecolumnwidth% {\bgroup - \forgetall - \leaveoutervmode - \doifreferencefoundelse{#3} - {\bgroup - \let\ignorespaces \empty % rather dirty trick, but ok - \let\leftofreference \empty % the same, again ok - \let\rightofreference\empty % and once more - \def\textofreference {#2}% % temporary value - \ifx\textofreference\empty % simple expansion - \doifelsenothing{#1} - {\egroup\dosymbolreference{#1}{\textofreference}[#3]} - {\egroup\dowantedreference{#1}{\textofreference}[#3]}% - \else - \doifelsenothing{#1} - {\egroup\dosymbolreference{#1}{#2}[#3]} - {\egroup\dowantedreference{#1}{#2}[#3]}% - \fi} - {\dounknownreference{#1}{#2}[#3]}% - \referentieinfo{<}{#3}% - \global\let\leftofreference \empty - \global\let\rightofreference\empty - \global\let\textofreference \empty + \setbox\scratchbox=\hbox + {\setcolumnhsize + \global\columnwidth=\usercolumnwidth + \global\gutterwidth=\intercolumnwidth}% \egroup} -%D The next hack is used for some exiting new feature test. - -\def\resetpositions% - {\let\someposition=\gobblesevenarguments} - -\resetpositions - %D The next line can be uncommented when Taco's extensions to %D \quote {\TEX\ The Program} are used. % \readfile {syst-eet} {} {} -% I have to scan for \unhbox and use the vbox/hbox trick instead - \protect \endinput diff --git a/tex/context/base/cont-old.tex b/tex/context/base/cont-old.tex index e71f15da1..5451de8b0 100644 --- a/tex/context/base/cont-old.tex +++ b/tex/context/base/cont-old.tex @@ -24,32 +24,21 @@ \def\substitutecommand#1#2% {\gdef#1{\dosubstitutecommand{#1}{#2}}} - -\def\blockstatus#1#2#3% - {\writestatus{tekstblok}{sorry, nieuwe versie, tweede/andere run nodig}% - \endinput} -\def\presetexternfiguur[#1][#2]% - {\writestatus{figuren}{sorry, nieuwe versie, run texutil /figures}% - \endinput} +%substitutecommand \stelopsomminginopniveau \stelopsommingin +%substitutecommand \stelopsommingvolledigin \stelopsommingin +%substitutecommand \stelsomsymboolin \definieersymbool +%substitutecommand \somsymbool \symbool -\def\blokstatus {\endinput} -\def\beginvanexternefiguren {\thisisfigureversion{0}} - -\substitutecommand \stelopsomminginopniveau \stelopsommingin -\substitutecommand \stelopsommingvolledigin \stelopsommingin -\substitutecommand \stelsomsymboolin \definieersymbool -\substitutecommand \somsymbool \symbool +%substitutecommand \stelzetspiegelin \stellayoutin +%substitutecommand \stelmargesin \stellayoutin +%substitutecommand \steloffsetin \stellayoutin -\substitutecommand \stelzetspiegelin \stellayoutin -\substitutecommand \stelmargesin \stellayoutin -\substitutecommand \steloffsetin \stellayoutin + %def \randbreedte {\rechterrandbreedte} - \def \randbreedte {\rechterrandbreedte} - -\substitutecommand \steldoordefinitiein \steldoordefinierenin -\substitutecommand \steldoornummerin \steldoornummerenin -\substitutecommand \steldoorsprongin \steldoorspringenin +%substitutecommand \steldoordefinitiein \steldoordefinierenin +%substitutecommand \steldoornummerin \steldoornummerenin +%substitutecommand \steldoorsprongin \steldoorspringenin \substitutecommand \volgendehoofdstuk {\stelkopnummerin[hoofdstuk][+1]} \substitutecommand \volgendeparagraaf {\stelkopnummerin[paragraaf][+1]} @@ -67,32 +56,32 @@ \substitutecommand \definieersynoniem \definieersynoniemen -\substitutecommand \stelvoetnootin \stelvoetnotenin +%substitutecommand \stelvoetnootin \stelvoetnotenin -\substitutecommand \karakters \uitgerekt +%substitutecommand \karakters \uitgerekt -\substitutecommand \diepevoetnoot \voetnoot +%substitutecommand \diepevoetnoot \voetnoot % english: \substitutecommand \setupformulas \setupformulae -\substitutecommand \useexternalfigures \setupexternalfigures +%substitutecommand \useexternalfigures \setupexternalfigures \substitutecommand \setupintermezzos \setupintermezzi -\substitutecommand \leftlined \leftaligned -\substitutecommand \middlelined \midaligned -\substitutecommand \rightlined \rightaligned +%substitutecommand \leftlined \leftaligned +%substitutecommand \middlelined \midaligned +%substitutecommand \rightlined \rightaligned -\substitutecommand \setupcorps \setupbodyfont -\substitutecommand \switchtocorps \switchtobodyfont -\substitutecommand \definecorps \definebodyfont -\substitutecommand \definecorpsenvironment \definebodyfontenvironment -\substitutecommand \showcorps \showbodyfont -\substitutecommand \showcorpsenvironment \showbodyfontenvironment +%substitutecommand \setupcorps \setupbodyfont +%substitutecommand \switchtocorps \switchtobodyfont +%substitutecommand \definecorps \definebodyfont +%substitutecommand \definecorpsenvironment \definebodyfontenvironment +%substitutecommand \showcorps \showbodyfont +%substitutecommand \showcorpsenvironment \showbodyfontenvironment - \def \corpssize {\bodyfontsize} + %def \corpssize {\bodyfontsize} \protect \endinput diff --git a/tex/context/base/cont-usr.ori b/tex/context/base/cont-usr.ori index db2526542..161c076c0 100644 --- a/tex/context/base/cont-usr.ori +++ b/tex/context/base/cont-usr.ori @@ -32,6 +32,7 @@ \definefilesynonym [lang-en.pat] [ushyph1.tex] \definefilesynonym [lang-fi.pat] [fihyph.tex] \definefilesynonym [lang-fr.pat] [frhyph.tex] +\definefilesynonym [lang-hr.pat] [hrhyph.tex] \definefilesynonym [lang-it.pat] [ithyph.tex] \definefilesynonym [lang-la.pat] [lahyph7.tex] \definefilesynonym [lang-nl.pat] [nehyph.tex] @@ -41,7 +42,6 @@ \definefilesynonym [lang-sk.pat] [skhyph.tex] \definefilesynonym [lang-sp.pat] [sphyph.tex] \definefilesynonym [lang-sv.pat] [sehyph.tex] -\definefilesynonym [lang-hr.pat] [hrhyph.tex] \definefilesynonym [lang-tr.pat] [trhyph.tex] \definefilesynonym [lang-uk.pat] [ukhyphen.tex] \definefilesynonym [lang-us.pat] [ushyph1.tex] @@ -51,9 +51,9 @@ %D moment) we specify encodings here. \installlanguage [\s!cz] [\s!mapping=il2,\s!encoding=il2] -\installlanguage [\s!sk] [\s!mapping=il2,\s!encoding=il2] +\installlanguage [\s!hr] [\s!mapping=il2,\s!encoding=il2] \installlanguage [\s!pl] [\s!mapping=pl0,\s!encoding=pl0] -\installlanguage [\s!hr] [\s!mapping=il2,\s!encoding=il2] % ans ? +\installlanguage [\s!sk] [\s!mapping=il2,\s!encoding=il2] %D Sometimes these are not wanted: @@ -66,24 +66,26 @@ %D first. Normally you don't have to change a byte. % \installlanguage [\s!af] [\c!status=\v!start] % afrikaans +% \installlanguage [\s!cz] [\c!status=\v!start] % czech % \installlanguage [\s!da] [\c!status=\v!start] % danish % \installlanguage [\s!de] [\c!status=\v!start] % german % \installlanguage [\s!en] [\c!status=\v!start] % english us % \installlanguage [\s!fi] [\c!status=\v!start] % finnish % \installlanguage [\s!fr] [\c!status=\v!start] % french +% \installlanguage [\s!hr] [\c!status=\v!start] % croatian % \installlanguage [\s!it] [\c!status=\v!start] % italian % \installlanguage [\s!la] [\c!status=\v!start] % latin % \installlanguage [\s!nl] [\c!status=\v!start] % dutch % \installlanguage [\s!no] [\c!status=\v!start] % norwegian % \installlanguage [\s!pl] [\c!status=\v!start] % polish % \installlanguage [\s!pt] [\c!status=\v!start] % portuguese +% \installlanguage [\s!sk] [\c!status=\v!start] % slovak % \installlanguage [\s!sp] [\c!status=\v!start] % spanish % \installlanguage [\s!sv] [\c!status=\v!start] % swedish % \installlanguage [\s!tr] [\c!status=\v!start] % turkish % \installlanguage [\s!uk] [\c!status=\v!start] % english uk -% \installlanguage [\s!hr] [\c!status=\v!start] % croatian -\installlanguage [deo] [\c!status=\v!start] % old german +% \installlanguage [deo] [\c!status=\v!start] % old german % \installlanguage [nlx] [\c!status=\v!start] % dutch 8 bit %D The next lines can be used for setting the language to be @@ -96,6 +98,7 @@ % \setupcurrentlanguage[\s!en] % \setupcurrentlanguage[\s!fi] % \setupcurrentlanguage[\s!fr] +% \setupcurrentlanguage[\s!hr] % \setupcurrentlanguage[\s!it] % \setupcurrentlanguage[\s!la] % \setupcurrentlanguage[\s!nl] @@ -106,7 +109,6 @@ % \setupcurrentlanguage[\s!sp] % \setupcurrentlanguage[\s!sv] % \setupcurrentlanguage[\s!tr] -% \setupcurrentlanguage[\s!hr] %D Local font settings can go here. Normally suitable %D defaults are already preloaded, almost certainly the @@ -114,9 +116,9 @@ %D next line is only meant as sample, take a look at the %D format related files first. -% \definefilesynonym [font-cmr] [font-csr] -% \definefilesynonym [font-cmr] [font-plr] +% \definefilesynonym [font-cmr] [font-csr] % czech & slovak +% \definefilesynonym [font-cmr] [font-plr] % polish %D Don't remove the next few lines. -\protect +\protect \endinput diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index a55ad272a..0c18656cc 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -13,7 +13,7 @@ \catcode`\{=1 \catcode`\}=2 -\def\contextversion{1999.12.30} +\def\contextversion{2000.5.11} %D Welcome to the main module. When this module is ran through %D \type{initex} or \type{tex -i} or \type{whatevertex} using @@ -62,6 +62,7 @@ \input supp-pdf.tex \input supp-spe.tex \input supp-mps.tex +\input supp-mpe.tex \input supp-tpi.tex \input supp-mat.tex \input supp-ran.tex @@ -132,9 +133,12 @@ \input symb-ini.tex %D Next we load some core macro's. These implement the -%D macros' that are seen by the users. +%D macros' that are seen by the users. The order of loading +%D is important, due to dependancies. \input core-gen.tex +\input core-uti.tex +\input core-mar.tex \input core-mak.tex \input core-mat.tex \input core-dat.tex @@ -148,14 +152,22 @@ \input core-nav.tex \input core-ref.tex \input core-obj.tex -\input core-01a.tex -\input core-mul.tex +\input core-buf.tex +\input core-lst.tex +\input core-num.tex +\input core-itm.tex +\input core-des.tex +\input core-syn.tex +\input core-mul.tex % moved +\input main-001.tex % still to be split +\input core-sec.tex \input core-pag.tex \input core-tbl.tex \input core-mis.tex \input core-mps.tex +\input core-int.tex -%D A few more languages, that have specifics use core +%D A few more languages, that have specifics using core %D functionality: \input lang-chi.tex @@ -183,18 +195,11 @@ \input core-fnt.tex \input core-not.tex -\input core-01b.tex -\input core-01c.tex +\input main-002.tex % still to be split +\input main-003.tex % still to be split \input core-fig.tex - -\input core-01d.tex -\input core-01e.tex - -% core-02a.tex % obsolete, replaced by core-dat.tex -% core-02b.tex -% core-02c.tex -\input core-02d.tex +\input core-par.tex %D The next two modules implement some additional %D functionality concenring classes of documents and output. @@ -266,7 +271,8 @@ \writestring{Tento balik pouziva balik TaBlE, ktery vytvoril M. J. Wichura (1988).} \writestring{Je generovano jen nekolik pomocnych souboru, z nichz nektere musi byt} \writestring{zpracovany programem TeXUtil (\utilityversion). Aktualni verze} -\writestring{blok-maker je \blockversion.} +\writestring{} +\writestring{THE CZECH USER INTERFACE IS STILL UNDER DEVELOPMENT!} \stopinterface diff --git a/tex/context/base/core-01a.tex b/tex/context/base/core-01a.tex deleted file mode 100644 index 17b8ea1e9..000000000 --- a/tex/context/base/core-01a.tex +++ /dev/null @@ -1,17088 +0,0 @@ -%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. See mreadme.pdf for -%C details. - -% nog oplossen: voetnoot setten ivm later veranderde -% witruimte; probleem: als lijn graphic - -% The %I etc thing will be replaced by documentation. Some -% years ago they served as helpinfo blocks for our editor. - -\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 \stelspatieringin \to \everybodyfont % nieuw -\appendtoks \setdisplayskips \to \everybodyfont % nieuw - -% \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 module -- geladen - 6: geen macro's in module -- gevonden - 7: macro's uit module -- 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 -- - 24: Plaatsblokken - 25: Verwijzingen - 26: Registers - 27: Versie -\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 module -- loaded - 6: no macros found in module -- - 7: macros of module -- 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 -- - 24: Floatblocks - 25: References - 26: Registers - 27: Version -\stopmessages - -\startmessages german library: systems - title: system - 1: Laden der Hilfsdatei verschoben (tippenmodus) - 2: -- geladen - 3: Versuche LaTeX - 4: Befehl -- ist bereits definiert - 5: Makros aus Modul -- geladen - 6: Keine Makros in Modul -- gefunden - 7: Makros aus Modul -- 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: Benoetige gueltige Hilfsdateie - 23: -- angeordnet auf -- - 24: Fliessbloecke - 25: Referenzen - 26: Register - 27: Version -\stopmessages - -\startmessages czech library: systems - title: system - 1: nacteni pomocneho souboru odlozeno (typemode) - 2: -- nacteno - 3: zkuste LaTeX - 4: prikaz -- je jiz definovan - 5: makra z -- nactena - 6: zadna makra v -- nenalezena - 7: makra z -- jsou jiz nactena - 8: nova verze pomocneho souboru, je treba druheho behu - 9: -- nenalezeno/nezpracovano - 10: nepouzivejte em v -- - 11: vytvarim jednoduchy pomocny soubor - 12: pomosny soubor neni setriden, pouzijte texutil - 13: znacka -- definovana -- - 14: vynucena nova stranka v seznamu na -- - 15: uklada se buffer -- - 16: sazi se buffer -- - 17: sazi se doslovny (verbatim) buffer -- - 18: synonymum -- -- neexistuje - 19: vyznam (synonyma) -- nacten - 20: vyznam (trideni) -- nacten - 21: pomocny soubor necten - 22: pouzijte platny pomocny soubor - 23: -- upraveno na -- - 24: plovouci bloky - 25: reference - 26: registry - 27: verze -\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 czech library: textblocks - title: textovyblok - 1: nova verze, je treba druhy beh - 2: zapisuji bloky do -- - 3: ctu bloky z -- - 4: je treba druhy beh - 5: -- neni skryto - 6: -- skryto a zpracovano - 7: -- skryto - 8: -- vysazeno - 9: -- nevysazeno - 10: -- nacteno a zpracovano - 11: -- nacteno a vysazeno - 12: -- preskoceno -\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 czech library: floatblocks - title: plovouciobjekty - 1: -- precislovano / -- => -- - 2: -- ulozeno - 3: -- presunuto - 4: -- umisteno - 5: poradi prizpusobeno - 6: pocet hornich plovoucich objektu je omezen na -- - 7: pocet spodnich plovoucich objektu je omezen na -- - 8: radku je mene nez -- - 9: poradi naruseno - 10: -- omezeno - 11: nedan zadny blok - 12: nedefinovano -\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 - -\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: -- und -- ergeben zusammen nicht 1.0 - 11: Zwischenraum -- nicht im Grittermoduserlau -\stopmessages - -\startmessages czech library: layouts - title: layout - 1: vyska textu prizpusobena s -- na strane -- - 2: -- krat odlozeny text umisten - 3: -- krat text odlozen - 4: okrajove bloky aktivni - 5: okrajove bloky neaktivni - 6: sada stran -- zpracovana (velikost --) - 7: pocita se misto pro logo - 8: pocita se pozadi - 9: aktualne ne vice nez -- urovne/urovni vyctu - 10: -- a -- nedava dohromady 1.0 - 11: svisla mezera -- neni povolena v pevnem radkovem rejstriku -\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 - -\startmessages czech library: structures - title: struktury - 1: zacatek oddilu (sekce) -- - 2: konec oddilu (sekce) -- -\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 - -\def\convertexpanded#1#2#3% watch the double \v!ja expansion ! - {\ExpandFirstAfter\processaction - [\getvalue{#1\c!expansie}] - [ \v!ja=>{{\honorunexpanded\xdef\@@globalexpanded{#2}% - \xdef\@@globalexpanded{\@@globalexpanded}}% - \dodoglobal\convertcommand\@@globalexpanded\to#3}, - \v!commando=>{\dodoglobal\convertcommand #2\to#3}, - \s!default=>{\dodoglobal\convertargument#2\to#3}, - \s!unknown=>{\dodoglobal\convertargument#2\to#3}]} - -% 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 - {\ifinpagebody \else - \global\indentationfalse - \gdef\checkindentation% - {\donoindentation - \gdef\checkindentation{\global\indentationtrue}}% - \fi} - -\def\nonoindentation% bv bij floats - {\ifinpagebody \else - \global\indentationtrue - \gdef\checkindentation{\global\indentationtrue}% - \fi} - -\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 - \indentfirstparagraphtrue % recently added - \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 - \notragged - \forgetparskip - \forgetparindent - \forgetbothskips - \forgetspacing % i.v.m. funny spacing in pagebody - \everypar{}} % indeed! - -\def\localvbox#1#% - {\vbox#1\bgroup - \forgetparskip - \setlocalhsize - \hsize=\localhsize - \forgetparindent - \forgetbothskips - \forgeteverypar - \let\next=} - -% ach ja - -\unexpanded\def\dostartattributes#1#2#3% - {\begingroup % geen \bgroup, anders in mathmode lege \hbox - \doifdefinedelse{#1#2} - {\def\fontattribute{\getvalue{#1#2}}} - {\let\fontattribute=\empty}% - \doifdefinedelse{#1#3} - {\def\colorattribute{\getvalue{#1#3}}} - {\let\colorattribute=\empty}% - \startcolor[\colorattribute]% - \@EA\doconvertfont\@EA{\fontattribute}} - -\unexpanded\def\dostopattributes% - {\stopcolor - \endgroup} - -\unexpanded\def\doattributes#1#2#3#4% - {\dostartattributes{#1}{#2}{#3}{#4}\dostopattributes} - -% kan vaker worden toegepast: - -\newskip\leftskipadaption - -\def\doadaptleftskip#1% - {\leftskipadaption\!!zeropoint - \processaction[#1] % \ExpandFirstAfter - [\v!standaard=>\leftskipadaption= - \ifdim\voorwit=\!!zeropoint\@@sllinks\else\voorwit\fi, - \v!ja=>\leftskipadaption= - \ifdim\voorwit=\!!zeropoint\@@sllinks\else\voorwit\fi, - \v!nee=>, - \s!unknown=>\leftskipadaption=#1]% - \advance\leftskip by \leftskipadaption} - -\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 -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,\pseudostrut -%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.5} - -\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\ifhmode\ifdim\ht\strutbox=\!!zeropoint\else - \unskip\unskip\unskip - \normalpenalty\!!tenthousand - \normalhskip\!!zeropoint - \strut - \fi\fi} - -\def\setnostrut% - {\setbox\strutbox=\normalhbox{\normalhbox{}}% - \let\strut=\empty - \let\endstrut=\empty - \let\begstrut=\empty} - -% unsave: -% -% \def\pseudostrut% -% {\bgroup -% \setnostrut -% \normalstrut -% \egroup} -% -% try: -% -% \startchemie -% \chemie[ONE,Z0,SB15,MOV1,SB15,Z0][C,C] -% \stopchemie -% -% so: - -\def\pseudostrut% - {\noindent} - -\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} - -\def\offinterlineskip% - {\ifdim\baselineskip>\!!zeropoint - \edef\oninterlineskip% - {\baselineskip=\the\baselineskip - \lineskip=\the\lineskip - \lineskiplimit=\the\lineskiplimit - \noexpand\let\noexpand\offinterlineskip=\noexpand\normaloffinterlineskip}% - \else - \let\oninterlineskip=\setnormalbaselines - \fi - \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% - {\ifdim\tussenwit>\!!zeropoint - #1\tussenwit\!!plus#2\tussenwit\!!minus#2\tussenwit\relax - \else - #1\lineheight\!!plus#2\lineheight\!!minus#2\lineheight\relax - \fi} - -\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} - -\def\savecurrentvalue#1#2% - {\immediatewriteutilitycommand{\initializevariable\string#1{#2}}} - -\let\initializevariable\gdef - -\def\disableinitializevariables% - {\global\let\initializevariable\gobbletwoarguments} - -\let\reportutilityproblems=\relax - -\let\utilityresetlist=\empty - -%\def\addutilityreset#1% -% {\addtocommalist{\s!reset#1}\utilityresetlist} -% -%\def\resetutilities% -% {\processcommacommand[\utilityresetlist]\getvalue} - -\def\addutilityreset#1% - {\addtocommalist{#1}\utilityresetlist} - -\def\doresetutility#1% - {\getvalue{\s!reset#1}} - -\def\resetutilities% - {\processcommacommand[\utilityresetlist]\doresetutility} - -% #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} - -% no longer needed, since texutil is now multi platform -% -% \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} -% {}}} - -\def\checkutilityfile% - {} - -\long\def\doutilities#1#2#3#4#5% % introduceren in utility file - {\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 - \disableinitializevariables - \endgroup} - -% Saving the sort vector: - -\def\savesortkeys% - {\setbox\scratchbox=\hbox - \bgroup - \def\flushsortkey##1##2##3##4% - {\convertargument{##1}{##2}{##3}{##4}\to\ascii - \immediatewriteutility{k {\currentlanguage}{\currentencoding}\ascii}}% - \let\definesortkey\flushsortkey - \flushsortkeys - \egroup - \global\let\savesortkeys\relax} - -\prependtoks \savesortkeys \to \everystarttext - -% 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 -% -% also: -% -% \definerawpasslist{\s!xxx} -% \moverawpasslist\s!xxx\to\somemacro - -\let\alltwopasslists\empty % with 0,0 -> stepwise commalist -\let\allrawpasslists\empty % without 0,0 -> raw commalist - -\newif\iftwopassdatafound - -\def\twopassentry#1% - {\executeifdefined{@@#1\s!pass}\gobbletwoarguments} - -\def\appendtwopasselement#1#2#3% - {%\debuggerinfo{\m!systems}{twopass data #1 - #2 = #3}% - \@EA\ifx\csname#1:\s!list\endcsname\empty - \setxvalue{#1:\s!list}{#3}% - \else - \setxvalue{#1:\s!list}{\getvalue{#1:\s!list},#3}% - \fi} - -\def\dodefinetwopasslist#1% - {\doifundefined{#1:\s!list} - {%\debuggerinfo{\m!systems}{defining twopass class #1}% - \doglobal\addutilityreset{#1\s!pass}% - \setgvalue{\s!set#1\s!pass}% - {\global\letvalue{\s!set#1\s!pass}\gobbletwoarguments - \setgvalue{@@#1\s!pass}{\appendtwopasselement{#1}}}% - \setgvalue{\s!reset#1\s!pass}% - {\global\letvalue{@@#1\s!pass}\gobbletwoarguments}% - \getvalue{\s!reset#1\s!pass}}} - -\def\definetwopasslist#1% - {\expanded{\dodefinetwopasslist{#1}}% - \doglobal\addtocommalist{#1}\alltwopasslists} - -\def\definerawpasslist#1% - {\expanded{\dodefinetwopasslist{#1}}% - \doglobal\addtocommalist{#1}\allrawpasslists} - -\def\doloadtwopassdata#1% - {\doifundefined{#1:\s!list} - {\global\letvalue{#1:\s!list}\empty - \doutilities{#1\s!pass}{\jobname}{}{}{}% - \ifx\twopassdata\empty\else - \appendtwopasselement{#1}{0}\twopassdata - \fi}} - -\def\loadtwopassdata% - {\ifx\alltwopasslists\empty\else - \def\twopassdata{0,0}% end condition - \processcommacommand[\alltwopasslists]\doloadtwopassdata - \global\let\alltwopassdata\empty - \fi - \ifx\allrawpasslists\empty\else - \let\twopassdata\empty - \processcommacommand[\allrawpasslists]\doloadtwopassdata - \global\let\allrawpassdata\empty - \fi} - -\def\moverawpasslist#1#2% erases the old one, like the others do - {\loadtwopassdata - \@EA\let\@EA#2\csname#1:\s!list\endcsname - \@EA\let\csname#1:\s!list\endcsname\empty} - -\let\twopassdata=\empty - -\def\dogettwopassdata[#1,#2]#3% - {\doifelse{#1}{0} % \ifcase truukje gaat fout - {\twopassdatafoundfalse - \let\twopassdata\empty} - {\twopassdatafoundtrue - \setxvalue{#3:\s!list}{#2}% - \edef\twopassdata{#1}}} - -\def\gettwopassdata#1% - {\loadtwopassdata - \edef\!!stringa{\getvalue{#1:\s!list}}% - %\debuggerinfo{\m!systems}{twopass get #1 - \!!stringa}% - \expandafter\dogettwopassdata\expandafter[\!!stringa]{#1}} - -\def\findtwopassdata% - {\loadtwopassdata - \ExpandBothAfter\dofindtwopassdata} - -\def\dofindtwopassdata#1#2% - {\edef\!!stringa{,\getvalue{#1:\s!list}}% - %\debuggerinfo{\m!systems}{twopass find #2 - \!!stringa}% - \def\dodofindtwopassdata[##1,##2#2##3,##4]% - {\edef\twopassdata{##3}% - \ifx\twopassdata\empty - \twopassdatafoundfalse - \else - \twopassdatafoundtrue - \fi}% - \@EA\dodofindtwopassdata\@EA[\!!stringa,#2,#2,]} - -\def\getfirsttwopassdata#1% - {\loadtwopassdata - \edef\!!stringa{\getvalue{#1:\s!list}}% - \expandafter\dogetfirsttwopassdata\expandafter[\!!stringa]{#1}} - -\def\dogetfirsttwopassdata[#1,#2]#3% - {\doifelse{#1}{0} - {\twopassdatafoundfalse - \let\twopassdata\empty} - {\twopassdatafoundtrue - \edef\twopassdata{#1}}} - -\def\getlasttwopassdata#1% - {\loadtwopassdata - \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% - {\loadtwopassdata - \getfromcommacommand[\getvalue{#1:\s!list}][#2]% - \doifelsenothing{\commalistelement} - {\twopassdatafoundfalse - \let\twopassdata\empty} - {\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}} - -% NOG EENS NAGAAN WANNEER NU GLOBAL EN WANNEER NIET - -\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. - -\ifx\stelpapierformaatin\undefined - \let\stelpapierformaatin\relax -\fi - -%\def\dodefinieerpapierformaat[#1][#2]% -% {\ifsecondargument -% \getparameters -% [\??pp#1] % geen \c!schaal, scheelt hash ruimte -% [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte, -% \c!offset=\@@ppoffset,#2]% -% \else -% \definieerpapierformaat[][#1]% -% \stelpapierformaatin -% \fi} - -\def\dodefinieerpapierformaat[#1][#2]% - {\ifsecondargument - \getparameters - [\??pp#1] % geen \c!schaal, scheelt hash ruimte - [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte, - \c!offset=\@@ppoffset,#2]% - \else - \getparameters[\??pp][#1]% - \stelpapierformaatin - \fi} - -\def\definieerpapierformaat% - {\dodoubleempty\dodefinieerpapierformaat} - -\definieerpapierformaat - [\c!breedte=210mm,\c!hoogte=297mm,\c!offset=0pt] - -\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}]} - -\ifx\calculatepaperoffsets\undefined - - \def\calculatepaperoffsets#1% - {\scratchdimen=\getvalue{\??pp#1\c!offset}% - \global\advance\papierbreedte by -2\scratchdimen - \global\advance\papierhoogte by -2\scratchdimen} - -\fi - -% \def\dostelpapierformaatin[#1][#2]% -% {\ifsecondargument -% \dostelpapierrichtingin{#1}\paperlandscape\paperrotation\paperreverse\papermirror -% \dostelpapierrichtingin{#2}\printlandscape\printrotation\printreverse\printmirror -% \def\docommando##1% -% {\doifsomething{##1}{\doifdefined{\??pp##1\c!breedte} -% {\global\papierbreedte=\getvalue{\??pp##1\c!breedte}% -% \global\papierhoogte=\getvalue{\??pp##1\c!hoogte}% -% \calculatepaperoffsets{##1}% -% \xdef\papierformaat{##1}}}}% -% \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}% -% \xdef\printpapierformaat{##1}}}}% -% \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 -% \else\iffirstargument -% \stelpapierformaatin[#1][#2]% -% \else\ifx\papierformaat\undefined\else -% \stelpapierformaatin[\papierformaat][\printpapierformaat]% -% \fi\fi\fi} - -\def\dostelpapierformaatin[#1][#2]% - {\doifinstringelse{=}{#1} - {\getparameters[\??pp][#1]} - {\doifinstringelse{=}{#2} - {\getparameters[\??pp#1][#2]} - {\dodostelpapierformaatin[#1][#2]}}} - -\def\dodostelpapierformaatin[#1][#2]% - {\ifsecondargument - \dostelpapierrichtingin{#1}\paperlandscape\paperrotation\paperreverse\papermirror - \dostelpapierrichtingin{#2}\printlandscape\printrotation\printreverse\printmirror - \def\docommando##1% - {\doifsomething{##1}{\doifdefined{\??pp##1\c!breedte} - {\global\papierbreedte=\getvalue{\??pp##1\c!breedte}% - \global\papierhoogte=\getvalue{\??pp##1\c!hoogte}% - \calculatepaperoffsets{##1}% - \xdef\papierformaat{##1}}}}% - \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}% - \xdef\printpapierformaat{##1}}}}% - \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 - \else\iffirstargument - \stelpapierformaatin[#1][#2]% - \else\ifx\papierformaat\undefined\else - \stelpapierformaatin[\papierformaat][\printpapierformaat]% - \fi\fi\fi} - -\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\lineheight - \global\advance\zethoogte by \hoofdhoogte - \global\advance\zethoogte by \voethoogte}% - \rugoffset=\@@lyrugoffset - \kopoffset=\@@lykopoffset - \calculatehsizes - \calculatevsizes - \global\newlogostrue - \global\newbackgroundtrue - \setMPpagedata} - -\ifx\setMPpagedata\undefined \let\setMPpagedata\relax \fi - -\def\checklayout% - {\doifsomething{\@@lyregels} - {\ifdim\zethoogte=\@@lyregels\lineheight \else \resetlayout \fi}} - -\appendtoks \checklayout \to \everystarttext - -\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!midden=>{\stelpapierformaatin[\c!links=\hss,\c!rechts=\hss,\c!boven=\vss,\c!onder=\vss]}, - \v!links=>{\stelpapierformaatin[\c!links=,\c!rechts=\hss]}, - \v!rechts=>{\stelpapierformaatin[\c!links=\hss,\c!rechts=]}, - \v!onder=>{\stelpapierformaatin[\c!boven=\vss,\c!onder=]}, - \v!boven=>{\stelpapierformaatin[\c!boven=,\c!onder=\vss]},% - \v!dubbelzijdig=>\doublesidedprinttrue, - \v!enkelzijdig=>\doublesidedprintfalse]} - -\def\complexstellayoutin[#1]% - {\ConvertToConstant\doifnot{#1}{\v!reset} - {\getparameters[\??ly][#1]% - \checkforems[#1]}% - \resetlayout - \presetcenterpagebox} - -\definecomplexorsimpleempty\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\adaptpagedimensions% - {\rawdoifinsetelse{\realfolio}{\adaptedpages} - {\getvalue{\??za\realfolio}% - \letbeundefined{\??za\realfolio}} - {}} - -\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\c!letter\c!kleur{}% - \begstrut\ignorespaces} - -\def\dostopmargeblok% - {\unskip\endstrut - \dostopattributes - \egroup - \egroup} - -\def\dontstartmargeblok% - {\@@mbvoor - \bgroup - \dostartattributes\??mb\c!letter\c!kleur{}} - -\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 - -\newif\ifinuitstellen - -\newevery\everytopofpage\relax - -\appendtoks\the\everytopofpage\to\everystarttext -\appendtoks\global\everytopofpage{}\to\everystoptext - -\def\douitstellen% - {\the\everytopofpage - \ifinuitstellen\else\ifcase\nofpostponedblocks\else % The \nof-test is - \global\pagetotal\!!zeropoint % recently added - \global\inuitstellentrue % definitely needed - \dorecurse{\nofpostponedblocks} % else we can loose - {\haalbuffer[buf-\recurselevel]} % or disorder floats - \doflushfloats % new but potential dangerous % and that is something - \doglobal\newcounter\nofpostponedblocks % we don't want, do we? - \global\inuitstellenfalse % Anyhow, 'uitstellen' - \fi\fi} % is still suboptimal. - -\setvalue{\e!start\e!uitstellen}% - {\doglobal\increment\nofpostponedblocks - \showmessage{\m!layouts}{3}{\nofpostponedblocks}% - \dostartbuffer[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 - {\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]% - \makecounter{\s!number#1}% - \setcounter{\s!number#1}{\getvalue{\s!number#1\c!start}}} - -% \c!nummer=#1 ; nogal veel copieen nodig -% -% \def\@@thenumber#1{\s!number\getvalue{\s!number#1\c!nummer}} - -\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\domaakvoorafgaandenummer[#1]% - {\bgroup % added - \global\let\voorafgaandenummer\empty - \ifsectienummer - \doifvalue{\??sb\@@sectieblok\c!nummer}{\v!ja} % added - {\doifelsevalue{\s!number#1\c!sectienummer}{\v!ja} - {\donetrue}{\donefalse}% - \doifvalue{\s!number#1\c!sectienummer}{\v!nummer} - {\donetrue\let\@@sectionconversion\gobbleoneargument}% - \ifdone - \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}% - \fi - \egroup} - -\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% overlapt behoorlijk met realpage macro - {\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!eerstesubpagina}\firstsubpage - \setglobalsystemreference\rt!page{\v!laatstesubpagina}\lastsubpage - \bgroup - \ifnum\realpageno=\firstsubpage\relax - \global\let\prevsubpage=\firstsubpage -\setglobalsystemreference\rt!page{\v!sub\v!achteruit}\lastsubpage - \else - \xdef\prevsubpage{\realfolio}% - \doglobal\decrement\prevsubpage -\setglobalsystemreference\rt!page{\v!sub\v!achteruit}\prevsubpage - \fi - \setglobalsystemreference\rt!page{\v!vorigesubpagina}\prevsubpage - \ifnum\realpageno=\lastsubpage\relax - \global\let\nextsubpage=\lastsubpage -\setglobalsystemreference\rt!page{\v!sub\v!vooruit}\firstsubpage - \else - \xdef\nextsubpage{\realfolio}% - \doglobal\increment\nextsubpage -\setglobalsystemreference\rt!page{\v!sub\v!vooruit}\nextsubpage - \fi - \setglobalsystemreference\rt!page{\v!volgendesubpagina}\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!eerstepagina}\firstpage - \setglobalsystemreference\rt!page{\v!laatstepagina}\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!vorigepagina}\prevpage - \egroup - \bgroup - \ifnum\realpageno<\lastpage\relax - \advance\realpageno by 1 - \xdef\nextpage{\realfolio}% - \setglobalsystemreference\rt!page{\v!pagina}\nextpage - \setglobalsystemreference\rt!page{\v!vooruit}\nextpage - \bgroup - \xdef\nextnextpage{\realfolio}% - \ifodd\realpageno - \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\nextnextpage - \else - \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\nextnextpage - \fi - \advance\realpageno by 1 - \xdef\nextnextpage{\realfolio}% - \ifnum\realpageno>\lastpage\relax - %\ifodd\realpageno - % \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\lastpage - %\else - % \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\lastpage - %\fi - \else - \ifodd\realpageno - \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\nextnextpage - \else - \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\nextnextpage - \fi - \fi - \egroup - \else - \global\let\nextpage=\lastpage - \setglobalsystemreference\rt!page{\v!pagina}\firstpage - \setglobalsystemreference\rt!page{\v!vooruit}\firstpage - \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\lastpage - \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\lastpage - \fi - \setglobalsystemreference\rt!page{\v!volgendepagina}\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 - \savecurrentvalue\lastpage{\realfolio}}% - %\immediatewriteutilitycommand{\realnumberofpages{\realfolio}}}% - -\def\totaalaantalpaginas% - {\lastpage} - -\def\initializepaper% - {\iflocation - \dosetuppaper - {\papierformaat} - {\the\papierbreedte} - {\the\papierhoogte}% - \else - \dosetuppaper - {\printpapierformaat} - {\the\printpapierbreedte} - {\the\printpapierhoogte}% - \fi} - -\def\myshipout#1% - {\voorpagina - \dontshowcomposition - \ifarrangingpages - \actualarrange - {\thisisrealpage{\realfolio}#1}% - \else - \actualshipout - {\thisisrealpage{\realfolio}#1}% - \fi - \gotonextrealpage - \napagina} - -\newbox\postponedcontent - -\def\flushatshipout% - {\dowithnextbox - {\global\setbox\postponedcontent=\hbox to \!!zeropoint - {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt) - \box\postponedcontent\box\nextbox}% - \global\ht\postponedcontent=\!!zeropoint - \global\dp\postponedcontent=\!!zeropoint - \global\wd\postponedcontent=\!!zeropoint}% - \hbox} - -% \starttypen -% \def\pagestoshipout{1,3,5} -% \stoptypen - -\newcounter\shippedoutpages -\let\pagestoshipout\empty % {1,3,6} -\chardef\whichpagetoshipout=0 % 0=all 1=odd 2=even - -\def\actualshipout#1% - {\doglobal\increment\shippedoutpages - \ifx\pagestoshipout\empty - \ifcase\whichpagetoshipout\relax - \donetrue - \or % 1 - \ifodd\shippedoutpages\relax\donetrue\else\donefalse\fi - \or % 2 - \ifodd\shippedoutpages\relax\donefalse\else\donetrue\fi - \else - \donetrue - \fi - \else - \ExpandBothAfter\doifinsetelse{\shippedoutpages}{\pagestoshipout} - \donetrue\donefalse - \fi - \ifdone - \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 - \ifnum\realpageno=\lastpage\relax\the\everylastshipout\fi}% - \smashbox\scratchbox - \box\scratchbox - \box\postponedcontent % evt ver naar links ! - \box0}}% - \else - \message - {[\ifarrangingpages arranged \fi page - \ifarrangingpages\the\arrangeno\else\the\realpageno\fi\normalspace - not flushed]}% - \setbox0=\hbox{#1}% - \deadcycles=0 - \fi} - -\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 - \nofbotfloats=0 - \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 \unvbox -% {\bgroup% -% \forgetall -% \boxmaxdepth=\maxdepth -% \setbox0=\vbox to \teksthoogte -% {\edef\currentpagedepth{\the\dp#2}% still to be derived from #1 -% \dotopinsertions -% #1#2% \fuzzysnappedbox{#1}{#2}% goes wrong -% \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 -% \else -% %\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\dopagecontents#1#2% \box \unvbox - {\bgroup - \forgetall - \boxmaxdepth=\maxdepth - \setbox0=\vbox \ifbottomnotes to \teksthoogte \fi - {\edef\currentpagedepth{\the\dp#2}% still to be derived from #1 - \dotopinsertions - #1#2% \fuzzysnappedbox{#1}{#2}% goes wrong - \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}% -\ifbottomnotes - \ifgridsnapping - \getnoflines\teksthoogte - \advance\noflines by -1 - \scratchdimen=\noflines\lineheight - \advance\scratchdimen by \topskip - \else - \scratchdimen=\ht0 - \fi -\else - \scratchdimen=\!!zeropoint -\fi - \setbox2=\hbox - {\ifvoid\savedfootins \else - \setbox\footins=\box\savedfootins - \fi - \lower\scratchdimen\vbox{\placefootnotes}}% - \smashbox2 -\ifbottomnotes - \ht0=\!!zeropoint -\fi - \vbox to \teksthoogte - {\box0\box2\ifbottomnotes\else\vfill\fi}% - \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}% - {\vskip\bovenhoogte} % \vbox to \bovenhoogte{\vss}} - -\setvalue{\s!dummy\c!commando\v!onder}% - {\vskip\onderhoogte} % \vbox to \onderhoogte{\vss}} - -\def\plaatslinkerrandblok {\dodummypageskip\v!links} -\def\plaatsrechterrandblok {\dodummypageskip\v!rechts} - -\def\plaatsboventekstblok {\dodummypageskip\v!boven} -\def\plaatsondertekstblok {\dodummypageskip\v!onder} - -% kan tzt nog eens als: -% -% \newtoks\everyboventekstblok -% -%\def\plaatsboventekstblok% -% {\vbox to \bovenhoogte -% {\the\everyboventekstblok} -% -% \def\doplaatsboventekstblok#1% -% {\vbox to \bovenhoogte -% {\@@tkboventekstvoor#1\@@tkboventekstna\kern\!!zeropoint}% -% \vskip-\bovenhoogte} -% -% \appendtoks\interactiemenus[\v!boven]\to\everyboventekstblok -% -% kan vaker, is namelijk sneller als commalist - -\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\centerpagebox#1% - {\printpapierbreedte=\papierschaal\printpapierbreedte - \printpapierhoogte =\papierschaal\printpapierhoogte - \setbox#1=\vbox to \printpapierhoogte - {\@@ppboven - %\toppagebox - \hbox to \printpapierbreedte - {\ifdoublesidedprint - \doifbothsides - %\leftpagebox\box#1\rightpagebox - \@@pplinks\box#1\@@pprechts - \orsideone - %\leftpagebox\box#1\rightpagebox - \@@pplinks\box#1\@@pprechts - \orsidetwo - %\rightpagebox\box#1\leftpagebox - \@@pprechts\box#1\@@pplinks - \od - \else - %\leftpagebox\box#1\rightpagebox - \@@pplinks\box#1\@@pprechts - \fi}% - \par - %\bottompagebox - \@@pponder}} - -\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\hskip\@@lydx}\unskip}% - \vskip\@@lydy} - \unskip}} - -\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 -% {\beginrestorecatcodes -% \forgetall % igv problemen, check: \boxmaxdepth\maxdimen -% \boxmaxdepth\maxdimen % new -% \mindermeldingen -% \setbox0=\vbox -% {\offinterlineskip -% \ifpagebodyornaments -% \getbackgroundbox -% \getlogobox -% \bgroup % else footnotes get inconsistent font/baseline -% \doconvertfont{\@@lyletter}{}% -% \offinterlineskip -% \gettextboxes -% \egroup -% \fi -% \getmainbox#1#2}% including footnotes -% \buildpagebox0 -% \ifpagebodyornaments -% \addpagebackground0 -% \fi -% \ifarrangingpages \else -% \addpagecutmarks0 -% \replicatepagebox0 -% \scalepagebox0 -% \mirrorpaperbox0 -% \rotatepaperbox0 -% \addpagecolormarks0 -% \centerpagebox0 -% \mirrorprintbox0 -% \rotateprintbox0 -% \offsetprintbox0 -% \negateprintbox0 -% \fi -% \box0 -% \endrestorecatcodes}} - -\def\buildpagebody#1#2% - {\vbox - {\beginrestorecatcodes - \forgetall % igv problemen, check: \boxmaxdepth\maxdimen - \boxmaxdepth\maxdimen % new - \mindermeldingen - \setbox0=\vbox - {\offinterlineskip - \ifpagebodyornaments - \getbackgroundbox - \getlogobox - \bgroup % else footnotes get inconsistent font/baseline - \doconvertfont{\@@lyletter}{}% - \offinterlineskip - \gettextboxes - \egroup - \fi - \getmainbox#1#2}% including footnotes - \buildpagebox0 - \ifpagebodyornaments - \addpagebackground0 - \fi - \ifarrangingpages \else - \addpagecutmarks0 - \replicatepagebox0 - \scalepagebox0 - \mirrorpaperbox0 - \rotatepaperbox0 - \addpagecolormarks0 - \centerpagebox0 -\addprintbackground0 - \mirrorprintbox0 - \rotateprintbox0 - \offsetprintbox0 - \negateprintbox0 - \fi - \box0 - \endrestorecatcodes}} - -\def\addprintbackground#1% - {\ifsomebackgroundfound\v!papier - \setbox#1=\vbox\localframed - [\??ma\v!papier]% - [\c!offset=\v!overlay,\c!strut=\v!nee, - \c!breedte=\printpapierbreedte,\c!hoogte=\printpapierhoogte]% - {\noindent\box#1}% - \fi} - -\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]% - {\framed - [\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 - {\framed - [\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 - -\appendtoks \restoreglobalbodyfont \to \everypagebody -\appendtoks \restorecolumnsettings \to \everypagebody - -\def\dopagebody#1#2% - {\getallmarks - \the\everypagebody - \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]}} - -\newtoks\pageboundsettings - -\prependtoks \initializepaper \to \pageboundsettings - -\def\dofinaloutput#1#2% - {\beforefinaloutput - \the\everybeforeshipout - \ifspecialbasedsettings - \myshipout{\hbox{\hbox to \!!zeropoint{\the\pageboundsettings}\hbox{\dopagebody#1#2\setpagecounters}}}% - \else - \the\pageboundsettings - \myshipout{\hbox{\dopagebody#1#2\setpagecounters}}% - \fi - \the\everyaftershipout - \afterfinaloutput - \popcolor} % ... and here ... - -\def\donofinaloutput#1#2% - {\beforefinaloutput - \the\everybeforeshipout - \setpagecounters - \message{[-\the\realpageno]}% - \setbox0=\hbox - {\the\everyshipout - \dopagebody#1#2}% - \deadcycles=0 - \gotonextrealpage - \the\everyaftershipout - \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\complexstelspatieringin[#1]% - {\processaction - [#1] - [\v!opelkaar=>\newfrenchspacing, - \v!ruim=>\nonfrenchspacing]% - \updateraggedskips} - -\def\simplestelspatieringin% - {\updateraggedskips} - -\definecomplexorsimple\stelspatieringin - -\bgroup -\catcode`\~=\@@active % eigenlijk is ~ al actief -\gdef\fixedspaces% % in Plain \TeX, maar we weten - {\catcode`\~=\@@active % nooit wat er inmiddels is - \def~{\fixedspace}} % gebeurd, vandaar. -\egroup - -\def\space { } -\def\fixedspace {\hskip.5em\relax} -\def\nospace {\unskip\ignorespaces} - -\let\spatie \space -\let\hardespatie\fixedspace -\let\geenspatie \nospace - -\def\opelkaar% - {\nointerlineskip} - -\def\omlaag[#1]% nog eens mooier, relateren aan blanko - {\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}{\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} - -\def\savecurrentwitruimte% - {\edef\restorecurrentwitruimte% - {\tussenwit=\the\tussenwit - \parskip=\the\parskip - \noexpand\def\noexpand\currentwitruimte{\currentwitruimte}% - \ifwitruimteflexibel - \noexpand\witruimteflexibeltrue - \else - \noexpand\witruimteflexibelfalse - \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 -\baselinecorrection %% zie in \plaatsregister[n=1] - \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 % redundant \setstrut - \updateraggedskips} % yes indeed - {\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 - \updateraggedskips % funny one here - \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 -\newif\ifblankoforceer - -\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!back=>\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=>\global\blankoforceertrue, - \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 - \global\blankoforceerfalse - \blankobuitenfalse - \processcommalist[#1]\doblanko - \ifblankobuiten - \else - \par - \ifvmode - \ifblankoforceer\ifdim\prevdepth>\!!zeropoint\else - \vbox{\strut}\kern-\lineheight - \fi\fi - \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 - \iffuzzyvskip - \removelastfuzzyvskip - \fuzzyvskip\blankoskip\relax - \fi - \fi - \fi - \fi - \fi - \global\fuzzyvskipfalse - \presetindentation} - -\def\complexdodoblanko[#1]% - {\flushfootnotes - \ifopelkaar - \ifinpagebody - \expanded{\docomplexdoblanko[#1]}% \expanded=nieuw - \else - \par - \fi - \else - \expanded{\docomplexdoblanko[#1]}% \expanded = nieuw - \fi} - -\def\doindirectblanko#1% - {\ifundefined{\??bo#1}% <-etex \expandafter\ifx\csname\??bo#1\endcsname\relax - \expanded{\complexdodoblanko[#1]}% - \else - \expandafter\complexdoblanko\expandafter[\csname\??bo#1\endcsname]% - \fi} - -\def\complexdoblanko[#1]% enables [force,8\bodyfontsize] - {\doifinstringelse{,}{#1} - {\expanded{\complexdodoblanko[#1]}} - {\doifnumberelse{#1} - {\expanded{\complexdodoblanko[#1]}} - {\doindirectblanko{#1}}}} - -\def\currentblanko% - {\v!groot} - -\def\simpledoblanko% - {\doifelse{\currentwitruimte}{\v!geen} - {\blanko[\currentblanko]} - {\blanko[\currentwitruimte]}} - -\def\blanko% % the \relax is definitely needed due to the many \if's - {\relax\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]% - {\ifgridsnapping - \blankoflexibelfalse - \else - \ExpandFirstAfter\processallactionsinset - [#1] - [ \v!flexibel=>\blankoflexibeltrue, - \v!vast=>\blankoflexibelfalse]% - \fi - \ExpandFirstAfter\processallactionsinset - [#1] - [ \v!flexibel=>\dostelblankoin{\deblankoskip}, - \v!vast=>\dostelblankoin{\deblankoskip}, - \v!regel=>\edef\deblankoskip{\regelafstand}% - \dostelblankoin{\deblankoskip}% - \let\deblanko=\v!groot, - \v!halveregel=>\scratchskip=.5\regelafstand - \edef\deblankoskip{\the\scratchskip}% - \dostelblankoin{\deblankoskip}% - \let\deblanko=\v!middel, - \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} - -\definecomplexorsimpleempty\stelblankoin - -\def\dodefinieerblanko[#1][#2]% - {\setvalue{\??bo#1}{#2}} - -\def\definieerblanko% - {\dodoubleargument\dodefinieerblanko} - -\def\savecurrentblanko% - {\edef\restorecurrentblanko% - {\bigskipamount=\the\bigskipamount - \medskipamount=\the\medskipamount - \smallskipamount=\the\smallskipamount - \noexpand\def\noexpand\currentblanko{\currentblanko}% - \ifblankoflexibel - \noexpand\blankoflexibeltrue - \else - \noexpand\blankoflexibelfalse - \fi}} - -%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% - {\doifoutervmode - {\ifindentfirstparagraph\else\noindentation\fi}} - -\def\dostelinspringenin[#1]% - {\processallactionsinset - [#1] - [ \v!eerste=>\indentfirstparagraphtrue, - \v!volgende=>\indentfirstparagraphfalse, - \s!default=>\dodostelinspringenin, - \s!unknown=>\edef\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=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!status=\v!start, - \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 - \doifnot{\@@psstatus}{\v!overlay} - {\skip2=##5\relax - \advance\skip2 by ##3\relax - \ifdim##3<-##7\relax\global##7=-##3\relax\fi - \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} - -%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% - {\doifinsetelse{\@@kloffset}{\v!geen,\v!overlay} - {\let\@@kloffset\!!zeropoint} - {\scratchdimen=\@@kloffset - \advance\scratchdimen by -\@@kllijndikte - \edef\@@kloffset{\the\scratchdimen}}% - \localframed - [\??kl] - [\c!strut=\v!nee, - \c!breedte=\v!passend, - \c!hoogte=\v!passend, - \c!uitlijnen=]} - -\let\restorecolumnsettings\relax - -\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 - \def\columntextoffset{\@@kloffset}}% - \ifx\@@klcommando\empty\else - \let\postprocesscolumnline\@@klcommando - \fi - \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{\@@klrichting}{\v!rechts} - {\reversecolumnsfalse} - {\reversecolumnstrue}% - \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 - % - % probably more is needed, and how about nesting save's - % - \savecurrentblanko - \savecurrentwitruimte - \def\restorecolumnsettings% - {\boxmaxdepth\maxdimen % done elsewhere - \restorecurrentblanko - \restorecurrentwitruimte}% - % - \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} - -\definecomplexorsimpleempty\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\dotoonkader[#1][#2]% - {\ifsecondargument - \stelachtergrondenin - [#1][#2] - [\c!achtergrond=, - \c!kader=\v!aan, - \c!hoek=\v!recht, - \c!kaderoffset=\!!zeropoint, - \c!kaderdiepte=\!!zeropoint, - \c!kaderkleur=] - \else\iffirstargument - \toonkader - [\v!hoofd,\v!tekst,\v!voet] - [#1] - \else - \toonkader - [\v!hoofd,\v!tekst,\v!voet] - [\v!linkerrand,\v!linkermarge, - \v!tekst, - \v!rechtermarge,\v!rechterrand] - \fi\fi - \let\pageseparation=\!!zeropoint} - -\def\toonkader{\dodoubleempty\dotoonkader} - -\def\tooninstellingA#1#2% - {#1&\PtToCm{\the#2}&\the#2&\tttf\string#2\cr} - -\def\tooninstellingC#1#2% - {#1&\dimen0=#2\PtToCm{\the\dimen0}&\dimen0=#2\the\dimen0&\tttf\string#2\cr} - -\def\tooninstellingB#1#2#3% - {#1&#3&\tttf\string#3\cr} - -\startinterface dutch - -\def\tooninstellingen% - {\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 - \noalign{\blanko} - \tooninstellingA{kopwit} \kopwit - \tooninstellingA{rugwit} \rugwit - \tooninstellingA{hoogte} \zethoogte - \tooninstellingA{breedte} \zetbreedte - \noalign{\blanko} - \tooninstellingA{boven} \bovenhoogte - \tooninstellingC{bovenafstand} \bovenafstand - \tooninstellingA{hoofd} \hoofdhoogte - \tooninstellingC{hoofdafstand} \hoofdafstand - \tooninstellingA{teksthoogte} \teksthoogte - \tooninstellingC{voetafstand} \voetafstand - \tooninstellingA{voet} \voethoogte - \tooninstellingC{onderafstand} \onderafstand - \tooninstellingA{onder} \onderhoogte - \noalign{\blanko} - \tooninstellingA{linkerrand} \linkerrandbreedte - \tooninstellingC{linkerrandafstand} \linkerrandafstand - \tooninstellingA{linkermarge} \linkermargebreedte - \tooninstellingC{linkermargeafstand} \linkermargeafstand - \tooninstellingA{tekstbreedte} \tekstbreedte - \tooninstellingC{rechtermargeafstand}\rechtermargeafstand - \tooninstellingA{rechtermarge} \rechtermargebreedte - \tooninstellingC{rechterrandafstand} \rechterrandafstand - \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}}} - -\stopinterface - -\startinterface english - -\def\tooninstellingen% - {\noindent - \vbox - {\forgetall - \mindermeldingen - \switchtobodyfont[\v!klein] - \tabskip\!!zeropoint - \halign - {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr - \tooninstellingA{paperheight} \paperheight - \tooninstellingA{paperwidth} \paperwidth - \tooninstellingA{printpaperheight} \printpaperheight - \tooninstellingA{printpaperwidth} \printpaperwidth - \noalign{\blanko} - \tooninstellingA{topspace} \topspace - \tooninstellingA{backspace} \backspace - \tooninstellingA{height} \makeupheight - \tooninstellingA{width} \makeupwidth - \noalign{\blanko} - \tooninstellingA{top} \topheight - \tooninstellingC{topdistance} \topdistance - \tooninstellingA{header} \headerheight - \tooninstellingC{headerdistance} \headerdistance - \tooninstellingA{textheight} \textheight - \tooninstellingC{footerdistance} \footerdistance - \tooninstellingA{footer} \footerheight - \tooninstellingC{bottomdistance} \bottomdistance - \tooninstellingA{bottom} \bottomheight - \noalign{\blanko} - \tooninstellingA{leftedge} \leftedgewidth - \tooninstellingC{leftedgedistance} \leftedgedistance - \tooninstellingA{leftmargin} \leftmarginwidth - \tooninstellingC{leftmargindistance} \leftmargindistance - \tooninstellingA{textwidth} \textwidth - \tooninstellingC{rightmargindistance}\rightmargindistance - \tooninstellingA{rightmargin} \rightmarginwidth - \tooninstellingC{rightedgedistance} \rightedgedistance - \tooninstellingA{rightedge} \rightedgewidth - \noalign{\blanko} - \tooninstellingB{bodyfontsize} \the \globalbodyfontsize - \noalign{\blanko} - \tooninstellingB{line} \relax \normallineheight - \tooninstellingB{height} \relax \strutheightfactor - \tooninstellingB{depth} \relax \strutdepthfactor - \tooninstellingB{topskip} \relax \topskipfactor - \tooninstellingB{maxdepth} \relax \maxdepthfactor}}} - -\stopinterface - -\startinterface german - -\def\tooninstellingen% - {\noindent - \vbox - {\forgetall - \mindermeldingen - \switchtobodyfont[\v!klein] - \tabskip\!!zeropoint - \halign - {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr - \tooninstellingA{papierhoehe} \papierhoehe - \tooninstellingA{papierbreite} \papierbreite - \tooninstellingA{printpapierhoehe} \printpapierhoehe - \tooninstellingA{printpapierbreite} \printpapierbreite - \noalign{\blanko} - \tooninstellingA{kopfweite} \kopfweite - \tooninstellingA{rumpfweite} \rumpfweite - \tooninstellingA{hoehe} \satzhoehe - \tooninstellingA{breite} \satzbreite - \noalign{\blanko} - \tooninstellingA{oben} \hoeheoben - \tooninstellingC{abstandoben} \abstandoben - \tooninstellingA{kopfzeile} \kopfzeilenhoehe - \tooninstellingC{kopfzeilenabstand} \kopfzeilenabstand - \tooninstellingA{texthoehe} \texthoehe - \tooninstellingC{fusszeileabstand} \fusszeileabstand - \tooninstellingA{fusszeilen} \fusszeilenhoehe - \tooninstellingC{abstandunten} \abstandunten - \tooninstellingA{hoeheunten} \hoeheunten - \noalign{\blanko} - \tooninstellingA{linkerrand} \breitelinkerrand - \tooninstellingC{abstandlinkerrand} \abstandlinkerrand - \tooninstellingA{linkemarginal} \linkemarginalbreite - \tooninstellingC{linkemarginalafstand} \linkemarginalafstand - \tooninstellingA{textbreite} \textbreite - \tooninstellingC{rechtemarginalafstand}\rechtemarginalafstand - \tooninstellingA{rechtemarginal} \rechtemarginalbreite - \tooninstellingC{abstandrechterrand} \abstandrechterrand - \tooninstellingA{rechterrand} \breiterechterrand - \noalign{\blanko} - \tooninstellingB{fliesstext} \the \globalbodyfontsize - \noalign{\blanko} - \tooninstellingB{linie} \relax \normallineheight - \tooninstellingB{hoehe} \relax \strutheightfactor - \tooninstellingB{tiefe} \relax \strutdepthfactor - \tooninstellingB{topskip} \relax \topskipfactor - \tooninstellingB{maxdepth} \relax \maxdepthfactor}}} - -\stopinterface - -\startinterface czech - -\def\tooninstellingen% - {\noindent - \vbox - {\forgetall - \mindermeldingen - \switchtobodyfont[\v!klein] - \tabskip\!!zeropoint - \halign - {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr - \tooninstellingA{vyskapapiru} \vyskapapiru - \tooninstellingA{sirkapapiru} \sirkapapiru - \tooninstellingA{vyskatiskpapiru} \vyskatiskpapiru - \tooninstellingA{sirkatiskpapiru} \sirkatiskpapiru - \tooninstellingA{hornimezera} \hornimezera - \tooninstellingA{spodnimezera} \spodnimezera - \tooninstellingA{vyska} \vyskasazby - \tooninstellingA{breite} \sirkasazby - \tooninstellingA{vyskatextu} \vyskatextu - \tooninstellingA{sirkatextu} \sirkatextu - \tooninstellingA{horejsek} \vyskahorejsku - \tooninstellingC{vzdalenosthorejsku} \vzdalenosthorejsku - \tooninstellingA{zahlavi} \vyskazahlavi - \tooninstellingC{vzdalenostzahlavi} \vzdalenostzahlavi - \tooninstellingC{fusszeileabstand} \vzdalenostupati - \tooninstellingA{upati} \vyskaupati - \tooninstellingC{vzdalenostspodku} \vzdalenostspodku - \tooninstellingA{spodek} \vyakaspodku - \tooninstellingA{levyokraj} \sirkalevehookraje - \tooninstellingC{vzdalenostlevehookraje}\vzdalenostlevehookraje - \tooninstellingA{levamarginalie} \sirkalevemarginalie - \tooninstellingC{vzdalenostlevemarginalie}\vzdalenostlevemarginalie - \tooninstellingC{vzdalenostpravemarginalie}\vzdalenostpravemarginalie - \tooninstellingA{pravamarginalie} \sirkapravemarginalie - \tooninstellingC{vzdalenostpravehookraje}\vzdalenostpravehookraje - \tooninstellingA{pravyokraj} \sirkapravehookraje - \noalign{\blanko} - \tooninstellingB{zakladnivelikost} \the \globalbodyfontsize - \noalign{\blanko} - \tooninstellingB{linka} \relax \normallineheight - \tooninstellingB{vyska} \relax \strutheightfactor - \tooninstellingB{hloubka} \relax \strutdepthfactor - \tooninstellingB{topskip} \relax \topskipfactor - \tooninstellingB{maxdepth} \relax \maxdepthfactor}}} - -\stopinterface - -\def\toonlayout% interfereert lelijk met een \typefile er na - {\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\ifsubsom \subsomfalse -\newif\ifsymsom \symsomfalse -\newif\ifkopsom \kopsomfalse -\newif\ifsomintro \somintrofalse -\newif\ifsomautointro \somautointrofalse -\newif\ifoptimizeitems \optimizeitemstrue -\newif\ifpackeditems \packeditemsfalse -\newif\iffirstlist \firstlistfalse - -\newcounter \itemcolumndepth - -\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!letter,\c!marletter,\c!symletter,\c!kopletter, - \c!kleur,\c!markleur,\c!symkleur,\c!kopkleur, - \c!kopvoor,\c!kopna,\c!voor,\c!tussen,\c!na, - \c!afsluiter,\c!plaatsafsluiter,\c!inspringen, - \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}]% - %\dorecurse{\@@ooniveaus}{\setnextitemlevel\recurselevel}% - \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#4]% * permits [2] - {\processaction - [#2#3#4] - [ \v!opelkaar*=>\packitems, - \v!vanelkaar*=>\packeditemsfalse, - \v!intro*=>\somintrotrue, - \v!autointro*=>\somautointrotrue, - \v!ruim*=>{\doassign[\??op#1][\c!factor=1]}, - #2#3*\v!ruim*=>{\doassign[\??op#1][\c!factor=#2#3]}, - #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!los*=>\optimizeitemsfalse, - \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#3*\v!aanelkaar*=>{\doassign[\??op#1][\c!factor=-#2#3]}, - #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]}]} -% {\dorecurse{\maxitemlevel}{\ExpandFirstAfter\dodododostelopsommingin[\recurselevel][#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} - -% PAS OP: ook 'opelkaar' en zo worden getest, nog eens afvangen! - -\def\setitemmark#1% % en pas op: resets \docommando - {\doifsymboldefinedelse{#1} - {\setxvalue{\??op\c!symbool\s!global\itemlevel}{#1}% - \setgvalue{\??op\c!symbool\s!local\itemlevel}{?}% - \def\listitem{\symbol[#1]}% - \let\docommando\gobbleoneargument} - {\doifconversiondefinedelse{#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}% - \let\docommando\gobbleoneargument} - {\let\listitem\empty}}} - -%\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\calculatelistwidth#1#2% - {#2=\getvalue{\??op#1\c!afstand}\relax - \ifnum\getvalue{\??op#1\c!factor}>0 - \ifdim#2=\!!zeropoint #2=.5em\fi - \fi - \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 -\dosetraggedcommand{\getvalue{\??op\itemlevel\c!uitlijnen}}\raggedcommand -\doifvaluesomething{\??op\itemlevel\c!inspringen} - {\expanded{\stelinspringenin[\getvalue{\??op\itemlevel\c!inspringen}]}}% - \doifinset{\v!kolommen}{#1}% - {\ifbinnenkolommen\else\ifnum\itemcolumndepth=0 - \global\let\itemcolumndepth\itemlevel - \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, % neter \??op\itemlevel\c!n - \c!hoogte=, - \c!lijn=\v!uit, - \c!balanceren=\v!ja, - \c!uitlijnen=\v!nee]% - \fi\fi}% - \doifinsetelse{\v!intro}{#1} - {\somintrotrue} - {\somintrofalse}% - \doglobal\increment\noflists - \let\currentlist=\noflists - \newcounter\noflistelements - \kopsomfalse - \subsomfalse - \symsomfalse - \let\marsymbol=\relax - \global\let\somdestination=\empty - \def\symsymbol{}% - \def\som% - {\dosom}% - \def\but[##1]% - {\gdef\somdestination{##1}% - \dosom}% - \def\nop% - {\sym{\strut}\strut}% - \definecomplexorsimple\its - \setvalue{\v!mar}##1% - {\def\marsymbol% - {\llap - {\doattributes{\??op\itemlevel}\c!marletter\c!markleur{##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}\c!symletter\c!symkleur{##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}}}}% - \setvalue{\v!its}% - {\getvalue{\v!ran}% - {\dorecurse{\getvalue{\??op\itemlevel\c!items}}{\listitem\hss}% - \unskip}}% - \setvalue{\v!ran}##1% - {\getvalue{\v!sym}% - {\calculatelistwidth{\itemlevel}{\dimen0}% - \hbox to \dimen0 - {##1\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}% \moexpand, else problems in non-etex with chinese - %{\edef\@@opsymbool{\getvalue{\??op\c!symbool\s!global\itemlevel}}% - {\edef\@@opsymbool{\noexpand\getvalue{\??op\c!symbool\s!global\itemlevel}}% - \getvalue{\??op\v!verder\itemlevel}} - %{\edef\@@opsymbool{\getvalue{\??op\itemlevel\c!symbool}}% - {\edef\@@opsymbool{\noexpand\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 - \ifnum\itemcolumndepth=0 \dolistreference \fi % beware ! - \iffirstlist \else \endgroup \fi % toegevoegd, eerte \som opent groep - \ifnum\itemcolumndepth=\itemlevel\relax - \stopkolommen - \doglobal\newcounter\itemcolumndepth - \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\ifbinnenkolommen\else00\fi\relax} % +5 - -\def\dolistitem% evt aantal items opslaan per niveau, scheelt zoeken - {\par - \ignorespaces - \increment\noflistelements - \ifnum\itemcolumndepth=0\relax\ifoptimizeitems - \ifnum\noflistelements=1 % tgv bv kolommen/nesting - \findtwopassdata{\s!list}{\noflists:}% % wordt soms de volgorde - \fi % verstoord, vandaar \find - \iftwopassdatafound - \ifnum\twopassdata=3 - \ifnum\noflistelements>1 - \dosomebreak\somnobreak - \fi - \else\ifnum\twopassdata>3 - \ifnum\noflistelements=2 - \ifsomintro - \dosomebreak\nobreak - \else - \dosomebreak\somnobreak - \fi - \else\ifnum\twopassdata=\noflistelements\relax - \dosomebreak\somnobreak - \else\ifnum\noflistelements>2 - \dosomebreak\sombreak - \else - \ifsomintro\else\dosomebreak\sombreak\fi - \fi\fi\fi - \fi\fi - \fi - \fi\fi - \noindent - \ifkopsom - \setbox8=\hbox - {\doattributes{\??op\itemlevel}\c!kopletter\c!kopkleur{\listitem}}% - \else\ifsymsom - \setbox8=\hbox{\symsymbol}% - \else - \setbox8=\hbox - {\doattributes{\??op\itemlevel}\c!letter\c!kleur{\listitem}}% - \fi\fi - \doifsomething{\somdestination} - %{\setbox8=\hbox{\naar{\copy8}[\somdestination]}}% - {\setbox8=\hbox{\naar{\box8}[\somdestination]}}% - \global\let\somdestination=\empty - \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}}% problems with \uchar - {\noexpand\getvalue{\??op\c!symbool\s!local\itemlevel}}% - \kopsomfalse - \subsomfalse - \symsomfalse - \EveryPar{\ignorespaces}% - \ignorespaces} - -\def\complexdosom[#1]% - {\par - \ignorespaces - \doadvanceitem - \ifnum\itemcolumndepth=0\relax\ifnum\noflistelements>0\relax - \dosomebreak\nobreak - \fi\fi - \iffirstlist - \firstlistfalse - \begingroup - \ifcase\itemlevel - \or % 1 - \ifnum\itemcolumndepth=0\relax - \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} - {\doifnot{\itemreference}{?} - {\bgroup - \protectconversion - \rawreference{\s!lst}{#1}{\itemreference}% - \egroup}}% - \strut % added 11-08-99 - \ignorespaces} - -\def\complexsom[#1]#2\par% - {\startopsomming[#1] - \complexdosom[]\ignorespaces\begstrut#2\unskip\endstrut\par - \stopopsomming} - -\definecomplexorsimpleempty\som -\definecomplexorsimpleempty\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}\c!kopletter\c!kopkleur -% {\ignorespaces#2}}\par -% \ifpackeditems\else\itemuse\c!kopna\fi -% \dosomebreak\nobreak -% \noindentation} - -\def\complexdokop[#1]#2\par% % beter in \complexdosom hangen met een if - {\iffirstlist\else\dosomebreak\allowbreak\fi - \ifpackeditems\else\itemuse\c!kopvoor\fi - \iffirstlist\ifsomintro\else\ifcase\itemlevel % incr in \complexdosom - %\dosomebreak{\pagina[\v!voorkeur]}% geen \goodbreak ! \allowbreak testen - \dosomebreak\allowbreak - \fi\fi\fi - \complexdosom[#1]{\doattributes{\??op\itemlevel}\c!kopletter\c!kopkleur - {\ignorespaces#2}}\par - \dosomebreak\nobreak - \ifpackeditems\else\itemuse\c!kopna\fi - \dosomebreak\nobreak - \noindentation} - -\def\complexkop[#1]#2\par#3\par% - {\startopsomming[#1]% - \complexdokop[]\ignorespaces#2\par#3\par - \stopopsomming} - -\definecomplexorsimpleempty\kop -\definecomplexorsimpleempty\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#4% - {\doattributes - {\??dd#1}\c!kopletter\c!kopkleur - {\getvalue{\??dd#1\c!commando}% NAAR BUITENSTE NIVEAU ! - {\begstrut\getvalue{\??dd#1\c!tekst}#4\endstrut}}% - \rawreference{\s!def}{#2}{#3}} - -\setvalue{@@definitie\v!links}#1% - {\@@definitiehang{#1}\@@definitielinkspure\@@definitielinkshang} - -\setvalue{@@definitie\v!rechts}#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}}% copy ? -% \@@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\@@definitielinkspure#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \leftskip\@@leftdefinitieskip - \rightskip\@@rightdefinitieskip - \advance\leftskip by \!!widtha - \@@makedefinitiepurebox{#1}\raggedright - \advance\leftskip by \!!widthb - \llap - {\hbox to \leftskip - {\hskip\@@leftdefinitieskip - \copy\@@definitiebox\hss}}% - \@@dodefinitie{#1}} - -\def\@@definitierechtspure#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \leftskip\@@leftdefinitieskip - \rightskip\@@rightdefinitieskip - \advance\rightskip by \!!widtha - \@@makedefinitiepurebox{#1}\raggedleft - \rlap - {\hskip\hsize - \hskip-\leftskip - \hskip-\rightskip - \copy\@@definitiebox - \hskip\@@rightdefinitieskip}% - \advance\rightskip by \!!widthb - \@@dodefinitie{#1}} - -\def\@@makedefinitiepurebox#1#2% - {\setbox\@@definitiebox=\vtop - {\mindermeldingen - \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 - {\mindermeldingen - \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 - \mindermeldingen - \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}}}% - -%\setvalue{@@definitie\v!boven}#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}} - -\setvalue{@@definitie\v!boven}#1[#2]#3% - {%\pagina[\v!voorkeur]% % Weg ermee! - %\dosomebreak{\goodbreak}% % Dit is beter en nodig! - \dohandelpaginaafX1 % En dit moet het maar worden. - \@@dostartdefinitie{#1}[#2]{\let\\=\space#3}% - \copy\@@definitiebox\par - \nobreak - \getvalue{\??dd#1\c!tussen}% - \nobreak - \@@dodefinitie{#1}} - -\setvalue{@@definitie\v!inmarge}#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \inmarge{\unhcopy\@@definitiebox}% - \@@dodefinitie{#1}} - -\setvalue{@@definitie\v!inlinker}#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \inlinker{\unhcopy\@@definitiebox}% - \@@dodefinitie{#1}} - -\setvalue{@@definitie\v!inrechter}#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \inrechter{\unhcopy\@@definitiebox}% - \@@dodefinitie{#1}} - -\def\@@definitieaanelkaarpassend#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \unhcopy\@@definitiebox - \hskip\!!widthb % toegevoegd - \@@dodefinitie{#1}} - -\def\@@definitieaanelkaarruim#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \unhcopy\@@definitiebox - \hskip\!!widthb \!!plus .5\!!widthb \!!minus .25\!!widthb - \@@dodefinitie{#1}} - -\def\@@definitieaanelkaarbreed#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% - \hbox to \!!widtha - {\unhcopy\@@definitiebox\hss}% - \hskip\!!widthb - \ignorespaces - \@@dodefinitie{#1}} - -\setvalue{@@definitie\v!aanelkaar}#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}} - -% \setvalue{@@definitie\v!hangend}#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}} - -\setvalue{@@definitie\v!hangend}#1[#2]#3% - {\@@dostartdefinitie{#1}[#2]{#3}% % adds \c!marge to \leftskip - \advance\leftskip by -\leftskipadaption - \ifdim\leftskipadaption=\!!zeropoint - \leftskipadaption=1.5em % just some default - \ifnum\insidedefinition=1 \ifdim\leftskip>\!!zeropoint - \leftskipadaption=\leftskip - \fi \fi - \fi - \ifnum\insidedefinition=1 - \advance\leftskip by \leftskipadaption - \fi - \hskip-\leftskipadaption - \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 -% \mindermeldingen -% \def\\{\crcr}% -% % \doattributes -% % {\??dd#1}\c!kopletter\c!kopkleur -% % {\doifelsevalue{\??dd#1\c!plaats}{\v!aanelkaar} -% % {\@@definitiewoord{#1}[#2]{#3}{#3}} -% % {\@@definitiewoord{#1}[#2]{#3}{\vbox{\halign{\strut##\hss\cr#3\crcr}}}}}}% -% \doifelsevalue{\??dd#1\c!plaats}{\v!aanelkaar} -% {\@@definitiewoord{#1}[#2]{#3}{#3}} -% {\@@definitiewoord{#1}[#2]{#3}{\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}\c!kopletter\c!kopkleur -% {\getvalue{\??dd#1\c!tekst}\getvalue{\??dd#1\c!monster}}}} -% {\!!widthb}% -% %\getvalue{\??dd#1\s!do\c!lokaal}% -% \parindent=\!!zeropoint\relax -% \noindent -% \ignorespaces} - -%D A new key 'titeluitlijnen' in definitions. - -\chardef\insidedefinition=0 - -\let\@@leftdefinitieskip \!!zeropoint -\let\@@rightdefinitieskip\!!zeropoint - -\def\@@dostartdefinitie#1[#2]#3% - {\getvalue{\??dd#1\c!voor}% - \begingroup - \doadaptleftskip{\getvalue{\??dd#1\c!marge}}% - \showcomposition - \setbox\@@definitiebox=\hbox - {\forgetall - \mindermeldingen - \def\\{\crcr}% - \doifelsevalue{\??dd#1\c!plaats}{\v!aanelkaar} - {\@@definitiewoord{#1}[#2]{#3}{#3}} - {\@@definitiewoord{#1}[#2]{#3}{\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}\c!kopletter\c!kopkleur - {\getvalue{\??dd#1\c!tekst}\getvalue{\??dd#1\c!monster}}}} - {\!!widthb}% - %\getvalue{\??dd#1\s!do\c!lokaal}% - \parindent=\!!zeropoint\relax - \doifelsevalue{\??dd#1\c!titeluitlijnen}{\v!nee} - {\edef\@@leftdefinitieskip {\the\leftskip }% - \edef\@@rightdefinitieskip{\the\rightskip}} - {\ifcase\insidedefinition - \edef\@@leftdefinitieskip {\the\leftskip }% - \edef\@@rightdefinitieskip{\the\rightskip}% - \fi}% - \ifcase\insidedefinition - \chardef\insidedefinition=1 - \or - \chardef\insidedefinition=2 - \fi - \noindent - \ignorespaces} - -\def\@@stopdefinitie#1% - {\par - \dostopattributes - \endgroup - \egroup % temporary hack - \getvalue{\??dd#1\c!na}% - \doifvalue{\??dd#1\c!springvolgendein}{\v!nee}{\noindentation}} - -\def\@@dodefinitie#1% - {\dostartattributes{\??dd#1}\c!letter\c!kleur{}% - \ignorespaces} - -\def\@@somedefinitie#1[#2]#3% - {\bgroup % temporary hack - %\BeforePar{\getvalue{\??dd#1}[#2]{#3}}% - \BeforePar{\executedoordefinitie{#1}[#2]{#3}}% - \AfterPar{\@@stopdefinitie{#1}}% - \GetPar} - -\def\@@startsomedefinitie#1[#2]#3% - {\bgroup % temporary hack - %\BeforePar{\getvalue{\??dd#1}[#2]{#3}}% - \BeforePar{\executedoordefinitie{#1}[#2]{#3}}% - \GotoPar} - -\def\dodosteldoordefinierenin[#1][#2]% - {\getparameters[\??dd#1][#2]} - -\def\dosteldoordefinierenin[#1][#2]% % beter: \iffirstargument - {\ConvertToConstant\doifelse{#2}{} - {\dodosteldoordefinierenin[][#1]} - {\dodoubleargumentwithset\dodosteldoordefinierenin[#1][#2]}} - -\def\steldoordefinierenin% - {\dodoubleempty\dosteldoordefinierenin} - -\def\executedoordefinitie#1[#2]% - {\ExpandAfter\doifundefined{@@definitie\getvalue{\??dd#1\c!plaats}} - {\setvalue{\??dd#1\c!plaats}{\v!links}}% - \getvalue{@@definitie\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{#1}% - {\dodoubleempty\@@definitie[#1]}% - \setvalue{\e!start#1}% - {\dodoubleempty\@@startdefinitie[#1]}% - \setvalue{\e!stop#1}% - {\@@stopdefinitie{#1}}}% - -\def\@@startdefinitie[#1][#2]% - {\doifelsevalue{\??dd#1\s!do\c!status}{\v!start} - {\def\next{\@@startsomedefinitie{#1}[#2]{}}} - {\def\next{\dowithwargument{\@@startsomedefinitie{#1}[#2]}}}% - \next} - -\def\@@definitie[#1][#2]% - {\doifelsevalue{\??dd#1\s!do\c!status}{\v!start} - {\def\next{\@@somedefinitie{#1}[#2]{}}} - {\def\next{\dowithwargument{\@@somedefinitie{#1}[#2]}}}% - \next} - -\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 -%I -%I en een (sub)nummer op te hogen met: -%I -%I \volgende -%I \volgendesub -%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}} % geen spatie - -\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#7=#1[#2]#3#4 van definitie - -%\def\special@@definitiewoord#1#2#3#4[#5]#6#7% -% {\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}\c!kopletter\c!kopkleur -% {\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 -% \edef\!!stringa{\showdnpuretext{#2#1}}% nog eens testen binnen \expanded -% \expanded{\doattributes{\??dd#1}\noexpand\c!kopletter\noexpand\c!kopkleur -% {\!!stringa}}% -% \rawreference{\s!num}{#5}{}% -% \fi} - -\def\special@@definitiewoord#1#2#3#4[#5]#6#7% - {\strut - \doifelsevalue{\??dd#1\c!nummer}{\v!nee} - {\!!doneafalse} - {\doifelse{#5}{-} - {\!!doneafalse} - {\!!doneatrue}}% - \chardef\definitiekoppeling=0 - \iflocation - \doifvaluesomething{\??dd#1\c!koppeling} - {\processaction % genereert > of < - [\getvalue{\??dd#1\c!koppelwijze}] - [ \v!lokaal=>\chardef\definitiekoppeling=1, % old: default - \v!globaal=>\chardef\definitiekoppeling=2]}% new: global crosslinking - \fi - \stelnummerin % the number is called indirectly - [\getvalue{\??dd#1\??dd\c!nummer}] - [\c!sectienummer=\getvalue{\??dd#1\c!sectienummer}]% - \if!!donea - \getvalue{\e!volgende#2#1}% - \iflocation - \bgroup - \setvalue{\??dd#1\c!sectienummer}{\v!ja}% - \protectconversion - %\maakvoorafgaandenummer[#1]% - \maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]% - \ifcase\definitiekoppeling \or - \xdef\internaldoornummer{#3{#1}}% - \rawreference{\s!num}{#1:\internaldoornummer}{}% - \or - \xdef\internaldoornummer{\countervalue{\??dd\c!koppeling#1}}% - \rawreference{\s!num}{#1:\internaldoornummer}{}% - \fi - \egroup - \fi - %\maakvoorafgaandenummer[#1]% - \maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]% -%\getvalue{\??dd#1\c!commando}{% - \hbox - {\let\normalkap\relax % sorry, uppercase causes troubles - \doattributes % \nocase primitive needed - {\??dd#1}\c!kopletter\c!kopkleur - {\showdntext{#2#1}% - \domakednnummer#3{#1}% - \getvalue{\??dd#1\c!afsluiter}}% - \iflocation\ifcase\definitiekoppeling \else - \edef\localconnection{\getvalue{\??dd#1\c!koppeling}:\internaldoornummer}% - \doifreferencefoundelse{\localconnection} - {\in[\localconnection]}{}% genereert > of < - %\in[\localconnection]% - \fi\fi}% - \doifnot{#5}{-}{\rawreference{\s!num}{#5}{#3{#1}}}% -%}% - \else -%\getvalue{\??dd#1\c!commando}{% - \edef\!!stringa{\showdnpuretext{#2#1}}% nog eens testen binnen \expanded - \expanded{\doattributes{\??dd#1}\noexpand\c!kopletter\noexpand\c!kopkleur - {\!!stringa}}% - \doifnot{#5}{-}{\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% - {\makecounter{\??dd\c!koppeling#1}% new: global cross linking - \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=,\c!koppelwijze=\v!lokaal,#4]}% - {\doifelsenothing{#4} - {\getparameters[\??dd#3#1]% - [\c!tekst=#1,\??dd\c!nummer=#1,\c!conversie=, - \c!links=,\c!rechts=,\c!koppeling=,\c!koppelwijze=,#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,\c!koppelwijze]% - \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}% - {\doresetdoornummer[#1][#3]}% - \setvalue{\e!volgende#3#1}% - {\dotripleempty\dovolgendedoornummer[#1][#3]}} - -\def\dovolgendedoornummer[#1][#2]% - {\pluscounter{\??dd\c!koppeling#1}% new: global crosslinking - \getvalue{\??dd\c!volgende#2\c!nummer}{#1}}% - -\def\doresetdoornummer[#1][#2]% - {\getvalue{\??dd\s!reset#2\c!nummer}{#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 - \dosomebreak{\goodbreak}% \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}\c!kopletter\c!kopkleur - {\getvalue{\??ds#1\c!monster}\getvalue{\??ds#1\c!scheider}}} - {1em}% - \advance\!!widtha by \tfskipsize - \setbox2=\hbox to \!!widtha - {\doattributes - {\??ds#1}\c!kopletter\c!kopkleur - {\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}\c!letter\c!kleur{}% #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 -%I \verhoog -%I \volgende[referentie] -%I \huidige -%I \in[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}\c!kopletter\c!kopkleur - {\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\bodyfontsize} -\def\rightraggedness {2\bodyfontsize} -\def\middleraggedness {6\bodyfontsize} - -\def\setraggedness#1% - {\ifnum\tolerance<1500\relax % small values have - \tolerance=1500\relax % unwanted side effects - \fi % - \spaceskip=2.5\hsize % we misuse these - \xspaceskip=#1\relax % registers for temporary - \divide\spaceskip by \xspaceskip % storage; they are - \hyphenpenalty=\spaceskip} % changed anyway - -\let\updateraggedskips\relax - -\def\setraggedskips#1#2#3#4#5#6% never change this name - {\def\updateraggedskips% - {\dosetraggedskips{#1}{#2}{#3}{#4}{#5}{#6}}% - \updateraggedskips} - -\def\dosetraggedskips#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}} - -\def\raggedleft% - {\setraggedness\leftraggedness - \setraggedskips{\leftraggedness}{0em}{.3333em}{.5em}{0em}{0em}} - -\def\raggedcenter% - {\setraggedness\middleraggedness - \setraggedskips{\middleraggedness}{\middleraggedness}{.3333em}{.5em}{0em}{0em}} - -%D We used to have: -%D -%D \starttypen -%D \def\raggedright% -%D {\setraggedness\rightraggedness -%D \setraggedskips{0em}{\rightraggedness}{.3333em}{.5em}{0em}{\parindent}} -%D \stoptypen -%D -%D However, the next alternative, suggested by Taco, is better. - -\def\raggedright% - {\setraggedness\rightraggedness - \setraggedskips{0em}{\rightraggedness}{.3333em}{.5em}{1fil}{\parindent}} - -\def\veryraggedleft% - {\setraggedskips{1fil}{0em}{.3333em}{.5em}{0em}{0em}} - -%D When we want the last line to have a natural width: -%D -%D \starttypen -%D \def\veryraggedleft% -%D {\setraggedskips{1fil}{0em}{.3333em}{.5em}{0em}{-1fil}} -%D \stoptypen -%D -%D but this one is not accepted by the macros. - -\def\veryraggedcenter% - {\setraggedskips{1fil}{1fil}{.3333em}{.5em}{0em}{0em}} - -\def\veryraggedright% - {\setraggedskips{0em}{1fil}{.3333em}{.5em}{0em}{\parindent}} - -\def\ttraggedright% - {\tttf - \setraggedskips{0em}{\rightraggedness}{0em}{0em}{0em}{\parindent}} % {\voorwit}} - -%D A bonus one: - -\def\raggedwidecenter% - {\setraggedness\middleraggedness - \setraggedskips{.5fil}{.5fil}{.3333em}{.5em}{0em}{0em}} - -\def\dodosteluitlijnenin[#1]% - {\doifinsetelse{\v!ruim} {#1}{\!!doneatrue}{\!!doneafalse}% - \doifinsetelse{\v!breed}{#1}{\!!donebtrue}{\!!donebfalse}% - \ExpandFirstAfter\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!!doneb\raggedwidecenter\else - \if!!donea\veryraggedcenter\else\raggedcenter\fi\fi, - \v!reset=>\notragged\normalbottom]} - -\def\dosteluitlijnenin[#1]% - {\expanded{\dodosteluitlijnenin[#1]}} - -\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} - -% also supporting \\ -% -% \def\doalignline#1#2% -% {\dowithnextbox -% {\noindent\hbox to \hsize -% {\strut#1\unhbox\nextbox#2}} -% \hbox\bgroup -% \def\\{\egroup\par\doalignline#1#2\bgroup}\let\next=} - -\def\doalignline#1#2% - {\bgroup - \def\\{\egroup\par\doalignline#1#2\bgroup}% - \dowithnextbox - {\noindent\hbox to \hsize - {\strut#1\unhbox\nextbox#2}\egroup} - \hbox} - -% directe commando's - -\def\regellinks {\doalignline \relax \hss } -\def\regelrechts{\doalignline \hss \relax} -\def\regelmidden{\doalignline \hss \hss } - -\def\regelbegrensd#1{\limitatetext{#1}{\hsize}{\unknown}} - -% indirecte commando's - -\setvalue{regel\v!links }{\doalignline \relax \hss } -\setvalue{regel\v!rechts}{\doalignline \hss \relax} -\setvalue{regel\v!midden}{\doalignline \hss \hss } - -\def\doregelplaats#1% - {\getvalue{regel#1}} - -\def\dosteltolerantiein[#1]% - {\doifinsetelse{\v!vertikaal}{#1}% - {\ExpandFirstAfter\processallactionsinset - [#1] - [\v!zeerstreng=>\def\bottomtolerance{}, - \v!streng=>\def\bottomtolerance{.050}, - \v!soepel=>\def\bottomtolerance{.075}, - \v!zeersoepel=>\def\bottomtolerance{.100}]}% - {\ExpandFirstAfter\processallactionsinset - [#1] - [ \v!rek=>\emergencystretch=\bodyfontsize, - \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\margestrutheight{\ht\strutbox} - -\def\maakmargetekstblok#1#2#3#4#5#6% - {#4\relax - \bgroup - \forgetall % added, else problems with 'center' and nested itemize - \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!nee=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!normaal}, - \v!binnen=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2}, - \v!buiten=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#3}, - \v!links=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!links}, - \v!midden=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!midden}, - \v!rechts=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!rechts}, - \s!default=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2}]% - \setbox0=\vbox\localframed - [\??im\margetekstnummer] - [\c!strut=\v!nee] - {\decrement\margetekstregels - \@@imvoor - \doattributes - {\??im\margetekstnummer}\c!letter\c!kleur - {\dorecurse{\margetekstregels}{\strut\\}% - \xdef\margestrutheight{\the\ht\strutbox}% - \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 - \dimen0=\dp\strutbox - \advance\dimen0 by \margestrutheight - \advance\dimen0 by -\ht\strutbox - \raise\dimen0 - \fi - \box0}}% - \ht0=\!!zeropoint - \dp0=\!!zeropoint - \gdef\margestrutheight{\the\ht\strutbox}% - \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 - [\v!links][\doinlinker][\doinrechter]} - -\def\inrechter% - {\indentation\doquintupleempty\doinmarge - [\v!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% - {\restoreinterlinepenalty % here? - \ifnum\margincontent>0 % called quite often, so we - \expandafter\doflushmargincontents % speed up the \fi scan by - \fi} % using a \do.. - -\def\doflushmargincontents% % links + rechts - {\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} - -\def\complexmargewoord[#1][#2]#3% - {\doglobal\increment\margincontent - \stelinmargein[\margincontent][]% see next macro - \@EA\setgvalue\@EA{\@EA\??im\@EA\margincontent\@EA}\@EA - {\@EA\stelinmargein\@EA[\margincontent][]% see next macro - \flushmargincontent[#1][#2]{#3}}} - -\def\margewoordpositie[#1]#2% - {\ifnum#1>\margincontent - \xdef\margincontent{#1}% - \fi - \stelinmargein[#1][]% when at outer level, saves local settings - \setgvalue{\??im#1}% - {\stelinmargein[#1][]% needed when par start outside group - \flushmargincontent[][]{#2}}} - -\def\margewoord% - {\dodoubleempty\complexmargewoord} - -\def\margetitel% - {\margewoord} - -\def\margetekst% - {\margewoord} - -\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, - \c!nummer=, - #1]% - \doifsomething{\@@pnnummer} - {\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]% - {\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 - \fi - \else - \goodbreak - \fi - \fi} - -\let\resetcurrentsectionmarks=\relax - -% was: \resetsectionmarks[\firstsection], zie \handelpaginaaf - -\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]} - -\definecomplexorsimple\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=,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]} - -% THIS: !!! - -\def\dolimitateteksten#1#2% - {\doifelsevaluenothing{#1}{#2}{\limitatetext{#2}{\getvalue{#1}}{...}}} - -\def\doteksten#1#2#3#4#5#6% - {\bgroup - %\showcomposition % I need to test first - \convertargument#6\to\ascii - \doifsomething{\ascii} - {\doattributes{#1#2}#3#4% - {\doifvalue{#1\v!tekst\c!strut}{\v!ja}{\setstrut\strut}% here! - \doifdefinedelse{\??mk\ascii\c!koppeling} % brrr - {\dolimitateteksten{#1#2#5}{\haalmarkering[\ascii][\v!eerste]}} - {\ConvertConstantAfter\doifelse{\v!paginanummer}{#6} - {\@@plaatspaginanummer} - {\ConvertConstantAfter\doifelse{\v!datum}{#6} - {\currentdate} - {\opeenregel\dolimitateteksten{#1#2#5}{#6}}}}}}% - \egroup} - -\def\dodoteksten#1#2#3#4#5#6% - {\doifonevenpaginaelse - {\doteksten{#1}{#2}#3{#4}} % #3 => provides three arguments - {\doteksten{#1}{#2}#5{#6}}} % #5 => provides three arguments - -\def\dodododoteksten[#1][#2][#3][#4][#5][#6]% - {\ifsixthargument - \setvalue{\??tk#1#2\c!linkertekst}% - {\dodoteksten{\??tk#1}{#2} - {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#3} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#6}}% - \setvalue{\??tk#1#2\c!rechtertekst}% - {\dodoteksten{\??tk#1}{#2} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#4} - {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#5}}% - \else\iffifthargument - \setvalue{\??tk#1\v!tekst\c!linkertekst}% - {\dodoteksten{\??tk#1}{\v!tekst} - {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#2} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#5}}% - \setvalue{\??tk#1\v!tekst\c!rechtertekst}% - {\dodoteksten{\??tk#1}{\v!tekst} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#3} - {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#4}}% - \else\iffourthargument - \setvalue{\??tk#1#2\c!linkertekst}% - {\dodoteksten{\??tk#1}{#2} - {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#3} - {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#3}}% - \setvalue{\??tk#1#2\c!rechtertekst}% - {\dodoteksten{\??tk#1}{#2} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#4} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#4}}% - \else\ifthirdargument - \setvalue{\??tk#1\v!tekst\c!linkertekst}% - {\dodoteksten{\??tk#1}{\v!tekst} - {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#2} - {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#2}}% - \setvalue{\??tk#1\v!tekst\c!rechtertekst}% - {\dodoteksten{\??tk#1}{\v!tekst} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#3} - {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#3}}% - \else\ifsecondargument % new - \setvalue{\??tk#1\v!tekst\c!linkertekst}{}% - \setvalue{\??tk#1\v!tekst\c!rechtertekst}{}% - \setvalue{\??tk#1\v!tekst\c!middentekst}% - {\doteksten{\??tk#1}{\v!tekst}\c!letter\c!kleur\c!breedte{#2}}% - \else - \dosixtupleempty\dodododoteksten[#1][\v!tekst][][][][]% - \dosixtupleempty\dodododoteksten[#1][\v!marge][][][][]% - \dosixtupleempty\dodododoteksten[#1][\v!rand] [][][][]% - \fi\fi\fi\fi\fi} - -\def\stelboventekstenin {\dosixtupleempty\dodododoteksten[\v!boven]} -\def\stelhoofdtekstenin {\dosixtupleempty\dodododoteksten[\v!hoofd]} -\def\stelteksttekstenin {\dosixtupleempty\dodododoteksten[\v!tekst]} -\def\stelvoettekstenin {\dosixtupleempty\dodododoteksten[\v!voet]} -\def\stelondertekstenin {\dosixtupleempty\dodododoteksten[\v!onder]} - -\def\@@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\definieertekst% - {\dosixtupleempty\dodefinieertekst} - -\def\dodefinieertekst[#1][#2][#3][#4][#5][#6]% - {\ifsixthargument - \setvalue{\??tk#2#1}{\dosixtupleempty\dodododoteksten[#2][#3][#4][#5][#6]}% - \else\iffourthargument - \setvalue{\??tk#2#1}{\dosixtupleempty\dodododoteksten[#2][#3][#4]}% - \else - \setvalue{\??tk#2#1}{\dosixtupleempty\dodododoteksten[#2][#3]}% - \fi\fi} - -% \definieertekst[hoofdstuk][voet][paginanummer] -% \stelkopin[hoofdstuk][hoofd=hoog,voet=hoofdstuk] -% \stelhoofdtekstenin[paginanummer] -% \stelvoettekstenin[links][rechts] -% \hoofdstuk{eerste} \dorecurse{20}{\input tufte \relax} -% \hoofdstuk{tweede} \dorecurse{20}{\input tufte \relax} - -\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=>\bgroup % new - \setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}% - \getvalue{\??tk#1\commalistelement}% - \doplaatslayoutregel{#1}{#2}% - \egroup]} - -\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-\bovenhoogte -\plaatsboventekstblok - \vskip\bovenafstand - \plaatshoofdregel - \vskip\hoofdafstand -\plaatspositieanchors -\vskip-\teksthoogte - \plaatstekstregel - \vskip\voetafstand - \plaatsvoetregel - \vskip\onderafstand - \plaatsonderregel -\vskip-\onderhoogte -\plaatsondertekstblok - \plaatsversieaanduiding - \vfilll}% - \smashbox0 - \box0 - \egroup} - -\ifx\undefined\plaatspositieanchors - \def\plaatspositieanchors{\vskip\teksthoogte} -\fi - -%\def\@@plaatspaginascheider% -% {\doif{\@@nmstatus}{\v!start}% -% {\@@nmtekstscheider}} - -\def\@@nmin {} % kan vervallen (upward compatibility) -\def\@@nmplaats {} % mag {plaats, in} zijn - -\newcounter\@@pagenumberlocation - -\def\do@@plaatspaginanummer#1% - {\ifnum#1=\@@pagenumberlocation\@@plaatspaginanummer\fi} - -\def\dodosetpagenumberlocation#1% tricky because of ...texts - {\increment\@@pagenumberlocation - \ifx\@@nmplaats\empty\else - \def\dododosetpagenumberlocation##1% - {\donetrue - \setevalue{\??tk#1##1}% - {\noexpand\do@@plaatspaginanummer{\@@pagenumberlocation}}}% - \donefalse - \ExpandFirstAfter\processallactionsinset - [\@@nmplaats] - [ \v!midden=>\dododosetpagenumberlocation{\v!tekst\c!middentekst}, - \v!links=>\dododosetpagenumberlocation{\v!tekst\c!linkertekst}, - \v!rechts=>\dododosetpagenumberlocation{\v!tekst\c!rechtertekst}, - \v!inlinker=>\dododosetpagenumberlocation{\v!marge\c!linkertekst}, - \v!inrechter=>\dododosetpagenumberlocation{\v!marge\c!rechtertekst}, - \v!inmarge=>\dododosetpagenumberlocation{\v!marge\ifdubbelzijdig - \c!margetekst\else\c!rechtertekst\fi}, - \v!marge=>\dododosetpagenumberlocation{\v!marge\ifdubbelzijdig - \c!margetekst\else\c!rechtertekst\fi}, - \v!opmarge=>\dododosetpagenumberlocation{\v!tekst\c!kantlijntekst}, - \v!kantlijn=>\dododosetpagenumberlocation{\v!tekst\c!kantlijntekst}]% - \ifdone \else - \dododosetpagenumberlocation{\v!tekst\c!middentekst}% default - \fi - \fi} - -\def\dosetpagenumberlocation% - {\ExpandBothAfter\doifinsetelse{\v!hoofd}{\@@nmplaats,\@@nmin} - {\dodosetpagenumberlocation\v!hoofd} - {\dodosetpagenumberlocation\v!voet}} - -\def\dostelnummeringin[#1]% - {\getparameters[\??nm][#1]% - \preparepaginaprefix{\??nm}% - \enkelzijdigfalse - \dubbelzijdigfalse - \ExpandFirstAfter\processallactionsinset - [\@@nmvariant] - [ \v!enkelzijdig=>\enkelzijdigtrue, - \v!dubbelzijdig=>\dubbelzijdigtrue]% - \ifdubbelzijdig - \trackingmarginnotestrue - \else - \trackingmarginnotesfalse - \fi - \dosetpagenumberlocation - \global\newbackgroundtrue - \global\newlogostrue} - -\def\stelnummeringin% - {\dosingleempty\dostelnummeringin} - -% listig: hangt af van \@@kolijst - -% erg fout -% -% \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} -% -% nog fouter -% -% \def\preparepaginaprefix#1% -% {\def\dopreparepaginaprefix##1% -% {\doifelsevalue{#1##1\v!nummer}{\v!ja} % v -% {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!ja}} % v -% {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!nee}}}% % v -% \processcommacommand[\@@kolijst]\dopreparepaginaprefix} -% -% best, beware, chapter (yes) can be followed by title (no) - -\def\preparepaginaprefix#1% - {\def\dopreparepaginaprefix##1% - {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!nee}}% %v - \processcommacommand[\@@kolijst]\dopreparepaginaprefix - \def\dopreparepaginaprefix##1% - {\doifvalue{#1##1\v!nummer}{\v!ja} %v - {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!ja}}}% - \processcommacommand[\@@kolijst]\dopreparepaginaprefix} - -% \def\dopaginaprefix#1#2% -% {\doifelsevalue{#1#2\v!nummer}{\v!ja} % v -% {\@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\dopaginaprefix#1#2% - {\let\normaluchar\uchar\let\uchar\relax % ugly but needed - \doifelsevalue{#1#2\v!nummer}{\v!ja} % \v! and no \c! - {\@EA\beforesplitstring\@EA{\postprefix}\at:\to\preprefix - \@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix - \let\uchar\normaluchar % ugly but needed - \doifsomething{\preprefix} - {\doifnot{\preprefix}{0}{\preprefix\@@nmnummerscheider}}}% - {\@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix - \let\uchar\normaluchar}} % ugly but needed - -\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} - -\unexpanded\def\@@plaatspaginanummer% called in empty tests - {\doif{\@@nmstatus}{\v!start}% - {{\@@nmcommando{\doattributes\??nm\c!letter\c!kleur{\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\v!nummer}{\v!ja} % v - {\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. - -% voor 'interne' doeleinden zijn beschikbaar: -% -% \fetchmark[naam][plaats] - -% nog expansie in hoofdmarkering - -% ook nog reset koppelen aan sectie - -\def\hoofdmarkering#1% - {\getvalue{\??mk#1\c!koppeling}} - -\def\dodoresetmarkering#1% - {\doifdefined{\??mk\hoofdmarkering{#1}} - {\expandafter\resetmark\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} - -\letvalue{\??mk \v!vorige}\gettopmark -\letvalue{\??mk \v!eerste}\getfirstmark -\letvalue{\??mk\v!laatste}\getbotmark - -\def\dododefinieermarkering[#1][#2]% - {\stelmarkeringin[#1] - [% \c!expansie=\v!nee, % saves a macro - \c!scheider={ --- }, % watch the spaces - \c!status=\v!start]% - \ontkoppelmarkering[#1]% % no coupling with sections - \setevalue{\??mk#1\c!koppeling}{#2}% - \expandafter\newmark\csname\??mk#2\endcsname - \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\fetchmark[#1][#2]% geen \def, anders problemen in \doif... -% {\def\dofetchmark{\getvalue{\??mk#2}}% -% \expandafter\dofetchmark\csname\??mk\hoofdmarkering{#1}\endcsname} - -\def\dofetchmark#1#2% needed because we need to expand - {\getvalue{\??mk#2}#1} - -\def\fetchmark[#1][#2]% never \unexpanded - %{\getvalue{\getvalue{\??mk#2}\??mk\hoofdmarkering{#1}}} - {\expandafter\dofetchmark\csname\??mk\hoofdmarkering{#1}\endcsname{#2}} - -\def\fetchtwomarks[#1]% - {\doifsomething{\fetchmark[#1][\v!eerste]} - {\fetchmark[#1][\v!eerste]% - \doifsomething{\fetchmark[#1][\v!laatste]} - {\doifnot{\fetchmark[#1][\v!eerste]}{\fetchmark[#1][\v!laatste]} - {\getvalue{\??mk#1\c!scheider}\fetchmark[#1][\v!laatste]}}}} - -\def\fetchallmarks[#1]% - {\doifsomething{\fetchmark[#1][\v!eerste]} - {\doifsomething{\fetchmark[#1][\v!vorige]} - {\doifnot{\fetchmark[#1][\v!vorige]}{\fetchmark[#1][\v!eerste]} - {\fetchmark[#1][\v!vorige]\getvalue{\??mk#1\c!scheider}}}}% - \fetchtwomarks[#1]} - -\def\dohaalmarkering[#1][#2]% - {\doifvalue{\??mk#1\c!status}{\v!start} - {\bgroup - \def\geenmarkering##1{\unknown\ }% - \processaction - [#2] - [ \v!beide=>{\fetchtwomarks[#1]}, - \v!alles=>{\fetchallmarks[#1]}, - \s!default=>{\fetchmark[#1][\v!eerste]}, - \s!unknown=>{\fetchmark[#1][#2]}]% - \egroup}} - -\def\nohaalmarkering[#1][#2]% - {} - -\unexpanded\def\haalmarkering% - {\dodoubleargument\dohaalmarkering} - -\def\domarking[#1]#2% - {\bgroup - \doifelsevalue{\??mk#1\c!expansie}{\v!ja} - {\expandmarkstrue} - {\expandmarksfalse}% -% \honorunexpanded -% \getvalue{\??mk\hoofdmarkering{#1}}{#2}% - \expandafter\setmark\csname\??mk\hoofdmarkering{#1}\endcsname{#2}% - \egroup} - -\def\marking% - {\dosingleargument\domarking} - -%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{} -\let\@@sectie\empty -\let\@@koppeling\empty - -\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} -\setvalue{\??by\v!per\v!pagina}{\v!tekst} % see footnotes - -\def\dostelsectiein[#1][#2]% - {\getparameters[\??se#1][#2]% - \doifelsevalue{\??se#1\c!vorigenummer}{\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{\zerosection}}} % \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!vorigenummer=\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}}} - -% suited for chinese too: - -\def\@@sectionconversion#1#2% a doublure with \@@shortsectionnumber - {\ifnum#2=0 0\else % else troubles with \uchar - \@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax - \@EA\ifx\csname\??se#1\c!conversie\endcsname\relax - #2% - \else - \getvalue{\??cv\getvalue{\??se#1\c!conversie}}{#2}% - \fi - \else - \getvalue{\??cv\getvalue{\??se#1\@@sectieblok\c!conversie}}{#2}% - \fi - \fi} - -\def\@@sectionlevel#1% - {\ifundefined{\??se#1\c!niveau}0\else\getvalue{\??se#1\c!niveau}\fi} - -% Omdat een markering kan worden herdefinieerd moeten we -% eerst testen of er wel een keten||afhankelijkheid is. - -\def\resetsectionmarks[#1]% - {\doifdefinedelse{\??se#1} - {\def\donexttrackcommando##1% - {\doifdefined{\??se##1\c!markering} % skip zero level - {\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 - -% evt ook level gaan opslaan tbv snelle selectie - -\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% opvoeren met \ifcsname - {\bgroup - \doifelse{#1}{\v!vorige} - {\global\alllevelstrue - \global\let\currentlevel\empty - \def\dobacktrackcommando##1% - {\ifnum\countervalue{\??se##1}>0 - \global\alllevelsfalse - \xdef\currentlevel{\getvalue{\previoussection{##1}\s!format}}% - \else - \dobacktracklevel{##1}% - \fi}% - \dobacktrackcommando\lastsection} - {\doifelse{\getvalue{\??by#1}}{\v!tekst} - {\global\alllevelstrue - \global\let\currentlevel\empty} - {\doifdefinedelse{\??ko#1\c!sectie} % beter alteratief: ook - {\edef\@@sectie{\getvalue{\??ko#1\c!sectie}}} % hoofdstuk\c!format - {\edef\@@sectie{#1}}% - \doifdefinedelse{\??se\@@sectie} - {\global\alllevelsfalse - \xdef\currentlevel{\getvalue{\@@sectie\s!format}}} - {\global\alllevelstrue - \global\let\currentlevel\empty - \def\dobacktrackcommando##1% - {\@EA\ifx\csname\??se##1\c!start\endcsname\relax - \dobacktracklevel{##1}% - \else - \ifnum\countervalue{\??se##1}>0 - \global\alllevelsfalse - \xdef\currentlevel{\getvalue{##1\s!format}}% - \else - \dobacktracklevel{##1}% - \fi - \fi}% - \dobacktrackcommando\lastsection}}}% - \egroup} - -\let\currentlevel\empty - -\def\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} - -% suited for chinese too: - -\def\@@shortsectionnumber#1% - {\@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax - \@EA\ifx\csname\??se#1\c!conversie\endcsname\relax - \@@sectionvalue{#1}% - \else - \@@sectionconversion{#1}{\@@sectionvalue{#1}}% - \fi - \else - \@@sectionconversion{#1}{\@@sectionvalue{#1}}% - \fi} - -\def\dosetlocalsectieblok#1#2#3% - {\def\@@sectiontype{#1}% - \def\@@sectieblok{#2}% - \def\@@sectieblokken{#3}} - -\def\doaroundsectieblok#1% - {\doifvaluesomething{\??sb#1\c!pagina} - {\ExpandFirstAfter\pagina[\getvalue{\??sb#1\c!pagina}]}% - \resetsectioncounters[\zerosection]% was firstsection - \resetsectionmarks[\zerosection]} - -\def\dostartsectieblok#1#2% - {\begingroup - \doaroundsectieblok{#1}% - \getvalue{\??sb#1}% - \expandafter\csname#2true\endcsname % vervangen door mode - \enablemode[#1]% - \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} - -% We used to use the first char as id, but a counter is -% better, because in english we get a name clash. - -\newcounter\currentsectionblock - -\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 - \doglobal\increment\currentsectionblock - \setevalue{\??sb#1}% - {\noexpand\dosetlocalsectieblok{\currentsectionblock}{#1}{#2}}% - \setvalue{\e!start#2}% - {\dostartsectieblok{#1}{#2}}% - \setvalue{\e!stop#2}% - {\dostopsectieblok}} - -\def\definieersectieblok% - {\dotripleargument\dodefinieersectieblok} - -\def\sectiebloklabel#1#2% - {\@EA\ifx\csname\??ko#1\@@sectieblok\c!label\endcsname\relax - \labeltexts{#1}{#2}% - \else - \labeltexts{\getvalue{\??ko#1\@@sectieblok\c!label}}{#2}% - \fi} - -\dosetlocalsectieblok{2}{\v!hoofdtekst}{\v!hoofdteksten} % hm, dirty - -\def\setsectiontype[#1]% - {\getvalue{\??sb#1}} - -\def\writesection#1#2#3% #3 -> \asciititle - {\bgroup - \edef\!!stringa{#1}% - \@EA\writestatus\@EA - {\!!stringa} - {\ifsectienummer#2\else(#2)\fi\normalspace\asciititle}% - \egroup} - -\def\@@koniveau{1} \def\kopniveau{\@@koniveau} - -\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}]}}% - \doifinset{\getvalue{\??tk\v!voet\v!tekst\c!status}}{\v!normaal,\v!start} - {\doifvaluesomething{\??ko#1\c!voet} % new - {\stelvoetin[\c!status=\getvalue{\??ko#1\c!voet}]}}}} - -\def\dohandelpaginaafX#1% zie doordefinieren / boven - {\bgroup - \!!countb=\@@koniveau - \advance\!!countb by #1 - \multiply\!!countb by 500 - \!!counta=20000 - \advance\!!counta by \!!countb - \dosomebreak{\penalty\!!counta}% - \egroup} - -\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\handelpaginaafC#1% - {\xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}% - \nobreak} - -%\def\dolocalkopsetup#1% koppeling met standaard kopcommando / engels -% {\forgetall -% \doifvaluesomething{\??ko#1\c!uitlijnen} -% {\ExpandFirstAfter\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]}% -% \doifvaluesomething{\??ko#1\c!tolerantie} -% {\ExpandFirstAfter\steltolerantiein[\getvalue{\??ko#1\c!tolerantie}]}% -% \def\\{\crlf\strut\ignorespaces}} - -\def\dolocalkopsetup#1% koppeling met standaard kopcommando / engels - {\forgetall - \doifvaluesomething{\??ko#1\c!uitlijnen} - {\expanded{\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]}}% - \doifvaluesomething{\??ko#1\c!tolerantie} - {\expanded{\steltolerantiein[\getvalue{\??ko#1\c!tolerantie}]}}% - \def\\{\crlf\strut\ignorespaces}} - -\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 - -\def\dodosomekop#1[#2]#3% - {\doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} - {\def\next{\doquadruplegroupempty\dododosomekop{#1}{#2}{#3}}} - {\def\next{\fourthargumentfalse\dododosomekop{#1}{#2}{#3}{}}}% - \next} - -\def\finalsectionnumber% - {\ifundefined{\@@sectie\c!nummer}\else - \getvalue{\@@sectie\c!nummer}% - \fi} - -\def\dododosomekop#1#2#3#4% - {\iffourthargument - \def\next% - {\dodododosomekop{#1}[#2]{#1}{#3}{#4}}% - \else - \def\next% - {\dodododosomekop{#1}[#2]{#1}{\finalsectionnumber}{#3}}% - \fi - \next} - -\def\findsectionnumber#1#2#3% class file title - {\begingroup - \setsectieenkoppeling{#1}% - \xdef\foundsectionnumber{1}% - \def\dolijstelement##1##2##3##4##5##6% - {\doif{##1}{#1} - {\ConvertConstantAfter\doif{##4}{#3} - {\global\utilitydonetrue - \scratchcounter=0\getvalue{\??se\@@sectie\c!niveau}% - \advance\scratchcounter by 2 - \def\do####1:####2]% - {\advance\scratchcounter by -1 - \ifcase\scratchcounter - \xdef\foundsectionnumber{####1}% - \else - \do####2]% - \fi}% - \do##5]}}}% - \setbox0=\vbox - {\doutilities{#1}{#2}{#1}{}{}}% - \endgroup - \doifnumberelse{\foundsectionnumber} - {\doif{\foundsectionnumber}{0}{\xdef\foundsectionnumber{1}}} - {\xdef\foundsectionnumber{1}}% an appendix or so - \stelkopnummerin[#1][\foundsectionnumber]% - \stelkopnummerin[#1][-1]} - -\def\dodododosomekop#1[#2]#3#4#5% % pas met \ExpandFirstAfter op bij twee||taligheid - {\flushingcolumnfloatsfalse - \setsectieenkoppeling{#1}% - \doifelsevalue{\??ko#1\c!prefix}{} - {\kopprefixfalse} - {\kopprefixtrue}% - \ifkopprefix - \doifelsevalue{\??ko#1\c!prefix}{+} - {\doifelsenothing{#2} - {\def\localkopprefix{+}} - {\def\localkopprefix{#2}}} % eigenlijk alleen eerste - {\edef\localkoprefix{\getvalue{\??ko#1\c!prefix}}}% - \fi - \doifelsevalue{\??ko#1\c!plaatskop}{\v!ja} - {\plaatskoptrue} - {\plaatskopfalse}% - \processaction - [\getvalue{\??ko#1\c!verhoognummer}] - [ \v!ja=>\verhoognummertrue, - \v!nee=>\verhoognummerfalse, - \s!unknown=>{\ifx\currentproduct\empty - \findsectionnumber{#1}\commalistelement{#5}% - \fi - \verhoognummertrue}]% - \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 - \convertexpanded{\??ko#1}{#5}\asciititle - \ifverhoognummer - \ifplaatskop - \checknexthead\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 - \doplaatskopnummertekst - {#1} - {\setsectionlistreference{\@@sectie}{#1}% - \ExpandFirstAfter\soortpagina[\@@koppeling]% - \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% - \resetsectionmarks[\@@sectie]% - \stellijstin[\@@koppeling][\c!expansie=\getvalue{\??ko#1\c!expansie}]% - \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}} - {\sectiebloklabel{#3}{#4}} - {#5} - {\marking[#1]{#5}% - \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} - {\edef\finalsectionnumber{#4}} - {\bepaalkopnummer[#1]}% - \expanded{\marking[#1\v!nummer]{\finalsectionnumber}}}% - \writesection{#1}{#4}{#5}% - \else - \doplaatskoptekst - {#1} - {\setsectionlistreference{\@@sectie}{#1}% - \ExpandFirstAfter\soortpagina[\@@koppeling]% - \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% - \resetsectionmarks[\@@sectie]% - \stellijstin[\@@koppeling][\c!expansie=\getvalue{\??ko#1\c!expansie}]% - \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}} - {#5} - {\marking[#1]{#5}% - \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} - {\edef\finalsectionnumber{#4}} - {\bepaalkopnummer[#1]}% - \expanded{\marking[#1\v!nummer]{\finalsectionnumber}}}% - \writesection{#1}{-}{#5}% - \fi - \ifkopprefix - \ExpandFirstAfter\setupreferencing[\c!prefix=\localkopprefix]% - \fi - \dosomebreak\nobreak - \ifdisplaysectionhead\getvalue{\??ko#1\c!na}\fi - \else - \checknexthead\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]% - \marking[#1]{#5}% - \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} - {\edef\finalsectionnumber{#4}} - {\bepaalkopnummer[#1]}% - \expanded{\marking[#1\v!nummer]{\finalsectionnumber}}% - \ExpandFirstAfter\soortpagina[\@@koppeling]% - \bgroup - \stellijstin[\@@koppeling][\c!expansie=\getvalue{\??ko#1\c!expansie}]% - \ifkopnummer - \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% - \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}% - \writesection{#1}{#4}{#5}% - \else - \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% - \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}% - \writesection{#1}{-}{#5}% - \fi - \egroup - \ifkopprefix - \ExpandFirstAfter\setupreferencing[\c!prefix=\localkopprefix]% - \fi - \fi - \else - \ifplaatskop - \checknexthead\handelpaginaaf{#1}% - \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...] - \getvalue{\??ko#1\c!tussen}% - \doplaatskoptekst - {#1} - {\rawreference{\s!sec}{#2}{{#4}{\asciititle}}} - {#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% - {\beginheadplacement{#1}% - \setbox0=\hbox - {\getvalue{\??ko#1\c!commando} - {} % no number - {\doattributes - {\??ko#1}\c!letter\c!kleur - {\doattributes - {\??ko#1}\c!tekstletter\c!tekstkleur - {\dontconvertfont - \ifdisplaysectionhead\stelinterliniein\fi - #2% - \getvalue{\??ko#1\c!voorcommando}% - \getvalue{\??ko#1\c!tekstcommando}% - {\ifdisplaysectionhead - \setstrut\begstrut#3\endstrut - \else - #3% - \fi}% - \getvalue{\??ko#1\c!nacommando}% - \ifdisplaysectionhead\endgraf\fi}}}}% - \endheadplacement{#1}{#4}} - -\def\doplaatskopnummertekst#1#2#3#4#5% - {\beginheadplacement{#1}% - \setbox0=\hbox - {\getvalue{\??ko#1\c!commando}% - {\doattributes{\??ko#1}\c!letter\c!kleur - {\doattributes{\??ko#1}\c!nummerletter\c!nummerkleur - {\getvalue{\??ko#1\c!voorcommando}% - \getvalue{\??ko#1\c!nummercommando}% - {\ifdisplaysectionhead - \setstrut\begstrut#3\endstrut - \else - #3% - \fi}}}} - {\doattributes{\??ko#1}\c!letter\c!kleur - {\doattributes{\??ko#1}\c!tekstletter\c!tekstkleur - {\dontconvertfont - \ifdisplaysectionhead\stelinterliniein\fi - #2% - \getvalue{\??ko#1\c!tekstcommando}% - {\ifdisplaysectionhead - \setstrut\begstrut#4\endstrut - \else - #4% - \fi}% - \getvalue{\??ko#1\c!nacommando}% - \ifdisplaysectionhead\endgraf\fi}}}}% - \endheadplacement{#1}{#5}} - -\newsignal\headsignal -\let\headlastlinewidth\!!zeropoint -\newif\ifcontinuoushead - -\def\beginheadplacement#1% - {\bgroup - \everypar{}% needed indeed - \noindent % ipv \witruimte elders, na \forgetall ! - \bgroup - \forgetall % now we may forget everything - %\showcomposition - \mindermeldingen - \postponefootnotes - \iflocation\ifdisplaysectionhead\else\noninterferingmarks\fi\fi - \setupinteraction - [\c!letter=, - \c!kleur=, - \c!contrastkleur=]% - \strictouterreferencestrue % tzt instelling - \def\localkopsetup% - {\dolocalkopsetup{#1}}% - \startsynchronisatie} - -\def\endheadplacement#1#2% - {\doifvaluenothing{\??ko#1\c!file}{\locationfalse}% - \ifdisplaysectionhead - \let\headlastlinewidth\!!zeropoint - \snaptogrid\hbox - {\iflocation - \ifautocrossdocument - \naarbox{\box0}[\getvalue{\??ko#1\c!file}::#1]% - \else - \hbox{\box0}% - \fi - \else - \hbox{\box0}% - \fi - \doflushfootnotes}% new - \endgraf - \nointerlineskip - \dosomebreak\nobreak - #2% - \else - \strut - \doflushfootnotes % new - \iflocation - \ifautocrossdocument - \hhboxindent=\ifcontinuoushead\headlastlinewidth\else\!!zeropoint\fi - \unhhbox0\with{\naarbox{\box\hhbox}[\getvalue{\??ko#1\c!file}::#1]}% - \advance\lasthhboxwidth by \numberheaddistance - \xdef\headlastlinewidth{\the\lasthhboxwidth}% - \else - \unhbox0 - \global\let\headlastlinewidth\!!zeropoint - \fi - \else - \unhbox0 - \global\let\headlastlinewidth\!!zeropoint - \fi - #2% - \dimen0=\numberheaddistance - \hskip\dimen0 \!!plus \dimen0 \!!minus .25\dimen0 - \hskip\headsignal\ignorespaces - \fi - %#2% - \ifdisplaysectionhead - \prevdepth\dp\strutbox % important, font related depth, see comment - \fi - \stopsynchronisatie - \egroup - \egroup -\doflushfootnotes % new, still needed? - \ifdisplaysectionhead - \doifvalue{\??ko#1\c!springvolgendein}{\v!nee}{\noindentation}% - \else - \nonoindentation % recently added, was a bug - \fi} - -\def\checknexthead#1#2% nog optioneel - {\ifhmode - \scratchcounter=\lastpenalty\unpenalty % no beauty in this - \ifdim\lastskip=\headsignal - \handelpaginaafC{#1}% - \global\continuousheadtrue - \else - \penalty\scratchcounter - \global\continuousheadfalse - #1{#2}% - \fi - \else - \global\continuousheadfalse - #1{#2}% - \fi} - -\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{\finalsectionnumber}{0} % kan effienter -% {\finalsectionnumber}% -% \egroup} -% -% beter : - -\def\huidigekopnummer{0} - -\def\bepaalkopnummer[#1]% - {\bgroup - \setsectieenkoppeling{#1}% - \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}% - \egroup} - -%\def\complexkopnummer[#1]% -% {\bgroup -% \setsectieenkoppeling{#1}% -% \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}% -% \doifnot{\huidigekopnummer}{0} -% {\finalsectionnumber}% -% \egroup} - -\def\complexkopnummer[#1]% - {\bgroup - \edef\huidigekopnummer{#1}% - \doifinsetelse{-}{#1} - {\removefromcommalist{-}\huidigekopnummer - \setsectieenkoppeling\huidigekopnummer - \stelsectiein[\@@sectie][\c!vorigenummer=\v!nee]}% - {\setsectieenkoppeling\huidigekopnummer}% - \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}% - \doifnot{\huidigekopnummer}{0}{\finalsectionnumber}% - \egroup} - -\def\simplekopnummer% - {\huidigekopnummer} - -\definecomplexorsimple\kopnummer - -\def\alinea% - {\par} - -\def\plaatskopalinea#1#2% - {\vbox{\begstrut\doifsomething{#1}{#1\hskip\numberheaddistance}#2}} - -\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 - \veryraggedcenter - \let\\\endgraf - \let\crlf\endgraf - \doifsomething{#1}{\strut#1\par}\begstrut#2}} - -\def\plaatskopintekst#1#2% - {\bgroup - \localkopsetup - \doifsomething{#1}{{#1}\kern\numberheaddistance}% no stretch - {\begstrut#2}% - %\hskip\numberheaddistance % naar elders - \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!voet=, - \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, - \c!uitlijnen=, - \c!tolerantie=, - \c!file=, - \c!expansie=, - #2]% - \ConvertToConstant\doifnot{#1}{\getvalue{\??ko#1\c!default}} - {\doifsomething{\getvalue{\??ko#1\c!default}} - {\copyparameters - [\??ko#1][\??ko\getvalue{\??ko#1\c!default}] - [\c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,\c!hoofd,\c!voet, - \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer, - \c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein, - %\c!nummerletter,\c!tekstletter, - %\c!expansie, % njet - \c!uitlijnen,\c!tolerantie,\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}]}}% -% \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]}} - {\copyparameters - [\??ko#1][\??ko#2] - [\c!niveau,\c!sectie,\c!koppeling,\c!prefix, - \c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,\c!hoofd,\c!voet, - \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer, - \c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein, - %\c!nummerletter,\c!tekstletter, - %\c!expansie, % njet - \c!uitlijnen,\c!tolerantie,\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}% - {\dodoubleempty\dosomekop[#1]}} - -\def\definieerkop% - {\dodoubleemptywithset\dodefinieerkop} - -\def\dosomekop[#1][#2]% - {\dowithpargument{\dodosomekop{#1}[#2]}} - -\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\@@plaatskop{\plaatskopnormaal} - -\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!alinea=>\def\@@plaatskop{\plaatskopalinea}, - \s!unknown=>\def\@@plaatskop{\plaatskopnormaal}]} - -\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}} - -% a left over - -\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}{\realfolio}% to be sure - \setxvalue{\s!lst:#1\currentsectionformat}{\realfolio}% - \setxvalue{\e!vorigelokale#1}{\s!lst:#1\previoussectionformat}% - \setxvalue{\e!huidigelokale#1}{\s!lst:#1\currentsectionformat}% - \doifelse{\currentsectionformat}{} - {\setglobalcrossreference - {\e!vorige#1}{}{\realfolio}{}} -% - {\setglobalsystemreference\rt!list - {\e!vorige#1}{\getvalue{\e!vorigelokale#1}}}% -% -% {\definereference[\e!vorige#1][\getvalue{\e!vorigelokale#1}]% -% - \def\stoplistreferences{\dostoplistreferences}} - -\def\dostoplistreferences#1% - {\iflijstgeplaatst - \addtocommalist{#1}\updatedlistreferences % nog global (\doglobal) - \global\let\updatedlistreferences=\updatedlistreferences % een noodverbandje - \gdef\updatelistreferences% - {\def\docommando####1% -% - {\setglobalsystemreference\rt!list - {\e!vorige####1}{\getvalue{\e!huidigelokale####1}}}% -% -% {\definereference[\e!vorige####1][\getvalue{\e!huidigelokale####1}]% -% - \processcommacommand[\updatedlistreferences]\docommando - \global\let\updatelistreferences=\relax - \global\let\updatedlistreferences=\empty}% - \fi} - -\def\stoplistreferences% - {\gobbleoneargument} - -% de rest - -\newcount\prefixteller - -\def\referenceprefix{} - -% \def\showlocation #1{#1} -% \def\showcontrastlocation#1#2#3{#3} -% \def\showcoloredlocation #1#2{#2} - -\unexpanded\def\referencepagenumber[#1]% - {\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 - \witruimte - %\pagina[\v!voorkeur]} gaat mis na koppen, nieuw: later \nobreak - \begingroup - \def\@@rgstepyes{\parindent\!!zeropoint}% - \def\@@rgstepno{\parindent\!!zeropoint}% - \edef\@@rgparindent{\the\parindent}% - \gdef\@@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 - \let\checkindentation=\relax - \@@rgstepno - \ignorespaces - \gdef\afterfirstobeyedline% tzt two pass, net als opsomming - {\gdef\afterfirstobeyedline% - {\nobreak - \global\let\afterfirstobeyedline\relax}}% - \def\obeyedline% - {\par - \afterfirstobeyedline - \ifdim\lastskip>\!!zeropoint - \gdef\@@rglinesteptoggle{0}% - \else - \doglobal\increment\@@rglinesteptoggle - \fi - \ifodd\@@rglinesteptoggle\relax - \@@rgstepyes - \else - \@@rgstepno - \fi - \futurelet\next\dobetweenthelines}% - \GotoPar} - -\def\dobetweenthelines% - {\convertcommand \next \to\!!stringa % very ugly and fuzzy - \convertargument\obeyedline\to\!!stringb % but needed anyway - \ifx\!!stringa\!!stringb - \@@rgtussen - \fi} - -\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\c!letter\c!kleur{\dodoschrijfregelnummer}% - \fi - \fi} - -\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]}} -% -% double labels: - -\def\inregel#1[#2]% - {\doifelsenothing{#1} - {\doifinstringelse{--}{\currenttextreference} - {\in{\leftlabeltext\v!regels}{\rightlabeltext\v!regels}[\@@rnprefix#2]} - {\in{\leftlabeltext\v!regel }{\rightlabeltext\v!regel }[\@@rnprefix#2]}} - {\in{#1}[\@@rnprefix#2]}} - -\def\dostartnummerenPAR% - {\beginofshapebox - \doglobal\newcounter\linereference} - -% localcrossref heroverwegen - -\def\setlinereference#1#2#3#4% - {\setxvalue{lrf:#1}{\noexpand\dogetlinereference{#2}{#3}{#4}}} - -\def\getlinereference#1% - {\getvalue{lrf:#1}} - -\def\dogetlinereference#1#2#3% - {\edef\linereferencename{#1}% - \edef\linereferenceline{#2}% - \edef\linereferenceplus{#3}} - -% 1 xxx xxx xxx xxx xxx xxx xxx -% 2 xxx yyy yyy yyy yyy yyy yyy <= start y -% 3 yyy yyy yyy yyy yyy yyy yyy -% 4 yyy yyy yyy yyy yyy xxx xxx <= stop y -% 5 xxx xxx xxx xxx xxx xxx xxx - -%\def\regelreferentie#1[#2]% -% {\bgroup -% \dimen0=\dp\strutbox -% \doif{\@@rnrefereren}{\v!aan} -% {\doglobal\increment\linereference -% % start 1=>(n=y,l=0,p=1) -% % stop 2=>(n=y,l=0,p=2) -% \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 \!!height \!!zeropoint -% \prewordbreak -% \egroup} - -\def\regelreferentie#1[#2]% - {\bgroup - \dimen0=\dp\strutbox - \doif{\@@rnrefereren}{\v!aan} - {\doglobal\increment\linereference - % start 1=>(n=y,l=0,p=1) - % stop 2=>(n=y,l=0,p=2) - \setlinereference{\linereference}{\@@rnprefix#2}{0}{#1}% - \advance\dimen0 by \linereference sp}% - \prewordbreak - \vrule \!!width \!!zeropoint \!!depth \dimen0 \!!height \!!zeropoint - \prewordbreak - \egroup} - -\def\dostopnummerenPAR% dp's -> openstrutdepth - {\endofshapebox - \checkreferences - \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 - % 1=>4 | 2=>4 1=>2 - % start 1=>(n=y,l=2,p=1) - % stop 2=>(n=y,l=4,p=2) - \dostepwiserecurse{1}{\number\dimen0}{1} - {\getlinereference\recurselevel - \setlinereference\recurselevel - {\linereferencename}{\the\linenumber}{\linereferenceplus}}% - \fi}% - \global\advance\linenumber by \linestepper - \ifnum\linereference>0 % anders vreemde loop in paragraphs+recurse - \dorecurse{\linereference} - {\getlinereference\recurselevel - \ifnum\linereferenceplus=2 % stop - % ref y: text = 4 / Kan dit buiten referentie mechanisme om? - \expanded{\setlocalcrossreference - {\referenceprefix\linereferencename}{}{}{\linereferenceline}}% - \fi}% - \dorecurse{\linereference} - {\getlinereference\recurselevel - \ifnum\linereferenceplus<2 % start / lone - \ifnum\linereferenceplus=1 % start - \getreferenceelements{\linereferencename}% text = 4 - \ifnum\linereferenceline<0\currenttextreference\relax % 0 prevents error - \edef\linereferenceline{\linereferenceline--\currenttextreference}% - \fi - \fi - \expanded{\setlocalcrossreference - {\referenceprefix\linereferencename}{}{}{\linereferenceline}}% - \fi}% - \global\let\scratchline=\linenumber % We are going back! - \reshapebox - {\doglobal\decrement\scratchline - \hbox - {\dorecurse{\linereference} - {\getlinereference\recurselevel - \getreferenceelements{\linereferencename}% - \beforesplitstring\currenttextreference--\at--\to\firstline - \ifnum\firstline=\scratchline\relax - % beter een rawtextreference - \textreference[\linereferencename]{\currenttextreference}% - \expanded{\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}}% no \strut ! - \else - \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}% no \strut ! - \fi} - {\reshapebox{\global\advance\linenumber by -1}% - \global\advance\linenumber by \linestepper - \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}}% no \strut ! - \global\advance\linenumber by \linestepper - \flushshapebox - \egroup} - -\def\crlf% - {\ifhmode\unskip\else\strut\fi\hfil\break} - -\def\opeenregel% - {\def\crlf{\ifhmode\unskip\fi\space}\let\\\crlf} - -%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\dodostopopmaak[#1]% - {\dododostopopmaak[#1]% - \doflushopmaak[#1]% - \endgroup - \calculatehsizes - \calculatevsizes} - -\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% - {\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=>\global\advance\middensmaller by \commalistelement]} - -\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]} - -\definecomplexorsimple\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 {...} -%I \rbox{tekst\\tekst\\tekst} of \rbox to {...} -%I \cbox{tekst\\tekst\\tekst} of \cbox to {...} -%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\dosetraggedvbox#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\dosetraggedhbox#1% - {\processaction - [#1] - [ \v!links=>\let\raggedbox\regellinks, - \v!rechts=>\let\raggedbox\regelrechts, - \v!midden=>\let\raggedbox\regelmidden, - \s!default=>\let\raggedbox\hbox, - \s!unknown=>\let\raggedbox\hbox]} - -\def\dosetraggedcommand#1% ook ruim,rechts en zo - {\processaction - [#1] - [ \v!links=>\def\raggedcommand{\raggedleft}, - \v!rechts=>\def\raggedcommand{\raggedright}, - \v!midden=>\def\raggedcommand{\raggedcenter}, - \v!nee=>\def\raggedcommand{\raggedright}, -% \v!normaal=>\let\raggedcommand\relax, - \s!default=>\def\raggedcommand{\raggedcenter}, - \s!unknown=>\let\raggedcommand\relax]} - -%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[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 -%I \lege -%P -%I Het is mogelijk ruimte voor een blok te reserveren: -%I -%I \reserveer[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{titel}{blok} -%I \reserveer{titel} -%I -%I Ten behoeve van een consistente verwijzing wordt het -%I commando: -%I -%I \in[referentie] -%I -%I gedefinieerd. Dit levert in de tekst op: -%I -%I 'in ' -%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}{#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!plaats=\@@bkplaats, - \c!achtergrond=\@@bkachtergrond, - \c!achtergrondraster=\@@bkachtergrondraster, - \c!achtergrondkleur=\@@bkachtergrondkleur, - \c!achtergrondoffset=\@@bkachtergrondoffset, - \c!bovenkader=\@@bkbovenkader, - \c!onderkader=\@@bkonderkader, - \c!linkerkader=\@@bklinkerkader, - \c!rechterkader=\@@bkrechterkader, - \c!kaderoffset=\@@bkkaderoffset, - \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=\Word{#1}~]% - \presetheadtext[#2=\Word{#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}}} - -\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 even more! In inner, gaat't mis omdat daar -% pagetotal enz niet zijn aangepast. Inner kan overigens niet -% betrouwbaar worden getest! - -% NOT TOEVOEGEN: \the\everytrace - -\everypar ={\flushfootnotes - \ifinner\else\checksidefloat\fi - \checkindentation - \flushmargincontents - \flushcomments} -\neverypar ={} -\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}% - \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 - \global\holdinginserts=1 - \else - \global\advance\sidefloatvsize by \sidefloatbottomskip - \global\floatshortfalse - \fi - \roomforfloattrue - \fi} - -\def\setsidefloat% - {\vbox{\strut}\vskip-\lineheight - \kern\sidefloattopskip - \edef\presidefloatdepth{\the\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=\presidefloatdepth - %\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% - {\bgroup - \!!counta=\totalnoffloats - \advance\!!counta by -\savednoffloats - \dofloatinfomessage{<}{3}{\the\!!counta}% - \egroup} - -\def\doinsertfloatinfo% - {\dofloatinfomessage{<}{4}{\the\totalnoffloats}} - -% ook voetnoten saven - -\def\dosavefloat% - {\global\setbox\floatlist=\vbox - {\nointerlineskip - \box\floatbox - \unvbox\floatlist}% - \global\advance\savednoffloats by 1 - \global\somefloatwaitingtrue - \dosavefloatinfo - \nonoindentation} - -\def\doresavefloat% - {\global\setbox\floatlist=\vbox - {\nointerlineskip - \unvbox\floatlist - \box\floatbox}% - \global\advance\savednoffloats by 1 - \global\somefloatwaitingtrue} - -\def\doreversesavefloat% - {\global\setbox\floatlist=\vbox - {\nointerlineskip - \unvbox\floatlist - \box\floatbox}% - \global\advance\savednoffloats by 1 - \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 - \global\somefloatwaitingfalse - \fi - \else - \global\savednoffloats=0 - \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} - -% The number of topinserts also influences the float order, -% in this respect that when a moved float does not fit, but a -% next one does, it is indeed placed. Take for instance a -% sequence of 20 floats, large and small, where a large one -% migrates and the next smaller one is inserted. - -% \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 - \let\totaltopinserted=\!!zeropoint - \dodosettopinserts - \ifnum\@@bknonder=0 - \ifnum\@@bknregels>0 - \ifdim\totaltopinserted>\!!zeropoint\relax - \dimen0=\lineheight - \dimen0=\@@bknregels\dimen0 - \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 - \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 - \doifinsetelse{\v!beide}{#1}% - {\doifinsetelse{\v!laag}{#1} - {\vfill\box\floatbox} - {\doifinsetelse{\v!midden}{#1} - {\vfill\box\floatbox\vfill} - {\box\floatbox\vfill}}} - {\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} - {\doroomfloat - \ifroomforfloat - \processallactionsinset - [#1] - [ \v!boven=>\dotopfloat, - \v!onder=>\dobotfloat, - \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}\c!letter\c!kleur{#3}}}% - \doifelsevalue{\??kj#1\c!nummer}{\v!ja} - {\def\dofloatnummer% - {{\xdef\floatcaptionnumber{#1}% - \hbox{\doattributes{\??kj#1}\c!kopletter\c!kopkleur - {\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!plaats=\v!normaal, - \c!offset=\@@bkoffset]% - {\box\floatbox}}} - -\newbox\captionbox - -\def\putcompletecaption% - {\mindermeldingen - \begstrut\dofloatnummer\dofloattekst\endstrut} - -\def\dosetpagfloat#1#2#3#4% \copy wegwerken - {\bgroup - \forgetall - %\showcomposition - \putborderedfloat#4\in4\\% - \def\locatefloat% - {\doregelplaats\@@flflplaats}% - \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} - {\dosetraggedvbox{\@@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} - {\dosetraggedvbox{\@@kjkjuitlijnen}% - \setbox2=\raggedbox - {\hsize\@@kjkjbreedte - \putcompletecaption}}% - \fi}}% - \global\setbox\floatbox=\vbox - {\forgetall - \processaction - [\@@kjkjplaats] - [ \v!boven=>\locatefloat{\copy2}% - \endgraf\@@kjkjtussen - \locatefloat{\copy4}, - \v!onder=>\locatefloat{\copy4}% - \endgraf\@@kjkjtussen - \locatefloat{\copy2}, - \v!hoog=>\locatefloat - {\doifelse{\@@flflplaats}{\v!links} - {\copy4 - \tfskip - \vbox to\ht4{\@@kjkjtussen\copy2\vfill}} - {\vbox to\ht4{\@@kjkjtussen\copy2\vfill}% - \tfskip - \copy4}}, - \v!laag=>\locatefloat - {\doifelse{\@@flflplaats}{\v!links} - {\copy4 - \tfskip - \vbox to\ht4 - {\vfill\copy2\@@kjkjtussen}} - {\vbox to\ht4 - {\vfill\copy2\@@kjkjtussen}% - \tfskip - \copy4}}, - \v!midden=>\locatefloat - {\doifelse{\@@flflplaats}{\v!links} - {\copy4 - \tfskip - \vbox to\ht4{\vfill\copy2\vfill}} - {\vbox to\ht4{\vfill\copy2\vfill}% - \tfskip - \copy4}}, - \v!geen=>\locatefloat{\copy4}]}}% - \ifdim\wd4>\hsize - \global\setbox\floatbox= - \hbox to \ifbinnenkolommen\wd4\else\hsize\fi - {\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} - {\dosetraggedvbox{\@@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} - {\dosetraggedvbox{\@@kjkjuitlijnen}% - \setbox2=\raggedbox - {\hsize\wd4 - \putcompletecaption}}}% - \global\setbox\floatbox=\vbox - {\processaction - [\@@kjkjplaats] - [ \v!boven=>\box2\endgraf\@@kjkjtussen\box4, - \v!onder=>\box4\endgraf\@@kjkjtussen\box2, - \v!geen=>\box4, - \s!unknown=>\box4\endgraf\@@kjkjtussen\box2]}}% - \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}}% - \edef\@@flflplaats {\getvalue{\??fl#4\c!plaats}}% - \ifparfloat - \dosetparfloat{#1}{#2}{#3}{#4}% - \else - \dosetpagfloat{#1}{#2}{#3}{#4}% - \fi - \setbox\floatbox=\hbox{\black\box\floatbox}% - \global\floatheight=\ht\floatbox - \global\advance\floatheight by \dp\floatbox - \global\floatwidth=\wd\floatbox - \global\advance\totalnoffloats by 1 - \doifnotinset{\v!marge}{#1} % gaat namelijk nog fout - {\setbox\floatbox=\vbox - {\parindent\!!zeropoint - \ifvoorlopig - \inlinkermarge{\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 - \let\next\relax % ivm eetex - \processfirstactioninset - [#1] - [ \v!hier=>\def\next{\global\floatsonpagetrue\someelsefloat[#1]}, - \v!forceer=>\def\next{\global\floatsonpagetrue\somefixdfloat[#1]}, - \v!links=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]\presetindentation}, - \v!rechts=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, - \v!tekst=>\def\next{\global\floatsonpagetrue\sometextfloat[#1]}, - \v!boven=>\def\next{\someelsefloat[#1]\nonoindentation}, % ! - \v!onder=>\def\next{\global\floatsonpagetrue\someelsefloat[#1]}, - \v!marge=>\def\next{\somenextfloat[#1]\nonoindentation}, % ! - \v!pagina=>\def\next{\global\floatsonpagetrue\somepagefloat[#1]}, - \v!naast=>\def\next{\global\floatsonpagetrue\somefacefloat[#1]}, - \v!inmarge=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, - \v!inlinker=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, - \v!inrechter=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, - \s!default=>\def\next{\global\floatsonpagetrue\someelsefloat[\v!hier,#1]}, - \s!unknown=>\def\next{\global\floatsonpagetrue\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=\vbox - {\unvbox\floatbox - \vss % gets rid of the depth - \rawpagereference{\s!flt}{#2}}% - \egroup\dofloat{#4}{}{#6}{#1}} - {\doglobal\convertargument#6\to\asciititle % \asciititle is global - \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}{\asciititle}}% - \doschrijfnaarlijst{#3}{\hetnummer}{#6}{#3}}% - \egroup\dofloat{#4}{\labeltexts{#5}{\hetnummer}}{#6}{#1}} - {\global\setbox\floatbox=\vbox - {\unvbox\floatbox % no \vss, keep the depth - \rawreference{\s!flt}{#2}{{}{\asciititle}}}% - \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 -\def\docomplexpagina[##1]{\goodbreak}% - \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 - \ifdim\ht\nextbox>\!!zeropoint - \pagina - \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]} - -%% - -\newconditional\handleformulanumber -\newconditional\incrementformulanumber - -\def\dododoformulenummer#1#2#3#4% (#1,#2)=outer(ref,sub) (#3,#4)=inner(ref,sub) - {\hbox\bgroup - \ifconditional\handleformulanumber - \ifconditional\incrementformulanumber - \verhoognummer[\v!formule]% - \fi - \maakhetnummer[\v!formule]% - \setbox0=\hbox{\ignorespaces#2\unskip}% - \ifdim\wd0>\!!zeropoint - \edef\hetsubnummer{#2}% - \else - \let\hetsubnummer\empty - \fi - \doifsomething{#1}{\rawreference{\s!for}{#1}{\hetnummer\hetsubnummer}}% - \setbox0=\hbox{\ignorespaces#4\unskip}% - \ifdim\wd0>\!!zeropoint - \edef\hetsubnummer{#4}% - \fi - \doifsomething{#3}{\rawreference{\s!for}{#3}{\hetnummer\hetsubnummer}}% - \rm\strut\@@fmlinks - \ignorespaces\hetnummer\ignorespaces\hetsubnummer\unskip - \@@fmrechts - \fi - \egroup} - -\def\dodoformulenummer[#1][#2][#3]% - {\doquadruplegroupempty\dododoformulenummer{#1}{#2}{#3}} - -\def\doformulenummer% - {\dotripleempty\dodoformulenummer} - -% - -\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}{\dostartformula} -\setvalue{\e!stop \e!formule}{\dostopformula} - -\def\dostartformula% - {\dowithnextbox - {\scratchskip=\ifdim\tussenwit>\!!zeropoint\tussenwit\else\blankoskip\fi - \startregelcorrectie[\the\scratchskip] - \box\nextbox - \stopregelcorrectie} - \vbox\bgroup - \forgetall - \abovedisplayskip\!!zeropoint - \belowdisplayskip\!!zeropoint - \abovedisplayshortskip\!!zeropoint - \belowdisplayshortskip\!!zeropoint -\vbox{\strut}\vskip-2\lineheight % Why 2 and not 1? - $$\def\dostopformula{$$\egroup}} - -\def\plaatsformule% - {\settrue\incrementformulanumber - \dodoubleempty\doplaatsformule} - -\def\plaatssubformule% - {\setfalse\incrementformulanumber - \dodoubleempty\doplaatsformule} - -\def\doplaatsformule[#1][#2]% #2 = dummy, gobbles spaces - {\def\redoplaatsformule% - {\ifx\next\bgroup - \expandafter\xdoplaatsformule - \else - \expandafter\ydoplaatsformule - \fi[#1]}% - \futurelet\next\redoplaatsformule} - -\long\def\xdoplaatsformule[#1]#2#3% #3 gobbles spaces - {\def\redoplaatsformule% - {\expandafter\ifx\csname\e!start\e!formule\endcsname\next - \expandafter\dodoplaatsstartformule - \else - \expandafter\dodoplaatsformule - \fi[#1]{#2}}% - \futurelet\next\redoplaatsformule#3} - -\long\def\ydoplaatsformule[#1]#2% #3 gobbles spaces - {\def\redoplaatsformule% - {\expandafter\ifx\csname\e!start\e!formule\endcsname\next - \expandafter\dodoplaatsstartformule - \else - \expandafter\dodoplaatsformule - \fi[#1]}% - \futurelet\next\redoplaatsformule#2} - -\def\dodoplaatsformule[#1]#2$$#3$$% - {\begingroup - \setdisplayskips - \doifelse{#1}{-} - {\setfalse\handleformulanumber} - {\doifelse{#2}{-} - {\setfalse\handleformulanumber} - {\settrue\handleformulanumber}}% - \ifconditional\handleformulanumber - \def\formulenummer% - {\global\let\doeqno\empty - \global\let\doleqno\empty - %\global\let\formulenummer\doformulenummer ??? - \doformulenummer[#1][#2]}% - \def\subformulenummer% - {\setfalse\incrementformulanumber - \formulenummer}% - \gdef\doleqno{\leqno{\doformulenummer[#1][#2][]{}}}% - \gdef\doeqno {\eqno {\doformulenummer[#1][#2][]{}}}% - \doifelse{\@@fmplaats}{\v!links} - {\dostartformula#3\doleqno\dostopformula} - {\dostartformula#3\doeqno \dostopformula}% - \else - \def\formulenummer{\doformulenummer[#1][#2]}% - \let\subformulenummer\doformulenummer - \dostartformula#3\dostopformula - \fi - \par - \ignorespaces - \endgroup} - -%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=\vbox - \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 -%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\doschrijfnaarlijst#1#2#3#4% - {\doifvalue{\??li#1\c!status}{\v!start} - {\begingroup - \convertexpanded{\??li#1}{#3}\asciilistentry - \makesectionformat - \doifelse{\@@nmstatus}{\v!start} - {\def\dopaginanummer{\noexpand\pagenumber}} - {\def\dopaginanummer{0}}% - % niet waterdicht, wat te doen met figuren en zo - % first hack: scheelt rommel, second hack: alleen koppen - \ExpandBothAfter\rawdoifinsetelse{#1}{\crossdocumentelements} - {\doif{\@@sectionlevel\@@sectie}{0}{\autocrossdocumentfalse}} - {\autocrossdocumentfalse}% - % blijft nog wat zwakjes - \ifautocrossdocument - \bgroup - \thisisdestination{#1::\sectionformat}% - \@EA\setsectieenkoppeling\@EA{#1}% - \edef\currentlevel{\@@sectionlevel\@@sectie}% - \def\docommando##1% - {\def\dodocommando####1% - {\setsectieenkoppeling{####1}% - \def\level{\@@sectionlevel\@@sectie}% - \ifnum\level>\currentlevel - \expanded{\definereference[##1::####1][\v!geen]}% - \else\ifnum\level=\currentlevel - \expanded{\definereference[##1::####1][##1::{####1::\sectionformat}]}% - \fi\fi}% - \processcommacommand[\crossdocumentelements]\dodocommando}% - \processcommacommand[\crossdocumentreferences]\docommando - \egroup - \else - \thisisnextinternal{#1}% - \fi - \edef\schrijfwegnaarlijst% - {\writeutilitycommand% - {\listentry% - {#1}% - {\nextinternalreference}% - {#2}% - {\asciilistentry}% - {\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\lijstwidth{2em}} - -\def\@@livariantb% nr - tit - fill - pag - {\def\lijstfill{\hfill}% - \def\lijstskip{5em}% - \def\lijstwidth{2em}} - -\def\@@livariantc% nr - tit - dots - pag - {\def\lijstfill{\leaders\hbox to .5em{\hss.\hss}\hfill\hskip.5em}% - \def\lijstskip{5em}% - \def\lijstwidth{0pt}} - -\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% - {\def\geenlijst##1{\unknown}% - \setvalue{#1\c!tussen}{\dotussenlijst{#1}}% - \setvalue{#1\c!lijst}{\dolijstelement{#1}}} - -\def\dodoresetlijst#1% - {\let\geenlijst\empty - \setvalue{#1\c!tussen}{\gobblefourarguments{#1}}% - \setvalue{#1\c!lijst}{\gobblesixarguments{#1}}} - -\let\geenlijst\empty - -\def\dodefinieerlijst[#1][#2][#3]% - {\presetlocalframed[\??li#1]% - \getparameters - [\??li#1] - [\c!hoogte=\v!ruim, - \c!diepte=\v!ruim, - \c!offset=0.25em, - \c!maxbreedte=, - \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!tussen=, - \c!symbool=, - \c!interactie=\v!sectienummer, - \v!deel\v!nummer=\v!ja, % nodig ? % v - \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,\c!tussen,\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 - \dogetcommalistelement1\from#1\to\firstlistelement - \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% kan iets efficienter met \ifdone - {\doifvalue{\??li#1\c!label}{\v!ja}{\leftlabeltext{#1}}% - \strut\splitlistsymbol\getvalue{\??li#1\c!scheider}% - \doifvalue{\??li#1\c!label}{\v!ja}{\rightlabeltext{#1}}}]} - -\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}% - {\def\dosomelijstelement{\dodofreevlijstelement}} - -\setvalue{dodolijstelement\v!vertikaal}% - {\def\dosomelijstelement{\dodofreevlijstelement}} - -\setvalue{dodolijstelement\v!horizontaal}% - {\def\dosomelijstelement{\dodofreehlijstelement}} - -\setvalue{dodolijstelement\v!commando}% - {\let\dosomelijstelement\dodocommandlijstelement} - -% 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\newlineinlist{\space} - -\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#3} - {\setupinteraction[\c!kleur=,\c!contrastkleur=]}% - \doattributes{\??li#1}{#2}{#3}} - -\def\dodocommandlijstelement#1#2#3#4#5#6% - {\doifdefinedelse{\??li#1\c!commando} - {\getvalue{\??li#1\c!commando} - {#3}{#4}{\paginaprefix\??li#1[#5]\translatednumber[#5]}} - {[#1: #3 - #4 - \paginaprefix\??li#1[#5]\translatednumber[#5]]}} - -\def\dodofreelijstelement#1#2#3#4#5#6#7#8% - {\def\makelijstelement##1##2% - {\hbox - {\doifelsevalue{\??li#1\c!interactie}{##1} - {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}% - \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\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]}}} - {#7% - \vbox - {\forgetall - \makelijstelement\v!alles - {\makelijstelement\v!sectienummer - {\dolistattributes{#1}\c!nummerletter\c!nummerkleur - {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}% - \makelijstelement\v!tekst - {\dolistattributes{#1}\c!tekstletter\c!tekstkleur - {\let\\=\newlineinlist - \dontconvertfont - \getvalue{\??li#1\c!tekstcommando}{#4}}}% - \doifvalue{\??li#1\c!paginanummer}{\v!ja} - {\doifsomething{#5} - {\makelijstelement\v!paginanummer - {\dolistattributes{#1}\c!paginaletter\c!paginakleur - {\getvalue{\??li#1\c!paginacommando} - {\paginaprefix\??li#1[#5]% - \translatednumber[#5]}}}}}}}% - #8}% - \getvalue{\??li#1\c!na}} - -\def\dodofreehlijstelement#1#2#3#4#5#6% - {\dodofreelijstelement{#1}{#2}{#3}{#4}{#5}{#6} - {\noindent}{}} - -\def\dodofreevlijstelement#1#2#3#4#5#6% % \nointerlineskip nodig, - {\dodofreelijstelement{#1}{#2}{#3}{#4}{#5}{#6} % anders verkeerde spatiering - {\ifvmode\nointerlineskip\fi} % bij multi-line lijsten - {\nointerlineskip\endgraf\allowbreak}} % - -\def\dodofixdlijstelementABC#1#2#3#4#5#6% weeden - {\endgraf - \leftskip=\getvalue{\??li#1\c!marge}% na de \endgraf ! - \getvalue{\??li#1\c!voor}% - \doifelsevalue{\??li#1\c!breedte}{\v!passend} - {\!!widtha=\!!zeropoint} - {\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}}% - \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\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!nummerletter\c!nummerkleur - {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}% - \hfill}}% - \setbox4=\hbox - {\doifvalue{\??li#1\c!paginanummer}{\v!ja} - {\doifsomething{#5} % \lijstwidth is new ; temp hack - {\hbox \ifdim\lijstwidth>\!!zeropoint to \lijstwidth\fi - {\hfill - \makelijstelement\v!paginanummer - {\dolistattributes{#1}\c!paginaletter\c!paginakleur - {\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!tekstletter\c!tekstkleur - {\let\\=\newlineinlist - \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 - \allowbreak - \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}% -\ifvmode - \advance\leftskip\getvalue{\??li#1\c!marge}% AANGEPAST -\fi - \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}}% - \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\copy0}}% - {\hbox{##2}}}% - \setbox4=\hbox - {\doifvalue{\??li#1\c!paginanummer}{\v!ja} - {\doifsomething{#5} - {\makelijstelement\v!paginanummer - {\dolistattributes{#1}\c!paginaletter\c!paginakleur - {\getvalue{\??li#1\c!paginacommando} - {\paginaprefix\??li#1[#5]% - \translatednumber[#5]}}}}}}% - \hbox - {\getvalue{\??li#1\c!links}% - \makelijstelement\v!sectienummer - {\dolistattributes{#1}\c!nummerletter\c!nummerkleur - {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}% - \getvalue{\??li#1\c!rechts}% - \hskip.5em}% - \nobreak - \tolerance3500 % niet zomaar veranderen - \dolistattributes{#1}\c!tekstletter\c!tekstkleur - {\let\\=\newlineinlist - \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 - {\setupinteraction[\c!strut=\v!nee]} - {\localframed[\??li#1][\c!diepte=\!!zeropoint,\c!kleur=]} - {#1}} - -\def\dodofixdlijstelementF#1% - {\dodofixdlijstelementEFG - {} - {\dosetraggedhbox{\getvalue{\??li#1\c!uitlijnen}}\raggedbox} - {#1}} - -\def\dodofixdlijstelementG#1% - {\dodofixdlijstelementEFG - {} - \regelmidden - {#1}} - -\def\dodofixdlijstelementEFG#1#2#3#4#5#6#7#8% - {\noindent - \hbox - {#1% in case E nils the strut - \let\\=\newlineinlist - \setbox0=\hbox - {#2{\showcontrastlocation{\??ia}{#8} - {\dostartattributes{\??li#3}\c!letter\c!kleur{}% - \ignorespaces\dontconvertfont\setstrut - \begstrut - \doifelsenothing{\??li#3\c!maxbreedte} - {\getvalue{\??li#3\c!tekstcommando}{#6}} - {\getvalue{\??li#3\c!tekstcommando}{\limitatetext{#6}{\getvalue{\??li#3\c!maxbreedte}}{\unknown}}}% - \endstrut % struts new - \dostopattributes}}}% - \linklisttoelement{#3}{#4}{#7}{#8}{\box0}}%{\copy0}}% - \par - \getvalue{\??li#3\c!tussen}} - -\def\strippedlistentry[#1::#2::#3]{#1::#2}% - -\def\linklisttoelement#1#2#3#4#5% % list location format page data - {\ifautocrossdocument - \gotodestination{}{}{#1::\strippedlistentry[#3]}{#4}{#5}% - \else - \gotonextinternal{#1}{#2}{#4}{#5}% - \fi} - -\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!tekstletter\c!tekstkleur - {\let\\=\newlineinlist - \dontconvertfont - \getvalue{\??li##1\c!tekstcommando}{##4}}}% - \global\utilitydonetrue} - {}}% - \dostellijstin[#1][#2]% - \dogetcommalistelement1\from#1\to\commalistelement - \dosettoclevel{\getvalue{\??li\commalistelement\c!criterium}}% - \setbox0=\vbox - {\doutilities{#1}{\jobname}{#1}{}{\par}}% - \xdef\utilitylistheight {\the\ht0}% - \xdef\utilitylistwidth {\the\wd0}% - \endgroup - \iflijstgeplaatst\enablemode[\e!lijst]\else\disablemode[\e!lijst]\fi} - -\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]% - {\hbox\bgroup % the \hbox is needed to bypass - \let\referenceprefix=\empty % \dontleavehmode in \naarbox - \setupinteraction[\c!kleur=,\c!contrastkleur=,\c!strut=]% - \setupreferencing[\c!prefix=]% - \naarbox{\hbox{\ignorespaces#1}}[#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]% - \dogetcommalistelement1\from#1\to\commalistelement - \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} -% {\doglobal\increment\referencecounter -% \referentiebutton -% {#3% -% \pagereference[\r!from\referencecounter]% -% \doschrijfnaarreferentielijst{#1}{\referencecounter}{#2}}% -% [\r!to\referencecounter]} -% {#3}} - -\def\schrijfnaarreferentielijst[#1]#2% #1=class #2=data #3=visualization - {\dowithnextbox - {\doifelsevalue{\??rl#1\c!status}{\v!start} - {\doglobal\increment\referencecounter % must be resolved due to #2 - \referentiebutton - {\box\nextbox - \pagereference[\r!from\referencecounter]% - \doschrijfnaarreferentielijst{#1}{\referencecounter}{#2}}% - [\r!to\referencecounter]} - {\box\nextbox}} - \hbox} % \vbox ? - -\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\doplaatssamengesteldelijst[#1][#2]% - {\begingroup - \getparameters[\??ih#1][#2]% - \dosettoclevel{\getvalue{\??ih#1\c!criterium}}% - \edef\samengesteldelijst{\getvalue{\??ih#1\c!lijst}}% - \stripspaces\from\samengesteldelijst\to\samengesteldelijst - \doifelsevalue{\??ih#1\c!niveau}{\v!huidige} % criterium=vorige,niveau=huidige - {\!!counta=0\@@koniveau} % hm: \@@koniveau - {\ExpandFirstAfter\doifnumberelse{\getvalue{\??ih#1\c!niveau}}% in verband - {\!!counta=\getvalue{\??ih#1\c!niveau}% met de vorige implementatie - \advance\!!counta by 1 % 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} - -\def\plaatssamengesteldelijst% - {\dodoubleempty\doplaatssamengesteldelijst} - -%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 : -% -% 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#4% - {\bgroup - \global\utilitydonetrue - \syndef - {\doattributes{\??sm#1}\c!tekstletter\c!tekstkleur{#3}} - \ConvertToConstant\doifelse{#4}{}{\unknown}{#4}\par - \egroup} - -\def\synonymentry#1% - {\executeifdefined{#1\s!entry}\gobblethreearguments} - -\def\dosetsynonym#1% - {\doifdefinedelse{\??sm#1\c!commando} - {\setvalue{#1\s!entry}{\getvalue{\??sm#1\c!commando}}} % 3 argumenten - {\setvalue{#1\s!entry}{\dohandlesynonymentry{#1}}}} - -\def\doplaatslijstmetsynoniemen#1#2% - {\witruimte - \begingroup - \def\currentsynonym{#1}% -% \def\synplaats{\getvalue{\??sm#1\c!plaats}}% -% \def\synbreedte{\getvalue{\??sm#1\c!breedte}}% -% \def\synmonster{\getvalue{\??sm#1\c!monster}}% -% - \doordefinieren % nog eens een class van maken, net als framed - [syndef] - [\c!plaats=\getvalue{\??sm#1\c!plaats}, - \c!breedte=\getvalue{\??sm#1\c!breedte}, - \c!afstand=\getvalue{\??sm#1\c!afstand}, - \c!monster=\getvalue{\??sm#1\c!monster}, - \c!hang=\getvalue{\??sm#1\c!hang}, - \c!uitlijnen=\getvalue{\??sm#1\c!uitlijnen}, - \c!voor=\getvalue{\??sm#1\c!voor}, - \c!tussen=\getvalue{\??sm#1\c!tussen}, - \c!na=\getvalue{\??sm#1\c!na}, - \c!springvolgendein=\getvalue{\??sm#1\c!springvolgendein}, - \c!kopletter=, - \c!letter=]% -% - \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!synoniemletter\c!synoniemkleur - {\synonymmeaningfalse#3}% - \else - \explicithmode - \doattributes{\??sm#1}\c!tekstletter\c!tekstkleur{#2}% - \fi - \endgroup} - -%\def\getsynonymmeaning#1#2#3% -% {\doifdefinedelse{#2#3} -% {{\synonymmeaningtrue\getvalue{#2#3}}} -% {{\showmessage{\m!systems}{18}{#1,#3}}} - -\def\getsynonymmeaning#1#2#3% - {\bgroup - \doifundefined{#2#3} - {\setgvalue{#2#3}{{\tt[#3]}}% - \showmessage{\m!systems}{18}{#1,#3}}% - \synonymmeaningtrue - \getvalue{#2#3}% - \egroup} - -\def\dowritesynonym#1#2#3#4% - {\begingroup % anders in mathmode lege \hbox - \convertexpanded{\??sm#1}{#3}\asciisynonym - \convertexpanded{\??sm#1}{#4}\asciimeaning - \immediatewriteutility{s e {#1} {#2} {\asciisynonym} {\asciimeaning}}% - \endgroup} - -\def\preexecutesynonym#1#2#3#4% - {\ifdoinpututilities \else - \dowritesynonym{#1}{#2}{#3}{#4}% - \unexpanded\setgvalue{#2}{\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% - {\doifsomething{#2} - {\getvalue{\s!check#1}{#2}% - \doifelsevalue{\??sm#1\c!conversie}{\v!ja} - {\unexpanded\setgvalue{#2}{\expandsynonym{#1}{#2}{#3}{#4}}} - {\doifelsevalue{\??sm#1\c!status}{\v!start} - {\doifelsevalue{\??sm#1\c!criterium}{\v!alles} - {\preexecutesynonym{#1}{#2}{#3}{#4}} - {\unexpanded\setgvalue{#2}{\executesynonym{#1}{#2}{#3}{#4}}}} - {\unexpanded\setgvalue{#2}{\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!criterium=, - \c!plaats=\v!links, - \c!breedte=5em, - \c!afstand=0pt, - \c!monster=, - \c!hang=, - \c!uitlijnen=, - \c!voor=, - \c!tussen=, - \c!na=, - \c!springvolgendein=\v!nee]% - \presetheadtext - [#2=\Word{#2}]% - \setvalue{\e!stel#2\e!in}% - {\dodoubleargument\getparameters[\??sm#1]}% - \iffourthargument - \unexpanded\def#4##1% - {\getsynonymmeaning{#1}{\??sm:#1:}{##1}}% - \ifthirdargument - \unexpanded\def#3##1% - {\getvalue{\??sm:#1:##1}}% - \fi - \setvalue{#1}% - {\dotripleempty\docomplexsynonym[\??sm:#1:][#1]}% - \else - \ifthirdargument - \unexpanded\def#3##1% - {\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 : -% -% 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}} % 1 argument - {\getvalue{\??so#1\c!voor}% - \doattributes{\??so#1}\c!letter\c!kleur{##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}\c!letter\c!kleur{#2}% - \egroup} - -\def\dowritesort#1#2#3% - {\bgroup - \convertexpanded{\??so#1}{#3}\asciisynonym - \immediatewriteutility{s e {#1} {#2} {\asciisynonym} {}}% - \egroup} - -\def\synonymentry#1% - {\executeifdefined{#1\s!entry}\gobblethreearguments} - -\def\preexecutesort#1#2#3% - {\ifdoinpututilities \else - \dowritesort{#1}{#2}{#3}% - \unexpanded\setgvalue{#2}{\processsort{#1}{#3}{#2}}% - \fi} - -% \def\executesort#1#2#3% -% {\preexecutesort{#1}{#2}{#3}% -% \processsort{#1}{#3}{#2}} -% -% Better because it catches nested logo's: - -\def\executesort#1#2#3% - {\bgroup - \def\executesort##1##2##3{##3}% Trick needed for nested logo's. - \preexecutesort{#1}{#2}{#3}% - \processsort{#1}{#3}{#2}% - \egroup} - -\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% - {\doifsomething{#2} - {\getvalue{\s!check#1}{#2}% - \doifelsevalue{\??so#1\c!status}{\v!start} - {\doifelsevalue{\??so#1\c!criterium}{\v!alles} - {\preexecutesort{#1}{#2}{#3}} - {\unexpanded\setgvalue{#2}{\executesort{#1}{#2}{#3}}}} - {\unexpanded\setgvalue{#2}{\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=, % we test for defined ! - \c!status=\v!start, - \c!criterium=, - \c!letter=, - \c!voor=, - \c!na=\endgraf]% - \presetheadtext[#2=\Word{#2}]% - \setvalue{\e!stel#2\e!in}[##1]% vervalt tzt - {\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} - -%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. - -% \EveryPar% -% {\doglobal\newcounter\NOfLines} -% -% \EveryLine% -% {\doglobal\increment\NOfLines% -% \hskip-3em% -% \hbox to 3em{\hss\NOfLines\hskip1em}} - -\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\dodostartbuffer[#1][#2][#3]% - {\showmessage{\m!systems}{15}{#1}% - \doifelse{#3}{} - {\letbeundefined{\e!stop\e!buffer}% % \let\stopbuffer=\relax % \undefined - \@EA\@EA\@EA\convertargument\@EA\e!start\e!buffer\to\beginofblock % else a space - \@EA\@EA\@EA\convertargument\@EA\e!stop\e!buffer\to\endofblock - \let\processnextblockline=\processnextbufferline} - {\letbeundefined{#3}% \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}% - %{\immediate\openout\tmpblocks=\bufferprefix\jobname.\f!temporaryextension} - %{\immediate\openout\tmpblocks=\bufferprefix#1.\f!temporaryextension}% - {\immediate\openout\tmpblocks=\TEXbufferfile{\jobname}} - {\immediate\openout\tmpblocks=\TEXbufferfile{#1}}% - \newcounter\nestedbufferlevel - \setupcopyblock - \let\writeoutblocks\gobbleoneargument - \copyblockline} - -\def\dostartbuffer% - {\bgroup - \obeylines % nodig, anders gaat 't fout als direct \starttabel (bv) - \dotripleempty\dodostartbuffer} - -\letvalue{\e!start\e!buffer}\dostartbuffer - -% \setbuffer[name]#2\endbuffer : saves to file #1.tmp - -\def\setbuffer[#1]#2\endbuffer% - {\immediate\openout\tmpblocks=\TEXbufferfile{#1}% - \convertargument#2\to\ascii - \immediate\write\tmpblocks{\ascii}% - \immediate\closeout\tmpblocks} - -\def\dobuffer#1[#2]#3% - {\def\dodobuffer##1% - {\showmessage{\m!systems}{#1}{##1}% - \beginrestorecatcodes - #3{\TEXbufferfile{##1}}{}{}% - \endrestorecatcodes}% - \doifelsenothing{#2} - {\dodobuffer\jobname} - {\processcommalist[#2]\dodobuffer}} - -\def\haalbuffer% - {\dodoubleempty\dohaalbuffer} - -\def\dohaalbuffer[#1][#2]% - {\iffirstargument - \dodohaalbuffer[][#1]% - \else - \dodohaalbuffer[#1][#2]% - \fi} - -\def\dodohaalbuffer[#1][#2]% - {\getvalue{\??bu#1\c!voor}% - \dobuffer{16}[#2]\readjobfile - \getvalue{\??bu#1\c!na}} - -\def\typebuffer% - {\dodoubleempty\dotypebuffer} - -\def\dotypebuffer[#1][#2]% - {\iffirstargument - \dobuffer{17}[#1]\typefile - \else - \dobuffer{17}[#2]\typefile - \fi} - -\def\stelbufferin% - {\dodoubleempty\dostelbufferin} - -\def\dostelbufferin[#1][#2]% - {\ifsecondargument - \getparameters[\??bu#1][#2]% - \else - \getparameters[\??bu][#1]% - \fi} - -\def\dodefinieerbuffer[#1]% - {\iffirstargument % else problems - \doglobal\increment\nofdefinedbuffers - \setevalue{\e!start#1}% - {\noexpand\dostartbuffer[def-\nofdefinedbuffers][\e!start#1][\e!stop#1]}% - \setevalue{\e!haal#1}% - {\noexpand\dodohaalbuffer[#1][def-\nofdefinedbuffers]}% - \setevalue{\e!type#1}% - {\noexpand\dodotypebuffer[#1][def-\nofdefinedbuffers]}% - \fi} - -\def\definieerbuffer% - {\dosingleargument\dodefinieerbuffer} - -%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 komt neer 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. - -% MEER GEBRUIKEN : \dodoubleargumentwithset - -\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=\TEXbufferfile{\f!utilityfilename}} - -\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 - % \let\copynextline\relax - %\fi - %\copynextline}% - \ifeof\inpblocks\else\expandafter\copynextline\fi}% - \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% kan vlotter -% {\!!counta=1\relax -% \loop -% \catcode\!!counta=\@@other -% \advance\!!counta by 1\relax -% \ifnum\!!counta<255\relax -% \repeat -% \obeylines} - -\def\setupcopyblock% - {\dostepwiserecurse{1}{255}{1}{\catcode\recurselevel=\@@other}% - \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% - {\let\opentmpblock\empty - \let\closetmpblock\empty - \let\writetmpblock\gobbleoneargument - \saveblock} - -\def\loadoneblock% - {\readjobfile{\TEXbufferfile{\f!utilityfilename}}{}{}} - -\def\dodefinieerblok[#1]% - {\passeerblok[#1]% - \handhaafblokken[#1]% - \stelblokin - [#1] - [\c!voor=\blanko, - \c!na=\blanko, - \c!binnen=, - \c!letter=, - \c!file=\jobname]} - -\def\definieerblok% - {\dosingleargumentwithset\dodefinieerblok} - -\def\dostelblokin[#1][#2]% - {\getparameters[\??tb#1][#2]} - -\def\stelblokin% - {\dodoubleargumentwithset\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}\c!letter\c!kleur{}% - \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 -% \doifinsetelse{-}{#3} -% {\showwarning{\m!textblocks}{10}{\bloktitel}% -% \setvalue{\s!thiswasblock#1}% -% {\global\advance\blocklevel by -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}\c!letter\c!kleur{}% -% \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 -% \dogetcommalistelement1\from#1\to\commalistelement -% \doifdefined{\??tb\commalistelement\c!file} -% {\loadallblocks{\getvalue{\??tb\commalistelement\c!file}}}% -% \endgroup} -% -% \def\gebruikblokken% -% {\begingroup -% \doassign[\??bs][\c!criterium=\v!alles]% -% \dodoubleempty\dogebruikblokken} - -\newconditional\processblockstatus -\newconditional\dummyblockstatus - -\def\dodogebruikblok#1#2#3#4% - {\getblockstatus{#2}% - \ifblockpermitted - \setfalse\dummyblockstatus - \doifelsenothing{#4} - {\edef\bloktitel{#1}} - {\doifnotcommon{#3}{#4} - {\ifconditional\processblockstatus - \settrue\dummyblockstatus - \else - \global\blockpermittedfalse - \fi}% - \edef\bloktitel{#1:#3}}% - \else - \edef\bloktitel{#1}% - \fi - \ifblockpermitted - \global\advance\blocklevel by 1 - \doifinset{-}{#3}{\settrue\dummyblockstatus}% - \ifconditional\dummyblockstatus - \showwarning{\m!textblocks}{10}{\bloktitel}% - \setvalue{\s!thiswasblock#1}% - {\par - \egroup - \global\advance\blocklevel by -1\relax}% - \def\next% - {\setbox0=\vbox\bgroup}% - \else - \showwarning{\m!textblocks}{11}{\bloktitel}% - \setvalue{\s!thiswasblock#1}% - {\par - \egroup - \getvalue{\??tb#1\c!na}% - \global\advance\blocklevel by -1\relax}% - \def\next% - {\getvalue{\??tb#1\c!voor}% - \bgroup - \visibletrue - \doattributes{\??tb#1}\c!letter\c!kleur{}% - \getvalue{\??tb#1\c!binnen}}% - \fi - \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\dodogebruikblokken[#1][#2]% - {\def\docommando##1% - {\dogebruikblok[##1][#2]}% - \processcommalist[#1]\docommando - \dogetcommalistelement1\from#1\to\commalistelement - \doifdefined{\??tb\commalistelement\c!file} - {\loadallblocks{\getvalue{\??tb\commalistelement\c!file}}}% - \endgroup} - -\def\dogebruikblokken% - {\begingroup - \doassign[\??bs][\c!criterium=\v!alles]% - \dodoubleempty\dodogebruikblokken} - -\def\gebruikblokken% - {\setfalse\processblockstatus\dogebruikblokken} - -\def\verwerkblokken% - {\settrue \processblockstatus\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 - -% \getvalue{\??ma#1\c!commando} is obsolete; replaced by overlay -% -% \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\doaddpagebackground#1#2% -% {\doifvaluesomething{\??ma#1\c!achtergrond} -% {\edef\setpagebackgrounddepth% -% {\dp#2=\the\dp#2}% -% \setbox#2=\vbox\localframed -% [\??ma#1] -% [\c!strut=\v!nee,\c!breedte=\papierbreedte,\c!hoogte=\papierhoogte] -% {\dp#2=\!!zeropoint\box#2}% -% \setpagebackgrounddepth}} - -\def\ifsomebackgroundfound#1% - {\edef\!!stringe{\??ma#1}% - \doifelsevaluenothing{\!!stringe\c!achtergrond} - {\doifelsevalue{\!!stringe\c!kader }\v!aan\!!doneatrue - {\doifelsevalue{\!!stringe\c!linkerkader }\v!aan\!!doneatrue - {\doifelsevalue{\!!stringe\c!rechterkader}\v!aan\!!doneatrue - {\doifelsevalue{\!!stringe\c!bovenkader }\v!aan\!!doneatrue - {\doifelsevalue{\!!stringe\c!onderkader }\v!aan\!!doneatrue - \!!doneafalse}}}}} - \!!doneatrue - \if!!donea} - -\def\doaddpagebackground#1#2% - {\doifelsevaluenothing{\??ma#1\c!achtergrond} - {\doifelsevaluenothing{\??ma#1\c!kader} - {\donefalse} - {\donetrue}} - {\donetrue}% - \ifdone - \edef\setpagebackgrounddepth% - {\dp#2=\the\dp#2}% - \setbox#2=\vbox\localframed - [\??ma#1] - [\c!strut=\v!nee,\c!breedte=\papierbreedte,\c!hoogte=\papierhoogte] - {\dp#2=\!!zeropoint\box#2}% - \setpagebackgrounddepth - \fi} - -\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% - {\ifsomebackgroundfound{#3#4}% - \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 - \doifnot{\@@mastatus}{\v!herhaal}{\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=, - \c!onderkader=,\c!bovenkader=,\c!linkerkader=,\c!rechterkader=]% - \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]% -% {\ifthirdargument -% \docheckbackgrounddefinitions -% \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\ifsecondargument -% \docheckbackgrounddefinitions -% \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]}% -% \else\iffirstargument -% \getparameters[\??ma][#1]% -% \fi\fi\fi -% \doifelse{\@@mastatus}{\v!stop} -% {\global\newbackgroundfalse} -% {\global\newbackgroundtrue}} - -\def\dostelachtergrondenin[#1][#2][#3]% - {\ifthirdargument - \docheckbackgrounddefinitions - \def\docommando##1% - {\doifinsetelse{##1}{\v!papier,\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\ifsecondargument - \docheckbackgrounddefinitions - \doifcommonelse{#1}{\v!papier,\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]}% - \else\iffirstargument - \getparameters[\??ma][#1]% - \fi\fi\fi - \doifelse{\@@mastatus}{\v!stop} - {\global\newbackgroundfalse} - {\global\newbackgroundtrue}} - -\def\stelachtergrondenin% - {\dotripleempty\dostelachtergrondenin} - -% a lot of setups, including short ones - -\presetlocalframed [\??ma\v!papier] -\presetlocalframed [\??ma\v!pagina] -\presetlocalframed [\??ma\v!linkerpagina] -\presetlocalframed [\??ma\v!rechterpagina] - -\copyparameters - [\??ma\v!papier\c!kader][\??ma\v!pagina] - [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster] - -\copyparameters - [\??ma\v!papier\c!achtergrond][\??ma\v!pagina] - [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster] - -\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\processlocalfile#1#2% - {\doglobal\increment\fileprocesslevel - \setxvalue{\c!file::\fileprocesslevel}{#2}% - \@EA\doglobal\@EA\addtocommalist\@EA{#2}\processedfiles - #1{#2}{}{}% #1=\readlocfile|\readsetfile{dir} #2=filename - \doglobal\decrement\fileprocesslevel} - -\def\processfile#1% - {\ifx\allinputpaths\empty - \processlocalfile{\readlocfile}{#1}{}% - \else - \let\filepath\empty - \def\docommando##1% - {\doiffileelse{\pathplusfile{##1}{#1}} - {\donetrue\def\filepath{##1}} - {\donefalse}% - \ifdone\expandafter\quitcommalist\fi}% - \processcommacommand[.,\allinputpaths]\docommando - \ifx\filepath\empty - \processlocalfile{\readlocfile }{#1}% fall back ../../.. - \else - \processlocalfile{\readsetfile\filepath}{#1}% file found - \fi - \fi} - -\let\allinputpaths\empty - -\def\usepath[#1]% - {\def\docommando##1% - {\doifelse{##1}{\v!reset} - {\let\allinputpaths\empty} - {\addtocommalist{##1}\allinputpaths}}% - \processcommalist[#1]\docommando} - -\def\registreerfileinfo[#1#2]#3% - {\writestatus{\m!systems}{#1#2 file #3 at line \the\inputlineno}% - \immediatewriteutility{f #1 {#3}}} - -\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}}{}} - -% test \@@svgebied - -\def\loadallsystemfiles#1% - {\ifx\@@svgebied\empty - \readsysfile{#1}{\showmessage{\m!systems}{2}{#1}}{}% - \else - \def\doloadsystemfile##1% - {\readsetfile{##1}{#1}{\showmessage{\m!systems}{2}{#1}}{}}% - \processcommacommand[\@@svgebied]\doloadsystemfile - \fi} - -\def\loadsystemfiles% - {\readsysfile{\f!newfilename} - {\showmessage{\m!systems}{2}{\f!newfilename}}{}% - \readsysfile{\f!oldfilename} - {\showmessage{\m!systems}{2}{\f!oldfilename}}{}% - \loadallsystemfiles\f!filfilename - \loadallsystemfiles\f!sysfilename} - -%D Loading of \type {cont-usr.tex} and \type {cont-exe.tex} -%D (the one generated by texexec). - -\def\loaduserspecifications - {\readsysfile{\f!usrfilename} - {\showmessage{\m!systems}{2}{\f!usrfilename}}{}% - \readjobfile{\f!fmtfilename} - {\showmessage{\m!systems}{2}{\f!fmtfilename}}{}} - -%D We don't want multiple jobfiles to interfere. - -\bgroup -\catcode`\%=\@@other -\xdef\texcommentsymbol{%} -\egroup - -%\def\loadoptionfile% tzt \unlinkfile -% {\readjobfile{\f!optfilename} -% {\showmessage{\m!systems}{2}{\f!optfilename}}% -% {}% -% \doiffileelse{\f!optfilename} -% {\immediate\openout\scratchwrite=\f!optfilename -% \immediate\write\scratchwrite{\texcommentsymbol\space see backup copy}% -% \immediate\closeout\scratchwrite} -% {}} - -\def\loadoptionfile% - {\readjobfile{\jobname.\f!optionextension} - {\showmessage{\m!systems}{2}{\jobname.\f!optionextension}}% - {}} - -% \newevery \everyjob \EveryJob -% \appendtoks ... \to \everyjob - -\prependtoks \showcontextbanner \to \everyjob - -\appendtoks \loadsystemfiles \to \everyjob -\appendtoks \preloadfonts \to \everyjob -\appendtoks \settopskip \to \everyjob -\appendtoks \preloadlanguages \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 -\appendtoks \pagina[\v!laatste] \pagina - \ifarrangingpages\poparrangedpages\fi \to \everybye - -\appendtoks \registreerfileinfo[end]{\jobname} \to \everybye -\appendtoks \stopcopyingblocks \to \everybye -\appendtoks \closeutilities \to \everybye -\appendtoks \closespecialfile \to \everybye - -\appendtoks \checkreferences \to \everystarttext % nieuw 4-12-1999 - -\def\doateverystarttext% - {\the\everystarttext - \global\let\doateverystarttext\relax} - -\def\starttekst% - {\doateverystarttext - \ifnum\textlevel=0\relax - \registreerfileinfo[begin]{\jobname}% - \startcopyingblocks - \fi - \doglobal\increment\textlevel\relax} - -\def\stoptekst% - {\doglobal\decrement\textlevel\relax - \ifnum\textlevel>0 \else - \the\everystoptext - \the\everybye - \expandafter\normalend - \fi} - -\let\normalend=\end - -\def\end% - {\ifnum\textlevel>0 \else - \the\everybye - \expandafter\normalend - \fi} - -\def\doexecutefileonce#1% - {\beforesplitstring#1\at.\to\currentfile - \ExpandBothAfter\doifnotinset{\currentfile}{\loadedfiles}% - {\ExpandFirstAfter\addtocommalist{\currentfile}\loadedfiles - \doexecutefile{#1}}} - -\def\doexecutefile#1% - {\registreerfileinfo[begin]{#1} - \processfile{#1}% - \registreerfileinfo[end]{#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\doprevlevel% - {\ifnum\filelevel=1 - \expandafter\stoptekst - \else - \decrement\filelevel\relax - \expandafter\endinput - \fi} - -\def\startprojekt #1 % - {\!!donextlevel\currentproject - \donotexecutefile\doexecutefileonce - \doexecutefileonce\doexecutefile#1\\} - -\def\stopprojekt% - {\doprevlevel} - -\def\startprodukt #1 % - {\doateverystarttext - \!!donextlevel\currentproduct - \doexecutefileonce\doexecutefileonce - \donotexecutefile\doexecutefile#1\\} - -\def\stopprodukt% - {\doprevlevel} - -\def\startonderdeel #1 % - {\doateverystarttext - \!!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{\startprodukt} -\def\stopproduct {\stopprodukt} -\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}} - -\edef\utilityversion{1998.07.07} % was: 1996.03.15 % status variables -\edef\utilityversion{1998.12.20} % was: 1998.07.07 % index attributes - -\def\doplaatsversieaanduiding#1#2% - {\doifsomething{#2} - {\@EA\convertargument#2\to\ascii - \ #1: \ascii\ - \!!doneatrue}} - -\def\plaatsversieaanduiding% nog engels maken - {\ifvoorlopig - \vskip\!!sixpoint - \hbox to \zetbreedte - {\infofont - \getmessage\m!systems{27}: \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\ifinpagebody\else - \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} - {8em} - {..}% - \quad}}}% - \endgroup - \ifinner - \aftergroup\totaltestinfo - \else - \totaltestinfo - \fi - \fi\fi} - -\def\referentieinfo% - {\dotestinfo\referentieinfobox} - -\def\registerinfo% - {\dotestinfo\registerinfobox} - -\def\floatinfo% - {\dotestinfo\floatinfobox} - -\def\plaatstestinfo% - {\setbox0=\vbox to \teksthoogte - {\forgetall - \infofont - \hsize10em - \ifvoid\floatinfobox\else - \strut \getmessage\m!systems{24} - \vskip\!!sixpoint - \unvbox\floatinfobox - \vskip\!!twelvepoint - \fi - \ifvoid\referentieinfobox\else - \strut \getmessage\m!systems{25} - \vskip\!!sixpoint - \unvbox\referentieinfobox - \vskip\!!twelvepoint - \fi - \ifvoid\registerinfobox\else - \strut \getmessage\m!systems{26} - \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\complexdefinieer[#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} - -\definecomplexorsimpleempty\definieer - -\unexpanded\def\naam#1% - {\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\getvalue{\e!start#1}} -\def\complexstop [#1]{\getvalue{\e!stop #1}\egroup} - -\def\simplestart{\bgroup} -\def\simplestop {\egroup} - -\definecomplexorsimple\start -\definecomplexorsimple\stop - -\def\dodefinieerstartstop[#1][#2]% - {\getparameters - [\??be#1] - [\c!voor=, - \c!na=, - \c!commandos=, - \c!letter=, - #2]% - \setvalue{#1}% - {\groupedcommand - {\getvalue{\??be#1\c!commandos}% - \dostartattributes{\??be#1}\c!letter\c!kleur} - {\dostopattributes}}% - \setvalue{\e!start#1}% - {\getvalue{\??be#1\c!voor}% - \bgroup - \getvalue{\??be#1\c!commandos}% - \dostartattributes{\??be#1}\c!letter\c!kleur{}}% - \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}% - {\dostartbuffer[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\dosetupsystem[#1]% - {\getparameters[\??sv][#1]% - \setuprandomize[\@@svwillekeur]% - \beforesplitstring\@@svresolutie\at dpi\to\@@svresolutie - \let\outputresolution=\@@svresolutie} - -\def\setupsystem% - {\dosingleargument\dosetupsystem} - -\def\setuprandomize[#1]% - {\doifsomething{#1} - {\bgroup - \setrandomseed{-1}% - \processaction - [#1] - [ \v!klein=>\divide\time 900, % 15 taco vragen hoe - \v!middel=>\divide\time 1800, % 30 time werkt; nodig voor - \v!groot=>\divide\time 3600, % 60 random pos deadlock - \v!normaal=>, - \s!default=>, - \s!unknown=>\time=#1]% - \nextrandom - \egroup}} - -% Default-instellingen (verborgen) - -\resetutilities - -% Uitgestelde instellingen - -\def\dooutput{\sidefloatoutput} % redefinition of \dooutput - -% Default-instellingen (zichtbaar) - -\setupsystem - [\c!gebied=, - \c!resolutie=300dpi, - \c!willekeur=, - \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!dx=\!!zeropoint, - \c!dy=\!!zeropoint, - \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] - -\stelpapierformaatin - [\c!boven=, - \c!onder=\vss, - \c!links=, - \c!rechts=\hss] - -\stelinterliniein - [\c!hoogte=.72, - \c!diepte=.28, - \c!boven=1.0, - \c!onder=0.4, - \c!regel=2.8ex] - -\stelkolommenin - [\c!n=2, - \c!commando=, - \c!richting=\v!rechts, - \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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!hoofd\v!tekst\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!hoofd\v!tekst\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!hoofd\v!marge\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!hoofd\v!marge\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!hoofd\v!rand\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!hoofd\v!rand\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!voet\v!tekst\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!voet\v!tekst\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!voet\v!marge\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!voet\v!marge\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!voet\v!rand\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!voet\v!rand\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!boven\v!tekst\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!boven\v!tekst\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!boven\v!marge\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!boven\v!marge\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!boven\v!rand\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!boven\v!rand\c!breedte}] - -\stelonderin - [\v!tekst] - [\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!onder\v!marge\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!onder\v!marge\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!tekst\v!tekst\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!tekst\v!tekst\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!tekst\v!marge\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!tekst\v!marge\c!breedte}] - -\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!breedte=, - \c!linkerbreedte=\getvalue{\??tk\v!tekst\v!rand\c!breedte}, - \c!rechterbreedte=\getvalue{\??tk\v!tekst\v!rand\c!breedte}] - -\stelnummeringin % na instellen hoofdteksten ! - [\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\v!nummer=\v!nee, % v - \v!deel\v!nummer=\v!ja, % v - \c!nummerscheider=--, - \c!tekstscheider=\tfskip, - \c!status=\v!start, - \c!commando=, - \c!letter=\v!normaal, - \c!kleur=] - -\stelblankoin - [\v!standaard, - \v!groot] - -\definieerblanko[\v!default] [\currentblanko] -\definieerblanko[\v!voor] [\v!default] -\definieerblanko[\v!tussen] [\v!default] -\definieerblanko[\v!na] [\v!voor] - -% doen? - -\def\@@blankovoor {\blanko[\v!voor]} % -\def\@@blankotussen{\blanko[\v!tussen]} % scheelt 5 tokens == >20 bytes -\def\@@blankona {\blanko[\v!na]} % - -\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!sectionlevel-1] % deel -\definieersectie[\v!sectionlevel-2] % hoofdstuk -\definieersectie[\v!sectionlevel-3] % paragraaf -\definieersectie[\v!sectionlevel-4] % subparagraaf -\definieersectie[\v!sectionlevel-5] % subsubparagraaf -\definieersectie[\v!sectionlevel-6] % subsubsubparagraaf -\definieersectie[\v!sectionlevel-7] % subsubsubsubparagraaf - -% \c!eigennummer ook hier? - -\definieerkop - [\v!deel] - [\c!sectie=\v!sectionlevel-1] - -\definieerkop - [\v!hoofdstuk] - [\c!sectie=\v!sectionlevel-2] - -\definieerkop - [\v!paragraaf] - [\c!sectie=\v!sectionlevel-3] - -\definieerkop - [\v!sub\v!paragraaf] - [\c!sectie=\v!sectionlevel-4, - \c!default=\v!paragraaf] - -\definieerkop - [\v!sub\v!sub\v!paragraaf] - [\c!sectie=\v!sectionlevel-5, - %\c!default=\v!paragraaf] - \c!default=\v!sub\v!paragraaf] % nieuw - -\definieerkop - [\v!sub\v!sub\v!sub\v!paragraaf] - [\c!sectie=\v!sectionlevel-6, - %\c!default=\v!paragraaf] - \c!default=\v!sub\v!sub\v!paragraaf] % nieuw - -\definieerkop - [\v!sub\v!sub\v!sub\v!sub\v!paragraaf] - [\c!sectie=\v!sectionlevel-7, - %\c!default=\v!paragraaf] - \c!default=\v!sub\v!sub\v!sub\v!paragraaf] % nieuw - -\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!sectionlevel-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=, - \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=, - \c!letter=\tfa, - \c!afstand=.75em, - \c!springvolgendein=\v!nee, - \c!voor={\blanko[2*\v!groot]}, - \c!na=\blanko] - -\stelkopin % nieuw - [\v!sub\v!paragraaf] - [\c!pagina=] - -\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!achtergrondoffset=\!!zeropoint, - \c!bovenkader=, - \c!onderkader=, - \c!linkerkader=, - \c!rechterkader=, - \c!kaderoffset=\!!zeropoint, - \c!voor=, - \c!na=, - \c!voorwit=\v!groot, - \c!nawit=\v!groot, - \c!zijvoorwit=\@@bkvoorwit, - \c!zijnawit=\@@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!inspringen=, % untouched if empty - \c!kleur=, - \c!letter=, % kan tzt weg - \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=\unknown, - \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] % njet - -\stelinmargein - [\v!rechts] - [\c!plaats=\v!rechts] -% \c!uitlijnen=\v!rechts] % njet - -\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!tussen=\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] - -\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=\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 - [\c!status=\c!start] - -\stelachtergrondenin - [\v!papier,\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 - diff --git a/tex/context/base/core-01b.tex b/tex/context/base/core-01b.tex deleted file mode 100644 index 49ffc182f..000000000 --- a/tex/context/base/core-01b.tex +++ /dev/null @@ -1,1504 +0,0 @@ -%D \module -%D [ file=core-01b, -%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. - -\writestatus{loading}{Context Core Macros (b)} - -\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, -%I 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\lastkern=\quotationsignal -% \unskip -% \hskip\quotationskip -% \fi -% \strut % new, needed below -% \getvalue{\??la\currentlanguage#1}% -% \kern\quotationsignal} - -%D Better hyphenation (\prewordbreak look alike added): - -\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. - -% %I n=Tijden -% %I c=\tijd,\tijdspan,\activiteit -% %I -% %I De volgende commando's kunnen worden gebruikt om -% %I tijden en activiteiten in overzichten weer te geven: -% %I -% %I uu.mm -% %I -% %I \tijd{uur.min} -% %I -% %I uu.mm --- uu.mm -% %I -% %I \tijdspan{uur.min}{uur.min} -% %I -% %I uu.mm --- uu.mm activiteit -% %I -% %I \activiteit{uur.min}{uur.min} ... (\par) - -\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=Tekstlijn -%I c=\tekstlijn,\starttekstlijn,\steltekstlijnenin -%I -%I Een stuk tekst kan worden omgeven door horizontale lijnen, -%I waarin al dan niet een tekst is opgenomen. -%I -%I \tekstlijn[plaats]{tekst} -%I -%I Mogelijke plaatsen zijn boven en onder. De onderstaande twee -%I commando's zijn equivalent: -%I -%I \tekstlijn -%I \tekstlijn[onder]{} -%I -%I Daarnaast zijn beschikbaar: -%I -%I \starttekstlijn{tekst} -%I \stoptekstlijn -%I -%I waarbij de plaats dus boven is. -%P -%I Een en ander kan worden ingesteld met het commando: -%I -%I \steltekstlijnenin[voor=,na=,tussen=,letter=,breedte=, -%I plaats=] -%I -%I De breedte heeft betrekking op de lengte van de lijn voor -%I de tekst. Mogelijke plaatsen zijn links en inmarge. - -% nog eens \definieertekstlijn - -\def\steltekstlijnenin% - {\dodoubleargument\getparameters[\??tl]} - -\def\docomplextekstlijn#1% - {\bgroup - \setbox0=\hbox to \hsize - {\dimen4=0.5ex\relax - \dimen6=-0.5ex\relax - \advance\dimen4 by .5\linewidth - \advance\dimen6 by .5\linewidth - \doifsomething{#1} - {\doifelse{\@@tlplaats}{\v!inmarge}% - {\llap{\doattributes\??tl\c!letter\c!kleur{#1}\hskip\linkermargeafstand}} - {\vrule\!!height\dimen4\!!depth\dimen6\!!width\@@tlbreedte - \hbox spread 1em{\hss\doattributes\??tl\c!letter\c!kleur{\strut#1}\hss}}}% - \leaders\hrule\!!height\dimen4\!!depth\dimen6\hfill} - \ht0=\ht\strutbox - \dp0=\dp\strutbox - \box0 - \egroup} - -\def\dotoptekstlijn#1% - {\pagina[\v!voorkeur] - \witruimte - \@@tlvoor - \docomplextekstlijn{#1}% - \geenwitruimte - \@@tltussen - \endgraf} - -\def\dobottomtekstlijn#1% - {\ifhmode - \endgraf - \fi - \dimen0=\dp\strutbox - \ifdim\prevdepth<\dp\strutbox - \ifdim\prevdepth>\!!zeropoint - \advance\dimen0 by -\prevdepth - \fi - \fi - \advance\dimen0 by .5ex - \vskip\dimen0 - \@@tltussen - \doifelse{#1}{} - {\hrule\!!depth\linewidth\!!height\!!zeropoint} - {\docomplextekstlijn{#1}}% - \@@tlna - \pagina[\v!voorkeur]} - -\def\complextekstlijn[#1]#2% - {\processaction - [#1] - [ \v!boven=>\dotoptekstlijn{#2}, - \v!onder=>\dobottomtekstlijn{#2}, - \s!default=>\dobottomtekstlijn{#2}]} - -\def\simpletekstlijn% - {\dobottomtekstlijn{}} - -\definecomplexorsimple\tekstlijn - -\def\starttekstlijn#1% - {\bgroup - \dotoptekstlijn{#1}} - -\def\stoptekstlijn% - {\dobottomtekstlijn{}% - \egroup} - -%I n=Invullijnen -%I c=\invullijnen,\stelinvullijnenin,\invultekst -%I -%I Ten behoeve van invullijsten is het volgende commando -%I beschikbaar: -%I -%I \invullijnen[n=,breedte=]{tekst} -%I -%I Dit levert: -%I -%I tekst _____________________________________________ -%I _____________________________________________ -%I -%I De instellingen kunnen desgewenst achterwege blijven: -%I -%I \invullijnen{tekst} -%I \invullijnen{tekst}{optionele eindtekst} -%I -%I In dat geval worden de standaard-instellingen gebruikt. -%P -%I De standaardinstellingen vinden plaats met: -%I -%I \stelinvullijnenin[n=,breedte=,afstand=,letter=,voor=, -%I na=,scheider=] -%I -%I De afstand heeft betrekking op de afstand tussen de -%I scheider en de lijnen. -%I -%I Het volgende commando plaatst een tekst op een zelfde -%I wijze als de invullijnen. -%I -%I \invultekst{tekst} tekst \par - -\def\stelinvullijnenin% - {\dosingleargument\getparameters[\??il]} - -\def\dodocomplexinvullijnen[#1]#2#3#4% - {\endgraf - \@@ilvoor - \begingroup - \stelinvullijnenin[#1]% - \noindent - \doifelse{\@@ilbreedte}{\v!passend} - {\setbox0=\hbox} - {\setbox0=\hbox to \@@ilbreedte} - {\doattributes - \??il\c!letter\c!kleur - {\strut#3\hfill - \doifsomething{\@@ilscheider} - {\hbox spread \@@ilafstand{\@@ilscheider\hss}}}}% - \hangindent=\wd0\relax - \parindent=\hangindent - \box0\relax - \stelwitruimtein[\v!groot]% - \ignorespaces - #2#4% - \endgroup - \endgraf - \@@ilna} - -\def\complexinvullijnen[#1]% - {\def\docomplexinvullijnen% - {\dodocomplexinvullijnen[#1]{\thinrules[\c!n=\@@iln]}}% - \dodoublegroupempty\docomplexinvullijnen} - -\definecomplexorsimpleempty\invullijnen - -\def\complexinvultekst[#1]#2#3\par% - {\dodocomplexinvullijnen[#1]{\ignorespaces#3\endgraf}{#2}{}} - -\definecomplexorsimpleempty\invultekst - -%I n=Invulregels -%I c=\invulregel,\stelinvulregelin,\invultekst -%I -%I Ten behoeve van invullijsten is het volgende commando -%I beschikbaar: -%I -%I \invulregel[breedte=,afstand=]{tekst} -%I -%I tekst tekst tekst tekst tekst tekst tekst -%I tekst tekst tekst tekst tekst tekst tekst __________ -%I -%I De instellingen kunnen desgewenst achterwege blijven: -%I -%I \invulregel tekst -%I -%I In dat geval worden de standaard-instellingen gebruikt. -%I -%I De standaardinstellingen vinden plaats met: -%I -%I \stelinvulregelsin[n=,breedte=,afstand=,voor=,na=] -%I -%I De lengte van de lijn is gelijk aan breedte-afstand. - -\def\stelinvulregelsin% - {\dosingleargument\getparameters[\??iv]} - -\def\complexinvulregel[#1]#2\par% - {%\endgraf % interferes with \doordefinieren alikes - \@@ivvoor - \begingroup - \stelinvulregelsin[#1]% - \advance\rightskip by \@@ivbreedte - \parfillskip\!!zeropoint - #2\hfill - \dimen0=\@@ivbreedte - \advance\dimen0 by -\@@ivafstand - \rlap - {\hskip\@@ivafstand - \vrule\!!width\dimen0\!!height\linewidth}% - \par % ! - \endgroup - \par % ! - \@@ilna} - -\definecomplexorsimpleempty\invulregel - -%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 bijvoorbeeld publicatie is. Dit levert: -% -% \start -% \stop -% -% \beginvan -% \eindvan -% -% \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 -% \getparameters -% [\??km] -% [\c!bet=\unknown, -% \c!dat=\unknown, -% \c!ken=\unknown, -% \c!van=, -% \c!aan=, -% \c!ref=, -% #1]% -% \bgroup % 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 -% \doifelsenothing{\@@kmvan\@@kmaan} -% {\def\@@dokmvanaan{}} -% {\def\@@dokmvanaan{&\omit\cr}}% -% \doifelsenothing{\@@kmvan} -% {\def\@@dokmvan{}} -% {\def\@@dokmvan{\@@@kmvan&\@@kmvan\cr}}% -% \doifelsenothing{\@@kmaan} -% {\def\@@dokmaan{}} -% {\def\@@dokmaan{\@@@kmaan&\@@kmaan\cr}}% -% \doifelsenothing{\@@kmref} -% {\def\@@dokmref{}} -% {\def\@@dokmref{&\omit\cr\@@@kmref&\@@kmref\cr}}% -% \witruimte -% \tabskip=\!!zeropoint -% \noindent\halign -% \bgroup -% ##~&:~##\hfil\cr -% \@@@kmbet&\@@kmbet\cr -% \@@@kmdat&\@@kmdat\cr -% \@@@kmken&\kap{\@@kmken}\cr -% \@@dokmvanaan -% \@@dokmvan -% \@@dokmaan -% \@@dokmref -% \egroup -% \egroup} - -\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][|le|p|] - \startdummy - \NC\@@@kmbet\NC\@@kmbet\NC\NR - \NC\@@@kmdat\NC\@@kmdat\NC\NR - \NC\@@@kmken\NC\kap{\@@kmken}\NC\NR - \doifsomething{\@@kmvan\@@kmaan}{\NC\NC\NC\NR}% - \doifsomething{\@@kmvan}{\NC\@@@kmvan\NC\@@kmvan\NC\NR}% - \doifsomething{\@@kmaan}{\NC\@@@kmaan\NC\@@kmaan\NC\NR}% - \doifsomething{\@@kmref}{\NC\NC\NC\NR\NC\@@@kmref\NC\@@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] - -\steltekstlijnenin - [\c!plaats=\v!links, - \c!voor=\blanko, - \c!na=\blanko, - \c!tussen=, - \c!breedte=2em, - \c!letter=\v!vet, - \c!kleur=] - -\stelinvullijnenin - [\c!breedte=\v!passend, - \c!afstand=1em, - \c!voor=\blanko, - \c!na=\blanko, - \c!n=1, - \c!scheider=, - \c!letter=\v!normaal, - \c!kleur=] - -\stelinvulregelsin - [\c!breedte=3cm, - \c!afstand=1em, - \c!voor=\blanko, - \c!na=\blanko] - -\steltabin - [\c!plaats=\v!links] - -%\definieeralineas -% [tabulatie] -% [\c!n=3, -% \c!voor=\blanko, -% \c!na=\blanko, -% \c!afstand=1em] - -\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 diff --git a/tex/context/base/core-01c.tex b/tex/context/base/core-01c.tex deleted file mode 100644 index a22e76427..000000000 --- a/tex/context/base/core-01c.tex +++ /dev/null @@ -1,703 +0,0 @@ -%D \module -%D [ file=core-01c, -%D version=1997.03.31, -%D title=\CONTEXT\ Core Macros, -%D subtitle=1C (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. - -\writestatus{loading}{Context Core Macros (c)} - -\unprotect - -\startmessages dutch library: systems - 41: externe file -- in groep -- bestaat niet -\stopmessages - -\startmessages english library: systems - 41: external file -- in group -- does not exist -\stopmessages - -\startmessages german library: systems - 41: Externe Datei -- in Gruppe -- existiert nicht -\stopmessages - -\startmessages czech library: systems - 41: externi soubor -- ve skupine -- neexistuje -\stopmessages - -%I n=Formules+ -%I c=\startlegenda,\startgegeven -%I -%I Ten behoeve van een consistente toelichting op een -%I formule zijn er de volgende commando's: -%I -%I \startlegenda -%I \leg symbool \\ betekenis \\ dimensie \\ -%I \leg symbool \\ betekenis \\ dimensie \\ -%I \stoplegenda -%I -%I \startgegeven -%I \geg betekenis \\ symbool \\ waarde \\ -%I \geg betekenis \\ symbool \\ waarde \\ -%I \stopgegeven -%I -%I Ten behoeve van het zetten van ub- en superscripts zijn -%I er, naast \hbox, de commando's \xbox en \xxbox. -%P -%I Het onderstaande mag ook: -%I -%I \startlegenda[twee] -%I \leg symbool \\ symbool \\ betekenis \\ dimensie \\ -%I \leg symbool \\ symbool \\ betekenis \\ dimensie \\ -%I \stoplegenda - -\definetabulate - [\e!legenda] - [|emj1|i1|mR|] - -\setuptabulate - [\e!legenda] - [\c!eenheid=.75em,\c!binnen=\setquicktabulate\leg,EQ={=}] - -\definetabulate - [\e!legenda][\v!twee] - [|emj1|emk1|i1|mR|] - -\definetabulate - [\e!gegeven] - [|R|ecmj1|i1mR|] - -\setuptabulate - [\e!gegeven] - [\c!eenheid=.75em,\c!binnen=\setquicktabulate\geg,EQ={=}] - -\unexpanded\def\xbox% - {\bgroup\aftergroup\egroup\hbox\bgroup\tx\let\next=} - -\unexpanded\def\xxbox% - {\bgroup\aftergroup\egroup\hbox\bgroup\txx\let\next=} - -% \def\mrm#1% -% {$\rm#1$} - -%D \macros -%D {setuplegend, placelegend} -%D -%D It makes sense to typeset a legend to a figure in \TEX\ and -%D not in a drawing package. The macro \type {\placelegend} -%D combines a figure (or something else) and its legend. -%D -%D \showsetup{placelegend} -%D -%D The legend is placed according to \type {location}, being -%D \type {bottom} or \type {right}. The macro macro is used as -%D follows. -%D -%D \starttypen -%D \placefigure -%D {whow} -%D {\placelegend -%D {\externalfigure[cow]} -%D {\starttabulation -%D \NC 1 \NC head \NC \NR -%D \NC 2 \NC legs \NC \NR -%D \NC 3 \NC tail \NC \NR -%D \stoptabulation}} -%D -%D \placefigure -%D {whow} -%D {\placelegend -%D {\externalfigure[cow]} -%D {\starttabulation[|l|l|l|l|] -%D \NC 1 \NC head \NC 3 \NC tail \NC \NR -%D \NC 2 \NC legs \NC \NC \NC \NR -%D \stoptabulation}} -%D -%D \placefigure -%D {whow} -%D {\placelegend[n=2] -%D {\externalfigure[cow]} -%D {\starttabulation -%D \NC 1 \NC head \NC \NR -%D \NC 2 \NC legs \NC \NR -%D \NC 3 \NC tail \NC \NR -%D \stoptabulation}} -%D -%D \placefigure -%D {whow} -%D {\placelegend[n=2] -%D {\externalfigure[cow]} -%D {head \par legs \par tail}} -%D -%D \placefigure -%D {whow} -%D {\placelegend[n=2] -%D {\externalfigure[cow]} -%D {\startitemize[packed] -%D \item head \item legs \item tail \item belly \item horns -%D \stopitemize}} -%D -%D \placefigure -%D {whow} -%D {\placelegend[n=2,width=.8\hsize] -%D {\externalfigure[cow]} -%D {\startitemize[packed] -%D \item head \item legs \item tail \item belly \item horns -%D \stopitemize}} -%D \stoptypen -%D -%D There are a few more parameters: -%D -%D \showsetup{setuplegend} - -\def\setuplegend% - {\dodoubleargument\getparameters[\??ld]} - -\setuplegend - [\c!n=1, - \c!afstand=1em, - \c!tussen={\blanko[\v!middel]}, - \c!breedte=\hsize, - \c!hoogte=\vsize, - \c!korps=, - \c!plaats=\v!onder] - -\def\placelegend% - {\bgroup - \dosingleempty\doplacelegend} - -\def\doplacelegend[#1]% watch the hsize/vsize tricks - {\setuplegend[#1]% % and don't change them - \dowithnextbox - {\switchtobodyfont[\@@ldkorps]% split under same regime - \scratchdimen=\wd\nextbox - \doifelse{\@@ldplaats}{\v!rechts} - {\vsize=\ht\nextbox - \vsize=\@@ldhoogte - \hsize=\zetbreedte - \advance\hsize by -\scratchdimen - \advance\hsize by -\@@ldafstand - \plaatsnaastelkaar{\box\nextbox}\bgroup} - {\hsize\scratchdimen - \plaatsonderelkaar{\box\nextbox}\bgroup}% - \hsize\@@ldbreedte - \doif{\@@ldplaats}{\v!rechts}{\hskip\@@ldafstand}% - \ifnum\@@ldn>1 - \setrigidcolumnhsize\hsize\@@ldafstand\@@ldn - \fi - \dowithnextbox - {\doifelse{\@@ldplaats}{\v!rechts} - {\vbox to \vsize - {\ifnum\@@ldn>1 - \rigidcolumnbalance\nextbox - \else - \box\nextbox - \fi - \vfill}} - {\vbox - {\@@ldtussen - \ifnum\@@ldn>1 - \rigidcolumnbalance\nextbox - \else - \box\nextbox - \fi}}% - \egroup\egroup}% - \vbox - \bgroup - \forgetall - \tolerantTABLEbreaktrue % hm. - \blanko[\v!blokkeer]% - \everypar{\begstrut}% - \let\next=} - \hbox} - -%I n=Combinaties -%I c=\startcombinatie,\stelcombinatiesin -%I -%I Er kunnen meerdere tabellen, figuren enz. worden -%I gecombineerd. Dit gebeurt met het commando: -%I -%I \startcombinatie[n*m] -%I {inhoud 1}{ondertitel 1} -%I {inhoud 2}{ondertitel 2} -%I ..... -%I \stopcombinatie -%I -%I Eventueel kan volstaan worden met [n]. Vier inhouden -%I kunnen bijvoorbeeld worden gecombineerd als: -%I -%I [4*1] of [4] vier inhouden naast elkaar -%I [1*4] vier inhouden onder elkaar -%I [2*2] inhouden twee aan twee onder elkaar -%P -%I Dit commando is goed te combineren met \plaats-commando's: -%I -%I \plaatsfiguur[][]{} -%I \startcombinatie[2] -%I {\legefiguur}{a} -%I {\legefiguur}{b} -%I \stopcombinatie -%I -%I Rond \start-\stopcombineer hoeven geen {} te worden -%I geplaatst. -%I -%I De afstanden tussen de inhouden en de titels kunnen worden -%I ingesteld met: -%I -%I \stelcombinatiesin[voor=,na=,tussen=,afstand=, -%I uitlijnen=,hoogte=,breedte=] -%I -%I Waarbij de afstand betrekking heeft op de horizontale -%I afstand (een maat dus) en voor, na en tussen commando's -%I zijn (bijvoorbeeld \blanko). - -%T n=combinaties -%T m=com -%T a=c -%T -%T \startcombinatie -%T {?} {} -%T {} {} -%T \stopcombinatie - -\newcount\horcombinatie % counter -\newcount\totcombinatie - -\def\stelcombinatiesin% - {\dodoubleargument\getparameters[\??co]} - -% \long\def\dodostartcombinatie[#1*#2*#3]% -% {\stelfractiesin -% [\c!n=\v!passend, -% \c!afstand=\@@coafstand]% -% \global\horcombinatie=#1\relax -% \global\totcombinatie=#2\relax -% \multiply\totcombinatie by \horcombinatie -% \long\def\docombinatie##1##2##3% % ##3 gobbles spaces. -% {\vbox -% {\setbox0=\vbox -% {\hbox{##1}}% -% \doifemptyelse{##2} % Dit moet per se -% {\setbox2=\box\voidb@x} % \doifempty zijn! -% {\setbox2=\vtop -% {\hsize\wd0 -% \forgetall -% \steluitlijnenin[\@@couitlijnen]% % \raggedcenter -% \begstrut##2\endstrut}}% -% \vbox -% {\forgetall % \stelwitruimtein[\v!geen]% -% \box0\relax -% \ifvoid2\relax -% \else -% \@@cotussen -% \nointerlineskip % recently added -% \box2\relax -% \fi}}% -% \ifnum\totcombinatie>1\relax -% \global\advance\totcombinatie by -1\relax -% \global\advance\horcombinatie by -1\relax -% \ifnum\horcombinatie=0\relax -% \def\next% -% {\cr -% \noalign -% {\forgetall %\stelwitruimtein[\v!geen]% -% \nointerlineskip -% \@@cona -% \@@covoor -% \vss -% \nointerlineskip}% -% \global\horcombinatie=#1\relax -% \docombinatie{##3}}% -% \else -% \def\next% -% {&&&\hskip\@@coafstand -% &\docombinatie{##3}}% -% \fi -% \else -% \def\next% -% {\cr -% \egroup -% ##3}% -% \fi -% \next}% -% \tabskip=\!!zeropoint -% \doifelse{\@@cobreedte}{\v!passend} -% {\halign} -% {\halign to \@@cobreedte}% -% \bgroup&\hfil##\hfil&\tabskip\!!zeropoint \!!plus 1fill##\cr -% \docombinatie} - -\long\def\dodostartcombinatie[#1*#2*#3]% - {\stelfractiesin - [\c!n=\v!passend, - \c!afstand=\@@coafstand]% - \global\horcombinatie=#1\relax - \global\totcombinatie=#2\relax - \xdef\maxhorcombinatie{\the\horcombinatie}% - \multiply\totcombinatie by \horcombinatie - \tabskip=\!!zeropoint - \doifelse{\@@cobreedte}{\v!passend} - {\halign} - {\halign to \@@cobreedte}% - \bgroup&\hfil##\hfil&\tabskip\!!zeropoint \!!plus 1fill##\cr - \docombinatie} - -\def\docombinatie% - {\dowithnextbox - {\setbox0=\box\nextbox - \dowithnextbox - {\setbox2=\box\nextbox - \dodocombinatie} - \hbox} - \hbox} - -\def\dodocombinatie% - {\vbox - {\forgetall % \stelwitruimtein[\v!geen]% - \vbox - {\copy0}% - \ifdim\ht2>\!!zeropoint\relax % beter dan \wd2, nu \strut mogelijk - \@@cotussen - \vtop - {\nointerlineskip % recently added - \hsize\wd0 - \steluitlijnenin[\@@couitlijnen]% % \raggedcenter - \begstrut\unhbox2\endstrut}% - \fi}% - \ifnum\totcombinatie>1 - \global\advance\totcombinatie by -1 - \global\advance\horcombinatie by -1 - \ifnum\horcombinatie=0 - \def\next% - {\cr\noalign - {\forgetall %\stelwitruimtein[\v!geen]% - \nointerlineskip - \@@cona - \@@covoor - \vss - \nointerlineskip}% - \global\horcombinatie=\maxhorcombinatie\relax - \docombinatie}% - \else - \def\next% - {&&&\hskip\@@coafstand&\docombinatie}% - \fi - \else - \def\next% - {\cr\egroup}% - \fi - \next} - -\def\complexdostartcombinatie[#1]% - {\dodostartcombinatie[#1*1*]} - -\def\simpledostartcombinatie% - {\complexdostartcombinatie[2]} - -\def\startcombinatie% - {\bgroup - \forgetall - \doifelse{\@@cohoogte}{\v!passend} - {\vbox} - {\vbox to \@@cohoogte}% - \bgroup - \complexorsimple\dostartcombinatie} - -\def\stopcombinatie% - {\egroup - \egroup} - -%\def\plaatsnaastelkaar% -% {\bgroup -% \dowithnextbox -% {\dowithnextbox -% {\valign{\vss########\vss\cr\box0\cr\box\nextbox\cr}% -% \egroup} -% \vbox} -% \vbox} - -\def\plaatsondernaastelkaar#1#2% - {\bgroup - \def\doplaatsondernaastelkaar% - {#2\cr\omit\bgroup#2% - \aftergroup#2% - \aftergroup\cr - \aftergroup\egroup - \aftergroup\egroup - \let\next=}% - #1\bgroup##\cr - \omit\bgroup#2% - \aftergroup\doplaatsondernaastelkaar - \let\next=} - -\def\plaatsonderelkaar% - {\plaatsondernaastelkaar\halign\hss} - -\def\plaatsnaastelkaar% - {\plaatsondernaastelkaar\valign\vss} - -%I n=Files -%I c=\definieerfile -%I -%I De onderstaande commando's zijn beschikbaar, maar nog in -%I ontwikkeling. -%I -%I \gebruikexternefile [groep] [naam] [file] [instellingen] -%I -%I \gebruikexternefiles [groep] [korps=,file=] -%I \stelexternefilesin [groep] [korps=,file=] -%I -%I \naam{naam} of \naam -%I -%I Standaard zijn gedefinieerd: -%I -%I \gebruikexternefiles[pictex][korps=klein,file=pictex] -%I \gebruikexternefiles[table][file=table] - -\def\dogebruikexternefiles[#1][#2]% - {\getparameters - [\??fi#1] - [\c!file=, - \c!korps=, - \c!optie=, - #2]} - -\def\gebruikexternefiles% - {\dodoubleargument\dogebruikexternefiles} - -\def\dostelexternefilesin[#1][#2]% - {\doifundefinedelse{\??fi#1\c!file} - {\gebruikexternefiles[#1][#2]} - {\getparameters[\??fi#1][#2]}} - -\def\stelexternefilesin% - {\dodoubleargument\dostelexternefilesin} - -\def\verwerkexternefile#1#2#3% - {\bgroup - \getparameters[\??fi#1][\c!file=,#3]% - \doinputonce{\getvalue{\??fi#1\c!file}}% - \ExpandFirstAfter\switchtobodyfont[\getvalue{\??fi#1\c!korps}]% - \readsysfile{#2} % beter: loc of fix gebied - {} - {\showmessage{\m!systems}{41}{#2,#1}}% - \egroup} - -\def\dogebruikexternefile[#1][#2][#3][#4]% - {\stelexternefilesin[#1][]% - \doinputonce{\getvalue{\??fi#1\c!file}}% - \doifelsenothing{#2} - {\setvalue{#3}{\verwerkexternefile{#1}{#3}{#4}}} - {\setvalue{#2}{\verwerkexternefile{#1}{#3}{#4}}}} - -\def\gebruikexternefile% - {\doquadrupleargument\dogebruikexternefile} - -%I n=Roteren -%I c=\roteer -%I -%I Er is een rotatiecommando beschikbaar: -%I -%I \roteer[rotatie=]{} -%I -%I Waarbij als rotatie 0, 90, 180 of 270 kan worden opgegeven. -%I Als extra instellingen kunnen de instellingen van -%I \omlijnd worden meegegeven. Er wordt gebruik gemaakt van -%I het \special commando en het rotatiemechanisme van -%I PostScript. Dit betekent dat in de previewer de tekst -%I niet (!) geroteerd wordt. Overigens draagt TeX zorg voor -%I de exacte plaatsing, uitlijnen enz. De afhankelijkheid -%I van PostScript is dus tot een minimum beperkt. -%I -%I Verder zijn dezelfde instellingen mogelijk als bij -%I \omlijnd. - -\presetlocalframed[\??ro] - -\def\stelroterenin% - {\dodoubleargument\getparameters[\??ro]} - -% \ht, \vfillvoor, \vfillna, \wd, \hfillvoor, \hfillna - -\def\dodostoproteer#1#2#3#4#5#6% - {\dontshowcomposition - \vbox to #1\nextbox - {#2\relax - \hbox to #4\nextbox - {#5\relax - \doifelsenothing{\@@rorotatie} - {\dostartrotation{90}} - {\dostartrotation{\@@rorotatie}}% - \wd\nextbox=\!!zeropoint - \ht\nextbox=\!!zeropoint - \box\nextbox - \dostoprotation - #6} - #3}% - \egroup} - -\def\dostoproteer% - {\!!counta=\@@rorotatie - \divide\!!counta by 90 - \ifcase\!!counta - \dodostoproteer\ht\relax\vfill\wd\relax\hfill - \or - \dodostoproteer\wd\vfill\relax\ht\relax\hfill - \or - \dodostoproteer\ht\vfill\relax\wd\hfill\relax - \or - \dodostoproteer\wd\relax\vfill\ht\hfill\relax - \or - \dodostoproteer\ht\relax\vfill\wd\relax\hfill - \else - \def\@@rotatie{90}% - \dodostoproteer\ht\relax\vfill\wd\relax\hfill - \fi} - -\def\dorotatebox#1% {angle} \hbox/\vbox/\vtop - {\bgroup - \hbox\bgroup % compatibility hack - \dowithnextbox - {\edef\@@rorotatie{#1}% - \setbox\nextbox=\vbox{\box\nextbox}% - \dostoproteer - \egroup}} - -\def\complexroteer[#1]% - {\dowithnextbox - {\getparameters[\??ro][#1]% - \dostoproteer}% - \vbox\localframed[\??ro][#1]} - -\def\roteer% - {\bgroup % \roteer kan argument zijn - \complexorsimpleempty\roteer} - -% schaal - -\def\doschaal[#1]% - {\bgroup - \forgetall - \getparameters[\??xy][\c!sx=1,\c!sy=1,#1]% - \dowithnextbox - {\dontshowcomposition - \dimen0=\@@xysy\ht\nextbox - \dimen2=\@@xysy\dp\nextbox - \dimen4=\@@xysx\wd\nextbox - \dimen6=\dimen0\advance\dimen6 by \dimen2 - \setbox\nextbox=\vbox to \dimen6 - {\ht\nextbox=\!!zeropoint - \dp\nextbox=\!!zeropoint - \vfill % erbij - \dostartscaling\@@xysx\@@xysy\box\nextbox\dostopscaling - }% was \vfill}% - \ht\nextbox=\dimen0 - \dp\nextbox=\dimen2 - \wd\nextbox=\dimen4 - \box\nextbox - \egroup} - \hbox} % was \vbox} - -\def\schaal% - {\dosingleempty\doschaal} - -% mirror - -\def\domirrorbox% \hbox/\vbox/\vtop - {\bgroup - \dowithnextbox - {\dontshowcomposition - \dimen0=\wd\nextbox - \setbox\nextbox=\vbox - {\dostartmirroring\hskip-\wd\nextbox\box\nextbox\dostopmirroring}% - \wd\nextbox=\dimen0 - \box\nextbox - \egroup}} - -\def\spiegel% - {\domirrorbox\hbox} - -%\setbox0=\hbox{gans} -% -%\ruledhbox{\copy0 \schaal[sx=2,sy=2]{\copy0}} -% -%\spiegel{\ruledhbox{\copy0 \schaal{\box0}}} - -% verdelen \hsize in fracties -% -% \fractie[n/m,elementen,afstand] -% -% \fractie[2/5,3,1em] -% \fractie[2/5,3,1em] -% \fractie[1/5,3,1em] -% -% \stelfractiesin[afstand=,aantal=] (passend,passend) - -\def\??fr{@@fr} - -\def\stelfractiesin% - {\dodoubleargument\getparameters[\??fr]} - -\def\dodofractie[#1/#2,#3,#4,#5]% - {\doifelsenothing{#3} - {\doifelse{\@@frn}{\v!passend} - {\!!counta=#2\relax} - {\!!counta=\@@frn\relax}} - {\!!counta=#3\relax}% - \doifelsenothing{#4} - {\doifelse{\@@frafstand}{\v!passend} - {\!!widtha=\!!zeropoint} - {\!!widtha=\@@frafstand}} - {\!!widtha=#4}% - \advance\!!counta by -1\relax - \multiply\!!widtha by \!!counta - \advance\hsize by -\!!widtha - \divide\hsize by #2\relax - \hsize=#1\hsize} - -\def\dofractie[#1]% - {\dodofractie[#1,,,,,,]} - -\def\fractie% - {\dosingleargument\dofractie} - -\stelfractiesin - [\c!afstand=\tfskipsize, - \c!n=\v!passend] - -% Standaardinstellingen - -\stelroterenin - [\c!rotatie=90, - \c!breedte=\v!passend, - \c!hoogte=\v!passend, - \c!offset=\v!overlay, - \c!kader=\v!uit] - -\stelcombinatiesin - [\c!breedte=\v!passend, - \c!hoogte=\v!passend, - \c!afstand=1em, - \c!voor=\blanko, - \c!tussen={\blanko[\v!middel]}, - \c!na=, - \c!uitlijnen=\v!midden] - -\gebruikexternefiles - [pictex] - [\c!korps=\v!klein, - \c!file=pictex] - -\gebruikexternefiles - [table] - [\c!file=table] - -\protect - -\endinput diff --git a/tex/context/base/core-01d.tex b/tex/context/base/core-01d.tex deleted file mode 100644 index fe6a6f069..000000000 --- a/tex/context/base/core-01d.tex +++ /dev/null @@ -1,2331 +0,0 @@ -%D \module -%D [ file=core-01d, -%D version=1997.03.31, -%D title=\CONTEXT\ Core Macros, -%D subtitle=1D (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. - -\writestatus{loading}{Context Core Macros (d)} - -\unprotect - -\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 - -%I n=Interacteren -%I c=\setupinteraction,\stelinteractiemenuin -%I c=\definieerinteractiemenu,\startinteractiemenu -%I c=\blokkeerinteractiemenu,\geefinteractiemenuvrij -%I c=\stelinteractieschermin,\scherm -%I -%I Overzichten en verwijzingen kunnen worden voorzien van -%I voor DVIWINDO en Acrobat betekenisvolle codes. De volgende -%I commando's zijn (voorlopig) beschikbaar: -%I -%I \setupinteraction[status=,menu=,letter=,kleur=,strut=, -%I breedte=,hoogte=,diepte=,pagina=] -%I -%I Hierbij hebben 'letter' en 'kleur' betrekking op in de tekst -%I gemarkeerde woorden waar een verwijzing achter zit. Status -%I kan 'start' of 'stop' zijn en het 'menu' kan 'aan' of 'uit' -%I staan. Met 'pagina=ja' dwingen we pagina verwijzingen af. -%I -%I Zonodig kunnen een 'titel', 'subtitel', 'auteur' en 'datum' -%I worden ingesteld. -%P -%I Een menu wordt gedefinieerd met het commando: -%I -%I \definieerinteractiemenu[naam][plaats][instellingen] -%I -%I waarbij in plaats van de instellingen de naam van een -%I reeds gedefinieerd menu kan worden opgegeven. -%I -%I Mogelijke plaatsen zijn 'boven', 'onder', 'links' en -%I 'rechts'. -%P -%I De inhoud van een menu wordt gedefinieerd met: -%I -%I \definieerinteractiemenu[naam][inhoud] -%I -%I Een voorbeeld van zo'n definitie is: -%I -%I \definieerinteractiemenu -%I [links] -%I [{inhoud[inhoud]}, -%I {formules[formules]}, -%I {index[index]}] -%I -%I De accolades zijn essentieel! De verwijzingen dienen met de -%I daarvoor gebruikelijke commando's te worden aangemaakt. -%I Verwijzingen zoals [inhoud] en [index] zijn automatisch -%I beschikbaar. -%P -%I Naast [inhoud], [index] en andere voor de hand liggende -%I verwijzingen zijn beschikbaar: -%I -%I [eerstepagina] -%I [vorigepagina] -%I [volgendepagina] -%I [laatstepagina] -%P -%I Een alternatieve manier om menu's te definieren levert -%I het commando -%I -%I \startinteractiemenu -%I \stopinteractiemenu -%I -%I Hierbinnen zijn de volgende commando's mogelijk: -%I -%I \raw tekst \\ : ongeformatteerde tekst -%I \but[ref] tekst \\ : interactief menu item -%I \nop \\ : dummy menu item -%I \txt tekst \\ : niet interactief menu item -%I \rul tekst \\ : niet interactief menu item (omlijnd) -%I \com commandos \\ : commando's -%P -%I Instellingen kunnen ook apart plaatsvinden met: -%I -%I \stelinteractiemenuin[naam][voor=,na=,tussen=,breedte=, -%I kader=,letter=,status=,achtergrond=,achtergrondkleur=, -%I achtergrondraster=] -%I -%I Aan 'voor', 'na' en 'tussen' kunnen commando's worden -%I toegekend, zoals: \hfill, \blanko en \hskip1em. Bij -%I 'breedte' kan een maat, 'passend' of 'ruim' worden -%I meegegeven. Het kader kan 'aan' of 'uit' staan. -%I -%I De status kan 'start', 'stop', 'leeg' of 'geen' zijn. De -%I instelling 'leeg' geldt slechts een pagina. De instelling -%I 'geen' heeft alleen zin bij meerdere menus naast cq. boven -%I elkaar. -%P -%I Het is mogelijk een menu te (de)blokkeren. Dit gebeurt met -%I behulp van het referentie-mechanisme. Het commando luidt: -%I -%I \blokkeerinteractiemenu[plaats][verwijzingen] -%I \geefinteractiemenuvrij[plaats][verwijzingen] -%I -%I De verwijzingen moeten worden gescheiden door comma's. -%I Wanneer geen verwijzingen worden meegegeven, wordt de -%I blokkade opgeheven. -%P -%I Eventueel kunnen tussen menuitems commando's worden -%I opgenomen, -%I -%I \definieerinteractiemenu -%I [links] -%I [{alfa[eerste]}, -%I {beta[tweede]}, -%I {{\blanko[forceer,3*groot]}}, -%I {gamma[derde]}, -%I {{\vfil}}, -%I {omega[laatste]}] -%I -%I De extra {} zijn nodig, omdat anders onduidelijkheid is -%I of het commando's zijn of verwijzingen. -%P -%I De afmetingen van het interactiescherm kunnen worden -%I ingesteld met het commando: -%I -%I \stelinteractieschermin[breedte=,hoogte=,rugwit=, -%I kopwit=,optie=] -%I -%I Dit is alleen nodig als men het interactieprogramma wil -%I dwingen de tekst op een afwijkend papierformaat weer te -%I geven. Als hoogte en breedte kan 'passend' worden -%I opgegeven, in dat geval wordt uitgegaan van de -%I instellingen bij \stellayoutin. -%I -%I Er kan (in acrobat) met een vol scherm worden opgestart -%I met optie=max. -%P -%I Er zijn meerdere menu's naast elkaar mogelijk. Eerst -%I wordt een menu gedefinieerd met: -%I -%I \definieerinteractiemenu[naam][plaats][instellingen] -%I -%I De afstand tussen menus wordt ingesteld met 'afstand'. -%I Als afstand=overlay dan vallen menus over elkaar. - -\def\setupinteractionscreens% - {} - -%\def\initializepaper% -% {\iflocation % without screen settings -% \dosetuppaper -% {\papierformaat} -% {\the\papierbreedte} -% {\the\papierhoogte}% -% \else -% \dosetuppaper -% {\printpapierformaat} -% {\the\printpapierbreedte} -% {\the\printpapierhoogte}% -% \fi} - -\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\complexstelinteractieschermin[#1]% - {\getparameters[\??sc][#1]% - \def\initializepaper% - {\bgroup - \berekeninteractiescherm -\ifdim \!!widtha>\papierbreedte \papierbreedte=\!!widtha \fi -\ifdim \!!heighta>\papierhoogte \papierhoogte=\!!heighta \fi - \dosetuppaper - {\printpapierformaat} - {\the\papierbreedte} - {\the\papierhoogte}% - \egroup}% - \def\setupinteractionscreens% met a, b en \number - {\bgroup - \berekeninteractiescherm - \processaction - [\@@scoptie] - [ \v!max=>\!!counte=1, - \v!bookmark=>\!!counte=2, - \s!unknown=>\!!counte=0, - \s!default=>\!!counte=0]% - %\doifelse{\@@scoptie}{\v!max} - % {%\doif{\@@lyplaats}{\v!midden} % werkt niet goed / bovendien niet gewenst - % % {\scratchdimen=\printpapierhoogte - % % \advance\scratchdimen by -\papierhoogte - % % \divide\scratchdimen by 2 - % % \advance\kopoffset by \scratchdimen - % % \scratchdimen=\printpapierbreedte - % % \advance\scratchdimen by -\papierbreedte - % % \divide\scratchdimen by 2 - % % \advance\rugoffset by \scratchdimen}% - % \!!counte=1} - % {\doifelse{\@@scoptie}{\v!bookmark} - % {\!!counte=2} - % {\!!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}% - \dosetupidentity - {\@@iatitel} - {\@@iasubtitel} - {\@@iaauteur} % The next line is not to be removed. Copyright! - {CONTEXT / www.pragma-ade.nl / \jobname.tex} - {\@@iadatum} - \egroup}} - -\def\simplestelinteractieschermin% - {\setupinteractionscreens} - -\definecomplexorsimple\stelinteractieschermin - -%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\\% - {\@@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}} - -\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 - -%I n=Springen -%I c=\naar,\button,\menubutton,\stelbuttonsin -%I -%I Een woord kan woren gemarkeerd met: -%I -%I \naar{woord}[referentie] -%I -%I Voorlopig zijn daarnaast beschikbaar: -%I -%I \button[instellingen]{woord}[referentie] -%I \menubutton[plaats][instellingen]{woord}[referentie] -%I -%I waarbij de [instellingen] facultatief zijn en {geen} in -%I plaats van {woord} kan worden opgegeven. De instellingen komen, -%I voor zover relevant, overeen met die van \omlijnd. Vaste -%I instellingen vinden plaats met: -%I -%I \stelbuttonsin[breedte=,hoogte=,offset=,kader=, -%I achtergrond=,achtergrondkleur=,achtergrondraster=, -%I kleur=] -%P -%I De elders reeds beschreven commando's \op en \in zijn in -%I geval van interactie ook als volgt te gebruiken: -%I -%I \in{woord}[referentie] -%I \op{woord}[referentie] -%I -%I In dat geval wordt 'tekst~referentie' net zo weergegeven -%I als -%I -%I \naar{woord}[referentie] % woorden -%I \naarbox{woord}[referentie] % robuust -%I -%I opgeroepen verwijzing. - -\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} - -%I n=Externe files -%I c=\gebruikexterndocument,\uit -%I c=\startsynchroniseer,\stopsynchronisatie,\synchroniseer, -%I c=\stelsynchronisatiein,\stelsynchronisatiebalkin,\synchronisatiebalk -%I -%I Mits ondersteund door het interactieprogramma, kan naar -%I een andere file worden gesprongen. Zo'n file moet eerst -%I worden gedefinieerd met: -%I -%I \gebruikexterndocument [naam] [file] [omschrijving] -%I -%I Een verwijzing naar een andere file ziet er als volgt -%I uit: -%I -%I \in{tekst}[naam::verwijzing] -%I \op{tekst}[naam::verwijzing] -%I \naar{tekst}[naam::verwijzing] -%I -%I De naam van het andere document kan worden opgeroepen met -%I -%I \uit[naam] -%I -%I terwijl \uit zonder [naam] de bij \in, \op of \naar -%I behorende omschrijving oproept. -%P -%I Documenten kunnen worden gesynchroniseerd. Dat wil zeggen -%I dat gesprongen kan worden naar hetzelfde punt in een anders -%I vormgegeven tekst. Een synchronisatiepunt wordt aangegeven -%I met: -%I -%I \sychroniseer -%I -%I Een synchronisatie kan uit de pas lopen, bijvoorbeeld als -%I we in een kop een synchronisatiebalk oproepen. Wanneer vindt -%I immers precies de synchronisatie plaats? Vandaar de wat -%I meer betrouwbare menier van aangeven: -%I -%I \startsynchronisatie % voor de kop (nu mag balk) -%I \stopsynchronisatie % eind van de kop (fixeert plaats) -%P -%I Synchronisatie kan worden ingesteld met: -%I -%I \stelsynchronisatiein[status=] -%I -%I Het synchronisatiemechanisme is in geval van interactieve -%I teksten standaard niet actief. -%P -%I Er kan een synchronisatiebalk worden opgeroepen waarmee -%I naar een ander document kan worden gesprongen. -%I -%I \synchronisatiebalk[naam][instellingen] -%I -%I De instellingen kunnen ook apart worden opgegeven: -%I -%I \stelsynchronisatiebalkin[variant=,breedte=, -%I letter=,kleur=,achtergrond=,achtergrondraster=, -%I achtergrondkleur=] -%I -%I Mogelijke varianten zijn 'lokaal' en 'pagina'. In het -%I eerste geval wordt slechts een mogelijkheid geboden, in het -%I tweede geval zijn tot drie mogelijkheden mogelijk. Deze -%I zijn te vergelijken met markeringen. - -% 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} - -%I n=Interactiebalk -%I c=\interactiebalk,\stelinteractiebalkin -%I -%I Het volgende commando genereert een interactiebalk. Pas op: -%I de waarde van \realpageno staat niet echt vast. -%I -%I \interactiebalk[variant=,breedte=,hoogte=,diepte=, -%I achtergrond=,achtergrondkleur=,achtergrondraster=, -%I kader=,stap=] -%I -%I \interactiebalk[reset] -%I -%I \stelinteractiebalkin[...] -%I -%I Mogelijke stappen zijn 'klein', 'middel', 'groot' en 'n'; -%I beschikbare varianten zijn: -%I -%I a meter (scrollbar) -%I b jumper (symbool: begin terug vooruit eind) -%I c jumper (balk: begin terug vooruit eind) -%I d pagina (subpaginas vast formaat) -%I e pagina (subpaginas vrij formaat) -%I f pagina (subpaginas grote aantallen) -%I g pagina (subpaginas jumper) - -% 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% - {\doifnothing{\@@ibhoogte}{\def\@@ibhoogte{#1}}% - \doifnothing{\@@ibdiepte}{\def\@@ibdiepte{#2}}} - -\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 - [\@@ibvariant] - [ c=>\checkinteractiebalk\v!max\v!max, - d=>\checkinteractiebalk{.5em}\!!zeropoint, - e=>\checkinteractiebalk{.5em}\!!zeropoint, - f=>\checkinteractiebalk{.5em}\!!zeropoint, - \s!default=>\checkinteractiebalk\v!ruim\!!zeropoint, - \s!unknown=>\checkinteractiebalk\v!ruim\!!zeropoint]% - \doifelse{\@@ibsymbool}{\v!ja} - {\balksymbooltrue}{\balksymboolfalse}% - \getvalue{interactiebalk\@@ibvariant}% - \stopinteractie}% - \fi - \egroup}} - -\definecomplexorsimpleempty\interactiebalk - -\def\stelinteractiebalkin% - {\dodoubleargument\getparameters[\??ib]} - -%I n=Profielen -%I c=\definieerprofiel,\startprofiel,\volgprofiel -%I -%I Er kunnen een gericht leesprofiel worden gedefinieerd. -%I Daartoe worden delen van de tekst gemerkt met commando: -%I -%I \startprofiel[label,label,...] -%I \stopprofiel -%I -%I Een profiel wordt vervolgens samengesteld uit gemerkte -%I teksten: -%I -%I \definieerprofiel[naam,naam][label,label,...] -%I -%I en kan worden gevolgd met: -%I -%I \volgprofiel{tekst}[naam] -%I -%I Dit laatste commando is te vergelijken met \naar, met dat -%I verschil dat naar een serie teksten wordt gesprongen. -%P -%I Profielen kunnen worden getest. In dat geval worden de -%I begin- en eindpunten in de tekst aangegeven. De labels -%I zijn actief, zodat snel heen en weer gesprongen kan worden. -%I -%I \stelprofielenin[optie=] -%I -%I Hierbij kan optie de waarde 'test' hebben. - -% 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} - -%I n=Versies -%I c=\definieerversie,\stelversiesin,\startversie -%I c=\selecteerversie,\markeerversie,\volgversie -%I -%I Het mechanisme om wijzigingen in een tekst te markeren en -%I selecteren sluit aan op dat van profielen. -%I -%I Een deel van de tekst kan worden gemarkeerd met ofwel -%I -%I \startversie[nr,nr,...] -%I \stopversie -%I -%I of tussen @+ ...... @-. Eventueel mogen achter @+ nummers -%I worden opgenomen: @+nr,nr,... ...... @-. -%I -%I Aldus gemerkte tekst kan in een afwijkende letter worden -%I weergegeven, bijvoorbeeld \ss. Daarbij wordt de laagste -%I nog te mrkeren versie opgegeven: -%I -%I \stelversiesin[nummer=,letter=] -%I -%I Een versienummer mag punten (.) bevatten. Deze worden -%I voor het vergelijken niet meegenomen. Oppassen dus: 1.10 -%I wordt 110 en 2.2 wordt 22. -%P -%I Het is mogelijk alleen de 'recente' wijzigingen te -%I verwerken. Dit gaat in twee slagen: -%I -%I \markeerversie (eerste slag) -%I \selecteerversie (tweede slag) -%I -%I Er is gekozen voor het bewust markeren, omdat het -%I markeren gaat ten koste van de omvang van de hulpfile. -%P -%I Evenals profielen, kunnen ook versie worden gevolgd. Ook -%I hier dient eerst een definitie plaats te vinden: -%I -%I \definieerversie[naam][nummer,nummer,nummer] -%I -%I waarna gebruik kan worden gemaakt van: -%I -%I \volgversie{tekst}[naam] -%I -%I Er is ook een combinatie (doorsnede) mogelijk van -%I profielen en versies: -%I -%I \volgprofielversie{tekst}[naam profiel][naam versie] - -\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 - -%D \macros -%D {registermenubuttons} -%D -%D A still undocumented macro that generates a clickable -%D alphabet to a register. - -\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} - -\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=] - -\protect - -\endinput diff --git a/tex/context/base/core-01e.tex b/tex/context/base/core-01e.tex deleted file mode 100644 index afb3debef..000000000 --- a/tex/context/base/core-01e.tex +++ /dev/null @@ -1,422 +0,0 @@ -%D \module -%D [ file=core-01e, -%D version=1997.03.31, -%D title=\CONTEXT\ Core Macros, -%D subtitle=1E (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. - -\writestatus{loading}{Context Core Macros (e)} - -\unprotect - -% \ifprocesspreviousparagraphs -% -% \nofskippedparagraphs -% \paragraphnumber -% \nofparagraphs -% -% \dosetparagraph -% \doresetparagraph -% \dobeforeparagraph -% \doafterparagraph -% \dobeforeskipparagraph -% \doafterskipparagraph -% -% \pushparagraphs\endcommand alle alineas tot \endcommand laden -% \pushmoreparagraphs\endcommand alle alineas tot \endcommand toevoegen -% \popparagraphs alle alineas oproepen -% \popparagraphs[a,b,c] enkele alineas oproepen [geen] -% -% tzt een optionele prefix: -% -% \pushparagraphs[xxx]\endcommand alle alineas tot \endcommand laden -% \popparagraphs[xxx] alle alineas oproepen -% \popparagraphs[xxx][a,b,c] enkele alineas oproepen -% -% \numberparagraphs -% \numberparagraphlines -% \resetparagraphlines - -\newif\ifprocesspreviousparagraphs % public -\newif\ifprocessallparagraphs % private - -\newcounter\totalnofparagraphs % private -\newcounter\globalparagraphnumber % private -\newcounter\discardedparagraphs % private -\newcounter\mostrecentparagraphtotal % public - -\let\dosetparagraph = \relax % public -\let\doresetparagraph = \relax % public -\let\dobeforeparagraph = \relax % public -\let\doafterparagraph = \relax % public -\let\dobeforeskipparagraph = \relax % public -\let\doafterskipparagraph = \relax % public - -\def\paragraphnumber {} % public -\def\nofparagraphs {} % public -\def\nofskippedparagraphs {} % public - -\def\paragraphprefix {paragraph} % private - -% voorlopig, wordt nog class - -\def\resetparagraphlines% - {\global\linenumber=1\relax} - -\def\numberparagraphs% instelbaar maken en slimmer ivm breedte regelnummer !!!!! - {\processpreviousparagraphstrue - \def\dosetparagraph% - {\bgroup - \resetparagraphlines - \EveryPar - {\strut\inlinkermarge{\tf{\tx\paragraphnumber}\kern2em}% - \ignorespaces}} - \def\doresetparagraph% - {\resetparagraphlines - \egroup}} - -\def\numberparagraphlines% - {\processpreviousparagraphstrue - \def\dosetparagraph% - {\resetparagraphlines} - \def\doresetparagraph% - {\resetparagraphlines} - \def\dobeforeparagraph% - {\startregelnummeren[\v!verder]} - \def\doafterparagraph% - {\stopregelnummeren} - \def\dobeforeskipparagraph% - {\stopregelnummeren - \let\paragraphnumber=\relax} - \def\doafterskipparagraph% - {\startregelnummeren[\v!verder]}} - -\def\dopushparagraphs#1% - {\global\let\mostrecentparagraphtotal=\totalnofparagraphs - \ifx#1\undefined - \let#1=\relax - \fi - \convertargument#1\to\asciiA - \convertargument{ }\to\asciiB % lege regel - \def\dopushparagraph##1\par% - {\convertargument##1\to\asciiC - \doifelse{\asciiC}{\asciiA} - {\let\next=#1} - {\doifnot{\asciiC}{} % lege paragraaf - {\doifnot{\asciiC}{\asciiB} - {\doglobal\increment\totalnofparagraphs - \ifnum\totalnofparagraphs>0\nofskippedparagraphs\relax - \setgvalue{\paragraphprefix\totalnofparagraphs}% - {##1}% - \else - \setgvalue{\paragraphprefix\totalnofparagraphs}% - {\skipparagraph##1\par}% - \fi}}% - \let\next=\dopushparagraph} - \next}% - \dopushparagraph} - -\def\pushparagraphs% - {\doglobal\newcounter\totalnofparagraphs - \dopushparagraphs} - -\def\pushmoreparagraphs% - {\dopushparagraphs} - -\def\dododopopparagraph#1% no grouping, i.v.m. sidefloats - {\ifnum#1>\totalnofparagraphs\relax - \else - \let\paragraphnumber=\globalparagraphnumber - \decrement(\paragraphnumber,\discardedparagraphs)% - \dobeforeparagraph - \ifhmode\indentation\fi\getvalue{\paragraphprefix#1}\par - \doafterparagraph - \fi} - -\long\def\skipparagraph#1\par% - {\doglobal\increment\discardedparagraphs - \ifprocessallparagraphs - \dobeforeskipparagraph - \ifhmode\indentation\fi#1\par - \doafterskipparagraph - \fi} - -\def\dodopopparagraph% - {\dododopopparagraph} - -\def\dodoprocessparagraph#1% - {\ifprocesspreviousparagraphs - \bgroup - \setbox0=\vbox{\dododopopparagraph{#1}}% - \egroup - \fi} - -\def\processpreviousparagraphs[#1]% process previous ones - {\ifprocesspreviousparagraphs - \bgroup - \getfromcommacommand[#1][1]% tzt snelle \..command.. testen - \let\totalnofparagraphs=\commalistelement - \decrement\totalnofparagraphs - \let\dodopopparagraph=\dodoprocessparagraph - \popparagraphs - \egroup - \fi} - -\def\dopopparagraphs[#1]% - {\doifnotinset{#1}{\v!geen,0} - {\dosetparagraph - \doglobal\newcounter\globalparagraphnumber - \doglobal\newcounter\discardedparagraphs - \doifelse{#1}{} - {\processallparagraphstrue} - {\processallparagraphsfalse}% - \def\dopopparagraph% - {\doglobal\increment\globalparagraphnumber - \ifnum\globalparagraphnumber>\totalnofparagraphs\relax - \let\dopopparagraph=\relax - \else\ifprocessallparagraphs - \ifnum\globalparagraphnumber>\mostrecentparagraphtotal\relax - \dodopopparagraph\globalparagraphnumber - \else - \dodoprocessparagraph\globalparagraphnumber - \fi - \else - \let\paragraphnumber=\globalparagraphnumber - \decrement(\paragraphnumber,\discardedparagraphs)% - \ExpandBothAfter\doifinsetelse{\paragraphnumber}{#1} - {\dodopopparagraph\globalparagraphnumber} - {\dodoprocessparagraph\globalparagraphnumber}% - \fi\fi - \dopopparagraph}% - \dopopparagraph - \doresetparagraph}} - -\def\popparagraphs% - {\dosingleempty\dopopparagraphs} - -\def\countparagraphs% - {\popparagraphs[\!!maxcard]% - \global\let\nofparagraphs=\totalnofparagraphs - \doglobal\decrement(\nofparagraphs,\discardedparagraphs)} - -% \steluitlijnenin[onder] -% \stelwitruimtein[groot] -% -% \toonkader -% -% \numberparagraphlines -% \numberparagraphs -% -% \def\nofskippedparagraphs{1} -% -% \pushparagraphs\ThatsIt -% -% \ruledbaseline eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste -% -% \ruledbaseline eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste eerste eerste eerste -% eerste eerste eerste eerste eerste -% -% \ruledbaseline tweede tweede tweede tweede tweede tweede -% tweede tweede tweede tweede tweede tweede tweede tweede -% tweede tweede tweede tweede tweede tweede tweede tweede -% tweede tweede tweede tweede tweede tweede tweede tweede -% tweede tweede tweede tweede tweede tweede tweede tweede -% tweede tweede tweede tweede tweede tweede tweede tweede -% tweede tweede tweede tweede tweede -% -% \skipparagraph \ruledbaseline skipped skipped skipped -% skipped skipped skipped skipped skipped skipped skipped -% skipped skipped skipped skipped skipped skipped skipped -% skipped skipped -% -% \ruledbaseline derde derde derde derde derde derde derde -% derde derde derde derde derde derde derde derde derde derde -% derde derde derde derde derde derde derde derde derde derde -% derde derde derde derde derde derde derde derde derde derde -% derde derde derde derde derde derde derde derde derde derde -% derde derde derde derde derde derde derde derde derde derde -% -% \skipparagraph \ruledbaseline skipped skipped skipped -% skipped skipped skipped skipped skipped skipped skipped -% skipped skipped skipped skipped skipped skipped skipped -% skipped skipped skipped -% -% \ruledbaseline vierde vierde vierde vierde vierde vierde -% vierde vierde vierde vierde vierde vierde vierde vierde -% vierde vierde vierde vierde vierde vierde vierde vierde -% vierde vierde vierde vierde -% -% \ruledbaseline vijfde vijfde vijfde vijfde vijfde vijfde -% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde -% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde -% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde -% vijfde vijfde vijfde -% -% \skipparagraph \ruledbaseline skipped skipped skipped -% skipped skipped skipped skipped skipped skipped skipped -% skipped skipped skipped skipped skipped skipped skipped -% skipped skipped skipped -% -% \ThatsIt -% -% \popparagraphs -% -% \countparagraphs -% -% \blanko[2*groot] -% -% nofparagraphs:~\nofparagraphs -% -% \pagina -% -% \popparagraphs[1] -% \popparagraphs[2] -% \popparagraphs[3] -% \popparagraphs[4] -% \popparagraphs[5] -% -% \pagina -% -% \ruledvbox{\popparagraphs[1,2,3,4,5]} -% -% \pagina - -% PAS OP: VERVALLEN -% -% \newif\ifprocesspreviousparagraphs -% \newif\ifprocessallparagraphs -% -% \newcounter\nofskippedparagraphs -% \newcounter\nofmidskippedparagraphs -% -% \def\alineanummer {} -% -% \newcounter\nofalineas -% -% \def\laadalineas#1% alinea = class -% {\doglobal\newcounter\nofalineas -% \doglobal\decrement(\nofalineas,\nofskippedparagraphs)% -% \ifx#1\undefined -% \let#1=\relax -% \fi -% \convertargument#1\to\asciiA -% \convertargument{ }\to\asciiB % lege regel -% \def\dolaadalinea##1\par% -% {\convertargument##1\to\asciiC -% \doifelse{\asciiC}{\asciiA} -% {\let\next=#1} -% {\doifnot{\asciiC}{} % lege paragraaf -% {\doifnot{\asciiC}{\asciiB} -% {\doglobal\increment\nofalineas -% \setgvalue{alinea\nofalineas}{##1}}}% -% \let\next=\dolaadalinea} -% \next}% -% \dolaadalinea} -% -% % De constructie \edef\alineanummer{#1} is nodig voor -% % bijvoorbeeld: -% % -% % \EveryPar{\strut\inlinker{\alineanummer}} -% % -% % Laten we dit weg, dan wordt het vorige nummer gebruikt. -% -% \def\dododohaalalinea#1% geen grouping, i.v.m. sidefloats -% {\edef\localalineanummer{#1}% -% \ifnum\localalineanummer>\nofalineas\relax -% \else -% \ifnum\localalineanummer>0\relax -% \let\alineanummer=\localalineanummer -% \decrement(\alineanummer,\nofmidskippedparagraphs)% -% \else -% \let\alineanummer=\empty -% \fi -% \dopreparagraph -% \doeveryparagraph\getvalue{alinea\localalineanummer}\par -% \dopostparagraph -% \fi} -% -% \long\def\geenalinea#1\par% -% {\ifprocessallparagraphs -% \let\alineanummer=\relax -% \dopostparagraph % fool around a bit -% #1\par -% \dopreparagraph % ugly but effective -% \fi -% \doglobal\increment\nofmidskippedparagraphs} -% -% \def\dodohaalalinea% -% {\dododohaalalinea} -% -% \def\dodoverwerkalinea#1% -% {\ifprocesspreviousparagraphs -% \bgroup -% \setbox0=\vbox{\dododohaalalinea{#1}}% -% \egroup -% \fi} -% -% \def\verwerkvorigealineas[#1]% process previous ones -% {\ifprocesspreviousparagraphs -% \bgroup -% \getfromcommacommand[#1][1]% -% \let\nofalineas=\commalistelement -% \decrement\nofalineas -% \let\dodohaalalinea=\dodoverwerkalinea -% \haalalineas -% \egroup -% \fi} -% -% \let \dosetparagraph = \relax -% \let \doresetparagraph = \relax -% \let \dopreparagraph = \relax -% \let \dopostparagraph = \relax -% \let \doeveryparagraph = \relax -% -% \def\dohaalalineas[#1]% -% {\doifnotinset{#1}{\v!geen,0} -% {\dosetparagraph -% \doglobal\newcounter\globalalineanummer -% \doglobal\newcounter\nofmidskippedparagraphs -% \doifelse{#1}{} -% {\processallparagraphstrue -% \doglobal\decrement(\globalalineanummer,\nofskippedparagraphs)} -% {\processallparagraphsfalse}% -% \def\dohaalalinea% -% {\doglobal\increment\globalalineanummer -% \ifnum\globalalineanummer>\nofalineas\relax -% \let\dohaalalinea=\relax -% \else -% \ifprocessallparagraphs -% \dodohaalalinea\globalalineanummer -% \else -% \let\localalineanummer=\globalalineanummer -% \decrement(\localalineanummer,\nofmidskippedparagraphs)% -% \ExpandBothAfter\doifinsetelse{\localalineanummer}{#1} -% {\dodohaalalinea\globalalineanummer} -% {\dodoverwerkalinea\globalalineanummer}% -% \fi -% \fi -% \dohaalalinea}% -% \dohaalalinea -% \doresetparagraph}} -% -% \def\haalalineas% -% {\dosingleempty\dohaalalineas} - -\protect - -\endinput diff --git a/tex/context/base/core-02a.tex b/tex/context/base/core-02a.tex deleted file mode 100644 index b7f9ac411..000000000 --- a/tex/context/base/core-02a.tex +++ /dev/null @@ -1,198 +0,0 @@ -%D \module -%D [ file=core-02a, -%D version=1997.03.31, -%D title=\CONTEXT\ Core Macros, -%D subtitle=2A (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. - -\writestatus{loading}{Context Extra Macros (a)} - -\unprotect - -\startmessages dutch library: addresses - title: adressen - 1: -- - 2: hoofdbestand -- - 3: nevenbestand -- -\stopmessages - -\startmessages english library: addresses - title: addresses - 1: -- - 2: primary base -- - 3: secondary base -- -\stopmessages - -\startmessages german library: addresses - title: Adressen - 1: -- - 2: Haupbestand -- - 3: Nebenbestand -- -\stopmessages - -\startmessages czech library: addresses - title: adresy - 1: -- - 2: primarni baze -- - 3: sekundarni baze -- -\stopmessages - -%I n=Kontakten -%I c=\laadkontakten -%I -%I De onderstaande commando's werken samen met het programma -%I TeXAdres. -%I -%I \laadkontakten[naam,groep,...] -%I -%I Dit commando doorzoekt eerst de file 'texadres.tao' en -%I vervolgens de file 'texadres.tae' op naam en groep. Bij -%I elk gevonden adres (naam of groepslid) wordt het commando -%I \doemetkontakt{logisch} aangeroepen. -%I -%I De waarden van de verschillende velden zijn op te roepen met -%I het commando \kontaktwaarde{veldnaam}. Let op: het in -%I bijvoorbeeld een adres opgenomen commando \\ moet men zelf -%I definieren, bijvoorbeeld: \def\\{\endgraf}. -%P -%I TeXAdres zet alle files op een gebied met de extensie 'tai' -%I om in een file met de extensie 'tao' of 'tae'. Een invoerfile -%I is als volgt opgebouwd: -%I -%I Een adres in de uitvoerfile ziet er als volgt uit: -%I -%I \beginvankontakt{...} -%I \lidvangroep{...,...,...} -%I \naam{...} -%I \letters{...} -%I \...{...} -%I \postadres{...} -%I \eindvankontakt{...} -%P -%I De invoerfile bevat zowel definities van kontakten als van -%I groepen. -%I -%I Een kontakt wordt als volgt gedefinieerd: -%I -%I < kontakt > -%I -%I [ logisch ] hagenj -%I [ naam ] Hagen -%I [ letters ] J. -%I [ voornaam ] Hans -%I [ titel ] heer -%I [ telefoon ] 053 - 336934 -%I [ telefax ] -%I [ postadres ] J. Hagen \\ Ridderstraat 27--29 \\ 8061 GH Hasselt -%I [ info ] ach ja -%P -%I Een groep wordt als volgt gedefinieerd: -%I -%I < groep > -%I -%I [ logisch ] werkgroep -%I [ naam ] -%I [ lid ] ottenaf -%I [ lid ] hagenj -%I [ lid ] jonkerj -%I [ lid ] marlecvan - -% In eerste instantie leek het werken met % voor te skippen -% regels mij een aardige oplossing. Echter, het opslurpen van -% een heel blok tot \eindvankontakt gaat net zo snel. -% -% Hoewel het mechanisme inmiddels uitstekend is te combineren -% met het tekstblok-mechanisme, wordt vooralsnog deze snelle -% variant gebruikt. -% -% Om conflicten te voorkomen met reeds gedefinieerde commando's, -% zoals \naam, wordt enkele malen \bgroup..\egroup gebruikt. - -\newevery \everykontakt \EveryKontakt - -\def\stelkontaktenin[#1]% - {\getparameters[\??kt][#1]}% - -\def\presetkontaktwaarde#1% - {\setgvalue{\??kw#1}{}% - \setvalue{#1}##1% - {\setgvalue{\??kw#1}{##1}}} - -\def\resetkontaktwaarde#1% - {\setgvalue{\??kw#1}{}% - \setvalue{#1}##1% - {\skipkontakt}} - -\def\kontaktwaarde#1% - {\getvalue{\??kw#1}} - -\def\presetkontakt% - {\rawprocesscommalist% - [naam,letters,voornaam,titel,telefoon,telefax,postadres,info]% - \presetkontaktwaarde} - -\def\resetkontakt% - {\rawprocesscommalist% - [naam,letters,voornaam,titel,telefoon,telefax,postadres,info]% - \resetkontaktwaarde} - -\def\skipkontakt% - {\long\def\next##1\eindvankontakt% - {\def\next####1{\egroup}\next}% - \next} - -\newif\ifkontaktok - -\let\doemetkontakt=\gobbleoneargument - -\def\laadkontakten[#1]% - {\makerawcommalist[#1]\gevraagdekontakten - \resetkontakt - \doifelsenothing{\gevraagdekontakten} - {\def\gevraagdekontakten{\v!alles}% - \kontaktoktrue} - {\kontaktokfalse}% - \def\checkkontakt##1% - {\rawdoifinsetelse{##1}{\gevraagdekontakten}{\kontaktoktrue}{}}% - \def\lidvangroep##1% - {\doifsomething{##1} - {\rawprocesscommalist[##1]\checkkontakt}% - \ifkontaktok - \let\next=\presetkontakt - \else - \let\next=\skipkontakt - \fi - \next}% - \def\beginvankontakt##1% - {\bgroup - \ifkontaktok - \def\lidvangroep####1{}% - \let\next=\presetkontakt - \else - \checkkontakt{##1}% - \ifkontaktok - \def\lidvangroep####1{}% - \let\next=\presetkontakt - \else - \let\next=\relax - \fi - \fi - \next}% - \def\eindvankontakt##1% - {\relax - \egroup - \the\everykontakt - \doemetkontakt{##1}}% - \showmessage{\m!addresses}{1}{\gevraagdekontakten}% - \readsysfile{texadres.tao}{\showmessage{\m!addresses}{2}{(tao)}}{\relax}% - \readjobfile{texadres.tae}{\showmessage{\m!addresses}{3}{(tae)}}{\relax}} - -\protect - -\endinput diff --git a/tex/context/base/core-02b.tex b/tex/context/base/core-02b.tex deleted file mode 100644 index 52428d1ed..000000000 --- a/tex/context/base/core-02b.tex +++ /dev/null @@ -1,171 +0,0 @@ -%D \module -%D [ file=core-02b, -%D version=1997.03.31, -%D title=\CONTEXT\ Core Macros, -%D subtitle=2B (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. - -\writestatus{loading}{Context Extra Macros (b)} - -\unprotect - -%I n=Karakters -%I -%I Het is mogelijk bij het definieren van tabellen gebruik -%I te maken van speciale karakters: -%I -%I \starttabel[|l|c|r|] -%I ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄ¿ -%I ³ eerste ³ tweede ³ derde ³ -%I ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´ -%I ³ alfa ³ a ³ 1 ³ -%I ³ beta ³ b ³ 22 ³ -%I ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´ -%I ³ gamma ³ c ³ 333 ³ -%I ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÙ -%I \stoptabel -%I -%I Eventueel kunnen \starttabel en \stoptabel worden weggelaten. -%P -%I Naast \hoog en \laag kunnen (ook in de wiskunde-mode) de -%I karakters  en  worden gebruikt: m2, x{23} enz. -%P -%I De volgende hoge ascii-karakters worden vertaald: -%I -%I Ÿ bedrag geen haakjes nodig, wel spaties - -\newcount\row -\newcount\columns -\newcount\column - -\newif\iffullrow - -\def\firstrow% - {\ifintabel - \HL - \fi - \global\row=0\relax - \global\fullrowfalse} - -\def\nextrow% - {\global\advance\column by 1\relax - \ifnum\column=\columns - \global\fullrowtrue - \VL - \else - \iffullrow - \global\column=1\relax - \global\fullrowfalse - \global\advance\row by 1\relax - \ifnum\row=1 - \FR\VL - \else - \MR\VL - \fi - \else - \VL - \fi - \fi} - -\def\lastrow% - {\global\fullrowfalse - \ifnum\row=0 - \global\row=0\relax - \global\column=0\relax - \SR\HL - \else - \global\row=0\relax - \global\column=0\relax - \LR\HL - \fi} - -\def\firstcolumn% - {\global\column=0\relax - \global\columns=1} - -\def\nextcolumn% - {\global\advance\columns by 1\relax} - -\newif\iflocalintabel -\localintabelfalse - -\def\beginoftable% - {\ifintabel - \else\ifcase\columns\or - \or\starttabel[|l|]\HL - \or\starttabel[|l|l|]\HL - \or\starttabel[|l|l|l|]\HL - \or\starttabel[|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|l|l|l|l|l|l|l|]\HL - \or\starttabel[|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|]\HL - \fi - \global\localintabeltrue - \fi} - -\def\endoftable% - {\iflocalintabel - \stoptabel - \global\localintabelfalse - \fi} - -% \catcode`\Ú=\@@active \defÚ{\firstrow\firstcolumn} -% \catcode`\Ã=\@@active \defÃ{\lastrow} -% \catcode`\À=\@@active \defÀ{\lastrow} -% -% \catcode`\¿=\@@active \def¿{\nextcolumn} -% \catcode`\´=\@@active \def´{} -% \catcode`\Ù=\@@active \defÙ{\endoftable} -% -% \catcode`\Â=\@@active \defÂ{\nextcolumn} -% \catcode`\Å=\@@active \defÅ{} -% \catcode`\Á=\@@active \defÁ{} -% -% \catcode`\³=\@@active \def³{\beginoftable\nextrow} -% \catcode`\Ä=\@@active \defÄ{} - -\catcode`\Ú=\@@active \defÚ{\ifprocessingverbatim{ }\else\firstrow\firstcolumn\fi} -\catcode`\Ã=\@@active \defÃ{\ifprocessingverbatim\char`|\else\lastrow\fi} -\catcode`\À=\@@active \defÀ{\ifprocessingverbatim{ }\else\lastrow\fi} - -\catcode`\¿=\@@active \def¿{\ifprocessingverbatim{ }\else\nextcolumn\fi} -\catcode`\´=\@@active \def´{\ifprocessingverbatim\char`|\else\fi} -\catcode`\Ù=\@@active \defÙ{\ifprocessingverbatim{ }\else\endoftable\fi}% - -\catcode`\Â=\@@active \defÂ{\ifprocessingverbatim\char`-\else\nextcolumn\fi} -\catcode`\Å=\@@active \defÅ{\ifprocessingverbatim\char`|\else\fi} -\catcode`\Á=\@@active \defÁ{\ifprocessingverbatim\char`-\else\fi} - -\catcode`\³=\@@active \def³{\ifprocessingverbatim\char`|\else\beginoftable\nextrow\fi} -\catcode`\Ä=\@@active \defÄ{\ifprocessingverbatim\char`-\else\fi} - -\catcode`\=\@@active -\catcode`\=\@@active - -\def#1% - {\ifprocessingverbatim\char`^\relax#1\else\ifmmode^{#1}\else\hoog{#1}\fi\fi} - -\def#1% - {\ifprocessingverbatim\char`_\relax#1\ifmmode_{#1}\else\laag{#1}\fi\fi} - -\catcode`\Ÿ=\@@active - -\defŸ% - {\ifprocessingverbatim f\else\bedrag{}~\ignorespaces\fi} - -\protect - -\endinput diff --git a/tex/context/base/core-02d.tex b/tex/context/base/core-02d.tex deleted file mode 100644 index d667a8079..000000000 --- a/tex/context/base/core-02d.tex +++ /dev/null @@ -1,49 +0,0 @@ -%D \module -%D [ file=core-02d, -%D version=1997.03.31, -%D title=\CONTEXT\ Core Macros, -%D subtitle=2D (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. - -\writestatus{loading}{Context Extra Macros (d)} - -\unprotect - -\def\definieerfilegroep% - {\dodoubleargument\dodefinieerfilegroep} - -\def\dodefinieerfilegroep[#1][#2]% - {\getparameters - [\??fp#1] - [\c!file=#1, - \c!voor=, - \c!na=, - #2]% - \setvalue{\e!start#1}{\dostartfilegroep[#1]}} - -\def\dostartfilegroep% - {\dodoubleargument\dodostartfilegroep} - -\def\dodostartfilegroep[#1][#2]% - {\getvalue{\??fp#1\c!voor}% - \setvalue{\e!stop#1}{\dostopfilegroep[#1][#2]}% - \edef\!!stringa{\getvalue{\??fp#1\c!file}-#2}% - \@EA\dolaadfilegroep\@EA[\!!stringa]% - \getvalue{\e!start#1#2}} - -\def\dolaadfilegroep[#1-#2#3#4#5]% - {\readsysfile{#1-#2#3#4}{}{}} - -\def\dostopfilegroep[#1][#2]% - {\getvalue{\e!stop#1#2}% - \getvalue{\??fp#1\c!na}} - -\protect - -\endinput diff --git a/tex/context/base/core-buf.tex b/tex/context/base/core-buf.tex new file mode 100644 index 000000000..445abc564 --- /dev/null +++ b/tex/context/base/core-buf.tex @@ -0,0 +1,871 @@ +%D \module +%D [ file=core-buf, +%D version=2000.01.05, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Buffers and Blockmoves, +%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. + +% investigate etex's \readline and \scantokens + +\writestatus{loading}{Context Core Macros / Buffers and Blockmoves} + +\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 czech library: textblocks + title: textovyblok + 1: nova verze, je treba druhy beh + 2: zapisuji bloky do -- + 3: ctu bloky z -- + 4: je treba druhy beh + 5: -- neni skryto + 6: -- skryto a zpracovano + 7: -- skryto + 8: -- vysazeno + 9: -- nevysazeno + 10: -- nacteno a zpracovano + 11: -- nacteno a vysazeno + 12: -- preskoceno +\stopmessages + +\unprotect + +% PAS OP! + +\def\checknummer#1% + {\bgroup +%\message{\the\blocklevel}\wait + \ifdoingblocks + \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\maakvoorafgaandenummer[#1]% + {\bgroup +%\message{\the\blocklevel}\wait + \ifdoingblocks + \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} + +% \EveryPar% +% {\doglobal\newcounter\NOfLines} +% +% \EveryLine% +% {\doglobal\increment\NOfLines% +% \hskip-3em% +% \hbox to 3em{\hss\NOfLines\hskip1em}} + +\def\processnextbufferline#1#2#3% + {\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run + \convertargument#1 \to\next + \ifx\next\emptybufferline + \ifsegmentatebuffer \emptybufferlinetrue \fi + \def\next{#3}% + \else + \emptybufferlinefalse + \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}}}% + \fi + \next} + +\def\dostartbuffer% + {\bgroup + \obeylines % nodig, anders gaat 't fout als direct \starttabel (bv) + \doquadrupleempty\dodostartbuffer} + +\def\dodostartbuffer[#1][#2][#3][#4]% upward compatible + {\iffourthargument + \def\next{\dododostartbuffer[#1][#2][#3][#4]}% + \else + \def\next{\dododostartbuffer[][#1][#2][#3]}% + \fi + \next} + +\def\dododostartbuffer[#1][#2][#3][#4]% + {\showmessage{\m!systems}{15}{#2}% + \doifelsevalue{\??bu#1\c!alinea}{\v!ja} + {\segmentatebuffertrue} + {\doifnumberelse{\getvalue{\??bu#1\c!alinea}} + {\segmentatebuffertrue} + {\segmentatebufferfalse}}% + \doifelse{#4}{} + {\letbeundefined{\e!stop\e!buffer}% % \let\stopbuffer=\relax % \undefined + \@EA\@EA\@EA\convertargument\@EA\e!start\e!buffer\to\beginofblock % else a space + \@EA\@EA\@EA\convertargument\@EA\e!stop\e!buffer\to\endofblock + \let\processnextblockline=\processnextbufferline} + {\letbeundefined{#4}% \letvalue{#4}=\relax % \undefined + \@EA\convertargument\csname#3\endcsname\to\beginofblock + \@EA\convertargument\csname#4\endcsname\to\endofblock}% + \def\closeblock% + {\ifsegmentatebuffer + \immediate\write\tmpblocks{\string\stopbufferparagraph}% + \fi + \immediate\closeout\tmpblocks + \egroup + \getvalue{#4}}% + \doifelsenothing{#2} + {\immediate\openout\tmpblocks=\TEXbufferfile{\jobname}} + {\immediate\openout\tmpblocks=\TEXbufferfile{#2}}% + \ifsegmentatebuffer + \immediate\write\tmpblocks{\string\startbufferparagraph}% + \fi + \newcounter\nestedbufferlevel + \setupcopyblock + \let\writeoutblocks\gobbleoneargument + \copyblockline} + +\letvalue{\e!start\e!buffer}\dostartbuffer + +% \setbuffer[name]#2\endbuffer : saves to file #1.tmp + +\def\setbuffer[#1]#2\endbuffer% + {\immediate\openout\tmpblocks=\TEXbufferfile{#1}% + \convertargument#2\to\ascii + \immediate\write\tmpblocks{\ascii}% + \immediate\closeout\tmpblocks} + +\def\dobuffer#1[#2]#3% + {\def\dodobuffer##1% + {\showmessage{\m!systems}{#1}{##1}% + \beginrestorecatcodes + \doifdefinedelse{\??bu##1\c!nummer} + {#3{\TEXbufferfile{def-\getvalue{\??bu##1\c!nummer}}}{}{}} + {#3{\TEXbufferfile{##1}}{}{}}% + \endrestorecatcodes}% + \doifelsenothing{#2} + {\dodobuffer\jobname} + {\processcommalist[#2]\dodobuffer}} + +\def\haalbuffer% + {\dodoubleempty\dohaalbuffer} + +\def\dohaalbuffer[#1][#2]% + {\ifsecondargument + \dodohaalbuffer[#1][#2]% + \else + \dodohaalbuffer[][#1]% + \fi} + +\def\dodohaalbuffer[#1][#2]% + {\getvalue{\??bu#1\c!voor}% + \dobuffer{16}[#2]\readjobfile + \getvalue{\??bu#1\c!na}} + +\def\typebuffer% + {\dodoubleempty\dotypebuffer} + +\def\dotypebuffer[#1][#2]% + {\iffirstargument + \dobuffer{17}[#1]\typefile + \else + \dobuffer{17}[#2]\typefile + \fi} + +\def\stelbufferin% + {\dodoubleempty\dostelbufferin} + +\def\dostelbufferin[#1][#2]% + {\ifsecondargument + \getparameters[\??bu#1][#2]% + \else + \getparameters[\??bu][#1]% + \fi} + +\def\dodefinieerbuffer[#1]% + {\iffirstargument % else problems + \doglobal\increment\nofdefinedbuffers + \setevalue{\??bu#1\c!nummer}{\nofdefinedbuffers}% + \setvalue {\??bu#1\c!alinea}{\v!nee}% + \setevalue{\e!start#1}% + {\noexpand\dostartbuffer[#1][def-\nofdefinedbuffers][\e!start#1][\e!stop#1]}% + \setevalue{\e!haal#1}% + {\noexpand\dodohaalbuffer[#1][def-\nofdefinedbuffers]}% + \setevalue{\e!type#1}% + {\noexpand\dodotypebuffer[#1][def-\nofdefinedbuffers]}% + \fi} + +\def\definieerbuffer% + {\dosingleargument\dodefinieerbuffer} + +% TODO: no grouping due to sidefloats + +\expandafter \convertargument \gobbleoneargument @ \to \emptybufferline + +\newif\ifsegmentatebuffer +\newif\ifemptybufferline + +\def\skippedbufferparagraphs{0} + +\let\startbufferparagraph\relax +\let\stopbufferparagraph \par % \relax + +\newcount\currentbufferparagraph + +\def\getbufferparagraphs% + {\dodoubleempty\dogetbufferparagraphs} + +\def\dosetbufferoffset#1% + {\doifnumberelse{\getvalue{\??bu#1\c!alinea}} + {\currentbufferparagraph=-\getvalue{\??bu#1\c!alinea}} + {\currentbufferparagraph=0}% + \relax} + +\def\dogetbufferparagraphs[#1][#2]% + {\iffirstargument + \ifsecondargument + \dosetbufferoffset{#1}% + \doifelse{#2}{\v!alles} + {\def\startbufferparagraph{\normalbufferparagraph{#1}}} + {\def\startbufferparagraph{\filterbufferparagraph{#1}{#2}}}% + \def\stopbufferparagraph{\dostopbufferparagraph{#1}}% + \def\next{\getparagraphedbuffer[#1]}% + \else + \dosetbufferoffset\empty + \def\startbufferparagraph{\filterbufferparagraph{}{#1}}% + \def\stopbufferparagraph{\dostopbufferparagraph{}}% + \def\next{\getparagraphedbuffer[]}% + \fi + \else + \dosetbufferoffset\empty + \def\startbufferparagraph{\normalbufferparagraph{}}% + \def\stopbufferparagraph{\dostopbufferparagraph{}}% + \def\next{\getparagraphedbuffer[]}% + \fi + \next} + +\def\getparagraphedbuffer[#1]% + {\dobuffer{16}[#1]\readjobfile} + +\def\dostopbufferparagraph#1% + {\getvalue{\??bu#1\c!na}\par} + +\def\dostartbufferparagraph#1% + {\par\getvalue{\??bu#1\c!voor}} + +\def\normalbufferparagraph% + {\advance\currentbufferparagraph 1 + \ifnum\currentbufferparagraph>0 + \expandafter\dostartbufferparagraph + \else + \expandafter\gobbleoneargument + \fi} + +\def\filterbufferparagraph#1#2% + {\advance\currentbufferparagraph 1 + \ifnum\currentbufferparagraph>0 + \doifinsetelse{\the\currentbufferparagraph}{#2} + {\let\next\dostartbufferparagraph} + {\let\next\fakebufferparagraph}% + \else + \let\next\gobblebufferparagraph + \fi + \next{#1}} + +\long\def\gobblebufferparagraph#1#2\stopbufferparagraph% + {} + +\def\fakebufferparagraph#1% + {\bgroup + \def\stopbufferparagraph{\dostopbufferparagraph{#1}\egroup\egroup}% + \setbox\scratchbox=\vbox\bgroup\dostartbufferparagraph{#1}} + +\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} + +\let\blockstatus\empty + +\def\setblockcounters% + {\ifx\blockstatus\empty \else + \@EA\dosetblockcounters\@EA[\blockstatus]% + \fi} + +\def\getblockstatus#1% + {\dosetblklevel{\getvalue{\??by\@@bscriterium}}% + \doifblklevelelse[#1] + {\global\blockpermittedtrue} + {\global\blockpermittedfalse}% + \def\blockstatus{#1}} + +\def\setupblockparameters% + {\dodoubleargument\dosetupblockparameters} + +\def\dosetupblockparameters[#1][#2]% + {\getparameters[\??tb#1][#2]} + +\beginTEX + +\def\blockparameter#1#2% + {\csname\@EA\ifx\csname\??tb#1#2\endcsname\relax empty\else\??tb#1#2\fi\endcsname} + +\endTEX + +\beginETEX \ifcsname + +\def\blockparameter#1#2% + {\@EA\csname\ifcsname\??tb#1#2\endcsname\??tb#1#2\else empty\fi\endcsname} + +\endETEX + +\ifx\outblocks\undefined \newwrite\outblocks \fi +\ifx\inpblocks\undefined \newread \inpblocks \fi +\ifx\tmpblocks\undefined \newwrite\tmpblocks \fi +\ifx\blockbox \undefined \newbox \blockbox \fi + +\newif\ifcopyingblocks +\newif\ifvisible \visibletrue +\newif\ifblockpermitted +\newif\iftmpblockstarted +\newif\ifoldinbijlagen +\newif\ifdoingblocks + +\newcount\blocklevel \blocklevel=0 + +\def\setblocklevel#1% + {\global\advance\blocklevel by #11 + \ifnum\blocklevel>2\relax\doingblockstrue\else\doingblocksfalse\fi} + +\def\opentmpblock% + {\immediate\openout\tmpblocks=\TEXbufferfile{\f!utilityfilename\the\blocklevel}} + +\def\closetmpblock% + {\immediate\write\tmpblocks{}% een lege regel is handig voor \par commando's + \immediate\closeout\tmpblocks} + +\def\writetmpblock#1% + {\iftmpblockstarted + \ifsegmentatebuffer + \ifemptybufferline + \immediate\write\tmpblocks{\string\stopbufferparagraph }% + \immediate\write\tmpblocks{\string\startbufferparagraph}% + \else + \immediate\write\tmpblocks{#1}% + \fi + \else + \immediate\write\tmpblocks{#1}% + \fi + \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\else\expandafter\copynextline\fi}% + \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% + {\dostepwiserecurse{1}{255}{1}{\catcode\recurselevel=\@@other}% + \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 + \ifx\next\emptybufferline + \ifsegmentatebuffer \emptybufferlinetrue \fi + \def\next{#3}% + \else + \emptybufferlinefalse + \doifinstringelse{\endofblock}{\next} + {\def\next{#2}} + {\def\next{#3}}% + \fi + \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\@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% + {\let\opentmpblock\empty + \let\closetmpblock\empty + \let\writetmpblock\gobbleoneargument + \saveblock} + +\def\loadoneblock% + {\edef\blockfilename{\TEXbufferfile{\f!utilityfilename\the\blocklevel}}% + \setblocklevel+% + \readjobfile{\blockfilename}{}{}% + \setblocklevel-}% + +\def\dodefinieerblok[#1]% + {\passeerblok[#1]% + \handhaafblokken[#1]% + \stelblokin + [#1] + [\c!voor=\blanko, + \c!na=\blanko, + \c!binnen=, + \c!letter=, + \c!file=\jobname]} + +\def\definieerblok% + {\dosingleargumentwithset\dodefinieerblok} + +\def\dostelblokin[#1][#2]% + {\getparameters[\??tb#1][#2]} + +\def\stelblokin% + {\dodoubleargumentwithset\dostelblokin} + +\def\passeerblok[#1]% + {\setvalue{\s!thisisblock#1}##1[##2]% + {\skipblock{#1}}} + +\def\doverbergblok[#1][#2][#3]% + {\doifassignmentelse{#3} + {\def\next{\dodoverbergblok[#1][#2][][#3]}} + {\def\next{\dodoverbergblok[#1][#2][#3][]}}% + \next} + +\def\dodoverbergblok[#1][#2][#3][#4]% + {\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}{#4}}% + \saveblock{#1}{#3#4}}% + \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#4}}}% + {\showwarning{\m!textblocks}{7}{\bloktitel}% + \def\next% + {\def\dobeforeblock####1####2% + {\begingroup + \globaldefs=-1\relax}% + \def\doafterblock####1####2% + {\endgroup}% + \copyblock{#1}{#3#4}}}% + \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#2% + {\blockpermittedtrue % ? + \bgroup % before \c!voor (think of: \c!voor=\startitemize) + \dosetupblockparameters[#1][#2]% voor 'voor'? + \getvalue{\??tb#1\c!voor}% + \doattributes{\??tb#1}\c!letter\c!kleur{}% + \visibletrue + \catcode`\^^M=\@@endofline\relax + \getvalue{\??tb#1\c!binnen}% + \loadoneblock + \par + \getvalue{\??tb#1\c!na} + \egroup} + +\def\dohandhaafblok[#1][#2][#3]% + {\doifassignmentelse{#3} + {\def\next{\dodohandhaafblok[#1][#2][][#3]}} + {\def\next{\dodohandhaafblok[#1][#2][#3][]}}% + \next} + +\def\dodohandhaafblok[#1][#2][#3][#4]% + {\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}{#4}}% + \else + \showwarning{\m!textblocks}{9}{\bloktitel}% + \fi + \saveblock{#1}{#3#4}} + +\def\dohandhaafblokken[#1][#2]% + {\def\docommando##1% + {\setvalue{\e!beginvan##1}% + {\bgroup\obeylines\dotripleempty\dohandhaafblok[##1][#2]}}% + \processcommalist[#1]\docommando} + +\def\handhaafblokken% + {\dodoubleempty\dohandhaafblokken} + +\newconditional\processblockstatus +\newconditional\dummyblockstatus +\newconditional\blockassignmentstatus + +\def\dodogebruikblok#1#2#3#4% + {\getblockstatus{#2}% + \ifblockpermitted + \setfalse\dummyblockstatus + \doifassignmentelse{#3} + {\settrue \blockassignmentstatus} + {\setfalse\blockassignmentstatus}% + \doifelsenothing{#4} + {\edef\bloktitel{#1}} + {\ifconditional\blockassignmentstatus + \edef\bloktitel{#1}% + \else + \doifnotcommon{#3}{#4} + {\ifconditional\processblockstatus + \settrue\dummyblockstatus + \else + \global\blockpermittedfalse + \fi}% + \edef\bloktitel{#1:#3}% + \fi}% + \else + \edef\bloktitel{#1}% + \fi + \ifblockpermitted + \setblocklevel+% + \ifconditional\blockassignmentstatus \else + \doifinset{-}{#3}{\settrue\dummyblockstatus}% + \fi + \ifconditional\dummyblockstatus + \showwarning{\m!textblocks}{10}{\bloktitel}% + \setvalue{\s!thiswasblock#1}% + {\par + \egroup + \setblocklevel-}% + \def\next% + {\setbox0=\vbox\bgroup + \ifconditional\blockassignmentstatus + \dosetupblockparameters[#1][#3]% + \fi}% + \else + \showwarning{\m!textblocks}{11}{\bloktitel}% + \setvalue{\s!thiswasblock#1}% + {\par + \getvalue{\??tb#1\c!na}% + \egroup + \setblocklevel-}% + \def\next% + {\bgroup + \ifconditional\blockassignmentstatus + \dosetupblockparameters[#1][#3]% + \fi + \getvalue{\??tb#1\c!voor}% + \doattributes{\??tb#1}\c!letter\c!kleur{}% + \visibletrue + \getvalue{\??tb#1\c!binnen}}% + \fi + \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\dodogebruikblokken[#1][#2]% + {\def\docommando##1% + {\dogebruikblok[##1][#2]}% + \processcommalist[#1]\docommando + \dogetcommalistelement1\from#1\to\commalistelement + \doifdefined{\??tb\commalistelement\c!file} + {\loadallblocks{\getvalue{\??tb\commalistelement\c!file}}}% + \endgroup} + +\def\dogebruikblokken% + {\begingroup + \doassign[\??bs][\c!criterium=\v!alles]% + \dodoubleempty\dodogebruikblokken} + +\def\gebruikblokken% + {\setfalse\processblockstatus\dogebruikblokken} + +\def\verwerkblokken% + {\settrue \processblockstatus\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}} + +% the buffer mechanism handles nesting, add some switch + +\setvalue{\e!start\e!verbergen}% + {\dostartbuffer[buf-\nofpostponedblocks] + [\e!start\e!verbergen][\e!stop\e!verbergen]} + +\stelbufferin + [\c!alinea=\v!nee, + \c!voor=, + \c!na=] + +\protect \endinput diff --git a/tex/context/base/core-con.tex b/tex/context/base/core-con.tex index 7acd94912..b378db9d9 100644 --- a/tex/context/base/core-con.tex +++ b/tex/context/base/core-con.tex @@ -246,40 +246,29 @@ \def\getdayoftheweek#1#2#3% {\bgroup - \!!counta=\ifcase#2\relax - 0\or 0\or 31\or 59\or 90\or120\or151\or - 181\or212\or243\or273\or304\or334\or365\fi - \advance\!!counta by #1\relax - \ifnum\!!counta<31 - \DoMod#3by4to\!!countb - \ifnum\!!countb=0 - \!!doneafalse - \DoMod#3by100to\!!countb - \ifnum\!!countb=0 \else \!!doneatrue \fi - \DoMod#3by400to\!!countb - \ifnum\!!countb=0 \!!doneatrue \fi - \else - \!!doneafalse - \fi - \else - \!!doneafalse + \!!counta=#3\relax + \advance\!!counta -1 + \!!countb=\!!counta + \multiply\!!countb 365 + \advance\!!countb \ifcase#2\relax + 0 \or 0 \or 31 \or 59 \or 90 \or120 \or151 \or + 181 \or212 \or243 \or273 \or304 \or334 \or365 \fi + \advance\!!countb #1\relax + \ifnum#2>2 + \doifleapyearelse{#3}{\advance\!!countb 1}{}\relax \fi - \!!countb=#3\relax - \multiply\!!countb by 365 - \advance\!!counta by \!!countb - \DoDiv#3by4to\!!countb - \advance\!!counta by \!!countb - \DoDiv#3by400to\!!countb - \advance\!!counta by \!!countb - \DoDiv#3by100to\!!countb - \advance\!!counta by -\!!countb - \if!!donea - \advance\!!counta by -1 - \fi - \advance\!!counta by -1 - \DoMod\!!counta by7to\!!counta - \advance\!!counta by 1 - \@EA\egroup\@EA\normalweekday\the\!!counta\relax} + \!!countc=\!!counta + \DoDiv\!!countc by4to\!!countc + \advance\!!countb \!!countc + \!!countc=\!!counta + \DoDiv\!!countc by100to\!!countc + \advance\!!countb -\!!countc + \!!countc=\!!counta + \DoDiv\!!countc by400to\!!countc + \advance\!!countb \!!countc + \DoMod\!!countb by7to\!!countb + \advance\!!countb 1 + \@EA\egroup\@EA\normalweekday\the\!!countb\relax} \def\dayoftheweek#1#2#3% {\getdayoftheweek{#1}{#2}{#3}\doconvertday{\normalweekday}} @@ -440,6 +429,8 @@ %D \haalbuffer %D \stopregels +\def\kenmerkdatumpatroon{j,mm,dd} % jj,mm,dd changed at januari 1-1-2000 + \def\complexcurrentdate[#1]% {\bgroup \let\labellanguage=\currentlanguage @@ -455,7 +446,7 @@ j=>\the\normalyear, y=>\the\normalyear, w=>\betweendates\dayoftheweek\normalday\normalmonth\normalyear, - \v!kenmerk=>{\complexcurrentdate[jj,mm,dd]}, + \v!kenmerk=>\expanded{\complexcurrentdate[\kenmerkdatumpatroon]}, \v!dag=>\betweendates\the\normalday, \v!maand=>\betweendates\month\normalmonth, \v!MAAND=>\betweendates\MONTH\normalmonth, diff --git a/tex/context/base/core-des.tex b/tex/context/base/core-des.tex new file mode 100644 index 000000000..c28867ae2 --- /dev/null +++ b/tex/context/base/core-des.tex @@ -0,0 +1,860 @@ +%D \module +%D [ file=core-des, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Descriptions, +%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. + +\writestatus{loading}{Context Core Macros / Descriptions} + +\unprotect + +% 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#4% + {\doattributes + {\??dd#1}\c!kopletter\c!kopkleur + {\getvalue{\??dd#1\c!commando}% NAAR BUITENSTE NIVEAU ! + {\begstrut\getvalue{\??dd#1\c!tekst}#4\endstrut}}% + \rawreference{\s!def}{#2}{#3}} + +\setvalue{@@definitie\v!links}#1% + {\@@definitiehang{#1}\@@definitielinkspure\@@definitielinkshang} + +\setvalue{@@definitie\v!rechts}#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}}% copy ? +% \@@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\@@definitielinkspure#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \leftskip\@@leftdefinitieskip + \rightskip\@@rightdefinitieskip + \advance\leftskip by \!!widtha + \@@makedefinitiepurebox{#1}\raggedright + \advance\leftskip by \!!widthb + \llap + {\hbox to \leftskip + {\hskip\@@leftdefinitieskip + \copy\@@definitiebox\hss}}% + \@@dodefinitie{#1}} + +\def\@@definitierechtspure#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \leftskip\@@leftdefinitieskip + \rightskip\@@rightdefinitieskip + \advance\rightskip by \!!widtha + \@@makedefinitiepurebox{#1}\raggedleft + \rlap + {\hskip\hsize + \hskip-\leftskip + \hskip-\rightskip + \copy\@@definitiebox + \hskip\@@rightdefinitieskip}% + \advance\rightskip by \!!widthb + \@@dodefinitie{#1}} + +\def\@@makedefinitiepurebox#1#2% + {\setbox\@@definitiebox=\vtop + {\mindermeldingen + \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 + {\mindermeldingen + \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 + \mindermeldingen + \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}}}% + +%\setvalue{@@definitie\v!boven}#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}} + +\setvalue{@@definitie\v!boven}#1[#2]#3% + {%\pagina[\v!voorkeur]% % Weg ermee! + %\dosomebreak{\goodbreak}% % Dit is beter en nodig! + \dohandelpaginaafX1 % En dit moet het maar worden. + \@@dostartdefinitie{#1}[#2]{\let\\=\space#3}% + \copy\@@definitiebox\par + \nobreak + \getvalue{\??dd#1\c!tussen}% + \nobreak + \@@dodefinitie{#1}} + +\setvalue{@@definitie\v!inmarge}#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \inmarge{\unhcopy\@@definitiebox}% + \@@dodefinitie{#1}} + +\setvalue{@@definitie\v!inlinker}#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \inlinker{\unhcopy\@@definitiebox}% + \@@dodefinitie{#1}} + +\setvalue{@@definitie\v!inrechter}#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \inrechter{\unhcopy\@@definitiebox}% + \@@dodefinitie{#1}} + +\def\@@definitieaanelkaarpassend#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \unhcopy\@@definitiebox + \hskip\!!widthb % toegevoegd + \@@dodefinitie{#1}} + +\def\@@definitieaanelkaarruim#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \unhcopy\@@definitiebox + \hskip\!!widthb \!!plus .5\!!widthb \!!minus .25\!!widthb + \@@dodefinitie{#1}} + +\def\@@definitieaanelkaarbreed#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% + \hbox to \!!widtha + {\unhcopy\@@definitiebox\hss}% + \hskip\!!widthb + \ignorespaces + \@@dodefinitie{#1}} + +\setvalue{@@definitie\v!aanelkaar}#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}} + +% \setvalue{@@definitie\v!hangend}#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}} + +\setvalue{@@definitie\v!hangend}#1[#2]#3% + {\@@dostartdefinitie{#1}[#2]{#3}% % adds \c!marge to \leftskip + \advance\leftskip by -\leftskipadaption + \ifdim\leftskipadaption=\!!zeropoint + \leftskipadaption=1.5em % just some default + \ifnum\insidedefinition=1 \ifdim\leftskip>\!!zeropoint + \leftskipadaption=\leftskip + \fi \fi + \fi + \ifnum\insidedefinition=1 + \advance\leftskip by \leftskipadaption + \fi + \hskip-\leftskipadaption + \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 +% \mindermeldingen +% \def\\{\crcr}% +% % \doattributes +% % {\??dd#1}\c!kopletter\c!kopkleur +% % {\doifelsevalue{\??dd#1\c!plaats}{\v!aanelkaar} +% % {\@@definitiewoord{#1}[#2]{#3}{#3}} +% % {\@@definitiewoord{#1}[#2]{#3}{\vbox{\halign{\strut##\hss\cr#3\crcr}}}}}}% +% \doifelsevalue{\??dd#1\c!plaats}{\v!aanelkaar} +% {\@@definitiewoord{#1}[#2]{#3}{#3}} +% {\@@definitiewoord{#1}[#2]{#3}{\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}\c!kopletter\c!kopkleur +% {\getvalue{\??dd#1\c!tekst}\getvalue{\??dd#1\c!monster}}}} +% {\!!widthb}% +% %\getvalue{\??dd#1\s!do\c!lokaal}% +% \parindent=\!!zeropoint\relax +% \noindent +% \ignorespaces} + +%D A new key 'titeluitlijnen' in definitions. + +\chardef\insidedefinition=0 + +\let\@@leftdefinitieskip \!!zeropoint +\let\@@rightdefinitieskip\!!zeropoint + +\def\@@dostartdefinitie#1[#2]#3% + {\getvalue{\??dd#1\c!voor}% + \begingroup + \doadaptleftskip{\getvalue{\??dd#1\c!marge}}% + \showcomposition + \setbox\@@definitiebox=\hbox + {\forgetall + \mindermeldingen + \def\\{\crcr}% + \doifelsevalue{\??dd#1\c!plaats}{\v!aanelkaar} + {\@@definitiewoord{#1}[#2]{#3}{#3}} + {\@@definitiewoord{#1}[#2]{#3}{\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}\c!kopletter\c!kopkleur + {\getvalue{\??dd#1\c!tekst}\getvalue{\??dd#1\c!monster}}}} + {\!!widthb}% + %\getvalue{\??dd#1\s!do\c!lokaal}% + \parindent=\!!zeropoint\relax + \doifelsevalue{\??dd#1\c!titeluitlijnen}{\v!nee} + {\edef\@@leftdefinitieskip {\the\leftskip }% + \edef\@@rightdefinitieskip{\the\rightskip}} + {\ifcase\insidedefinition + \edef\@@leftdefinitieskip {\the\leftskip }% + \edef\@@rightdefinitieskip{\the\rightskip}% + \fi}% + \ifcase\insidedefinition + \chardef\insidedefinition=1 + \or + \chardef\insidedefinition=2 + \fi + \noindent + \ignorespaces} + +\def\@@stopdefinitie#1% + {\par + \dostopattributes + \endgroup + \egroup % temporary hack + \getvalue{\??dd#1\c!na}% + \doifvalue{\??dd#1\c!springvolgendein}{\v!nee}{\noindentation}} + +\def\@@dodefinitie#1% + {\dostartattributes{\??dd#1}\c!letter\c!kleur{}% + \ignorespaces} + +\def\@@somedefinitie#1[#2]#3% + {\bgroup % temporary hack + %\BeforePar{\getvalue{\??dd#1}[#2]{#3}}% + \BeforePar{\executedoordefinitie{#1}[#2]{#3}}% + \AfterPar{\@@stopdefinitie{#1}}% + \GetPar} + +\def\@@startsomedefinitie#1[#2]#3% + {\bgroup % temporary hack + %\BeforePar{\getvalue{\??dd#1}[#2]{#3}}% + \BeforePar{\executedoordefinitie{#1}[#2]{#3}}% + \GotoPar} + +\def\dodosteldoordefinierenin[#1][#2]% + {\getparameters[\??dd#1][#2]} + +\def\dosteldoordefinierenin[#1][#2]% % beter: \iffirstargument + {\ConvertToConstant\doifelse{#2}{} + {\dodosteldoordefinierenin[][#1]} + {\dodoubleargumentwithset\dodosteldoordefinierenin[#1][#2]}} + +\def\steldoordefinierenin% + {\dodoubleempty\dosteldoordefinierenin} + +\def\executedoordefinitie#1[#2]% + {\ExpandAfter\doifundefined{@@definitie\getvalue{\??dd#1\c!plaats}} + {\setvalue{\??dd#1\c!plaats}{\v!links}}% + \getvalue{@@definitie\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{#1}% + {\dodoubleempty\@@definitie[#1]}% + \setvalue{\e!start#1}% + {\dodoubleempty\@@startdefinitie[#1]}% + \setvalue{\e!stop#1}% + {\@@stopdefinitie{#1}}}% + +\def\@@startdefinitie[#1][#2]% + {\doifelsevalue{\??dd#1\s!do\c!status}{\v!start} + {\def\next{\@@startsomedefinitie{#1}[#2]{}}} + {\def\next{\dowithwargument{\@@startsomedefinitie{#1}[#2]}}}% + \next} + +\def\@@definitie[#1][#2]% + {\doifelsevalue{\??dd#1\s!do\c!status}{\v!start} + {\def\next{\@@somedefinitie{#1}[#2]{}}} + {\def\next{\dowithwargument{\@@somedefinitie{#1}[#2]}}}% + \next} + +\def\doordefinieren% + {\dodoubleemptywithset\dodoordefinieren} + +\def\showdnpuretext#1% + {\strut\getvalue{\??dd#1\c!tekst}} % geen spatie + +\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#7=#1[#2]#3#4 van definitie + +%\def\special@@definitiewoord#1#2#3#4[#5]#6#7% +% {\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}\c!kopletter\c!kopkleur +% {\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 +% \edef\!!stringa{\showdnpuretext{#2#1}}% nog eens testen binnen \expanded +% \expanded{\doattributes{\??dd#1}\noexpand\c!kopletter\noexpand\c!kopkleur +% {\!!stringa}}% +% \rawreference{\s!num}{#5}{}% +% \fi} + +\def\special@@definitiewoord#1#2#3#4[#5]#6#7% + {\strut + \doifelsevalue{\??dd#1\c!nummer}{\v!nee} + {\!!doneafalse} + {\doifelse{#5}{-} + {\!!doneafalse} + {\!!doneatrue}}% + \chardef\definitiekoppeling=0 + \iflocation + \doifvaluesomething{\??dd#1\c!koppeling} + {\processaction % genereert > of < + [\getvalue{\??dd#1\c!koppelwijze}] + [ \v!lokaal=>\chardef\definitiekoppeling=1, % old: default + \v!globaal=>\chardef\definitiekoppeling=2]}% new: global crosslinking + \fi + \stelnummerin % the number is called indirectly + [\getvalue{\??dd#1\??dd\c!nummer}] + [\c!sectienummer=\getvalue{\??dd#1\c!sectienummer}]% + \if!!donea + \getvalue{\e!volgende#2#1}% + \iflocation + \bgroup + \setvalue{\??dd#1\c!sectienummer}{\v!ja}% + \protectconversion + %\maakvoorafgaandenummer[#1]% + \maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]% + \ifcase\definitiekoppeling \or + \xdef\internaldoornummer{#3{#1}}% + \rawreference{\s!num}{#1:\internaldoornummer}{}% + \or + \xdef\internaldoornummer{\countervalue{\??dd\c!koppeling#1}}% + \rawreference{\s!num}{#1:\internaldoornummer}{}% + \fi + \egroup + \fi + %\maakvoorafgaandenummer[#1]% + \maakvoorafgaandenummer[\getvalue{\??dd#1\??dd\c!nummer}]% + \hbox + {\let\normalkap\relax % sorry, uppercase causes troubles + \doattributes % \nocase primitive needed + {\??dd#1}\c!kopletter\c!kopkleur +{\getvalue{\??dd#1\c!commando}% + {\showdntext{#2#1}% + \domakednnummer#3{#1}% + \getvalue{\??dd#1\c!afsluiter}}% +}% + \iflocation\ifcase\definitiekoppeling \else + \edef\localconnection{\getvalue{\??dd#1\c!koppeling}:\internaldoornummer}% + \doifreferencefoundelse{\localconnection} + {\in[\localconnection]}{}% genereert > of < + %\in[\localconnection]% + \fi\fi}% + \doifnot{#5}{-}{\rawreference{\s!num}{#5}{#3{#1}}}% + \else % Why was this strange expansion needed? + \hbox + {\edef\!!stringa{\showdnpuretext{#2#1}}% nog eens testen binnen \expanded + \expanded{\doattributes{\??dd#1}\noexpand\c!kopletter\noexpand\c!kopkleur +{\noexpand\getvalue{\??dd#1\c!commando}% + {\!!stringa}}% +}% + \doifnot{#5}{-}{\rawreference{\s!num}{#5}{}}}% + \fi} + +\def\@@ddsetsubsubsubnummer#1% + {\edef\doornummer{\getvalue{\??dd#1\??dd\c!nummer}}% + \setnummer[\v!sub\v!sub\v!sub\doornummer]} + +\def\@@ddsetsubsubnummer#1% + {\@@ddresetsubsubsubnummer{#1}% + \setnummer[\v!sub\v!sub\doornummer]} + +\def\@@ddsetsubnummer#1% + {\@@ddresetsubsubnummer{#1}% + \setnummer[\v!sub\doornummer]} + +\def\@@ddsetnummer#1% + {\@@ddresetsubnummer{#1}% + \setnummer[\doornummer]} + +\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]% + \doifdefined{\??dd#1\c!start} + {\stelnummerin[#1][\c!start=\getvalue{\??dd#1\c!start}]}% + \stelnummerin[#1][\c!conversie=\getvalue{\??dd#1\c!conversie}]} + +\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% + {\makecounter{\??dd\c!koppeling#1}% new: global cross linking + \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=,\c!koppelwijze=\v!lokaal,#4]}% + {\doifelsenothing{#4} + {\getparameters[\??dd#3#1]% + [\c!tekst=#1,\??dd\c!nummer=#1,\c!conversie=, + \c!links=,\c!rechts=,\c!koppeling=,\c!koppelwijze=,#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,\c!koppelwijze]% + \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!set#3#1}% + {\dosetdoornummer[#1][#3]}% + \setvalue{\s!reset#3#1}% + {\doresetdoornummer[#1][#3]}% + \setvalue{\e!volgende#3#1}% + {\dotripleempty\dovolgendedoornummer[#1][#3]}} + +\def\dovolgendedoornummer[#1][#2]% + {\pluscounter{\??dd\c!koppeling#1}% new: global crosslinking + \getvalue{\??dd\c!volgende#2\c!nummer}{#1}}% + +\def\doresetdoornummer[#1][#2]% + {\getvalue{\??dd\s!reset#2\c!nummer}{#1}}% + +\def\dosetdoornummer[#1][#2]% + {\getvalue{\??dd\s!set#2\c!nummer}{#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} + +% 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 + \dosomebreak{\goodbreak}% \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}\c!kopletter\c!kopkleur + {\getvalue{\??ds#1\c!monster}\getvalue{\??ds#1\c!scheider}}} + {\getvalue{\??ds#1\c!afstand}}% + \advance\!!widtha by \getvalue{\??ds#1\c!afstand}% + \setbox2=\hbox to \!!widtha + {\doattributes + {\??ds#1}\c!kopletter\c!kopkleur + {\strut + \getvalue{\??ds#1\c!tekst}% + \hss + \getvalue{\??ds#1\c!scheider}% + \hskip\getvalue{\??ds#1\c!afstand}}}% + \parindent\!!zeropoint + \hskip#2\!!widtha\indent\box2% + \hangindent#3\!!widtha + \doattributes{\??ds#1}\c!letter\c!kleur{}% #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,\c!afstand]% + \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} + +\def\dodoorlabel[#1][#2]% + {\getvalue{\s!number#1\c!voor}% + \bgroup + \doif{\getvalue{\s!number#1\c!plaats}}{\v!marge} + {\setvalue{\s!number#1\c!plaats}{\v!inmarge}}% + \doattributes{\s!number#1}\c!kopletter\c!kopkleur + {\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]}} + +\def\doorlabelen% + {\dodoubleargumentwithset\dodoorlabelen} + +\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=] + +\steldoorspringenin + [\c!letter=\v!normaal, + \c!kopletter=\v!normaal, + \c!kleur=, + \c!kopkleur=, + \c!breedte=\v!passend, + \c!tekst=\unknown, + \c!monster=, + \c!voor=\blanko, + \c!na=\blanko, + \c!afstand=1em, + \c!scheider={ :}] + +\protect \endinput diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex index 5ae559434..954f88c12 100644 --- a/tex/context/base/core-fig.tex +++ b/tex/context/base/core-fig.tex @@ -232,12 +232,11 @@ %D Should be a special! \def\dogetfiguresizetex#1#2#3#4#5#6% file pagina ... - {\ifx\@@efextension\c!tex \else \ifx\@@efextension\c!tmp \else - \doifnumberelse{\@@efextension} - {\executedfalse} - {\ExpandBothAfter\doifinset{\@@efextension}{\figuretypes} - {\executedfalse}}% - \fi \fi + {\doifinset{\@@efextension}{\c!tex,\c!tmp} + {\doifnumberelse{\@@efextension} + {\executedfalse} + {\ExpandBothAfter\doifinset{\@@efextension}{\figuretypes} + {\executedfalse}}}% \ifexecuted \global\setbox\foundexternalfigure=\vbox {\insidefloattrue @@ -273,22 +272,20 @@ \executedfalse % nothing decent found \fi\fi \fi\fi - \ifexecuted\ifx\@@efcurrenttype\c!mps\ifcase\EPScreator - \executedfalse % searching for mps, eps found, but no valid mps - \fi\fi\fi + \ifexecuted % searching for mps, eps found, but no valid mps + \doif{\@@efcurrenttype}{\c!mps}{\ifcase\EPScreator\executedfalse\fi}% + \fi % until here \ifexecuted \chardef\figurestatus=3 - \ifx\@@efcurrenttype\c!eps - \ifcase\EPScreator + \doifelse{\@@efcurrenttype}{\c!eps} + {\ifcase\EPScreator \@@eftrace{found}% - \else - \let\@@efcurrenttype\c!mps - \@@eftrace{mps found}% - \fi - \else - \@@eftrace{found}% - \fi + \else + \let\@@efcurrenttype\c!mps + \@@eftrace{mps found}% + \fi} + {\@@eftrace{found}}% \geteparameters % e ! [\??ep] [\c!x=\the\!!widtha,\c!y=\the\!!heighta, @@ -335,21 +332,20 @@ \def\getfiguredimensionsC% {\ifcase\figurestatus\ifrunutilityfile\ifcase\figurefilemode\else - \ifx\@@efcurrenttype\c!tex\else - \doiffileelse{\@@efcurrentfile} - {\edef\@@effilenametype{\@@effilename.\@@efcurrenttype}% - \@@eftrace{running texutil on \@@effilenametype}% - \def\@@efloadname{\f!utilityfilename.\f!temporaryextension}% - \executesystemcommand - {texutil --fig --out=\@@efloadname\space\@@effilenametype}% - \@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}% - \pushendofline - \let\presetfigure=\presetfigureB + \doif{\@@efcurrenttype}{\c!tex} + {\doiffileelse{\@@efcurrentfile} + {\edef\@@effilenametype{\@@effilename.\@@efcurrenttype}% + \@@eftrace{running texutil on \@@effilenametype}% + \def\@@efloadname{\f!utilityfilename.\f!temporaryextension}% + \executesystemcommand + {texutil --fig --out=\@@efloadname\space\@@effilenametype}% + \@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}% + \pushendofline + \let\presetfigure=\presetfigureB \readsetfile{.}{\@@efloadname}\relax\relax - \popendofline - \@@eftrace{\ifcase\figurestatus not \fi found}} - {}% - \fi + \popendofline + \@@eftrace{\ifcase\figurestatus not \fi found}} + {}}% \fi\fi\fi} \def\presetfigureB[#1][#2]% @@ -563,32 +559,42 @@ \def\docalculatefigurescales#1#2#3#4% {\dimen0=#1\relax % #1 = new 1-value \dimen2=#2\relax % #2 = old 1-value - \divide\dimen2 by \!!thousand\relax - \divide\dimen0 by \dimen2\relax - \figxsca=\dimen0\relax % x scale - \figysca=\dimen0\relax % y scale + \divide\dimen2 by \!!thousand + \divide\dimen0 by \dimen2 + \figxsca=\dimen0 % x scale + \figysca=\dimen0 % y scale \dimen2=#4\relax % #4 = old 2-value - \divide\dimen2 by \!!thousand\relax - \multiply\dimen2 by \dimen0\relax - #3=\dimen2\relax} % #3 = new 2-value + \divide\dimen2 by \!!thousand + \multiply\dimen2 by \dimen0 + #3=\dimen2 } % #3 = new 2-value \def\docalculatefigurescale#1#2#3% {\dimen0=#1\relax % #1 = new value \dimen2=#2\relax % #2 = old value - \divide\dimen2 by \!!thousand\relax - \divide\dimen0 by \dimen2\relax - #3=\dimen0\relax} % #3 = schaal + \divide\dimen2 by \!!thousand + \divide\dimen0 by \dimen2 + #3=\dimen0 } % #3 = schaal \def\doapplyfigurescale#1#2#3% {#1=#2\relax - \ifcase0\@@efschaal\relax#3=\!!thousand\else#3=\@@efschaal\fi\relax - \divide#1 by \!!thousand\relax - \multiply#1 by #3\relax} + \ifcase0\@@efschaal\relax + #3=\!!thousand + \else + #3=\@@efschaal + \fi + \relax % important ! + \ifnum#3=\!!thousand\else + \divide#1 by \!!thousand + \multiply#1 by #3\relax + \fi} \def\doapplyfiguresize% {\ifinner \teksthoogte=\vsize \scratchdimen=\teksthoogte + \else\ifinpagebody + \teksthoogte=\vsize + \scratchdimen=\teksthoogte \else \ifdim\pagegoal<\maxdimen \ifdim\pagetotal<\pagegoal @@ -600,7 +606,7 @@ \else \scratchdimen=\teksthoogte \fi - \fi + \fi\fi \doifelsenothing{\@@efhoogte} {\edef\@@efvsize{\the\scratchdimen}} {\let\@@efvsize=\@@efhoogte}% @@ -610,9 +616,10 @@ \def\convertfigureinsertscale#1#2#3#4% {\scratchdimen=#1\relax - %\advance\scratchdimen by .0005pt - \divide\scratchdimen by \!!thousand - \multiply\scratchdimen by #3\relax + \ifnum#3=\!!thousand\else % better 1000 100 10 ranges, evt round 2sp + \divide\scratchdimen by \!!thousand + \multiply\scratchdimen by #3\relax + \fi \scratchdimen=-\scratchdimen % beter hier - dan in driver \edef#2{\number\scratchdimen}% \scratchdimen=#3pt @@ -667,15 +674,14 @@ \c!factor=,\c!hfactor=,\c!bfactor=, \c!achtergrond=,\c!achtergrondkleur=,\c!achtergrondraster=\@@rsraster, \c!hoek=,\c!straal=.5\korpsgrootte,\c!kader=\v!uit]% - \ifx\@@efextension\c!mov \presetfiguremov \fi + \doif{\@@efextension}{\c!mov}{\presetfiguremov}% #1[#4][#5][#6]% - \ifx\@@eftype\c!mov \presetfiguremov \fi - \ifx\@@eftype\v!buffer - \ifx\@@efextension\empty - \let\@@efextension\c!tmp - \fi - \let\@@eftype\c!tex - \fi + \doif{\@@eftype}{\c!mov}{\presetfiguremov}% + \doif{\@@eftype}{\v!buffer} + {\ifx\@@efextension\empty + \let\@@efextension\c!tmp + \fi + \let\@@eftype\c!tex}% \processaction [\@@efextension] [ \c!tex=>\let\@@eftype\c!tex, @@ -692,12 +698,11 @@ \doifobjectfoundelse{FIG}{\@@efobjectname}{\donetrue}{\donefalse}} {\donefalse}} {\donefalse}}% - \ifx\@@effilename\jobname - \@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes - \let\@@efextension=\empty - \showmessage{\m!figures}{9}{\@@effilename,\jobsuffix}% - \donefalse - \fi + \doif{\@@effilename}{\jobname} + {\@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes + \let\@@efextension=\empty + \showmessage{\m!figures}{9}{\@@effilename,\jobsuffix}% + \donefalse}% \ifdone \getobjectdimensions{FIG}{\@@efobjectname}% \geteparameters % e ! @@ -806,12 +811,13 @@ {\addtocommalist\v!preview\@@efoptions}% \doif{\@@efherhaal}{\v!ja} {\addtocommalist\v!herhaal\@@efoptions}% -\ifx\@@eftype\c!mps\ifcase\EPSspecial\else\ifinobject\else - \@@eftrace{special mps, object forced}% - \doglobal\increment\forcedMPSobject - \edef\@@efobjectname{\c!mps::\forcedMPSobject}% - \let\@@efobject\v!ja -\fi\fi\fi +\doif{\@@eftype}{\c!mps} + {\ifcase\EPSspecial\else\ifinobject\else + \@@eftrace{special mps, object forced}% + \doglobal\increment\forcedMPSobject + \edef\@@efobjectname{\c!mps::\forcedMPSobject}% + \let\@@efobject\v!ja + \fi\fi}% \global\let\lastfigureobjectname\@@efobjectname \doifelse{\@@efobject}{\v!nee} {\donefalse} @@ -884,18 +890,19 @@ \let\lastfigureobjectname\empty \def\calculateexternalscreenfigure[#1][#2][#3][#4][#5][#6]% - {\ifx\@@efscherm\empty\else\ifx\@@efobject\v!nee\else - \doifobjectssupportedelse - {\doifspecialavailableelse\doregisterfigure - {\bgroup - #1[#4][#5][#6]% - \doregisterfigure{FIG}{\lastfigureobjectname}% - \let\@@ef@@scherm\@@efscherm - \calculateexternalfigure[#1][\@@ef@@scherm][\@@ef@@scherm][#4,\c!scherm=][#5][#6]% - \egroup} - {}} - {}% - \fi\fi} + {\ifx\@@efscherm\empty\else + \doifnot{\@@efobject}{\v!nee} + {\doifobjectssupportedelse + {\doifspecialavailableelse\doregisterfigure + {\bgroup + #1[#4][#5][#6]% + \doregisterfigure{FIG}{\lastfigureobjectname}% + \let\@@ef@@scherm\@@efscherm + \calculateexternalfigure[#1][\@@ef@@scherm][\@@ef@@scherm][#4,\c!scherm=][#5][#6]% + \egroup} + {}} + {}}% + \fi} \let\dowithfigure\relax @@ -903,12 +910,15 @@ \let\naturalfigurewidth =\!!zeropoint \let\figureheight =\!!zeropoint \let\figurewidth =\!!zeropoint +\def\noffigurepages {1} \def\getfiguredimensions% {\dodoubleempty\dogetfiguredimensions} +\gdef\noffigurepages{\nofinsertpages} + \def\dogetfiguredimensions[#1][#2]% - {{\let\immediate\relax % very dirty but prevents flushing + {{\let\immediate\relax % very dirty but prevents flushing, will change \setbox0=\hbox{\externalfigure[#1][#2,\c!scherm=,\c!object=\v!nee]}}} \presetlocalframed[\??ef] @@ -961,10 +971,6 @@ \getparameters[\??ep][##5]}% \getvalue{\??ef\??ef#1}} -\def\getnumberoffigurepages#1% - {\gdef#1{1}% the default - \dogetnofinsertpages#1} - % \useexternalfigure[alpha][koe] % \useexternalfigure[beta] [koe] [breedte=1cm] % \useexternalfigure[gamma][koe][alpha] @@ -1098,6 +1104,8 @@ \pagina \getfiguredimensions [#1][#2] + \getparameters + [\??ex][\c!offset=\!!zeropoint,#2] \scratchdimen=\@@exoffset \dimen0=\figurewidth \advance\dimen0 2\scratchdimen\edef\figurewidth {\the\dimen0} \dimen0=\figureheight\advance\dimen0 2\scratchdimen\edef\figureheight{\the\dimen0} @@ -1393,47 +1401,6 @@ %D %D \showsetup{setupclipping} -% \def\doclip[#1]% nb top->bottom left->right -% {\bgroup -% \getparameters[\??cp][#1]% -% \dowithnextbox -% {\ifdim\@@cpbreedte>\!!zeropoint -% \dimen0=\@@cpbreedte -% \dimen4=\@@cphoffset -% \else -% \dimen0=\wd\nextbox -% \divide\dimen0 \@@cpnx -% \dimen4=\@@cpx\dimen0 -% \advance\dimen4 -\dimen0 -% \fi -% \relax % sure -% \ifdim\@@cphoogte>\!!zeropoint -% \dimen2=\@@cphoogte -% \dimen6=\ht\nextbox -% \advance\dimen6 by -\@@cpvoffset -% \advance\dimen6 by -\dimen2 -% \else -% \dimen2=\ht\nextbox -% \divide\dimen2 \@@cpny -% \dimen6=-\@@cpy\dimen2 -% \advance\dimen6 \ht\nextbox -% \fi -% \setbox\nextbox=\hbox -% {\hskip-\dimen4\lower\dimen6\box\nextbox}% -% \wd\nextbox=\!!zeropoint -% \ht\nextbox=\!!zeropoint -% \dp\nextbox=\!!zeropoint -% \setbox\nextbox=\hbox -% {\dostartclipping{\@@cpmp}{\number\dimen0}{\number\dimen2}% -% \box\nextbox -% \dostopclipping}% -% \wd\nextbox=\dimen0 -% \ht\nextbox=\dimen2 -% \dp\nextbox=\!!zeropoint -% \box\nextbox -% \egroup}% -% \hbox} - \def\doclip[#1]% nb top->bottom left->right {\bgroup \getparameters[\??cp][#1]% @@ -1484,11 +1451,37 @@ \def\setupclipping% {\dodoubleargument\getparameters[\??cp]} +%D defining sound tracks: +%D +%D \starttypen +%D \useexternalsoundtrack[label][file] +%D \stoptypen +%D +%D associated actions: StartSound StopSound PauseSound ResumeSound +%D +%D Todo: like external figures, also search on path, +%D although, they need to be present ar viewing time, so ... + +\def\useexternalsoundtrack% + {\dodoubleargument\douseexternalsoundtrack} + +\def\douseexternalsoundtrack[#1][#2]% + {\setgvalue{\??sd#1}{#2}} + +\def\checksoundtrack#1% + {\iflocation + \doifdefined{\??sd#1}{\doifvaluesomething{\??sd#1} + {\doinsertsoundtrack{\getvalue{\??sd#1}}{#1}{}% + \setgvalue{\??sd#1}{}}}% + \fi} + +\setexecutecommandcheck {startsound} \checksoundtrack + \appendtoks \setupexternalfigures[\c!optie=\v!leeg] \to \everyfastmode \appendtoks \runMPgraphicsfalse \to \everyfastmode \appendtoks \insertMPgraphicsfalse \to \everyfastmode -\appendtoks \flushMPgraphics \to \everylastshipout +\appendtoks \flushMPgraphics \to \everygoodbye % \everylastshipout \setupexternalfigures [\c!optie=, diff --git a/tex/context/base/core-fil.tex b/tex/context/base/core-fil.tex index 987fcb2c7..c67aa1702 100644 --- a/tex/context/base/core-fil.tex +++ b/tex/context/base/core-fil.tex @@ -189,6 +189,39 @@ \def\convertMPcolorfile% {\bufferprefix metacmyk.tmp} +%D Temporarily here: + +\def\definieerfilegroep% + {\dodoubleargument\dodefinieerfilegroep} + +\def\dodefinieerfilegroep[#1][#2]% + {\getparameters + [\??fp#1] + [\c!file=#1, + \c!voor=, + \c!na=, + #2]% + \setvalue{\e!start#1}{\dostartfilegroep[#1]}} + +\def\dostartfilegroep% + {\dodoubleargument\dodostartfilegroep} + +\def\dodostartfilegroep[#1][#2]% + {\getvalue{\??fp#1\c!voor}% + \setvalue{\e!stop#1}{\dostopfilegroep[#1][#2]}% + \edef\!!stringa{\getvalue{\??fp#1\c!file}-#2}% + \@EA\dolaadfilegroep\@EA[\!!stringa]% + \getvalue{\e!start#1#2}} + +\def\dolaadfilegroep[#1-#2#3#4#5]% + {\readsysfile{#1-#2#3#4}{}{}} + +\def\dostopfilegroep[#1][#2]% + {\getvalue{\e!stop#1#2}% + \getvalue{\??fp#1\c!na}} + +%D This will be perfected / changed / weeded. + \protect \endinput diff --git a/tex/context/base/core-fld.tex b/tex/context/base/core-fld.tex index 2d1b0b7eb..33b77f9ad 100644 --- a/tex/context/base/core-fld.tex +++ b/tex/context/base/core-fld.tex @@ -120,7 +120,7 @@ \@@fdformatteer,\@@fdvalideer,\@@fdbereken}} \def\presetpushfield% - {\edef\@@FieldValues{{\@@FieldValues}}% makes sure {a,b,c} is passed + {%\edef\@@FieldValues{{\@@FieldValues}}% makes sure {a,b,c} is passed \presetfieldsymbols[\@@FieldValues]% \dopresetpushfield {\@@FieldName} @@ -273,18 +273,32 @@ \newif\ifdefinemainfield \definemainfieldfalse +%D We used to have: +%D +%D \starttyping +%D \def\getmainfieldkids#1% +%D {\let\@@FieldKids\empty +%D \ifdefinemainfield +%D \definetwopasslist{fld:#1}% defined by system +%D \doloop +%D {\gettwopassdata{fld:#1}% +%D \iftwopassdatafound +%D %\addtocommalist\twopassdata\@@FieldKids +%D \appendtocommalist\twopassdata\@@FieldKids +%D \else +%D \exitloop +%D \fi}% +%D \fi} +%D \stoptyping +%D +%D The next alternative is much faster when we have a field +%D with thousands of clones, somthing not that imaginary. + \def\getmainfieldkids#1% {\let\@@FieldKids\empty \ifdefinemainfield - \definetwopasslist{fld:#1}% defined by system - \doloop - {\gettwopassdata{fld:#1}% - \iftwopassdatafound - %\addtocommalist\twopassdata\@@FieldKids - \appendtocommalist\twopassdata\@@FieldKids - \else - \exitloop - \fi}% + \definerawpasslist{fld:#1}% runtime defined by system + \moverawpasslist{fld:#1}\@@FieldKids \fi} \newcounter\nofmainfieldkids @@ -314,7 +328,7 @@ \savecurrentvalue\totalnumberoffields\numberoffields \fi} -\appendtoks \savenumberoffields \to \everylastshipout +\appendtoks \savenumberoffields \to \everybye % \everylastshipout % \def\presetfieldreferences% % {\ifnum\totalnumberoffields>0 diff --git a/tex/context/base/core-fnt.tex b/tex/context/base/core-fnt.tex index b6c11dbd3..a7ce7f68f 100644 --- a/tex/context/base/core-fnt.tex +++ b/tex/context/base/core-fnt.tex @@ -258,6 +258,41 @@ %D %D \typebuffer +%D \macros +%D {stretcheduppercase} +%D +%D A convenient alternative is: +%D +%D \starttypen +%D \stretcheduppercase{Is this what you like?} +%D \stoptypen +%D +%D \typebuffer +%D +%D this one uses fixed skips and kerns. +%D +%D \startvoorbeeld +%D \haalbuffer +%D \stopvoorbeeld +%D +%D The default skip can be set with: + +\def\stretchedspaceamount{.25em} + +\unexpanded\def\stretcheduppercase#1% + {\bgroup + \the\everyuppercase + \uppercase{\def\textstring{#1}}% + \ifdim\stretchedspaceamount>\!!zeropoint + \def\textkern{\kern \stretchedspaceamount}% + \def\textskip{\hskip\stretchedspaceamount}% + \@EA\processtokens\@EA\relax\@EA\textskip\@EA\relax\@EA + {\@EA\textkern\@EA\textkern\@EA}\@EA{\textstring}% + \else + \textstring + \fi + \egroup} + %D \macros %D {underbar,underbars, %D overbar,overbars, @@ -425,6 +460,62 @@ \def\setupunderbar% {\dodoubleargument\getparameters[\??on]} +%D \macros +%D {low, high, lohi} +%D +%D Although \TEX\ is pretty well aware of super- and +%D subscripts, its mechanism is mainly tuned for math mode. +%D The next few commands take care of script texts both modes. +%D +%D \startbuffer +%D The higher\high{one goes} the lower\low{one drops}, or\lohi{yes}{no}? +%D \stopbuffer +%D +%D \typebuffer +%D +%D \getbuffer +%D +%D Note the different placement of \type {\lohi}, where we +%D need a bit more space. The implementation looks a bit +%D fuzzy, since some \type {\fontdimen}'s are involved to +%D determine the optimal placement. + +\def\dodohighlow% + {\ifx\fontsize\empty + \ifmmode + \ifnum\fam<0 \tx \else \holamathfont \fi + \else + \tx + \fi + \else + \tx + \fi} + +\def\dohighlow#1#2#3#4#5% + {\bgroup + \scratchdimen= + \ifdim\fontdimen5\textfont2=1ex\fontdimen#2\textfont2\else#3ex\fi + \advance\scratchdimen by #4ex + \kern.1ex + \setbox\scratchbox=\hbox{#1\scratchdimen\hbox{\dodohighlow#5}}% + \ht\scratchbox\strutheight + \dp\scratchbox\strutdepth + \box\scratchbox + \egroup} + +\unexpanded\def\high{\dohighlow\raise{14}{.86}{0}} +\unexpanded\def\low {\dohighlow\lower{16}{.48}{0}} + +\unexpanded\def\lohi#1#2% + {\hbox + {\setbox4=\hbox{\dohighlow\lower{16}{.48}{.1}{#1}}% + \setbox6=\hbox{\dohighlow\raise{14}{.86}{.1}{#2}}% + \ifdim\wd4<\wd6 + \wd4=\!!zeropoint\box4\box6 + \else + \wd6=\!!zeropoint\box6\box4 + \fi}} + %D This module has only a few setups: \setupunderbar diff --git a/tex/context/base/core-gen.tex b/tex/context/base/core-gen.tex index 9ecded535..3876db095 100644 --- a/tex/context/base/core-gen.tex +++ b/tex/context/base/core-gen.tex @@ -135,10 +135,10 @@ \def\assignvalue#1#2#3#4#5% {\processaction [#1] - [ \v!klein=>\def#2{#3}, - \v!middel=>\def#2{#4}, - \v!groot=>\def#2{#5}, - \s!unknown=>\def#2{#1}]} + [ \v!klein=>\edef#2{#3}, + \v!middel=>\edef#2{#4}, + \v!groot=>\edef#2{#5}, + \s!unknown=>\edef#2{#1}]} %D \macros %D {assignwidth} diff --git a/tex/context/base/core-grd.tex b/tex/context/base/core-grd.tex index e1dcd4b9d..f5518afec 100644 --- a/tex/context/base/core-grd.tex +++ b/tex/context/base/core-grd.tex @@ -57,7 +57,7 @@ %D calculated from the dimensions of a~(. One can disble the %D correction by calling \type {\offbaselinecorrection}. %D -%D When visulaize the first example looks like: +%D When visualize the first example looks like: %D %D {\showbaselinecorrection\haalbuffer[1]} %D @@ -260,8 +260,7 @@ \newif\iftracegridsnapping \newif\ifshowfuzzyskips -\def\snaptogrid#1% #1 == \hbox or \vbox - {\ifgridsnapping\expandafter\dosnaptogrid\expandafter#1\fi} +\chardef\@@alignsnap=0 \def\tracesnapping% {\iftracegridsnapping @@ -279,9 +278,25 @@ \vl\currentsnap\vl}}% \fi} -\def\dosnaptogrid% +\def\snaptogrid% [#1]#2 -> #2 == \hbox|\vbox + {\dosingleempty\dosnaptogrid} + +\def\dosnaptogrid[#1]% + {\ifgridsnapping + \iffirstargument\verplaatsopgrid[#1]\fi\expandafter\dodosnaptogrid + \fi} + +\def\dodosnaptogrid% {\dowithnextbox {\bgroup + \ifcase\@@alignsnap\else % 1=top 2=high 3=middle 4=low + \getnoflines{\ht\nextbox} + \setbox\nextbox=\vbox to \noflines\lineheight + {\ifnum\@@alignsnap=1 \kern\lineheight\kern-\topskip\fi + \ifnum\@@alignsnap>2 \vfill\fi + \box\nextbox + \ifnum\@@alignsnap<4 \vfill\fi} + \fi \forgetall \par \ifvbox\nextbox @@ -364,6 +379,7 @@ \fi \extrasnapreset \enablepresnapcorrection + \global\chardef\@@alignsnap0 \egroup}} \def\snaptomathgrid% probably not working ok @@ -456,6 +472,7 @@ \def\doverplaatsopgrid[#1]% {\ifgridsnapping + \global\chardef\@@alignsnap0 \processaction [#1] [ \v!boven=>\gridwarning+\positiveextrasnap\extrasnapbefore, @@ -464,6 +481,11 @@ -\v!boven=>\gridwarning-\negativeextrasnap\extrasnapbefore, -\v!onder=>\gridwarning-\negativeextrasnap\extrasnapafter, -\v!beide=>\negativeextrasnap\extrasnaparound, + \v!pagina=>\global\chardef\@@alignsnap1, % topskip + \v!hoog=>\global\chardef\@@alignsnap2, + \v!midden=>\global\chardef\@@alignsnap3, + \v!laag=>\global\chardef\@@alignsnap4, + \v!reset=>\positiveextrasnap\extrasnapreset, \s!default=>\positiveextrasnap\extrasnaparound, \s!unknown=>\positiveextrasnap\extrasnapreset]% \fi} 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 diff --git a/tex/context/base/core-itm.tex b/tex/context/base/core-itm.tex new file mode 100644 index 000000000..702c5fe5d --- /dev/null +++ b/tex/context/base/core-itm.tex @@ -0,0 +1,583 @@ +%D \module +%D [ file=core-itm, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Itemize, +%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. + +\writestatus{loading}{Context Core Macros / Itemize} + +\startmessages dutch library: layouts + 9: momenteel maximaal -- niveaus in opsommingen +\stopmessages + +\startmessages english library: layouts + 9: currently no more than -- levels in itimezations +\stopmessages + +\startmessages german library: layouts + 9: z.Z. nicht mehr als -- Niveaus in Posten +\stopmessages + +\startmessages czech library: layouts + 9: aktualne ne vice nez -- urovne/urovni vyctu +\stopmessages + +\unprotect + +% - meerdere niveaus (moet niet moeilijk zijn) +% - instellingen in macro +% - \defineitemize +% - [0] voor start op 0 + +\newif\ifsubsom \subsomfalse +\newif\ifsymsom \symsomfalse +\newif\ifkopsom \kopsomfalse +\newif\ifsomintro \somintrofalse +\newif\ifsomautointro \somautointrofalse +\newif\ifoptimizeitems \optimizeitemstrue +\newif\ifpackeditems \packeditemsfalse +\newif\iffirstlist \firstlistfalse +\newif\ifparagraphitems \paragraphitemsfalse + +\newcounter \itemcolumndepth + +\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!letter,\c!marletter,\c!symletter,\c!kopletter, + \c!kleur,\c!markleur,\c!symkleur,\c!kopkleur, + \c!kopvoor,\c!kopna,\c!voor,\c!tussen,\c!na, + \c!afsluiter,\c!plaatsafsluiter,\c!inspringen, + \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}]% + \dorecurse{\maxitemlevel}{\setnextitemlevel\recurselevel}% + \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#4]% * permits [2] + {\processaction + [#2#3#4] + [ \v!opelkaar*=>\packitems, + \v!vanelkaar*=>\packeditemsfalse, + \v!intro*=>\somintrotrue, + \v!autointro*=>\somautointrotrue, + \v!ruim*=>{\doassign[\??op#1][\c!factor=1]}, + #2#3*\v!ruim*=>{\doassign[\??op#1][\c!factor=#2#3]}, + #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!los*=>\optimizeitemsfalse, + \v!alinea*=>{\paragraphitemstrue + \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#3*\v!aanelkaar*=>{\doassign[\??op#1][\c!factor=-#2#3]}, + #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]}]} +% {\dorecurse{\maxitemlevel}{\ExpandFirstAfter\dodododostelopsommingin[\recurselevel][#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} + +% PAS OP: ook 'opelkaar' en zo worden getest, nog eens afvangen! + +\def\setitemmark#1% % en pas op: resets \docommando + {\doifsymboldefinedelse{#1} + {\setxvalue{\??op\c!symbool\s!global\itemlevel}{#1}% + \setgvalue{\??op\c!symbool\s!local\itemlevel}{?}% + \def\listitem{\symbol[#1]}% + \let\docommando\gobbleoneargument} + {\doifconversiondefinedelse{#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}% + \let\docommando\gobbleoneargument} + {\let\listitem\empty}}} + +%\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\calculatelistwidth#1#2% + {#2=\getvalue{\??op#1\c!afstand}\relax + \ifnum\getvalue{\??op#1\c!factor}>0 + \ifdim#2=\!!zeropoint #2=.5em\fi + \fi + \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 + \dosetraggedcommand{\getvalue{\??op\itemlevel\c!uitlijnen}}\raggedcommand + \doifvaluesomething{\??op\itemlevel\c!inspringen} + {\expanded{\stelinspringenin[\getvalue{\??op\itemlevel\c!inspringen}]}}% + \doifinset{\v!kolommen}{#1}% + {\ifbinnenkolommen\else\ifnum\itemcolumndepth=0 + \global\let\itemcolumndepth\itemlevel + \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, % netter \??op\itemlevel\c!n + \c!hoogte=, + \c!lijn=\v!uit, + \c!balanceren=\v!ja, + \c!uitlijnen=\v!nee]% + \fi\fi}% + \doifinsetelse{\v!intro}{#1} + {\somintrotrue} + {\somintrofalse}% + \doglobal\increment\noflists + \let\currentlist=\noflists + \newcounter\noflistelements + \kopsomfalse + \subsomfalse + \symsomfalse + \let\marsymbol=\relax + \global\let\somdestination=\empty + \def\symsymbol{}% + \def\som% + {\dosom}% + \def\but[##1]% + {\gdef\somdestination{##1}% + \dosom}% + \def\nop% + {\sym{\strut}\strut}% + \definecomplexorsimple\its + \setvalue{\v!mar}##1% + {\def\marsymbol% + {\llap + {\doattributes{\??op\itemlevel}\c!marletter\c!markleur{##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}\c!symletter\c!symkleur{##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}}}}% + \setvalue{\v!its}% + {\getvalue{\v!ran}% + {\dorecurse{\getvalue{\??op\itemlevel\c!items}}{\listitem\hss}% + \unskip}}% + \setvalue{\v!ran}##1% + {\getvalue{\v!sym}% + {\calculatelistwidth{\itemlevel}{\dimen0}% + \hbox to \dimen0 + {##1\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}% \noexpand, else problems in non-etex with chinese + %{\edef\@@opsymbool{\getvalue{\??op\c!symbool\s!global\itemlevel}}% + {\edef\@@opsymbool{\noexpand\getvalue{\??op\c!symbool\s!global\itemlevel}}% + \getvalue{\??op\v!verder\itemlevel}} + %{\edef\@@opsymbool{\getvalue{\??op\itemlevel\c!symbool}}% + {\edef\@@opsymbool{\noexpand\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 + \ifparagraphitems + \ifnum\itemlevel>1 \doassign[\??op\itemlevel][\c!tussen=]\fi + \else\ifpackeditems + \doassign[\??op\itemlevel][\c!tussen=]% + \fi\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 + \ifnum\itemcolumndepth=0 \dolistreference \fi % beware ! + \iffirstlist \else \endgroup \fi % toegevoegd, eerste \som opent groep + \ifnum\itemcolumndepth=\itemlevel\relax + \stopkolommen + \doglobal\newcounter\itemcolumndepth + \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\ifbinnenkolommen\else00\fi\relax} % +5 + +\def\dolistitem% evt aantal items opslaan per niveau, scheelt zoeken + {\par + \ignorespaces + \increment\noflistelements + \ifnum\itemcolumndepth=0\relax\ifoptimizeitems + \ifnum\noflistelements=1 % tgv bv kolommen/nesting + \findtwopassdata{\s!list}{\noflists:}% % wordt soms de volgorde + \fi % verstoord, vandaar \find + \iftwopassdatafound + \ifnum\twopassdata=3 + \ifnum\noflistelements>1 + \dosomebreak\somnobreak + \fi + \else\ifnum\twopassdata>3 + \ifnum\noflistelements=2 + \ifsomintro + \dosomebreak\nobreak + \else + \dosomebreak\somnobreak + \fi + \else\ifnum\twopassdata=\noflistelements\relax + \dosomebreak\somnobreak + \else\ifnum\noflistelements>2 + \dosomebreak\sombreak + \else + \ifsomintro\else\dosomebreak\sombreak\fi + \fi\fi\fi + \fi\fi + \fi + \fi\fi + \noindent + \ifkopsom + \setbox8=\hbox + {\doattributes{\??op\itemlevel}\c!kopletter\c!kopkleur{\listitem}}% + \else\ifsymsom + \setbox8=\hbox{\symsymbol}% + \else + \setbox8=\hbox + {\doattributes{\??op\itemlevel}\c!letter\c!kleur{\listitem}}% + \fi\fi + \doifsomething{\somdestination} + %{\setbox8=\hbox{\naar{\copy8}[\somdestination]}}% + {\setbox8=\hbox{\naar{\box8}[\somdestination]}}% + \global\let\somdestination=\empty + \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}}% problems with \uchar + {\noexpand\getvalue{\??op\c!symbool\s!local\itemlevel}}% + \kopsomfalse + \subsomfalse + \symsomfalse + \EveryPar{\ignorespaces}% + \ignorespaces} + +\def\complexdosom[#1]% + {\par + \ignorespaces + \doadvanceitem + \ifnum\itemcolumndepth=0\relax\ifnum\noflistelements>0\relax + \dosomebreak\nobreak + \fi\fi + \iffirstlist + \firstlistfalse + \begingroup + \ifcase\itemlevel + \or % 1 + \ifnum\itemcolumndepth=0\relax + \ifsomintro\dosomebreak\nobreak\fi + \getvalue{\??op1\c!voor}% + \ifsomintro\dosomebreak\nobreak\fi + \fi + \else % 2 en hoger + \ifparagraphitems \else + \let\previtemlevel=\itemlevel + \decrement\previtemlevel + \getvalue{\??op\previtemlevel\c!tussen}% = itemlevel-1 + \fi + \fi + \else + \itemuse\c!tussen + \fi + \ignorespaces + \dolistitem + \ifpackeditems + \stelwitruimtein[\v!geen]% + \fi + \itemuse\c!binnen + \marsymbol + \let\marsymbol=\relax + \doifsomething{#1} + {\doifnot{\itemreference}{?} + {\bgroup + \protectconversion + \rawreference{\s!lst}{#1}{\itemreference}% + \egroup}}% + \strut % added 11-08-99 + \ignorespaces} + +\def\complexsom[#1]#2\par% todo: no two pass data + {\startopsomming[#1] + \complexdosom[]\ignorespaces\begstrut#2\unskip\endstrut\par + \stopopsomming} + +\definecomplexorsimpleempty\som +\definecomplexorsimpleempty\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}\c!kopletter\c!kopkleur +% {\ignorespaces#2}}\par +% \ifpackeditems\else\itemuse\c!kopna\fi +% \dosomebreak\nobreak +% \noindentation} + +\def\complexdokop[#1]#2\par% % beter in \complexdosom hangen met een if + {\iffirstlist\else\dosomebreak\allowbreak\fi + \ifpackeditems\else\itemuse\c!kopvoor\fi + \iffirstlist\ifsomintro\else\ifcase\itemlevel % incr in \complexdosom + %\dosomebreak{\pagina[\v!voorkeur]}% geen \goodbreak ! \allowbreak testen + \dosomebreak\allowbreak + \fi\fi\fi + \complexdosom[#1]{\doattributes{\??op\itemlevel}\c!kopletter\c!kopkleur + {\ignorespaces#2}}\par + \dosomebreak\nobreak + \ifpackeditems\else\itemuse\c!kopna\fi + \dosomebreak\nobreak + \noindentation} + +\def\complexkop[#1]#2\par#3\par% + {\startopsomming[#1]% + \complexdokop[]\ignorespaces#2\par#3\par + \stopopsomming} + +\definecomplexorsimpleempty\kop +\definecomplexorsimpleempty\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} + +\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!inspringen=, % untouched if empty + \c!kleur=, + \c!letter=, % kan tzt weg + \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] + +\protect \endinput diff --git a/tex/context/base/core-lst.tex b/tex/context/base/core-lst.tex new file mode 100644 index 000000000..a9e4d4142 --- /dev/null +++ b/tex/context/base/core-lst.tex @@ -0,0 +1,889 @@ +%D \module +%D [ file=core-lst, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Lists, +%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. + +\writestatus{loading}{Context Core Macros / Lists} + +\unprotect + +% \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\doschrijfnaarlijst#1#2#3#4% + {\doifvalue{\??li#1\c!status}{\v!start} + {\begingroup + \convertexpanded{\??li#1}{#3}\asciilistentry + \makesectionformat + \doifelse{\@@nmstatus}{\v!start} + {\def\dopaginanummer{\noexpand\pagenumber}} + {\def\dopaginanummer{0}}% + % niet waterdicht, wat te doen met figuren en zo + % first hack: scheelt rommel, second hack: alleen koppen + \ExpandBothAfter\rawdoifinsetelse{#1}{\crossdocumentelements} + {\doif{\@@sectionlevel\@@sectie}{0}{\autocrossdocumentfalse}} + {\autocrossdocumentfalse}% + % blijft nog wat zwakjes + \ifautocrossdocument + \bgroup + \thisisdestination{#1::\sectionformat}% + \@EA\setsectieenkoppeling\@EA{#1}% + \edef\currentlevel{\@@sectionlevel\@@sectie}% + \def\docommando##1% + {\def\dodocommando####1% + {\setsectieenkoppeling{####1}% + \def\level{\@@sectionlevel\@@sectie}% + \ifnum\level>\currentlevel + \expanded{\definereference[##1::####1][\v!geen]}% + \else\ifnum\level=\currentlevel + \expanded{\definereference[##1::####1][##1::{####1::\sectionformat}]}% + \fi\fi}% + \processcommacommand[\crossdocumentelements]\dodocommando}% + \processcommacommand[\crossdocumentreferences]\docommando + \egroup + \else + \thisisnextinternal{#1}% + \fi + \edef\schrijfwegnaarlijst% + {\writeutilitycommand% + {\listentry% + {#1}% + {\nextinternalreference}% + {#2}% + {\asciilistentry}% + {\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\lijstwidth{2em}} + +\def\@@livariantb% nr - tit - fill - pag + {\def\lijstfill{\hfill}% + \def\lijstskip{5em}% + \def\lijstwidth{2em}} + +\def\@@livariantc% nr - tit - dots - pag + {\def\lijstfill{\leaders\hbox to .5em{\hss.\hss}\hfill\hskip.5em}% + \def\lijstskip{5em}% + \def\lijstwidth{0pt}} + +\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% + {\def\geenlijst##1{\unknown}% + \setvalue{#1\c!tussen}{\dotussenlijst{#1}}% + \setvalue{#1\c!lijst}{\dolijstelement{#1}}} + +\def\dodoresetlijst#1% + {\let\geenlijst\empty + \setvalue{#1\c!tussen}{\gobblefourarguments{#1}}% + \setvalue{#1\c!lijst}{\gobblesixarguments{#1}}} + +\let\geenlijst\empty + +\def\dodefinieerlijst[#1][#2][#3]% + {\presetlocalframed[\??li#1]% + \getparameters + [\??li#1] + [\c!hoogte=\v!ruim, + \c!diepte=\v!ruim, + \c!offset=0.25em, + \c!maxbreedte=, + \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!tussen=, + \c!symbool=, + \c!interactie=\v!sectienummer, + \v!deel\v!nummer=\v!ja, % nodig ? % v + \c!label=\v!nee, + \c!afstand=\!!zeropoint, + \c!scheider=]% + \ConvertToConstant\doifinstringelse{=}{#2} + {\getparameters[\??li#1][#2]} + {\ConvertToConstant\doifnot{#2}{} + {\copyparameters % interactie ? + [\??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,\c!tussen,\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 + \dogetcommalistelement1\from#1\to\firstlistelement + \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 + \dosetlistmode} + +\def\dosetlistmode% + {\iflijstgeplaatst + \enablemode [\systemmodeprefix\v!lijst]% + \else + \disablemode[\systemmodeprefix\v!lijst]% + \fi} + +\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% kan iets efficienter met \ifdone + {\doifvalue{\??li#1\c!label}{\v!ja}{\leftlabeltext{#1}}% + \strut\splitlistsymbol\getvalue{\??li#1\c!scheider}% + \doifvalue{\??li#1\c!label}{\v!ja}{\rightlabeltext{#1}}}]} + +\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}% + {\def\dosomelijstelement{\dodofreevlijstelement}} + +\setvalue{dodolijstelement\v!vertikaal}% + {\def\dosomelijstelement{\dodofreevlijstelement}} + +\setvalue{dodolijstelement\v!horizontaal}% + {\def\dosomelijstelement{\dodofreehlijstelement}} + +\setvalue{dodolijstelement\v!commando}% + {\let\dosomelijstelement\dodocommandlijstelement} + +% 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\newlineinlist{\space} + +\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 + \setfullsectionnumber{\??li#1}% + \dosetlistsymbol{#1}{#3}% + \dosomelijstelement{#1}{#2}{#3}{#4}{#5}{#6}% + \global\utilitydonetrue} + {}} + +\def\dolistattributes#1#2#3% + {\doifvaluesomething{\??li#1#3} + {\setupinteraction[\c!kleur=,\c!contrastkleur=]}% + \doattributes{\??li#1}{#2}{#3}} + +\def\dodocommandlijstelement#1#2#3#4#5#6% + {\doifdefinedelse{\??li#1\c!commando} + {\getvalue{\??li#1\c!commando} + {#3}{#4}{\paginaprefix\??li#1[#5]\translatednumber[#5]}} + {[#1: #3 - #4 - \paginaprefix\??li#1[#5]\translatednumber[#5]]}} + +\def\dodofreelijstelement#1#2#3#4#5#6#7#8% + {\def\makelijstelement##1##2% + {\hbox + {\doifelsevalue{\??li#1\c!interactie}{##1} + {\setbox0=\hbox{\showcontrastlocation{\??ia}{#6}{##2}}% + \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\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]}}} + {#7% + \vbox + {\forgetall + \makelijstelement\v!alles + {\makelijstelement\v!sectienummer + {\dolistattributes{#1}\c!nummerletter\c!nummerkleur + {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}% + \makelijstelement\v!tekst + {\dolistattributes{#1}\c!tekstletter\c!tekstkleur + {\let\\=\newlineinlist + \dontconvertfont + \getvalue{\??li#1\c!tekstcommando}{#4}}}% + \doifvalue{\??li#1\c!paginanummer}{\v!ja} + {\doifsomething{#5} + {\makelijstelement\v!paginanummer + {\dolistattributes{#1}\c!paginaletter\c!paginakleur + {\getvalue{\??li#1\c!paginacommando} + {\paginaprefix\??li#1[#5]% + \translatednumber[#5]}}}}}}}% + #8}% + \getvalue{\??li#1\c!na}} + +\def\dodofreehlijstelement#1#2#3#4#5#6% + {\dodofreelijstelement{#1}{#2}{#3}{#4}{#5}{#6} + {\noindent}{}} + +\def\dodofreevlijstelement#1#2#3#4#5#6% % \nointerlineskip nodig, + {\dodofreelijstelement{#1}{#2}{#3}{#4}{#5}{#6} % anders verkeerde spatiering + {\ifvmode\nointerlineskip\fi} % bij multi-line lijsten + {\nointerlineskip\endgraf\allowbreak}} % + +\def\dodofixdlijstelementABC#1#2#3#4#5#6% weeden + {\endgraf + \leftskip=\getvalue{\??li#1\c!marge}% na de \endgraf ! + \getvalue{\??li#1\c!voor}% + \!!widthc=\getvalue{\??li#1\c!afstand}% + \doifelsevalue{\??li#1\c!breedte}{\v!passend} + {\!!widtha=\!!zeropoint} + {\doifelsenothing{#3} + {\doifelsevalue{\??li#1\c!titeluitlijnen}{\v!ja} + {\!!widtha=\!!zeropoint + \!!widthc=\!!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}}% + \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\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!nummerletter\c!nummerkleur + {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}% + \hfill}}% + \setbox4=\hbox + {\doifvalue{\??li#1\c!paginanummer}{\v!ja} + {\doifsomething{#5} % \lijstwidth is new ; temp hack + {\hbox \ifdim\lijstwidth>\!!zeropoint to \lijstwidth\fi + {\hfill + \makelijstelement\v!paginanummer + {\dolistattributes{#1}\c!paginaletter\c!paginakleur + {\getvalue{\??li#1\c!paginacommando} + {\paginaprefix\??li#1[#5]% + \translatednumber[#5]}}}}}}}% + \vbox + {\hsize\!!widthb + \ifdim\!!widtha<\hsize + \hangindent=\wd2 + \dimen2=\!!widthc % \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!tekstletter\c!tekstkleur + {\let\\=\newlineinlist + \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 + \allowbreak + \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}% +\ifvmode + \advance\leftskip\getvalue{\??li#1\c!marge}% AANGEPAST +\fi + \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}}% + \linklisttoelement{#1}{#2}{#5}{#6}{\box0}}%{\copy0}}% + {\hbox{##2}}}% + \setbox4=\hbox + {\doifvalue{\??li#1\c!paginanummer}{\v!ja} + {\doifsomething{#5} + {\makelijstelement\v!paginanummer + {\dolistattributes{#1}\c!paginaletter\c!paginakleur + {\getvalue{\??li#1\c!paginacommando} + {\paginaprefix\??li#1[#5]% + \translatednumber[#5]}}}}}}% + \hbox + {\getvalue{\??li#1\c!links}% + \makelijstelement\v!sectienummer + {\dolistattributes{#1}\c!nummerletter\c!nummerkleur + {\getvalue{\??li#1\c!nummercommando}{\listsymbol}}}% + \getvalue{\??li#1\c!rechts}% + \hskip.5em}% + \nobreak + \tolerance3500 % niet zomaar veranderen + \dolistattributes{#1}\c!tekstletter\c!tekstkleur + {\let\\=\newlineinlist + \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 + {\setupinteraction[\c!strut=\v!nee]} + {\localframed[\??li#1][\c!diepte=\!!zeropoint,\c!kleur=]} + {#1}} + +\def\dodofixdlijstelementF#1% + {\dodofixdlijstelementEFG + {} + {\dosetraggedhbox{\getvalue{\??li#1\c!uitlijnen}}\raggedbox} + {#1}} + +\def\dodofixdlijstelementG#1% + {\dodofixdlijstelementEFG + {} + \regelmidden + {#1}} + +\def\dodofixdlijstelementEFG#1#2#3#4#5#6#7#8% + {\noindent + \hbox + {#1% in case E nils the strut + \let\\=\newlineinlist + \setbox0=\hbox + {#2{\showcontrastlocation{\??ia}{#8} + {\dostartattributes{\??li#3}\c!letter\c!kleur{}% + \ignorespaces\dontconvertfont\setstrut + \begstrut + \doifelsenothing{\??li#3\c!maxbreedte} + {\getvalue{\??li#3\c!tekstcommando}{#6}} + {\getvalue{\??li#3\c!tekstcommando}{\limitatetext{#6}{\getvalue{\??li#3\c!maxbreedte}}{\unknown}}}% + \endstrut % struts new + \dostopattributes}}}% + \linklisttoelement{#3}{#4}{#7}{#8}{\box0}}%{\copy0}}% + \par + \getvalue{\??li#3\c!tussen}} + +\def\strippedlistentry[#1::#2::#3]{#1::#2}% + +\def\linklisttoelement#1#2#3#4#5% % list location format page data + {\ifautocrossdocument + \gotodestination{}{}{#1::\strippedlistentry[#3]}{#4}{#5}% + \else + \gotonextinternal{#1}{#2}{#4}{#5}% + \fi} + +\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!tekstletter\c!tekstkleur + {\let\\=\newlineinlist + \dontconvertfont + \getvalue{\??li##1\c!tekstcommando}{##4}}}% + \global\utilitydonetrue} + {}}% + \dostellijstin[#1][#2]% + \dogetcommalistelement1\from#1\to\commalistelement + \dosettoclevel{\getvalue{\??li\commalistelement\c!criterium}}% + \setbox0=\vbox + {\doutilities{#1}{\jobname}{#1}{}{\par}}% + \xdef\utilitylistheight{\the\ht0}% + \xdef\utilitylistwidth {\the\wd0}% + \endgroup + \dosetlistmode} + +\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]% + {\hbox\bgroup % the \hbox is needed to bypass + \let\referenceprefix=\empty % \dontleavehmode in \naarbox + \setupinteraction[\c!kleur=,\c!contrastkleur=,\c!strut=]% + \setupreferencing[\c!prefix=]% + \naarbox{\hbox{\ignorespaces#1}}[#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]% + \dogetcommalistelement1\from#1\to\commalistelement + \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} +% {\doglobal\increment\referencecounter +% \referentiebutton +% {#3% +% \pagereference[\r!from\referencecounter]% +% \doschrijfnaarreferentielijst{#1}{\referencecounter}{#2}}% +% [\r!to\referencecounter]} +% {#3}} + +\def\schrijfnaarreferentielijst[#1]#2% #1=class #2=data #3=visualization + {\dowithnextbox + {\doifelsevalue{\??rl#1\c!status}{\v!start} + {\doglobal\increment\referencecounter % must be resolved due to #2 + \referentiebutton + {\box\nextbox + \pagereference[\r!from\referencecounter]% + \doschrijfnaarreferentielijst{#1}{\referencecounter}{#2}}% + [\r!to\referencecounter]} + {\box\nextbox}} + \hbox} % \vbox ? + +\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} + +\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\doplaatssamengesteldelijst[#1][#2]% + {\begingroup + \getparameters[\??ih#1][#2]% + \dosettoclevel{\getvalue{\??ih#1\c!criterium}}% + \edef\samengesteldelijst{\getvalue{\??ih#1\c!lijst}}% + \stripspaces\from\samengesteldelijst\to\samengesteldelijst + \doifelsevalue{\??ih#1\c!niveau}{\v!huidige} % criterium=vorige,niveau=huidige + {\!!counta=0\@@koniveau} % hm: \@@koniveau + {\ExpandFirstAfter\doifnumberelse{\getvalue{\??ih#1\c!niveau}}% in verband + {\!!counta=\getvalue{\??ih#1\c!niveau}% met de vorige implementatie + \advance\!!counta by 1 % 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 + \dosetlistmode} + +\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} + +\def\plaatssamengesteldelijst% + {\dodoubleempty\doplaatssamengesteldelijst} + +\protect \endinput diff --git a/tex/context/base/core-mar.tex b/tex/context/base/core-mar.tex new file mode 100644 index 000000000..836dd64b6 --- /dev/null +++ b/tex/context/base/core-mar.tex @@ -0,0 +1,126 @@ +%D \module +%D [ file=core-mar, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Markings, +%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. + +\writestatus{loading}{Context Core Macros / Markings} + +\unprotect + +% voor 'interne' doeleinden zijn beschikbaar: +% +% \fetchmark[naam][plaats] + +% nog expansie in hoofdmarkering + +% ook nog reset koppelen aan sectie + +\def\hoofdmarkering#1% + {\getvalue{\??mk#1\c!koppeling}} + +\def\dodoresetmarkering#1% + {\doifdefined{\??mk\hoofdmarkering{#1}} + {\expandafter\resetmark\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} + +\letvalue{\??mk \v!vorige}\gettopmark +\letvalue{\??mk \v!eerste}\getfirstmark +\letvalue{\??mk\v!laatste}\getbotmark + +\def\dododefinieermarkering[#1][#2]% + {\stelmarkeringin[#1] + [% \c!expansie=\v!nee, % saves a macro + \c!scheider={ --- }, % watch the spaces + \c!status=\v!start]% + \ontkoppelmarkering[#1]% % no coupling with sections + \setevalue{\??mk#1\c!koppeling}{#2}% + \expandafter\newmark\csname\??mk#2\endcsname + \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\fetchmark[#1][#2]% geen \def, anders problemen in \doif... +% {\def\dofetchmark{\getvalue{\??mk#2}}% +% \expandafter\dofetchmark\csname\??mk\hoofdmarkering{#1}\endcsname} + +\def\dofetchmark#1#2% needed because we need to expand + {\getvalue{\??mk#2}#1} + +\def\fetchmark[#1][#2]% never \unexpanded + %{\getvalue{\getvalue{\??mk#2}\??mk\hoofdmarkering{#1}}} + {\expandafter\dofetchmark\csname\??mk\hoofdmarkering{#1}\endcsname{#2}} + +\def\fetchtwomarks[#1]% + {\doifsomething{\fetchmark[#1][\v!eerste]} + {\fetchmark[#1][\v!eerste]% + \doifsomething{\fetchmark[#1][\v!laatste]} + {\doifnot{\fetchmark[#1][\v!eerste]}{\fetchmark[#1][\v!laatste]} + {\getvalue{\??mk#1\c!scheider}\fetchmark[#1][\v!laatste]}}}} + +\def\fetchallmarks[#1]% + {\doifsomething{\fetchmark[#1][\v!eerste]} + {\doifsomething{\fetchmark[#1][\v!vorige]} + {\doifnot{\fetchmark[#1][\v!vorige]}{\fetchmark[#1][\v!eerste]} + {\fetchmark[#1][\v!vorige]\getvalue{\??mk#1\c!scheider}}}}% + \fetchtwomarks[#1]} + +\def\dohaalmarkering[#1][#2]% + {\doifvalue{\??mk#1\c!status}{\v!start} + {\bgroup + \def\geenmarkering##1{\unknown\ }% + \setfullsectionnumber{\??mk#1}% + \processaction + [#2] + [ \v!beide=>{\fetchtwomarks[#1]}, + \v!alles=>{\fetchallmarks[#1]}, + \s!default=>{\fetchmark[#1][\v!eerste]}, + \s!unknown=>{\fetchmark[#1][#2]}]% + \egroup}} + +\def\nohaalmarkering[#1][#2]% + {} + +\unexpanded\def\haalmarkering% + {\dodoubleargument\dohaalmarkering} + +\def\domarking[#1]#2% + {\bgroup + \doifelsevalue{\??mk#1\c!expansie}{\v!ja} + {\expandmarkstrue} + {\expandmarksfalse}% +% \honorunexpanded +% \getvalue{\??mk\hoofdmarkering{#1}}{#2}% + \expandafter\setmark\csname\??mk\hoofdmarkering{#1}\endcsname{#2}% + \egroup} + +\def\marking% + {\dosingleargument\domarking} + +\protect \endinput diff --git a/tex/context/base/core-mps.tex b/tex/context/base/core-mps.tex index c92aee271..724402983 100644 --- a/tex/context/base/core-mps.tex +++ b/tex/context/base/core-mps.tex @@ -15,9 +15,22 @@ \unprotect -%D Let's first load the auxiliary file. +%D Let's first preload a few auxiliary \METAPOST\ files. -\appendtoks input mp-tool ;\to \MPinitializations +\appendtoks + input mp-tool ; + input mp-spec ; + _inline_shading_ := true ; +\to \MPinitializations + +%D We save the number of graphics for the sake of \TEXEXEC. + +\newcounter\totalnumberofMPgraphics +\def\thecurrentMPgraphic{\the\currentMPgraphic} + +\appendtoks + \savecurrentvalue\totalnumberofMPgraphics\thecurrentMPgraphic +\to \everybye %D The next few macros tell \METAPOST\ how the \CONTEXT\ %D pagebody looks. @@ -54,7 +67,9 @@ \writeMPpagedata RightMarginWidth \rechtermargebreedte \writeMPpagedata RightEdgeDistance \rechterrandafstand \writeMPpagedata RightEdgeWidth \rechterrandbreedte - \writeMPpagedata PageOffset {\getvalue{\??ma\v!pagina\c!offset}}% + \doifelsevalue{\??ma\v!pagina\c!offset}{\v!overlay} + {\writeMPpagedata PageOffset {0pt}} + {\writeMPpagedata PageOffset {\getvalue{\??ma\v!pagina\c!offset}}}% \writeMPpagedata PageDepth {\getvalue{\??ma\v!pagina\c!diepte}}% \immediate\closeout\scratchwrite \egroup} @@ -80,6 +95,49 @@ \to \MPinitializations \let\prepareMPpagedata\relax} +%D \macros +%D {startuniqueMPgraphic, uniqueMPgraphic} +%D +%D This macros is probably of most use to myself, since I like +%D to use graphics that adapt themselves. The next \METAPOST\ +%D kind of graphic is both unique and reused when possible. +%D +%D \starttypen +%D \defineoverlay[example][\uniqueMPgraphic{test}] +%D +%D \startuniqueMPgraphic {test} +%D draw unitsquare xscaled \overlaywidth yscaled \overlayheight ; +%D \stopuniqueMPgraphic +%D \stoptypen + +\long\def\startuniqueMPgraphic#1#2\stopuniqueMPgraphic% + {\setvalue{MP:#1}% + {\startreusableMPgraphic{\overlaystamp:#1}#2\stopreusableMPgraphic + \reuseMPgraphic{\overlaystamp:#1}}} + +\def\uniqueMPgraphic#1% + {\getvalue{MP:#1}} + +\def\overlaystamp% + {\overlaywidth:\overlayheight:\overlaydepth:\overlaycolor} + +%D We redefine a macro from \type {supp-mps.tex}: + +\def\MPdatafile% + {\bufferprefix mpd-\the\currentMPgraphic.tmp} + +%D We also have to make sure that \METAPOST\ knows this: + +\appendtoks + if not known _data_prefix_ : + string _data_prefix_ , _data_suffix_ ; + fi ; + _data_prefix_ := "\bufferprefix mpd-" ; + _data_suffix_ := ".tmp" ; +\to \MPinitializations + +%D Happy drawing. + \protect \endinput diff --git a/tex/context/base/core-mul.tex b/tex/context/base/core-mul.tex index ae8055f98..f358604e0 100644 --- a/tex/context/base/core-mul.tex +++ b/tex/context/base/core-mul.tex @@ -139,6 +139,8 @@ %D %D \interface \type{\nofcolumns} \\ %D the number of columns \\ +%D \interface \type{\minbalancetoplines} +%D the minimum number op balanced top lines %D \interface \type{\betweencolumns} \\ %D the stuff between columns \\ %D \interface \type{\finaloutput{action}{box}} \\ @@ -246,10 +248,11 @@ %D are applied to columns. The final values are used when %D flushing the columns. -\newcount\nofcolumns \nofcolumns=2 +\newcount\nofcolumns \nofcolumns=2 -\def\maxnofcolumns {16} -\def\allocatednofcolumns {0} +\def\maxnofcolumns {16} +\def\allocatednofcolumns {0} +\def\minbalancetoplines {1} \newif\ifbalancecolumns \balancecolumnsfalse \newif\ifstretchcolumns \stretchcolumnsfalse @@ -268,6 +271,11 @@ \newtoks\singlecolumnout +%D The next dimension reports the final column height + +\newdimen\finalcolumnheights +\newcount\finalcolumnlines + %D During initialization the temporary boxes are allocated. %D This enables us to use as much columns as we want, without %D exhausting the pool of boxes too fast. We could have packed @@ -414,7 +422,7 @@ %D The local column width is available in the dimension %D register \type{\localcolumnwidth}, which is calculated as: -\def\setcolumnhsize% +\def\setcolumnhsize% beware, this one is available for use in macros {\setbox0=\hbox {\parindent\!!zeropoint\betweencolumns}% \intercolumnwidth=\wd0 @@ -648,70 +656,6 @@ \edef\maxcolumndepth{\the\dp\currentcolumnbox}% \fi}} -% \def\flushcolumnedpage% -% {\bgroup -% \forgetall -% \setmulticolumnsout -% \showcomposition -% \setmaxcolumndimensions -% \postprocesscolumns -% \dohandleallcolumns % \hbox i.v.m. \showcomposition -% {\global\setbox\currentcolumnbox=\hbox to \localcolumnwidth -% {\box\currentcolumnbox -% \global\wd\currentcolumnbox=\localcolumnwidth -% \ifheightencolumns -% \global\ht\currentcolumnbox=\fixedcolumnheight -% \fi}}% -% \setmaxcolumndimensions -% \overlaycolumnfootnotes -% \setbox0=\vbox -% {\hbox to \finalcolumntextwidth -% {\dohandleallcolumns -% {\finishcolumnbox{\hbox -% {\ifx\finishcolumnbox\relax\else\strut\fi -% \box\currentcolumnbox}}% -% \ifnum\currentcolumn<\nofcolumns -% \hfil -% \fi}}}% -% \scratchdimen=\!!zeropoint -% \dohandleallcolumns -% {\ifdim-\ht\currenttopcolumnbox<\scratchdimen -% \scratchdimen=-\ht\currenttopcolumnbox -% \fi -% \global\setbox\currenttopcolumnbox=\box\voidb@x}% -% \advance\scratchdimen by \ht0 -% \setbox2=\hbox to \columntextwidth -% {\vrule\!!width\!!zeropoint\!!height\scratchdimen\!!depth\dp0 -% \dostepwiserecurse{2}{\nofcolumns}{1}{\hfil\betweencolumns}\hfil}% -% \setbox0=\hbox -% {\box0\hskip-\columntextwidth\color[black]{\box2}}% -% \ifvoid\partialpage \else -% \ifgridsnapping % do you believe this junk? -% \scratchdimen=\savedpagetotal -% \advance\scratchdimen by -\ht\partialpage -% \advance\scratchdimen by -\dp\partialpage -% \advance\scratchdimen by -\topskip -% \box\partialpage -% \kern\scratchdimen -% \else -% \unvbox\partialpage -% \fi -% \fi -% \global\partialpageheight=\!!zeropoint -% \setvsize -% \dosomebreak\nobreak -% \ifgridsnapping \else -% \dimen0=\topskip -% \advance\dimen0 by -\openstrutheight -% \nointerlineskip -% \vskip-\dimen0 -% \fi -% \prevdepth\openstrutdepth -% \nointerlineskip -% \dp0=\!!zeropoint -% \box0 -% \egroup} - \def\flushcolumnedpage% {\bgroup \forgetall @@ -776,6 +720,9 @@ \prevdepth\openstrutdepth \nointerlineskip \dp0=\!!zeropoint + \global\finalcolumnheights=\ht0 + \getnoflines\finalcolumnheights + \global\finalcolumnlines=\noflines \box0 \egroup} @@ -959,17 +906,6 @@ \def\splitfirstcolumn from \box#1to \dimen#2% {\splitcolumn\firstcolumnbox from \box#1 to \dimen#2 top \box\firsttopcolumnbox} -% \def\splitlastcolumn from \box#1to \dimen#2% -% {\global\setbox\lastcolumnbox=\vbox -% {\unvcopy\lasttopcolumnbox -% \unvbox#1}} - -% \def\splitlastcolumn from \box#1to \dimen#2% -% {\global\setbox\lastcolumnbox=\vbox -% {\unvcopy\lasttopcolumnbox -% \unvbox#1 -% \fakecolumnfootnotes\lastcolumnbox}} - \def\splitlastcolumn from \box#1to \dimen#2% {\global\setbox\lastcolumnbox=\vbox {\unvcopy\lasttopcolumnbox @@ -1028,7 +964,7 @@ %D mode was entered, or floats that migrate to next columns. %D Flushing floats is a delicate process. -\def\continuousmulticolumnsout% +\def\continuousmulticolumnsout% {\bgroup \forgetall \setmulticolumnsout @@ -1095,8 +1031,6 @@ % \penalty\outputpenalty % gaat gruwelijk mis in opsommingen \egroup} - - %D And this is the balancing stuff. Again, part of the routine %D is dedicated to handling ragged bottoms, but here we also %D see some handling concerning the stretching of columns. @@ -1105,13 +1039,36 @@ %D \type{\box4} garantees a more robust check when skips are %D used. -\def\balancedmulticolumnsout% +\def\balancedmulticolumnsout% {\bgroup \setmulticolumnsout \dontshowcomposition \widowpenalty=0 \setbox0=\vbox{\unvbox\normalpagebox}% - \ifdim\ht0>\openlineheight +\ifdim\ht0>\openlineheight % at least one line + \ifnum\minbalancetoplines<2 % balance anyway + \donetrue + \else % check criterium to available lines + \getnoflines{\ht0}% + \divide\noflines by \nofcolumns \relax + \ifnum\noflines<\minbalancetoplines \relax + \dimen0=\ht0 + \advance\dimen0 by \ht\firsttopcolumnbox + \advance\dimen0 by \openlineheight \relax % let's play safe + \ifdim\dimen0>\columntextheight % column exceeding text height + \donetrue + \else % it seems to fit + \donefalse + \fi + \else % balance indeed + \donetrue + \fi + \fi +\else % balancing does not make sense + \donefalse +\fi +\ifdone % start balancing + %\ifdim\ht0>\openlineheight \dimen0=\ht0 \advance\dimen0 by \topskip \advance\dimen0 by -\baselineskip diff --git a/tex/context/base/core-nav.tex b/tex/context/base/core-nav.tex index 49f7f9794..acbbeec47 100644 --- a/tex/context/base/core-nav.tex +++ b/tex/context/base/core-nav.tex @@ -61,6 +61,11 @@ \showmessage{\m!interactions}{3}{\ifusepagedestinations\space(PAGE)\fi}% \global\locationfalse \fi}% + \iflocation + \enablemode [\systemmodeprefix\v!interactie]% + \else + \disablemode[\systemmodeprefix\v!interactie]% + \fi \doifsomething{\@@iabereken} {\doregistercalculationset\@@iabereken}% \doifelse{\@@iastrut}{\v!ja} diff --git a/tex/context/base/core-new.tex b/tex/context/base/core-new.tex index 6e02e0144..610d89aae 100644 --- a/tex/context/base/core-new.tex +++ b/tex/context/base/core-new.tex @@ -30,16 +30,29 @@ % % \startnotmode [list] % \stopnotmode - +% +% system modes have a * as prefix +% % to be implemented: mode naar texutil/scherm + message +% : geen #2 en nesting (\startregels) + +\def\systemmodeprefix{*} \let\currentmode=\empty +% \def\enablemode[#1]% +% {\expandafter\addtocommalist\expandafter{#1}\currentmode} +% +% \def\disablemode[#1]% +% {\expandafter\removefromcommalist\expandafter{#1}\currentmode} +% +% this one fails in removing system modes + \def\enablemode[#1]% - {\expandafter\addtocommalist\expandafter{#1}\currentmode} + {\expanded{\addtocommalist{#1}\noexpand\currentmode}} \def\disablemode[#1]% - {\expandafter\removefromcommalist\expandafter{#1}\currentmode} + {\expanded{\removefromcommalist{#1}\noexpand\currentmode}} \def\doifmodeelse% {\unprotect\dodoifmodeelse} diff --git a/tex/context/base/core-not.tex b/tex/context/base/core-not.tex index 3bf022fed..7b88a254b 100644 --- a/tex/context/base/core-not.tex +++ b/tex/context/base/core-not.tex @@ -350,17 +350,17 @@ {\bgroup \unskip\unskip \ifdim\lastkern=\footnotesignal - \hoog{\kern\@@vnafstand}% gets the font right, hack ! + \high{\kern\@@vnafstand}% gets the font right, hack ! \fi \ignorespaces \nobreak \iflocation \naarbox - {\hoog{\tx\footnotenumber\domovednote\v!vorigepagina\v!volgendepagina}} + {\high{\tx\footnotenumber\domovednote\v!vorigepagina\v!volgendepagina}} [\s!fnt:t:\internalfootreference]% \rawreference{\s!fnt}{\s!fnt:f:\internalfootreference}{}% \else - \hoog{\tx\footnotenumber\domovednote\v!vorigepagina\v!volgendepagina}% + \high{\tx\footnotenumber\domovednote\v!vorigepagina\v!volgendepagina}% \ifconditional\pagewisefootnotes \rawreference{\s!fnt}{\s!fnt:f:\internalfootreference}{}% \fi @@ -418,7 +418,7 @@ {\iffootnotesenabled \bgroup \unskip - \naarbox{\hoog{\tx\currenttextreference}}[#1]% + \naarbox{\high{\tx\currenttextreference}}[#1]% \egroup \fi} @@ -613,7 +613,7 @@ \newbox\localpostponedfootnotes \def\collectlocalfootnotes% - {\gdef\localfootinsert##1% + {\def\localfootinsert##1% was \gdef, but never reset! {%\message{[local footnote]}% \global\setbox\localpostponedfootnotes=\vbox\bgroup \unvbox\localpostponedfootnotes @@ -755,7 +755,7 @@ %\c!breedte=\ifdim\hsize<\zetbreedte\hsize\else\zetbreedte\fi, \c!breedte=\defaultfootnotewidth, \c!hoogte=\teksthoogte, - \c!nummercommando=\hoog, + \c!nummercommando=\high, \c!n=1] \protect diff --git a/tex/context/base/core-num.tex b/tex/context/base/core-num.tex new file mode 100644 index 000000000..45ce75092 --- /dev/null +++ b/tex/context/base/core-num.tex @@ -0,0 +1,133 @@ +%D \module +%D [ file=core-num, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Numbering, +%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. + +\writestatus{loading}{Context Core Macros / Numbering} + +\unprotect + +% 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] +% \savenumber[naam] +% \restorenumber[naam] + +\newif\ifnummeren + +\def\dostelnummerin[#1][#2]% + {\@EA\let\@EA\savedstartnumber\csname\s!number#1\c!start\endcsname + \getparameters[\s!number#1][\c!start=,#2]% + \doifelsevaluenothing{\s!number#1\c!start} + {\letvalue{\s!number#1\c!start}=\savedstartnumber} + {\setcounter{\s!number#1}{\getvalue{\s!number#1\c!start}}}} + +\def\stelnummerin% + {\dodoubleargument\dostelnummerin} + +\def\dodefinieernummer[#1][#2]% ook overal class als localframed + {\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]% + \makecounter{\s!number#1}% + \setcounter{\s!number#1}{\getvalue{\s!number#1\c!start}}} + +% \c!nummer=#1 ; nogal veel copieen nodig +% +% \def\@@thenumber#1{\s!number\getvalue{\s!number#1\c!nummer}} + +\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\nummer[#1]% + {\convertnumber + {\getvalue{\s!number#1\c!conversie}} + {\countervalue{\s!number#1}}} + +\def\ruwenummer[#1]% + {\countervalue{\s!number#1}} + +% ook de pag nummers hierheen halen ivm \@@nrwijze + +\def\dostelnummerenin[#1]% globaal + {\getparameters[\??nr][#1]% + \doifelse{\@@nrstatus}{\v!start} + {\global\nummerentrue} + {\global\nummerenfalse}}% + +\def\stelnummerenin% + {\dosingleargument\dostelnummerenin} + +\stelnummerenin + [\c!wijze=\v!per\v!hoofdstuk, + \c!blokwijze=, + \c!sectienummer=\v!ja, + \c!status=\v!start] + +\protect \endinput diff --git a/tex/context/base/core-pag.tex b/tex/context/base/core-pag.tex index 68d94c50d..6ed2f3475 100644 --- a/tex/context/base/core-pag.tex +++ b/tex/context/base/core-pag.tex @@ -472,9 +472,10 @@ {\dodoinsertpages[#1][][#2]} {\dodoinsertpages[#1][#2][#3]}} -\def\dodoinsertpages[#1][#2][#3]% +\def\dodoinsertpages[#1][#2][#3]% {\bgroup \mindermeldingen + \getfiguredimensions[#1]% \getparameters[\??ip][\c!n=\noffigurepages,\c!breedte=\!!zeropoint,#3]% \dorecurse{\@@ipn} {\dofilterpage{#1}{\recurselevel}% @@ -484,9 +485,10 @@ \def\filterpages% {\dotripleempty\dofilterpages} -\def\dofilterpages[#1][#2][#3]% +\def\dofilterpages[#1][#2][#3]% % \noffigurepages not yet supported {\bgroup \mindermeldingen + \getfiguredimensions[#1]% \getparameters[\??ip][\c!n=\noffigurepages,\c!breedte=\!!zeropoint,#3]% \doifelse{#2}{\v!even} {\dorecurse{\@@ipn} @@ -514,12 +516,23 @@ {\dodoubleempty\docopypages} \def\docopypages[#1][#2]% - {\getparameters[\??ip][\c!n=\noffigurepages,#2]% + {\bgroup + \getfiguredimensions[#1]% + \getparameters[\??ip][\c!n=\noffigurepages,\c!schaal=\!!thousand,\c!offset=\!!zeropoint,#2]% \dorecurse{\@@ipn} {\vbox to \teksthoogte {\hsize=\tekstbreedte - \centeredbox{\externalfigure[#1][\c!pagina=\recurselevel,#2]}} - \pagina}} + \scratchdimen=\@@ipoffset + \centeredbox + {\ifdim\scratchdimen>\!!zeropoint\relax + \advance\vsize by -2\scratchdimen + \advance\hsize by -2\scratchdimen + \externalfigure[#1][\c!pagina=\recurselevel,#2,\c!schaal=,\c!factor=\v!max,\c!offset=\v!overlay]% + \else + \externalfigure[#1][\c!pagina=\recurselevel,#2,\c!offset=\v!overlay]% + \fi}} + \pagina} + \egroup} %D \macros %D {combinepages} @@ -553,7 +566,7 @@ \def\docombinepages[#1][#2]% {\bgroup - \def\noffigurepages{1}% + \getfiguredimensions[#1]% \getparameters [\??ip] [\c!n=\noffigurepages,\c!nx=2,\c!ny=2, @@ -567,7 +580,7 @@ \doloop {\vbox to \teksthoogte {\mindermeldingen - \hsize=\tekstbreedte + \hsize=\tekstbreedte \scratchdimen=\@@ipafstand \!!widtha=\hsize \advance\!!widtha by -\@@ipnx\scratchdimen @@ -589,7 +602,6 @@ {\@@iplinks \ifnum\combinedpagescounter>\@@ipn \else \externalfigure[#1][\c!pagina=\combinedpagescounter,\c!factor=\v!max,\c!kader=\@@ipkader]% - \getnumberoffigurepages\noffigurepages \fi \@@iprechts} \@@iponder}% @@ -625,11 +637,11 @@ {\stelpapierformaatin[\c!links=\hskip\@@pcoffset]% \adddimenmacro\papierhoogte\@@pcoffset\@@pcoffset\@@pcafstand\@@pchoogte\to\@@pcpaperheight \adddimenmacro\papierbreedte\@@pcoffset\@@pcoffset\to\@@pcpaperwidth - \definieeroverlay[pagecomment][\placepagecommentTB]} + \defineoverlay[pagecomment][\placepagecommentTB]} {\stelpapierformaatin[\c!boven=\vskip\@@pcoffset]% \adddimenmacro\papierhoogte\@@pcoffset\@@pcoffset\to\@@pcpaperheight \adddimenmacro\papierbreedte\@@pcoffset\@@pcoffset\@@pcafstand\@@pcbreedte\to\@@pcpaperwidth - \definieeroverlay[pagecomment][\placepagecommentLR]}% + \defineoverlay[pagecomment][\placepagecommentLR]}% \processaction [\@@pcplaats] [ \v!onder=>{\stelpapierformaatin[\c!onder =\vss,\c!boven =\vskip\@@pcoffset]}, diff --git a/tex/context/base/core-par.tex b/tex/context/base/core-par.tex new file mode 100644 index 000000000..1235d74b4 --- /dev/null +++ b/tex/context/base/core-par.tex @@ -0,0 +1,296 @@ +%D \module +%D [ file=core-par, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Paragraph Tricks, +%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. + +\writestatus{loading}{ConTeXt Pararaph Tricks} + +\unprotect + +% \ifprocesspreviousparagraphs +% +% \nofskippedparagraphs +% \paragraphnumber +% \nofparagraphs +% +% \dosetparagraph +% \doresetparagraph +% \dobeforeparagraph +% \doafterparagraph +% \dobeforeskipparagraph +% \doafterskipparagraph +% +% \pushparagraphs\endcommand alle alineas tot \endcommand laden +% \pushmoreparagraphs\endcommand alle alineas tot \endcommand toevoegen +% \popparagraphs alle alineas oproepen +% \popparagraphs[a,b,c] enkele alineas oproepen [geen] +% +% tzt een optionele prefix: +% +% \pushparagraphs[xxx]\endcommand alle alineas tot \endcommand laden +% \popparagraphs[xxx] alle alineas oproepen +% \popparagraphs[xxx][a,b,c] enkele alineas oproepen +% +% \numberparagraphs +% \numberparagraphlines +% \resetparagraphlines + +\newif\ifprocesspreviousparagraphs % public +\newif\ifprocessallparagraphs % private + +\newcounter\totalnofparagraphs % private +\newcounter\globalparagraphnumber % private +\newcounter\discardedparagraphs % private +\newcounter\mostrecentparagraphtotal % public + +\let\dosetparagraph = \relax % public +\let\doresetparagraph = \relax % public +\let\dobeforeparagraph = \relax % public +\let\doafterparagraph = \relax % public +\let\dobeforeskipparagraph = \relax % public +\let\doafterskipparagraph = \relax % public + +\def\paragraphnumber {} % public +\def\nofparagraphs {} % public +\def\nofskippedparagraphs {} % public + +\def\paragraphprefix {paragraph} % private + +% voorlopig, wordt nog class + +\def\resetparagraphlines% + {\global\linenumber=1\relax} + +\def\numberparagraphs% instelbaar maken en slimmer ivm breedte regelnummer !!!!! + {\processpreviousparagraphstrue + \def\dosetparagraph% + {\bgroup + \resetparagraphlines + \EveryPar + {\strut\inleftmargin{\tf{\tx\paragraphnumber}\kern2em}% + \ignorespaces}} + \def\doresetparagraph% + {\resetparagraphlines + \egroup}} + +\def\numberparagraphlines% + {\processpreviousparagraphstrue + \def\dosetparagraph% + {\resetparagraphlines} + \def\doresetparagraph% + {\resetparagraphlines} + \def\dobeforeparagraph% + {\startregelnummeren[\v!verder]} + \def\doafterparagraph% + {\stopregelnummeren} + \def\dobeforeskipparagraph% + {\stopregelnummeren + \let\paragraphnumber=\relax} + \def\doafterskipparagraph% + {\startregelnummeren[\v!verder]}} + +\def\dopushparagraphs#1% + {\global\let\mostrecentparagraphtotal=\totalnofparagraphs + \ifx#1\undefined + \let#1=\relax + \fi + \convertargument#1\to\asciiA + \convertargument{ }\to\asciiB % lege regel + \def\dopushparagraph##1\par% + {\convertargument##1\to\asciiC + \doifelse{\asciiC}{\asciiA} + {\let\next=#1} + {\doifnot{\asciiC}{} % lege paragraaf + {\doifnot{\asciiC}{\asciiB} + {\doglobal\increment\totalnofparagraphs + \ifnum\totalnofparagraphs>0\nofskippedparagraphs\relax + \setgvalue{\paragraphprefix\totalnofparagraphs}% + {##1}% + \else + \setgvalue{\paragraphprefix\totalnofparagraphs}% + {\skipparagraph##1\par}% + \fi}}% + \let\next=\dopushparagraph} + \next}% + \dopushparagraph} + +\def\pushparagraphs% + {\doglobal\newcounter\totalnofparagraphs + \dopushparagraphs} + +\def\pushmoreparagraphs% + {\dopushparagraphs} + +\def\dododopopparagraph#1% no grouping, i.v.m. sidefloats + {\ifnum#1>\totalnofparagraphs\relax + \else + \let\paragraphnumber=\globalparagraphnumber + \decrement(\paragraphnumber,\discardedparagraphs)% + \dobeforeparagraph + \ifhmode\indentation\fi\getvalue{\paragraphprefix#1}\par + \doafterparagraph + \fi} + +\long\def\skipparagraph#1\par% + {\doglobal\increment\discardedparagraphs + \ifprocessallparagraphs + \dobeforeskipparagraph + \ifhmode\indentation\fi#1\par + \doafterskipparagraph + \fi} + +\def\dodopopparagraph% + {\dododopopparagraph} + +\def\dodoprocessparagraph#1% + {\ifprocesspreviousparagraphs + \bgroup + \setbox0=\vbox{\dododopopparagraph{#1}}% + \egroup + \fi} + +\def\processpreviousparagraphs[#1]% process previous ones + {\ifprocesspreviousparagraphs + \bgroup + \getfromcommacommand[#1][1]% tzt snelle \..command.. testen + \let\totalnofparagraphs=\commalistelement + \decrement\totalnofparagraphs + \let\dodopopparagraph=\dodoprocessparagraph + \popparagraphs + \egroup + \fi} + +\def\dopopparagraphs[#1]% + {\doifnotinset{#1}{\v!geen,0} + {\dosetparagraph + \doglobal\newcounter\globalparagraphnumber + \doglobal\newcounter\discardedparagraphs + \doifelse{#1}{} + {\processallparagraphstrue} + {\processallparagraphsfalse}% + \def\dopopparagraph% + {\doglobal\increment\globalparagraphnumber + \ifnum\globalparagraphnumber>\totalnofparagraphs\relax + \let\dopopparagraph=\relax + \else\ifprocessallparagraphs + \ifnum\globalparagraphnumber>\mostrecentparagraphtotal\relax + \dodopopparagraph\globalparagraphnumber + \else + \dodoprocessparagraph\globalparagraphnumber + \fi + \else + \let\paragraphnumber=\globalparagraphnumber + \decrement(\paragraphnumber,\discardedparagraphs)% + \ExpandBothAfter\doifinsetelse{\paragraphnumber}{#1} + {\dodopopparagraph\globalparagraphnumber} + {\dodoprocessparagraph\globalparagraphnumber}% + \fi\fi + \dopopparagraph}% + \dopopparagraph + \doresetparagraph}} + +\def\popparagraphs% + {\dosingleempty\dopopparagraphs} + +\def\countparagraphs% + {\popparagraphs[\!!maxcard]% + \global\let\nofparagraphs=\totalnofparagraphs + \doglobal\decrement(\nofparagraphs,\discardedparagraphs)} + +% \toonkader +% +% \numberparagraphlines +% \numberparagraphs +% +% \def\nofskippedparagraphs{1} +% +% \pushparagraphs\ThatsIt +% +% \ruledbaseline eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste +% +% \ruledbaseline eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste eerste eerste eerste +% eerste eerste eerste eerste eerste +% +% \ruledbaseline tweede tweede tweede tweede tweede tweede +% tweede tweede tweede tweede tweede tweede tweede tweede +% tweede tweede tweede tweede tweede tweede tweede tweede +% tweede tweede tweede tweede tweede tweede tweede tweede +% tweede tweede tweede tweede tweede tweede tweede tweede +% tweede tweede tweede tweede tweede tweede tweede tweede +% tweede tweede tweede tweede tweede +% +% \skipparagraph \ruledbaseline skipped skipped skipped +% skipped skipped skipped skipped skipped skipped skipped +% skipped skipped skipped skipped skipped skipped skipped +% skipped skipped +% +% \ruledbaseline derde derde derde derde derde derde derde +% derde derde derde derde derde derde derde derde derde derde +% derde derde derde derde derde derde derde derde derde derde +% derde derde derde derde derde derde derde derde derde derde +% derde derde derde derde derde derde derde derde derde derde +% derde derde derde derde derde derde derde derde derde derde +% +% \skipparagraph \ruledbaseline skipped skipped skipped +% skipped skipped skipped skipped skipped skipped skipped +% skipped skipped skipped skipped skipped skipped skipped +% skipped skipped skipped +% +% \ruledbaseline vierde vierde vierde vierde vierde vierde +% vierde vierde vierde vierde vierde vierde vierde vierde +% vierde vierde vierde vierde vierde vierde vierde vierde +% vierde vierde vierde vierde +% +% \ruledbaseline vijfde vijfde vijfde vijfde vijfde vijfde +% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde +% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde +% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde +% vijfde vijfde vijfde +% +% \skipparagraph \ruledbaseline skipped skipped skipped +% skipped skipped skipped skipped skipped skipped skipped +% skipped skipped skipped skipped skipped skipped skipped +% skipped skipped skipped +% +% \ThatsIt +% +% \popparagraphs +% +% \countparagraphs +% +% \blanko[2*groot] +% +% nofparagraphs:~\nofparagraphs +% +% \pagina +% +% \popparagraphs[1] +% \popparagraphs[2] +% \popparagraphs[3] +% \popparagraphs[4] +% \popparagraphs[5] +% +% \pagina +% +% \ruledvbox{\popparagraphs[1,2,3,4,5]} +% +% \pagina + +\protect \endinput diff --git a/tex/context/base/core-ref.tex b/tex/context/base/core-ref.tex index 6996d6ead..8604bafab 100644 --- a/tex/context/base/core-ref.tex +++ b/tex/context/base/core-ref.tex @@ -17,7 +17,7 @@ % % uitprinten % engels maken -% rommel voorlopig naar core-01d +% rommel voorlopig naar core-int/core-nav % programma, profiel etc als methode % \macro toevoegen @@ -833,9 +833,8 @@ \fi \fi \fi -% \ifx\currentfullreference\v!geen % DOCUMENT THIS ONE! -% \global\referencefoundfalse -% \fi +% \doif{\currentfullreference}{\v!geen} % DOCUMENT THIS ONE! +% {\global\referencefoundfalse} \iftracereferences \doshowcurrentreference\space \writestatus{\m!references}{\currentreferenceshow}% @@ -902,9 +901,8 @@ \fi \fi \fi -% \ifx\currentfullreference\v!geen % DOCUMENT THIS ONE! -% \global\referencefoundfalse -% \fi +% \doif{\currentfullreference}{\v!geen} % DOCUMENT THIS ONE! +% {\global\referencefoundfalse}% \iftracereferences \doshowcurrentreference\space \writestatus{\m!references}{\currentreferenceshow}% @@ -1340,7 +1338,7 @@ %D produce \CDROM's conforming to ISO9660. We consider is the %D savest to enable this feature by default. We cannot handle %D uppercase here, since the suffix is handled in the special -%D driver. COnversion is taken care of by: +%D driver. Conversion is taken care of by: %D %D \startypen %D \setreferencefilename somefilename\to\SomeFileName @@ -1520,7 +1518,8 @@ \definesystemreferencehandler \rt!list \handlelistreference \def\handleexecreference#1% - {\executecommand{\currentdatareference}{\currentreferencearguments}} + {\checkexecutecommand{\currentdatareference}{\currentreferencearguments}% + \executecommand{\currentdatareference}{\currentreferencearguments}} \def\handlepagereference#1% {\gotorealpage{}{}{\currentdatareference}} @@ -1528,6 +1527,24 @@ \def\handlelistreference#1% is deze nog echt nodig? {\gotodestination{}{}{\currentdatareference}{\getvalue{\currentdatareference}}} +%D \macros +%D {setexecutecommandcheck} +%D +%D In case a command action needs to do some checking in +%D advance, one can assign an check function by: +%D +%D \starttypen +%D \setexecutecommandcheck{startsound}\checksoundtrack +%D \stoptypen + +\def\setexecutecommandcheck#1#2% #2 permits \first \second + {\setvalue{\s!do\s!do#1}{#2}} + +\def\checkexecutecommand#1#2% + {\def\docheckexecutecommand##1% + {\doifdefined{\s!do\s!do#1}{\getvalue{\s!do\s!do#1}{##1}}}% + \processcommacommand[#2]\docheckexecutecommand} + %D Command references (in dutch, english, german of %D whatever interface language) are translated into a bit %D shorter reference (\type{close}) and passed to the @@ -1541,20 +1558,24 @@ \setglobalsystemreference \rt!exec \v!LastPage {last} \setglobalsystemreference \rt!exec \v!NextJump {forward} \setglobalsystemreference \rt!exec \v!NextPage {next} -\setglobalsystemreference \rt!exec \v!PauseMovie {pause} +\setglobalsystemreference \rt!exec \v!PauseMovie {pausemovie} +\setglobalsystemreference \rt!exec \v!PauseSound {pausesound} \setglobalsystemreference \rt!exec \v!PreviousJump {backward} \setglobalsystemreference \rt!exec \v!PreviousPage {previous} \setglobalsystemreference \rt!exec \v!PrintDocument {print} -\setglobalsystemreference \rt!exec \v!SaveForm {export} -\setglobalsystemreference \rt!exec \v!LoadForm {import} -\setglobalsystemreference \rt!exec \v!ResetForm {reset} -\setglobalsystemreference \rt!exec \v!ResumeMovie {resume} +\setglobalsystemreference \rt!exec \v!SaveForm {exportform} +\setglobalsystemreference \rt!exec \v!LoadForm {importform} +\setglobalsystemreference \rt!exec \v!ResetForm {resetform} +\setglobalsystemreference \rt!exec \v!ResumeMovie {resumemovie} +\setglobalsystemreference \rt!exec \v!ResumeSound {resumesound} \setglobalsystemreference \rt!exec \v!SaveDocument {save} \setglobalsystemreference \rt!exec \v!SearchAgain {searchagain} \setglobalsystemreference \rt!exec \v!SearchDocument {search} -\setglobalsystemreference \rt!exec \v!StartMovie {start} -\setglobalsystemreference \rt!exec \v!StopMovie {stop} -\setglobalsystemreference \rt!exec \v!SubmitForm {submit} +\setglobalsystemreference \rt!exec \v!StartMovie {startmovie} +\setglobalsystemreference \rt!exec \v!StartSound {startsound} +\setglobalsystemreference \rt!exec \v!StopMovie {stopmovie} +\setglobalsystemreference \rt!exec \v!StopSound {stopsound} +\setglobalsystemreference \rt!exec \v!SubmitForm {submitform} \setglobalsystemreference \rt!exec \v!SwapViewer {swap} \setglobalsystemreference \rt!exec \v!ViewerHelp {help} \setglobalsystemreference \rt!exec \v!HideField {hide} @@ -1853,19 +1874,19 @@ \ifx\currentreferencespecial\empty \ifx\currentouterreference\empty \ifnum0\currentrealreference=0 - \ifhmode\strut\hoog{\symbol[\v!nergens]}\fi + \ifhmode\strut\high{\symbol[\v!nergens]}\fi \else\ifnum0\currentrealreference>\realpageno - \dodosymbolreference{#2}{\hoog{\symbol[\v!volgende]}}% + \dodosymbolreference{#2}{\high{\symbol[\v!volgende]}}% \else\ifnum0\currentrealreference<\realpageno - \dodosymbolreference{#2}{\hoog{\symbol[\v!vorige]}}% + \dodosymbolreference{#2}{\high{\symbol[\v!vorige]}}% \else - \ifhmode\strut\hoog{\symbol[\v!nergens]}\fi + \ifhmode\strut\high{\symbol[\v!nergens]}\fi \fi\fi\fi \else - \gotoouterlocation{#3}{\showlocation{\hoog{\symbol[\v!ergens]}}}% + \gotoouterlocation{#3}{\showlocation{\high{\symbol[\v!ergens]}}}% \fi \else - \gotospeciallocation{#3}{\showlocation{\hoog{\symbol[\v!ergens]}}}% + \gotospeciallocation{#3}{\showlocation{\high{\symbol[\v!ergens]}}}% \fi \egroup} @@ -1901,41 +1922,103 @@ \let\dowantedreference=\docompletereference -%D [ref] here when ok - -% \chapter[a]{first} -% -% \placeformula[b] \startformula a = b + c \stopformula -% -% \placeformula[for:c] \startformula a = b + c \stopformula -% -% \blank -% -% \in{chapter}[a] and \in{formula}[b] and \in{formula}[for:c] \par -% \at{page}[a] and \at{page}[b] and \at{page}[for:c] -% -% \definereferenceformat[informula] -% -% \informula[b] and \informula[for:c] \par -% the \informula{formulas}[b] \informula{en}[for:c] -% -% \definereferenceformat[informula][left=(,right=)] -% -% \informula[b] en \informula[for:c] \par -% the \informula{formulas}[b] \informula{and}[for:c] -% -% \definereferenceformat[informula] [left=(,right=),text=formula] -% \definereferenceformat[informulas] [left=(,right=),text=formulas] -% \definereferenceformat[andformula] [left=(,right=),text=and] -% \definereferenceformat[andformulas][left=(,right=),text=and] -% -% \informula[b] and \informula[for:c] \par -% the \informula{formulas}[b] \informula{and}[for:c] \par -% the \informulas{formulas}[b] \informula{and}[for:c] \par -% the \informulas[b] \informula{en}[for:c] \par -% the \informulas[b] \andformula[for:c] \par -% -% Instead of a text, one can specify a label. +%D \macros +%D {definereferenceformat} +%D +%D The next few macros were made for for David Arnold and Taco +%D Hoekwater. They can be used for predefining reference +%D texts, and thereby stimulate efficiency. +%D +%D [more documentation will be added] +%D +%D \starttypen +%D \definereferenceformat[informula] [left=(,right=),text=formula] +%D \definereferenceformat[informulas] [left=(,right=),text=formulas] +%D \definereferenceformat[andformula] [left=(,right=),text=and] +%D \definereferenceformat[andformulas][left=(,right=),text=and] +%D +%D \informula [b] and \informula [for:c] +%D the \informula {formulas}[b] \informula {and} [for:c] +%D the \informulas {formulas}[b] \informula {and} [for:c] +%D the \informulas [b] \informula {en} [for:c] +%D the \informulas [b] \andformula [for:c] +%D \stoptypen +%D +%D Instead of a text, one can specify a label, which should +%D be defined with \type {\setuplabeltext}. + +\def\definereferenceformat% + {\dodoubleargument\dodefinereferenceformat} + +\def\dodefinereferenceformat[#1][#2]% + {\iffirstargument + \getparameters[\??rf#1] + [\c!links=, % of the number + \c!rechts=, % of the number + \c!tekst=, % before the number + \c!label=, % can be {left}{right} + \c!commando=\in, + #2]% + \unexpanded\setvalue{#1}{\doexecutereferenceformat{#1}}% + \fi} + +\def\noexecutelabelreferenceformat#1% + {\doifvaluesomething{\??rf#1\c!tekst} + {\gdef\textofreference{\getvalue{\??rf#1\c!tekst}}}% + \getvalue{\??rf#1\c!commando}} + +\def\doexecutelabelreferenceformat#1% + {\getvalue{\??rf#1\c!commando}% + {\leftlabeltext {\getvalue{\??rf#1\c!label}}}% + {\rightlabeltext{\getvalue{\??rf#1\c!label}}}} + +\def\doexecutereferenceformat#1% + {\gdef\leftofreference {\getvalue{\??rf#1\c!links }}% + \gdef\rightofreference{\getvalue{\??rf#1\c!rechts}}% + \global\let\textofreference\empty % otherwise ~ added + \doifelsevaluenothing{\??rf#1\c!label} + {\let\next\noexecutelabelreferenceformat} + {\let\next\doexecutelabelreferenceformat}% + \next{#1}} + +\let\leftofreference \relax +\let\rightofreference\relax +\let\textofreference \relax + +\def\dodododoinatreference#1#2#3[#4]% + {\ifx\next\bgroup + \dododododoinatreference + {\leftofreference#1\ignorespaces#3\rightofreference}{#2}[#4]% + \else + \dododododoinatreference + {\leftofreference#1\rightofreference}{#2#3}[#4]% + \fi} + +\def\dododododoinatreference#1#2[#3]% + {\bgroup + \forgetall + \leaveoutervmode + \doifreferencefoundelse{#3} + {\bgroup + \let\ignorespaces \empty % rather dirty trick, but ok + \let\leftofreference \empty % the same, again ok + \let\rightofreference\empty % and once more + \def\textofreference {#2}% % temporary value + \ifx\textofreference\empty % simple expansion + \doifelsenothing{#1} + {\egroup\dosymbolreference{#1}{\textofreference}[#3]} + {\egroup\dowantedreference{#1}{\textofreference}[#3]}% + \else + \doifelsenothing{#1} + {\egroup\dosymbolreference{#1}{#2}[#3]} + {\egroup\dowantedreference{#1}{#2}[#3]}% + \fi} + {\dounknownreference{#1}{#2}[#3]}% + \referentieinfo{<}{#3}% + \global\let\leftofreference \empty + \global\let\rightofreference\empty + \global\let\textofreference \empty + \egroup} %D In interactive documents going to a specific location is not %D bound to cross references. The \type{\goto} commands can be @@ -1970,7 +2053,7 @@ {\doifelsenothing{#1} {\dosymbolreference{}{}[#2]} {\donaarspace{#1}[#2]}} - {\unknownreference{#2}#1}% + {\unknownreference{#2}#1\relax}% \relax catches lookahead \referentieinfo{<}{#2}} \unexpanded\def\naar#1#2% @@ -2198,14 +2281,22 @@ %D \type{\setouterlocation} and now is the time to define this %D one. +\newconditional\forceURLlocation + \def\setouterlocation#1% {\doifdefinedelse{\v!file:::#1} {\def\doexternaldocument[##1][##2][##3]% {\edef\otherURL{##1}% \edef\otherfile{##2}}% \getvalue{\v!file:::#1}} - {\let\otherURL=\empty - \edef\otherfile{#1}}% + {\ifconditional\forceURLlocation + \edef\otherURL {#1}% + \let\otherfile\empty + \else + \let\otherURL\empty + \edef\otherfile{#1}% + \fi}% + \setfalse\forceURLlocation \doifparentfileelse{\otherfile} {\let\otherURL=\empty \let\otherfile=\empty @@ -2261,13 +2352,13 @@ %D %D The fastest implementation would be: -\definespecialtest\v!file {\handlespecialFILEandURL} -\definespecialtest\v!URL {\handlespecialFILEandURL} -\definespecialtest\v!url {\handlespecialFILEandURL} +\definespecialtest\v!file {\setfalse\forceURLlocation\handlespecialFILEandURL} +\definespecialtest\v!URL {\settrue \forceURLlocation\handlespecialFILEandURL} +\definespecialtest\v!url {\settrue \forceURLlocation\handlespecialFILEandURL} -\definespeciallocation\v!file {\handlespecialallocationFILEandURL} -\definespeciallocation\v!URL {\handlespecialallocationFILEandURL} -\definespeciallocation\v!url {\handlespecialallocationFILEandURL} +\definespeciallocation\v!file{\setfalse\forceURLlocation\handlespecialallocationFILEandURL} +\definespeciallocation\v!URL {\settrue \forceURLlocation\handlespecialallocationFILEandURL} +\definespeciallocation\v!url {\settrue \forceURLlocation\handlespecialallocationFILEandURL} \def\handlespecialFILEandURL% {\doifreferencefoundelse @@ -2702,7 +2793,7 @@ \doif{\@@ibstatus}{\v!stop}{\locationfalse}% \iflocation \ifsecondargument - \checkinteractiebalk\v!ruim\!!zeropoint % brrrrr + \checkinteractiebalk{1.5em}\v!ruim\!!zeropoint % brrrrr \setbox2=\hbox {\setupsymbolset[\@@iasymboolset]% \localframed[\??ib][]{\symbol[\v!vorigepagina]}}% @@ -2716,7 +2807,7 @@ [ \v!pagina=>\advance\!!counta by 4, \v!sub\v!pagina=>\advance\!!counta by 4, \s!unknown=>\advance\!!counta by 1]% - \ifdim\@@ibbreedte=\!!zeropoint + \ifdim\@@ibbreedte=\!!zeropoint\relax \!!widtha=2em \advance\!!widtha by \@@ibafstand % new \!!widthb=\!!counta\!!widtha diff --git a/tex/context/base/core-reg.tex b/tex/context/base/core-reg.tex index 6b58ae107..c978983c8 100644 --- a/tex/context/base/core-reg.tex +++ b/tex/context/base/core-reg.tex @@ -15,8 +15,6 @@ \newif \ifautoregisterhack % for the moment a private hack -% for the moment \e!register ipv #1 (evt nog \v!register) - \unprotect %D Isolated but still indocumented. @@ -71,7 +69,7 @@ \def\getlastregisterentry#1% {\def\docommando##1% {\def\!!stringa{##1}}% - \processconcanatedlist[#1][+]\docommando + \processseparatedlist[#1][+]\docommando \!!stringa} \def\doprocesspageregister[#1]#2% @@ -454,8 +452,8 @@ \fi \fi % aangepast - \def\dodocommando[####1-####2]% - {\gotonextinternal{\s!ind}{####1}{####2}{\box0}}% + \def\dodocommando[##1-##2]% + {\gotonextinternal{\s!ind}{##1}{##2}{\box0}}% \doifelsevalue{\??id#1\c!interactie}{\v!paginanummer} {\limitedregisterentry{#1}{#2}} % paginanummer {{\setbox0=\hbox{\limitedregisterentry{#1}{\begstrut#2}}% @@ -471,12 +469,12 @@ \doifvalue{\??id#1\c!nummer}{\v!ja} {\hskip\getvalue{\??id#1\c!afstand}(\commalistsize)}% \doifnotvalue{\??id#1\c!interactie}{\v!tekst} % paginanummer,alles - {\def\docommando####1####2% - {{\setbox0=\hbox{\showlocation{\hbox to 1em{\hss\symbol[####2]\hss}}}% - \ifx####1\empty + {\def\docommando##1##2% + {{\setbox0=\hbox{\showlocation{\hbox to 1em{\hss\symbol[##2]\hss}}}% + \ifx##1\empty % \hskip\wd0 % (optioneel maken) \else - \expandafter\dodocommando\expandafter[####1]% + \expandafter\dodocommando\expandafter[##1]% \fi}}% \hskip\getvalue{\??id#1\c!afstand}% \docommando\firstlistreference\v!vorige @@ -666,7 +664,7 @@ \setvalue{#1\s!entry}##1% {\dosetpageregisterletter{#1}{##1}}} -\def\dosetautoregisterentrya#1#2% for the moment \e!register ipv #1 +\def\dosetautoregisterentrya#1#2% {\global\utilitydonetrue \c!entryletter \iflocation @@ -678,7 +676,7 @@ \setupinteraction[\c!kleur=,\c!contrastkleur=,\c!letter=]% kan sneller \naarbox {\limitedregisterentry{#1}{\begstrut#2}}% - [JS(SetRegisterEntry{\e!register,\countervalue{autolink:#1},#2,{\alllistreferences}})]% + [JS(SetRegisterEntry{\v!register,\countervalue{autolink:#1},#2,{\alllistreferences}})]% \egroup \else \endgraf\noindent\c!entryreference @@ -703,31 +701,31 @@ %D much faster, but is conceptually pretty weak. \def\complexregisterfield[#1]% - {\definefield[#1:\realfolio][line][\e!register]% + {\definefield[#1:\realfolio][line][\v!register]% \field[#1:\realfolio]} \def\simpleregisterfield% - {\complexregisterfield[\e!register]} + {\complexregisterfield[\v!register]} \definecomplexorsimple\registerfield \setupfield - [\e!register] + [\v!register] [\c!breedte=10em, \c!hoogte=3ex, \c!uitlijnen=\v!midden, \c!optie=\v!alleenleesbaar, \c!plaats=\v!laag] -\def\doinitializeautoregister#1% for the moment \e!register ipv #1 +\def\doinitializeautoregister#1% {\useJSscripts[reg]% \useJSpreamblenow{LinkedRegisters}% - \setupinteraction[\c!openpaginaactie=JS(UpdateRegisterField{\e!register})]% - \definereference[\v!reset \e!register][JS(ResetRegisterEntry{\e!register})]% - \definereference[\v!eerste \e!register][JS(GotoFirstRegisterEntry{\e!register})]% - \definereference[\v!vorige \e!register][JS(GotoPreviousRegisterEntry{\e!register})]% - \definereference[\v!volgende\e!register][JS(GotoNextRegisterEntry{\e!register})]% - \definereference[\v!laatste \e!register][JS(GotoLastRegisterEntry{\e!register})]} + \setupinteraction[\c!openpaginaactie=JS(UpdateRegisterField{\v!register})]% + \definereference[\v!reset \v!register][JS(ResetRegisterEntry{\v!register})]% + \definereference[\v!eerste \v!register][JS(GotoFirstRegisterEntry{\v!register})]% + \definereference[\v!vorige \v!register][JS(GotoPreviousRegisterEntry{\v!register})]% + \definereference[\v!volgende\v!register][JS(GotoNextRegisterEntry{\v!register})]% + \definereference[\v!laatste \v!register][JS(GotoLastRegisterEntry{\v!register})]} \def\doinitializelinkregister#1% {} @@ -830,8 +828,12 @@ \setbox0=\vbox {\doutilities{#1}{\jobname}{#1}{}{}}% \endgroup - \ifregistergeplaatst\enablemode[\e!register]\else\disablemode[\e!register]\fi} - + \ifregistergeplaatst + \enablemode [\systemmodeprefix\v!register]% + \else + \disablemode[\systemmodeprefix\v!register]% + \fi} + \def\bepaalregisterkenmerken% {\dodoubleempty\dobepaalregisterkenmerken} diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex index b790ff1dd..c25fa87fb 100644 --- a/tex/context/base/core-rul.tex +++ b/tex/context/base/core-rul.tex @@ -177,7 +177,7 @@ {\bgroup \doifelse{#4}{\v!rond} {\dimen0=#5\relax % just in case of .x\bodyfontsize - \ifdim\dimen0=\!!zeropoint + \ifzeropt\dimen0 \dofilledlinedbox\width#1\height#2\depth#3\\% \else \dofilledroundbox\width#1\height#2\depth#3\radius#5\\% @@ -314,6 +314,10 @@ \scratchdimen=#5% \edef\overlaydepth{\the\scratchdimen}% \edef\overlaycolor{#6}% +\prependtoks + \hsize=\overlaywidth + \vsize=\overlayheight +\to\everyoverlay %\writestatus % {overlay} % {#1\space w=\overlaywidth/h+d=\overlayheight/d=\overlaydepth]}% @@ -400,7 +404,8 @@ %D Besides backgrounds (overlays) we also need some macros to %D draw outlines (ruled borders). Again we have to deal with %D square and round corners. The first category can be handled -%D by \TEX\ itself, the latter one depends on the driver. +%D by \TEX\ itself, the latter one depends on the driver. This +%D macro also support a negative offset. \def\dooutlinebox#1\color#2\offset#3\corner#4\radius#5\depth#6\toggle#7\\% {\vbox % rules on top of box @@ -408,17 +413,22 @@ \dimen2=\wd#1\advance\dimen2 by 2\dimen0 \dimen4=\ht#1\advance\dimen4 by \dimen0 \dimen6=\dp#1\advance\dimen6 by \dimen0\advance\dimen6 by #6\relax + \ifdim\dimen6<\!!zeropoint + \advance\dimen4 by \dimen6 \dimen8=-\dimen6 \dimen6=\!!zeropoint + \else + \dimen8=\!!zeropoint + \fi \setbox\extraframebox=\hbox {\dostrokedbox\width\dimen2\height\dimen4\depth\dimen6% \corner#4\radius#5\toggle#7\\}% \setbox\extraframebox=\hbox - {\vbox{\moveleft#3\box\extraframebox}}% + {\raise\dimen8\vbox{\moveleft#3\box\extraframebox}}% \wd\extraframebox=\wd#1% \ht\extraframebox=\ht#1% \dp\extraframebox=\dp#1% \hbox {%\copy#1\hskip-\wd#1% - \box#1\hskip-\wd\extraframebox % faster + \box#1\hskip-\wd\extraframebox % faster \doifelsenothing{#2} % speeds up a little {\box\extraframebox} {\color[#2]{\box\extraframebox}}}}} @@ -427,7 +437,7 @@ {\bgroup \doifelse{#4}{\v!rond} {\dimen0=#5\relax % just in case of .x\bodyfontsize - \ifdim\dimen0=\!!zeropoint + \ifzeropt\dimen0 \dostrokedlinedbox\width#1\height#2\depth#3\toggle#6\\% \else \dostrokedroundbox\width#1\height#2\depth#3\radius#5\toggle#6\\% @@ -567,7 +577,7 @@ \def\localframed% {\bgroup \inframedtrue - \dodoubleargument\startlocalframed} + \dodoubleempty\startlocalframed} %D Before we go into details, we present (and implement) the %D main framing routine. I saw no real reason for splitting the @@ -575,11 +585,23 @@ %D collected in a horizontal or vertical box with fixed or free %D dimensions and specific settings concerning aligment and %D offsets. +%D +%D In the first few lines, we pre||expand the frame and +%D background offsets. We do so, because the can be defined in +%D terms of the main offset. However, see for instance page +%D backgrounds, when \type {#2} sets the offset to \type +%D {overlay}, both offsets become invalid. \def\startlocalframed[#1][#2]% {\bgroup - \edef\@@framed{#1}% - \getparameters[\@@framed][#2]% + \edef\@@framed{#1}% + \scratchdimen\getvalue{\@@framed\c!kaderoffset}% + \setevalue{\@@framed\c!kaderoffset}{\the\scratchdimen}% + \scratchdimen\getvalue{\@@framed\c!achtergrondoffset}% + \setevalue{\@@framed\c!achtergrondoffset}{\the\scratchdimen}% + \ifsecondargument % faster + \getparameters[\@@framed][#2]% here ! + \fi \edef\localoffset{\getvalue{\@@framed\c!offset}}% \edef\localwidth{\getvalue{\@@framed\c!breedte}}% \edef\localheight{\getvalue{\@@framed\c!hoogte}}% @@ -590,9 +612,9 @@ \doifelsenothing{\localformat} {\boxhasformatfalse} {\boxhasformattrue - \edef\beforeframedbox{\getvalue{\@@framed\c!boven}}% - \edef\afterframedbox{\getvalue{\@@framed\c!onder}}% - \dosetraggedcommand{\localformat}}% + \dosetraggedcommand{\localformat}% + \edef\beforeframedbox{\raggedtopcommand\getvalue{\@@framed\c!boven}}% + \edef\afterframedbox {\getvalue{\@@framed\c!onder}\raggedbottomcommand}}% \doifelse{\localoffset}{\v!geen} {\boxhasoffsetfalse \boxhasstrutfalse @@ -631,7 +653,7 @@ \setlocalhsize \!!widtha=\localhsize \fi - \advance\!!widtha by -2\@@localoffset + \advance\!!widtha by -2\@@localoffset \advance\!!heighta by -2\@@localoffset \doif{\localstrut}{\v!nee} {\boxhasstrutfalse}% @@ -641,12 +663,12 @@ \let\localendstrut=\endstrut \let\localstrut =\strut \else - \let\localbegstrut=\pseudostrut % was: \relax - \let\localendstrut=\relax - \let\localstrut =\pseudostrut % was: \relax + \let\localbegstrut=\pseudobegstrut % was: \relax + \let\localendstrut=\pseudoendstrut % was: \relax + \let\localstrut =\pseudostrut % was: \relax %\ifboxhasheight\ifdim\!!heighta<\ht\strutbox % saveguard - % \let\localbegstrut=\relax - % \let\localstrut =\relax + % \let\localbegstrut=\relax % but not that + % \let\localstrut =\relax % save afterall %\fi\fi \fi \ifboxhasheight @@ -684,7 +706,8 @@ \fi \fi \def\dowithframedbox% - {\aftergroup\stoplocalframed}% + {\let\postprocessframebox\undefined %new + \aftergroup\stoplocalframed}% \edef\framedwidth % a new feature {\ifdim\!!widtha >\!!zeropoint\the\!!widtha \else\!!zeropoint\fi}% \edef\framedheight% a new feature @@ -692,6 +715,7 @@ \afterassignment\dowithframedbox \setbox\framebox=\next} + %D Carefull analysis of this macro will learn us that not all %D branches in the last conditionals can be encountered, that %D is, some assignments to \type{\next} will never occur. @@ -732,6 +756,9 @@ \ifboxisoverlaid \else \dolocateframebox \fi + \ifx\postprocessframebox\undefined \else + \postprocessframebox\framebox + \fi \doifelsevalue{\@@framed\c!kader}{\v!overlay} {\edef\overlaylinecolor{\getvalue{\@@framed\c!kaderkleur}}% \edef\overlaylinewidth{\the\linewidth}}% @@ -852,7 +879,7 @@ \def\mframed% {\dodoubleempty\domframed[\donetrue]} -\def\minframed% +\def\inmframed% {\dodoubleempty\domframed[\donefalse]} %D So instead of the rather versatile \type {\framed}, we ue @@ -860,7 +887,8 @@ %D %D \startbuffer %D \startformule -%D x \times \mframed{y} \times y^{z_z} +%D x \times \mframed{y} \times y^{z_z} +%D x \times \inmframed{y} \times y^{z_z} %D \stopformule %D \stopbuffer %D @@ -911,8 +939,8 @@ %D %D \haalbuffer %D -%D For inline use, we also provide the \type {\minframed} -%D alternative: we want $x \times \minframed{y}$ in inline +%D For inline use, we also provide the \type {\inmframed} +%D alternative: we want $x \times \inmframed{y}$ in inline %D math, right? %D This previous framing macros needs a lot of alternatives for @@ -1582,7 +1610,7 @@ \def\dostopmarginrule% {\endofshapebox \reshapebox - {\hbox{\inlinkermarge{\dodrawmarginrule}\box\shapebox}}% + {\hbox{\inleftmargin{\dodrawmarginrule}\box\shapebox}}% \flushshapebox \egroup} @@ -1710,7 +1738,7 @@ \def\thinrule% {\strut \leaders - \hrule\!!height\@@dlhoogte\!!depth\@@dlhoogte + \hrule\!!height.5\linewidth\!!depth.5\linewidth \hfill \strut} @@ -1720,8 +1748,7 @@ \endgraf} \def\dosetupthinrules[#1]% - {\getparameters[\??dl][#1]% - \assignvalue{\@@dlafstand}{\@@dl@@afstand}{1.0}{1.5}{2.0}} + {\getparameters[\??dl][#1]} \def\setupthinrules% {\dosingleargument\dosetupthinrules} @@ -1730,16 +1757,31 @@ {\bgroup \dosetupthinrules[#1]% \@@dlvoor - \spacing\@@dl@@afstand + \assignvalue{\@@dlinterlinie}{\@@dlinterlinie}{1.0}{1.5}{2.0}% + \spacing\@@dlinterlinie \dorecurse {\@@dln} - {\thinrule\ifnum\recurselevel<\@@dln\endgraf\fi}% + {\ifnum\recurselevel=\@@dln \dothinrulesnobreak \else + \ifnum\recurselevel=2 \dothinrulesnobreak \fi\fi + \thinrule + \ifnum\recurselevel<\@@dln \endgraf \fi}% \@@dlna \egroup} \def\thinrules% {\dosingleempty\dothinrules} +%D \macros +%D {optimizethinrules} +%D +%D By saying \type {\thinrulestrue} or \type {-false}, we +%D can influence the way dangling lines are handled. + +\newif\ifoptimizethinrules \optimizethinrulestrue + +\def\dothinrulesnobreak% + {\ifoptimizethinrules\penalty500\fi} + %D \macros %D {startframedtext, setupframedtexts, %D defineframedtext, start<>, <>} @@ -1891,11 +1933,11 @@ \def\dododostartframedtext[#1][#2][#3]% {\processaction [#2] - [ \v!links=>\letvalue{\??kd#1\c!links}=\relax + [ \v!links=>\letvalue{\??kd#1\c!links }=\relax \letvalue{\??kd#1\c!rechts}=\hfill, - \v!rechts=>\letvalue{\??kd#1\c!links}=\hfill + \v!rechts=>\letvalue{\??kd#1\c!links }=\hfill \letvalue{\??kd#1\c!rechts}=\relax, - \v!midden=>\letvalue{\??kd#1\c!links}=\hfill + \v!midden=>\letvalue{\??kd#1\c!links }=\hfill \letvalue{\??kd#1\c!rechts}=\hfill]% \forgetparindent \setbox\framebox=\vbox @@ -1906,7 +1948,7 @@ \blanko[\v!blokkeer]% \let\\=\endgraf \getvalue{\??kd#1\c!binnen}% - \dostartattributes\??kd\c!letter\c!kleur{}} + \dostartattributes{\??kd#1}\c!letter\c!kleur{}} \def\dostopframedtext[#1]% {\endgraf @@ -1936,7 +1978,7 @@ \blanko[\v!blokkeer]% \let\\=\endgraf \getvalue{\??kd#1\c!binnen}% - \dostartattributes\??kd\c!letter\c!kleur{}% + \dostartattributes{\??kd#1}\c!letter\c!kleur{}% \bgroup \aftergroup\docloseframedtext \let\next=} @@ -2065,7 +2107,7 @@ \@@tltussen \endgraf} -\def\dodobottomtextrule#1% +\def\dodobottomtextrule#1#2% {\ifhmode \endgraf \fi @@ -2078,7 +2120,7 @@ \advance\dimen0 by .5ex \vskip\dimen0 \@@tltussen - \doifelsenothing{#1} + \doifelsenothing{#2} {\bgroup \advance\hsize by -\rightskip \advance\hsize by -\leftskip @@ -2087,18 +2129,16 @@ {\color[\@@tllijnkleur] {\hrule\!!depth\linewidth\!!height\!!zeropoint\!!width\hsize}}% \egroup} - {\docomplextextrule{#1}}% - \prevdepth\!!zeropoint} % look at this - -\def\dobottomtextrule#1% - {\dodobottomtextrule{#1}% - \@@tlna + {\docomplextextrule{#2}}% + \ifvmode\prevdepth\!!zeropoint\fi + #1% \pagina[\v!voorkeur]} -\def\domiddletextrule#1% - {\dodobottomtextrule{#1}% - \@@tltussen - \pagina[\v!voorkeur]} +\def\dobottomtextrule% + {\dodobottomtextrule\@@tlna} + +\def\domiddletextrule% + {\dodobottomtextrule\@@tltussen} \def\dounknowntextrule% {\iffirstargument @@ -2153,7 +2193,8 @@ \def\complexfillinrules[#1]% {\def\docomplexfillinrules##1##2% - {\dodocomplexfillinrules[#1]{##1}{##2}{\thinrules[n=\@@iln]}}% + {\dodocomplexfillinrules[#1]{##1}{##2}{\thinrules + [\c!n=\@@iln,\c!interlinie=\@@ilinterlinie,\c!voor=,\c!na=]}}% \dodoublegroupempty\docomplexfillinrules} \def\dodocomplexfillinrules[#1]#2#3#4% @@ -2164,23 +2205,22 @@ \noindent \doifelse{\@@ilbreedte}{\v!passend} {\let\@@ilafstand=\!!zeropoint - \setbox0=\hbox} + \hbox} {\doifelse{\@@ilbreedte}{\v!ruim} - {\setbox0=\hbox} - {\setbox0=\hbox to \@@ilbreedte}} - \bgroup + {\hbox} + {\hbox to \@@ilbreedte}} + \bgroup \doattributes\??il\c!letter\c!kleur{\strut#2\hfill\@@ilscheider}% \hskip\@@ilafstand \egroup - \hangindent=\wd0\relax - \parindent=\hangindent - \box0\relax + %\hangindent=\wd0\relax % tzt hang=yes,n + %\parindent=\hangindent + %\box0\relax \stelwitruimtein[\v!groot]% \ignorespaces #4% \doifsomething{#3} - {\doifnot{\@@ilbreedte}{\v!passend} - {\kern\@@ilafstand} + {\kern\@@ilafstand \doattributes\??il\c!letter\c!kleur{#3\strut}}% \endgroup \endgraf @@ -2197,7 +2237,7 @@ \definecomplexorsimpleempty\fillintext -\def\complexfillintext[#1]% +\def\complexfillintext[#1]% rather rough, using an \unhbox is suboptimal {\def\docomplexfillintext##1##2% {\dowithnextbox {\dodocomplexfillinrules[#1]{##1}{\hfill##2}{\unhbox\nextbox\unskip}}% @@ -2494,10 +2534,8 @@ \c!dikte=\@@kadefaultwidth\linewidth] \setupthinrules - [\c!afstand=\v!klein, + [\c!interlinie=\v!klein, \c!n=3, - \c!hoogte=.5\linewidth, - \c!diepte=\@@dlhoogte, \c!voor=, \c!na=] @@ -2519,6 +2557,7 @@ \c!voor=\blanko, \c!na=\blanko, \c!n=1, + \c!interlinie=\v!klein, \c!scheider=, \c!letter=\v!normaal, \c!kleur=] diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex new file mode 100644 index 000000000..ea24cf852 --- /dev/null +++ b/tex/context/base/core-sec.tex @@ -0,0 +1,1491 @@ +%D \module +%D [ file=core-sec, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Sectioning, +%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. + +\writestatus{loading}{Context Core Macros / Sectioning} + +\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 + +\startmessages czech library: structures + title: struktury + 1: zacatek oddilu (sekce) -- + 2: konec oddilu (sekce) -- +\stopmessages + +\unprotect + +\def\dodochecknummer#1#2#3% + {\bgroup + \doifinstringelse{.0}{.#2} % waarom \instring en \@koscheider + {\doifnot{#3}{\v!per} + {%\debuggerinfo{\m!systems}{number #1 #3 becomes \getnumbervariable{#1\c!wijze}}% + \setevalue{\s!number#1\c!wijze}{#3}% geen \xdef, gaat mis met \subpage + \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]% + {\bgroup % added + \global\let\voorafgaandenummer\empty + \ifsectienummer + \doifvalue{\??sb\@@sectieblok\c!nummer}{\v!ja} % added + {\doifelsevalue{\s!number#1\c!sectienummer}{\v!ja} + {\donetrue}{\donefalse}% + \doifvalue{\s!number#1\c!sectienummer}{\v!nummer} + {\donetrue\let\@@sectionconversion\gobbleoneargument}% + \ifdone + \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}% + \fi + \egroup} + +\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\maakhetnummer[#1]% + {\maakvoorafgaandenummer[#1]% + \xdef\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}} + +% sectioning + +\newcount\nofsections + +\def\zerosection{\v!tekst} +\def\firstsection{} +\def\lastsection{} +\let\@@sectie\empty +\let\@@koppeling\empty + +\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} +\setvalue{\??by\v!per\v!pagina}{\v!tekst} % see footnotes + +%%%%%%%%% old + +\def\dostelsectiein[#1][#2]% + {\getparameters[\??se#1][#2]% + \doifelsevalue{\??se#1\c!vorigenummer}{\v!ja} + {\setvalue{#1\c!nummer}{\@@longsectionnumber{#1}}} + {\setvalue{#1\c!nummer}{\@@shortsectionnumber{#1}}}} + +\def\stelsectiein% + {\dodoubleargument\dostelsectiein} + +%%%%%%%%% new, multilingual + +\def\dostelsectiein[#1][#2][#3]% + {\ifthirdargument + \getparameters[\??se#1#2][#3]% + \else + \getparameters[\??se#1][#2]% + \fi + \doifelsevalue{\??se#1\c!vorigenummer}{\v!ja} + {\setvalue{#1\c!nummer}{\@@longsectionnumber{#1}}} + {\setvalue{#1\c!nummer}{\@@shortsectionnumber{#1}}}} + +\def\stelsectiein% + {\dotripleempty\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{\zerosection}}} % \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!vorigenummer=\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}}} + +% suited for chinese too: + +\def\@@sectionconversion#1#2% a doublure with \@@shortsectionnumber + {\ifnum#2=0 0\else % else troubles with \uchar + \@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax + \@EA\ifx\csname\??se#1\c!conversie\endcsname\relax + #2% + \else + \getvalue{\??cv\getvalue{\??se#1\c!conversie}}{#2}% + \fi + \else + \getvalue{\??cv\getvalue{\??se#1\@@sectieblok\c!conversie}}{#2}% + \fi + \fi} + +\def\@@sectionlevel#1% + {\ifundefined{\??se#1\c!niveau}0\else\getvalue{\??se#1\c!niveau}\fi} + +% Omdat een markering kan worden herdefinieerd moeten we +% eerst testen of er wel een keten||afhankelijkheid is. + +\def\resetsectionmarks[#1]% + {\doifdefinedelse{\??se#1} + {\def\donexttrackcommando##1% + {\doifdefined{\??se##1\c!markering} % skip zero level + {\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 + +% evt ook level gaan opslaan tbv snelle selectie + +\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% opvoeren met \ifcsname + {\bgroup + \doifelse{#1}{\v!vorige} + {\global\alllevelstrue + \global\let\currentlevel\empty + \def\dobacktrackcommando##1% + {\ifnum\countervalue{\??se##1}>0 + \global\alllevelsfalse + \xdef\currentlevel{\getvalue{\previoussection{##1}\s!format}}% + \else + \dobacktracklevel{##1}% + \fi}% + \dobacktrackcommando\lastsection} + {\doifelse{\getvalue{\??by#1}}{\v!tekst} + {\global\alllevelstrue + \global\let\currentlevel\empty} + {\doifdefinedelse{\??ko#1\c!sectie} % beter alteratief: ook + {\edef\@@sectie{\getvalue{\??ko#1\c!sectie}}} % hoofdstuk\c!format + {\edef\@@sectie{#1}}% + \doifdefinedelse{\??se\@@sectie} + {\global\alllevelsfalse + \xdef\currentlevel{\getvalue{\@@sectie\s!format}}} + {\global\alllevelstrue + \global\let\currentlevel\empty + \def\dobacktrackcommando##1% + {\@EA\ifx\csname\??se##1\c!start\endcsname\relax + \dobacktracklevel{##1}% + \else + \ifnum\countervalue{\??se##1}>0 + \global\alllevelsfalse + \xdef\currentlevel{\getvalue{##1\s!format}}% + \else + \dobacktracklevel{##1}% + \fi + \fi}% + \dobacktrackcommando\lastsection}}}% + \egroup} + +\let\currentlevel\empty + +\def\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} + +% suited for chinese too: + +\def\@@shortsectionnumber#1% + {\@EA\ifx\csname\??se#1\@@sectieblok\c!conversie\endcsname\relax + \@EA\ifx\csname\??se#1\c!conversie\endcsname\relax + \@@sectionvalue{#1}% + \else + \@@sectionconversion{#1}{\@@sectionvalue{#1}}% + \fi + \else + \@@sectionconversion{#1}{\@@sectionvalue{#1}}% + \fi} + +\def\dosetlocalsectieblok#1#2#3% + {\def\@@sectiontype{#1}% + \def\@@sectieblok{#2}% + \def\@@sectieblokken{#3}} + +\def\doaroundsectieblok#1% + {\doifvaluesomething{\??sb#1\c!pagina} + {\ExpandFirstAfter\pagina[\getvalue{\??sb#1\c!pagina}]}% + \resetsectioncounters[\zerosection]% was firstsection + \resetsectionmarks[\zerosection]} + +\def\dostartsectieblok#1#2% + {\begingroup + \doaroundsectieblok{#1}% + \getvalue{\??sb#1}% + \expandafter\csname#2true\endcsname % vervangen door mode + \enablemode[\systemmodeprefix#1]% + \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} + +% We used to use the first char as id, but a counter is +% better, because in english we get a name clash. + +\newcounter\currentsectionblock + +\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 + \doglobal\increment\currentsectionblock + \setevalue{\??sb#1}% + {\noexpand\dosetlocalsectieblok{\currentsectionblock}{#1}{#2}}% + \setvalue{\e!start#2}% + {\dostartsectieblok{#1}{#2}}% + \setvalue{\e!stop#2}% + {\dostopsectieblok}} + +\def\definieersectieblok% + {\dotripleargument\dodefinieersectieblok} + +\def\sectiebloklabel#1#2% + {\@EA\ifx\csname\??ko#1\@@sectieblok\c!label\endcsname\relax + \labeltexts{#1}{#2}% + \else + \labeltexts{\getvalue{\??ko#1\@@sectieblok\c!label}}{#2}% + \fi} + +\dosetlocalsectieblok{2}{\v!hoofdtekst}{\v!hoofdteksten} % hm, dirty + +\def\setsectiontype[#1]% + {\getvalue{\??sb#1}} + +\def\writesection#1#2#3% #3 -> \asciititle + {\bgroup + \edef\!!stringa{#1}% + \@EA\writestatus\@EA + {\!!stringa} + {\ifsectienummer#2\else(#2)\fi\normalspace\asciititle}% + \egroup} + +\def\@@koniveau{1} \def\kopniveau{\@@koniveau} + +\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}]}}% + \doifinset{\getvalue{\??tk\v!voet\v!tekst\c!status}}{\v!normaal,\v!start} + {\doifvaluesomething{\??ko#1\c!voet} % new + {\stelvoetin[\c!status=\getvalue{\??ko#1\c!voet}]}}}} + +\def\dohandelpaginaafX#1% zie doordefinieren / boven + {\bgroup + \!!countb=\@@koniveau + \advance\!!countb by #1 + \multiply\!!countb by 500 + \!!counta=20000 + \advance\!!counta by \!!countb + \dosomebreak{\penalty\!!counta}% + \egroup} + +\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\handelpaginaafC#1% + {\xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}% + \nobreak} + +%\def\dolocalkopsetup#1% koppeling met standaard kopcommando / engels +% {\forgetall +% \doifvaluesomething{\??ko#1\c!uitlijnen} +% {\ExpandFirstAfter\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]}% +% \doifvaluesomething{\??ko#1\c!tolerantie} +% {\ExpandFirstAfter\steltolerantiein[\getvalue{\??ko#1\c!tolerantie}]}% +% \def\\{\crlf\strut\ignorespaces}} + +\def\dolocalkopsetup#1% koppeling met standaard kopcommando / engels + {\forgetall + \doifvaluesomething{\??ko#1\c!uitlijnen} + {\expanded{\steluitlijnenin[\getvalue{\??ko#1\c!uitlijnen}]}}% + \doifvaluesomething{\??ko#1\c!tolerantie} + {\expanded{\steltolerantiein[\getvalue{\??ko#1\c!tolerantie}]}}% + \def\\{\crlf\strut\ignorespaces}} + +\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 + +\def\dodosomekop#1[#2]#3% + {\doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} + {\def\next{\doquadruplegroupempty\dododosomekop{#1}{#2}{#3}}} + {\def\next{\fourthargumentfalse\dododosomekop{#1}{#2}{#3}{}}}% + \next} + +\def\finalsectionnumber% + {\ifundefined{\@@sectie\c!nummer}\else + \ifsomeheadconversion + \@@shortsectionnumber{\@@sectie}% + \else + \getvalue{\@@sectie\c!nummer}% + \fi + \fi} + +\def\dododosomekop#1#2#3#4% + {\iffourthargument + \def\next% + {\dodododosomekop{#1}[#2]{#1}{#3}{#4}}% + \else + \def\next% + {\dodododosomekop{#1}[#2]{#1}{\finalsectionnumber}{#3}}% + \fi + \next} + +\def\findsectionnumber#1#2#3% class file title + {\begingroup + \setsectieenkoppeling{#1}% + \xdef\foundsectionnumber{1}% + \def\dolijstelement##1##2##3##4##5##6% + {\doif{##1}{#1} + {\ConvertConstantAfter\doif{##4}{#3} + {\global\utilitydonetrue + \scratchcounter=0\getvalue{\??se\@@sectie\c!niveau}% + \advance\scratchcounter by 2 + \def\do####1:####2]% + {\advance\scratchcounter by -1 + \ifcase\scratchcounter + \xdef\foundsectionnumber{####1}% + \else + \do####2]% + \fi}% + \do##5]}}}% + \setbox0=\vbox + {\doutilities{#1}{#2}{#1}{}{}}% + \endgroup + \doifnumberelse{\foundsectionnumber} + {\doif{\foundsectionnumber}{0}{\xdef\foundsectionnumber{1}}} + {\xdef\foundsectionnumber{1}}% an appendix or so + \stelkopnummerin[#1][\foundsectionnumber]% + \stelkopnummerin[#1][-1]} + +\newif\ifsomeheadconversion + +\def\setsomeheadconversion#1#2% + {\someheadconversionfalse + \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} + {\def\someheadconversion{#2}} + {\bepaalkopnummer[#1]% + \@EA\ifx\csname\??se\@@sectie\@@sectieblok\c!kopconversie\endcsname\relax + \@EA\ifx\csname\??se\@@sectie\c!kopconversie\endcsname\relax + \def\someheadconversion{#2}% + \else + \@EA\ifx\csname\??se\@@sectie\c!kopconversie\endcsname\empty + \def\someheadconversion{#2}% + \else + \someheadconversiontrue + \def\someheadconversion% + {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\c!kopconversie}}{#2}}% + \fi + \fi + \else + \@EA\ifx\csname\??se\@@sectie\@@sectieblok\c!kopconversie\endcsname\empty + \def\someheadconversion{#2}% + \else + \someheadconversiontrue + \def\someheadconversion% + {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\@@sectieblok\c!kopconversie}}{#2}}% + \fi + \fi}} + +\def\writtenfullsectionnumber{\string\fullsectionnumber} +\def\ignoredfullsectionnumber#1#2#3{#3} +\let\storedfullsectionnumber\relax +\unexpanded\def\naturalfullsectionnumber#1#2#3{\sectiebloklabel{#1}{\getvalue{\??cv#2}{#3}}} +\unexpanded\def\limitedfullsectionnumber#1#2#3{\getvalue{\??cv#2}{#3}} + +\def\setfullsectionnumber#1% + {\doifelsevalue{#1\c!kopconversie}{\v!ja} + {\doifelsevalue{#1\c!koplabel}{\v!ja} + {\let\fullsectionnumber\naturalfullsectionnumber} + {\let\fullsectionnumber\limitedfullsectionnumber}} + {\let\fullsectionnumber\ignoredfullsectionnumber}} + +%\let\fullsectionnumber\naturalfullsectionnumber +\let\fullsectionnumber\limitedfullsectionnumber + +% \dodododosomekop IS NON GROUPED, SO WE NEED TO RESTORE !!!! +% +% dit kan dus beter \everyaroundhead zijn + +\def\dodododosomekop#1[#2]#3#4#5% % pas met \ExpandFirstAfter op bij twee||taligheid + {\flushingcolumnfloatsfalse % #3=#1=redundant + \someheadconversionfalse +% \let\fullsectionnumber\naturalfullsectionnumber +\let\fullsectionnumber\limitedfullsectionnumber + \setsectieenkoppeling{#1}% + \doifelsevalue{\??ko#1\c!prefix}{} + {\kopprefixfalse} + {\kopprefixtrue}% + \ifkopprefix + \doifelsevalue{\??ko#1\c!prefix}{+} + {\doifelsenothing{#2} + {\def\localkopprefix{+}} + {\def\localkopprefix{#2}}} % eigenlijk alleen eerste + {\edef\localkoprefix{\getvalue{\??ko#1\c!prefix}}}% + \fi + \doifelsevalue{\??ko#1\c!plaatskop}{\v!ja} + {\plaatskoptrue} + {\plaatskopfalse}% + \processaction + [\getvalue{\??ko#1\c!verhoognummer}] + [ \v!ja=>\verhoognummertrue, + \v!nee=>\verhoognummerfalse, + \s!unknown=>{\ifx\currentproduct\empty + \findsectionnumber{#1}\commalistelement{#5}% + \fi + \verhoognummertrue}]% + \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 + \convertexpanded{\??ko#1}{#5}\asciititle + \ifverhoognummer + \ifplaatskop + \checknexthead\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 +\setsomeheadconversion{#1}{#4}% +\ifsomeheadconversion + \let\fullsectionnumber\naturalfullsectionnumber + \doplaatskopnummertekst + {#1} + {\setsectionlistreference{\@@sectie}{#1}% + \ExpandFirstAfter\soortpagina[\@@koppeling]% +% \let\fullsectionnumber\storedfullsectionnumber + \let\fullsectionnumber\writtenfullsectionnumber + \rawreference{\s!sec}{#2}{{\someheadconversion}{\asciititle}}% + \resetsectionmarks[\@@sectie]% + \stellijstin[\@@koppeling][\c!expansie=\getvalue{\??ko#1\c!expansie}]% + \let\fullsectionnumber\writtenfullsectionnumber + \doschrijfnaarlijst{\@@koppeling}{\someheadconversion}{#5}{\v!kop}}% + {\someheadconversion} + {#5} + {\marking[#1]{#5}% + \let\fullsectionnumber\storedfullsectionnumber + \expanded{\marking[#1\v!nummer]{\someheadconversion}}}% + \let\fullsectionnumber\ignoredfullsectionnumber + \writesection{#1}{\someheadconversion}{#5}% +\else + \doplaatskopnummertekst + {#1} + {\setsectionlistreference{\@@sectie}{#1}% + \ExpandFirstAfter\soortpagina[\@@koppeling]% + \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% + \resetsectionmarks[\@@sectie]% + \stellijstin[\@@koppeling][\c!expansie=\getvalue{\??ko#1\c!expansie}]% + \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}} + {\sectiebloklabel{#3}{#4}} + {#5} + {\marking[#1]{#5}% + \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} % rommelig omdat + {\edef\finalsectionnumber{#4}} % #4 al is toegekend + {\bepaalkopnummer[#1]}% migreert naar 3e argument + \expanded{\marking[#1\v!nummer]{\finalsectionnumber}}}% + \writesection{#1}{#4}{#5}% + \fi + \else + \doplaatskoptekst + {#1} + {\setsectionlistreference{\@@sectie}{#1}% + \ExpandFirstAfter\soortpagina[\@@koppeling]% + \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% + \resetsectionmarks[\@@sectie]% + \stellijstin[\@@koppeling][\c!expansie=\getvalue{\??ko#1\c!expansie}]% + \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}} + {#5} + {\marking[#1]{#5}% + \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} + {\edef\finalsectionnumber{#4}} + {\bepaalkopnummer[#1]}% + \expanded{\marking[#1\v!nummer]{\finalsectionnumber}}}% + \writesection{#1}{-}{#5}% + \fi + \ifkopprefix + \ExpandFirstAfter\setupreferencing[\c!prefix=\localkopprefix]% + \fi + \dosomebreak\nobreak + \ifdisplaysectionhead\getvalue{\??ko#1\c!na}\fi + \else + \checknexthead\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]% + \marking[#1]{#5}% + \doifelsevalue{\??ko#1\c!eigennummer}{\v!ja} + {\edef\finalsectionnumber{#4}} + {\bepaalkopnummer[#1]}% + \expanded{\marking[#1\v!nummer]{\finalsectionnumber}}% + \ExpandFirstAfter\soortpagina[\@@koppeling]% + \bgroup + \stellijstin[\@@koppeling][\c!expansie=\getvalue{\??ko#1\c!expansie}]% + \ifkopnummer + \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% + \doschrijfnaarlijst{\@@koppeling}{#4}{#5}{\v!kop}% + \writesection{#1}{#4}{#5}% + \else + \rawreference{\s!sec}{#2}{{#4}{\asciititle}}% + \doschrijfnaarlijst{\@@koppeling}{}{#5}{\v!kop}% + \writesection{#1}{-}{#5}% + \fi + \egroup + \ifkopprefix + \ExpandFirstAfter\setupreferencing[\c!prefix=\localkopprefix]% + \fi + \fi + \else + \ifplaatskop + \checknexthead\handelpaginaaf{#1}% + \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...] + \getvalue{\??ko#1\c!tussen}% + \doplaatskoptekst + {#1} + {\rawreference{\s!sec}{#2}{{#4}{\asciititle}}} + {#5} + {}% + \writesection{#1}{-}{#5}% + \dosomebreak\nobreak + \ifdisplaysectionhead\getvalue{\??ko#1\c!na}\fi + \else + % do nothing + \fi + \fi + \flushingcolumnfloatstrue + \someheadconversionfalse +% \let\fullsectionnumber\naturalfullsectionnumber +\let\fullsectionnumber\limitedfullsectionnumber + \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% + {\beginheadplacement{#1}% + \setbox0=\hbox + {\getvalue{\??ko#1\c!commando} + {} % no number + {\doattributes + {\??ko#1}\c!letter\c!kleur + {\doattributes + {\??ko#1}\c!tekstletter\c!tekstkleur + {\dontconvertfont + \ifdisplaysectionhead + \stelinterliniein + \else + \stelspatieringin + \fi + #2% + \getvalue{\??ko#1\c!voorcommando}% + \getvalue{\??ko#1\c!tekstcommando}% + {\ifdisplaysectionhead + \setstrut\begstrut#3\endstrut + \xdef\localheaddepth{\the\dp\strutbox}% + \else + #3% + \fi}% + \getvalue{\??ko#1\c!nacommando}% + \ifdisplaysectionhead\endgraf\fi}}}}% + \endheadplacement{#1}{#4}} + +\def\doplaatskopnummertekst#1#2#3#4#5% + {\beginheadplacement{#1}% + \setbox0=\hbox + {\getvalue{\??ko#1\c!commando}% + {\doattributes{\??ko#1}\c!letter\c!kleur + {\doattributes{\??ko#1}\c!nummerletter\c!nummerkleur + {\getvalue{\??ko#1\c!voorcommando}% + \getvalue{\??ko#1\c!nummercommando}% + {\ifdisplaysectionhead + \setstrut\begstrut#3\endstrut + \else + #3% + \fi}}}} + {\doattributes{\??ko#1}\c!letter\c!kleur + {\doattributes{\??ko#1}\c!tekstletter\c!tekstkleur + {\dontconvertfont + \ifdisplaysectionhead + \stelinterliniein + \else + \stelspatieringin + \fi + #2% + \getvalue{\??ko#1\c!tekstcommando}% + {\ifdisplaysectionhead + \setstrut\begstrut#4\endstrut + \xdef\localheaddepth{\the\dp\strutbox}% + \else + #4% + \fi}% + \getvalue{\??ko#1\c!nacommando}% + \ifdisplaysectionhead\endgraf\fi}}}}% + \endheadplacement{#1}{#5}} + +\newsignal\headsignal +\let\headlastlinewidth\!!zeropoint +\newif\ifcontinuoushead + +\def\beginheadplacement#1% + {\bgroup + \gdef\localheaddepth{\dp\strutbox}% + \everypar{}% needed indeed + \noindent % ipv \witruimte elders, na \forgetall ! + \bgroup + \forgetall % now we may forget everything + %\showcomposition + \mindermeldingen + \postponefootnotes + \iflocation\ifdisplaysectionhead\else\noninterferingmarks\fi\fi + \setupinteraction + [\c!letter=, + \c!kleur=, + \c!contrastkleur=]% + \strictouterreferencestrue % tzt instelling + \def\localkopsetup% + {\dolocalkopsetup{#1}}% + \startsynchronisatie} + +\def\endheadplacement#1#2% + {\doifvaluenothing{\??ko#1\c!file}{\locationfalse}% + \ifdisplaysectionhead + \let\headlastlinewidth\!!zeropoint + \snaptogrid\hbox + {\iflocation + \ifautocrossdocument + \naarbox{\box0}[\getvalue{\??ko#1\c!file}::#1]% + \else + \hbox{\box0}% + \fi + \else + \hbox{\box0}% + \fi + \doflushfootnotes}% new + \endgraf + \nointerlineskip + \dosomebreak\nobreak + #2% + \else + \strut + \doflushfootnotes % new + \iflocation + \ifautocrossdocument + \hhboxindent=\ifcontinuoushead\headlastlinewidth\else\!!zeropoint\fi + \unhhbox0\with{\naarbox{\box\hhbox}[\getvalue{\??ko#1\c!file}::#1]}% + \advance\lasthhboxwidth by \numberheaddistance + \xdef\headlastlinewidth{\the\lasthhboxwidth}% + \else + \unhbox0 + \global\let\headlastlinewidth\!!zeropoint + \fi + \else + \unhbox0 + \global\let\headlastlinewidth\!!zeropoint + \fi + #2% + \dimen0=\numberheaddistance + \hskip\dimen0 \!!plus \dimen0 \!!minus .25\dimen0 + \hskip\headsignal\ignorespaces + \fi + \ifdisplaysectionhead + \ifgridsnapping % important, font related depth, see comment + \prevdepth\dp\strutbox + \else + \prevdepth\localheaddepth + \fi + \fi + \stopsynchronisatie + \egroup + \egroup + \doflushfootnotes % new, still needed? + \ifdisplaysectionhead + \doifvalue{\??ko#1\c!springvolgendein}{\v!nee}{\noindentation}% + \else + \nonoindentation % recently added, was a bug + \fi} + +\def\checknexthead#1#2% nog optioneel + {\ifhmode + \scratchcounter=\lastpenalty\unpenalty % no beauty in this + \ifdim\lastskip=\headsignal + \handelpaginaafC{#1}% + \global\continuousheadtrue + \else + \penalty\scratchcounter + \global\continuousheadfalse + #1{#2}% + \fi + \else + \global\continuousheadfalse + #1{#2}% + \fi} + +\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{\finalsectionnumber}{0} % kan effienter +% {\finalsectionnumber}% +% \egroup} +% +% beter : + +\def\huidigekopnummer{0} + +\def\bepaalkopnummer[#1]% + {\bgroup + \setsectieenkoppeling{#1}% + \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}% + \egroup} + +%\def\complexkopnummer[#1]% +% {\bgroup +% \setsectieenkoppeling{#1}% +% \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}% +% \doifnot{\huidigekopnummer}{0} +% {\finalsectionnumber}% +% \egroup} + +\def\complexkopnummer[#1]% + {\bgroup + \edef\huidigekopnummer{#1}% + \doifinsetelse{-}{#1} + {\removefromcommalist{-}\huidigekopnummer + \setsectieenkoppeling\huidigekopnummer + \stelsectiein[\@@sectie][\c!vorigenummer=\v!nee]}% + {\setsectieenkoppeling\huidigekopnummer}% + \xdef\huidigekopnummer{\@@sectionvalue{\@@sectie}}% + \doifnot{\huidigekopnummer}{0}{\finalsectionnumber}% + \egroup} + +\def\simplekopnummer% + {\huidigekopnummer} + +\definecomplexorsimple\kopnummer + +\def\alinea% + {\par} + +\def\plaatskopalinea#1#2% + {\vbox + {\localkopsetup + \begstrut\doifsomething{#1}{#1\hskip\numberheaddistance}#2}} + +\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 + \veryraggedcenter + \let\\\endgraf + \let\crlf\endgraf + \doifsomething{#1}{\strut#1\par}\begstrut#2}} + +\def\plaatskopintekst#1#2% + {\bgroup + \localkopsetup % no stretch in distance + \doifsomething{#1}{{#1}\kern\numberheaddistance}{\begstrut#2}% + \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!voet=, + \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, + \c!uitlijnen=, + \c!tolerantie=, + \c!file=, + \c!expansie=, + #2]% + \ConvertToConstant\doifnot{#1}{\getvalue{\??ko#1\c!default}} + {\doifsomething{\getvalue{\??ko#1\c!default}} + {\copyparameters + [\??ko#1][\??ko\getvalue{\??ko#1\c!default}] + [\c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,\c!hoofd,\c!voet, + \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer, + \c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein, + %\c!nummerletter,\c!tekstletter, + %\c!expansie, % njet + \c!uitlijnen,\c!tolerantie,\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}]}}% +% \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]}} + {\copyparameters + [\??ko#1][\??ko#2] + [\c!niveau,\c!sectie,\c!koppeling,\c!prefix, + \c!voor,\c!na,\c!commando,\c!file,\c!pagina,\c!doorgaan,\c!hoofd,\c!voet, + \c!nummer,\c!eigennummer,\c!plaatskop,\c!verhoognummer, + \c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein, + %\c!nummerletter,\c!tekstletter, + %\c!expansie, % njet + \c!uitlijnen,\c!tolerantie,\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}% + {\dodoubleempty\dosomekop[#1]}} + +\def\definieerkop% + {\dodoubleemptywithset\dodefinieerkop} + +\def\dosomekop[#1][#2]% + {\dowithpargument{\dodosomekop{#1}[#2]}} + +\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\@@plaatskop{\plaatskopnormaal} + +\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!alinea=>\def\@@plaatskop{\plaatskopalinea}, + \s!unknown=>\def\@@plaatskop{\plaatskopnormaal}]} + +\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}} + +% a left over + +\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} + +\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!sectionlevel-1] % deel +\definieersectie[\v!sectionlevel-2] % hoofdstuk +\definieersectie[\v!sectionlevel-3] % paragraaf +\definieersectie[\v!sectionlevel-4] % subparagraaf +\definieersectie[\v!sectionlevel-5] % subsubparagraaf +\definieersectie[\v!sectionlevel-6] % subsubsubparagraaf +\definieersectie[\v!sectionlevel-7] % subsubsubsubparagraaf + +% \c!eigennummer ook hier? + +\definieerkop + [\v!deel] + [\c!sectie=\v!sectionlevel-1] + +\definieerkop + [\v!hoofdstuk] + [\c!sectie=\v!sectionlevel-2] + +\definieerkop + [\v!paragraaf] + [\c!sectie=\v!sectionlevel-3] + +\definieerkop + [\v!sub\v!paragraaf] + [\c!sectie=\v!sectionlevel-4, + \c!default=\v!paragraaf] + +\definieerkop + [\v!sub\v!sub\v!paragraaf] + [\c!sectie=\v!sectionlevel-5, + %\c!default=\v!paragraaf] + \c!default=\v!sub\v!paragraaf] % nieuw + +\definieerkop + [\v!sub\v!sub\v!sub\v!paragraaf] + [\c!sectie=\v!sectionlevel-6, + %\c!default=\v!paragraaf] + \c!default=\v!sub\v!sub\v!paragraaf] % nieuw + +\definieerkop + [\v!sub\v!sub\v!sub\v!sub\v!paragraaf] + [\c!sectie=\v!sectionlevel-7, + %\c!default=\v!paragraaf] + \c!default=\v!sub\v!sub\v!sub\v!paragraaf] % nieuw + +\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!sectionlevel-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=, + \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=, + \c!letter=\tfa, + \c!afstand=.75em, + \c!springvolgendein=\v!nee, + \c!voor={\blanko[2*\v!groot]}, + \c!na=\blanko] + +\stelkopin % nieuw + [\v!sub\v!paragraaf] + [\c!pagina=] + +\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] + +\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] + +% hm + +\stelnummeringin % na instellen hoofdteksten ! + [\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\v!nummer=\v!nee, % v + \v!deel\v!nummer=\v!ja, % v + \c!nummerscheider=--, + \c!tekstscheider=\tfskip, + \c!status=\v!start, + \c!commando=, + \c!letter=\v!normaal, + \c!kleur=] + +\protect \endinput diff --git a/tex/context/base/core-syn.tex b/tex/context/base/core-syn.tex new file mode 100644 index 000000000..ad19dc973 --- /dev/null +++ b/tex/context/base/core-syn.tex @@ -0,0 +1,395 @@ +%D \module +%D [ file=core-syn, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Synonyms and Sorts, +%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. + +\writestatus{loading}{Context Core Macros / Synonyms and Sorts} + +\unprotect + +% Formaat tex-utility-input-file : +% +% 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#4% + {\bgroup + \global\utilitydonetrue + \syndef + {\doattributes{\??sm#1}\c!tekstletter\c!tekstkleur{#3}} + \ConvertToConstant\doifelse{#4}{}{\unknown}{#4}\par + \egroup} + +\def\synonymentry#1% + {\executeifdefined{#1\s!entry}\gobblethreearguments} + +\def\dosetsynonym#1% + {\doifdefinedelse{\??sm#1\c!commando} + {\setvalue{#1\s!entry}{\getvalue{\??sm#1\c!commando}}} % 3 argumenten + {\setvalue{#1\s!entry}{\dohandlesynonymentry{#1}}}} + +\def\doplaatslijstmetsynoniemen#1#2% + {\witruimte + \begingroup + \def\currentsynonym{#1}% +% \def\synplaats{\getvalue{\??sm#1\c!plaats}}% +% \def\synbreedte{\getvalue{\??sm#1\c!breedte}}% +% \def\synmonster{\getvalue{\??sm#1\c!monster}}% +% + \doordefinieren % nog eens een class van maken, net als framed + [syndef] + [\c!plaats=\getvalue{\??sm#1\c!plaats}, + \c!breedte=\getvalue{\??sm#1\c!breedte}, + \c!afstand=\getvalue{\??sm#1\c!afstand}, + \c!monster=\getvalue{\??sm#1\c!monster}, + \c!hang=\getvalue{\??sm#1\c!hang}, + \c!uitlijnen=\getvalue{\??sm#1\c!uitlijnen}, + \c!voor=\getvalue{\??sm#1\c!voor}, + \c!tussen=\getvalue{\??sm#1\c!tussen}, + \c!na=\getvalue{\??sm#1\c!na}, + \c!springvolgendein=\getvalue{\??sm#1\c!springvolgendein}, + \c!kopletter=, + \c!letter=]% +% + \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!synoniemletter\c!synoniemkleur + {\synonymmeaningfalse#3}% + \else + \explicithmode + \doattributes{\??sm#1}\c!tekstletter\c!tekstkleur{#2}% + \fi + \endgroup} + +%\def\getsynonymmeaning#1#2#3% +% {\doifdefinedelse{#2#3} +% {{\synonymmeaningtrue\getvalue{#2#3}}} +% {{\showmessage{\m!systems}{18}{#1,#3}}} + +\def\getsynonymmeaning#1#2#3% + {\bgroup + \doifundefined{#2#3} + {\setgvalue{#2#3}{{\tt[#3]}}% + \showmessage{\m!systems}{18}{#1,#3}}% + \synonymmeaningtrue + \getvalue{#2#3}% + \egroup} + +\def\dowritesynonym#1#2#3#4% + {\begingroup % anders in mathmode lege \hbox + \convertexpanded{\??sm#1}{#3}\asciisynonym + \convertexpanded{\??sm#1}{#4}\asciimeaning + \immediatewriteutility{s e {#1} {#2} {\asciisynonym} {\asciimeaning}}% + \endgroup} + +\def\preexecutesynonym#1#2#3#4% + {\ifdoinpututilities \else + \dowritesynonym{#1}{#2}{#3}{#4}% + \unexpanded\setgvalue{#2}{\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% + {\doifsomething{#2} + {\getvalue{\s!check#1}{#2}% + \doifelsevalue{\??sm#1\c!conversie}{\v!ja} + {\unexpanded\setgvalue{#2}{\expandsynonym{#1}{#2}{#3}{#4}}} + {\doifelsevalue{\??sm#1\c!status}{\v!start} + {\doifelsevalue{\??sm#1\c!criterium}{\v!alles} + {\preexecutesynonym{#1}{#2}{#3}{#4}} + {\unexpanded\setgvalue{#2}{\executesynonym{#1}{#2}{#3}{#4}}}} + {\unexpanded\setgvalue{#2}{\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!criterium=, + \c!plaats=\v!links, + \c!breedte=5em, + \c!afstand=0pt, + \c!monster=, + \c!hang=, + \c!uitlijnen=, + \c!voor=, + \c!tussen=, + \c!na=, + \c!springvolgendein=\v!nee]% + \presetheadtext + [#2=\Word{#2}]% + \setvalue{\e!stel#2\e!in}% + {\dodoubleargument\getparameters[\??sm#1]}% + \iffourthargument + \unexpanded\def#4##1% + {\getsynonymmeaning{#1}{\??sm:#1:}{##1}}% + \ifthirdargument + \unexpanded\def#3##1% + {\getvalue{\??sm:#1:##1}}% + \fi + \setvalue{#1}% + {\dotripleempty\docomplexsynonym[\??sm:#1:][#1]}% + \else + \ifthirdargument + \unexpanded\def#3##1% + {\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} + +% Formaat tex-utility-input-file : +% +% 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}} % 1 argument + {\getvalue{\??so#1\c!voor}% + \doattributes{\??so#1}\c!letter\c!kleur{##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}\c!letter\c!kleur{#2}% + \egroup} + +\def\dowritesort#1#2#3% + {\bgroup + \convertexpanded{\??so#1}{#3}\asciisynonym + \immediatewriteutility{s e {#1} {#2} {\asciisynonym} {}}% + \egroup} + +\def\synonymentry#1% + {\executeifdefined{#1\s!entry}\gobblethreearguments} + +\def\preexecutesort#1#2#3% + {\ifdoinpututilities \else + \dowritesort{#1}{#2}{#3}% + \unexpanded\setgvalue{#2}{\processsort{#1}{#3}{#2}}% + \fi} + +% \def\executesort#1#2#3% +% {\preexecutesort{#1}{#2}{#3}% +% \processsort{#1}{#3}{#2}} +% +% Better because it catches nested logo's: + +\def\executesort#1#2#3% + {\bgroup + \def\executesort##1##2##3{##3}% Trick needed for nested logo's. + \preexecutesort{#1}{#2}{#3}% + \processsort{#1}{#3}{#2}% + \egroup} + +\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% + {\doifsomething{#2} + {\getvalue{\s!check#1}{#2}% + \doifelsevalue{\??so#1\c!status}{\v!start} + {\doifelsevalue{\??so#1\c!criterium}{\v!alles} + {\preexecutesort{#1}{#2}{#3}} + {\unexpanded\setgvalue{#2}{\executesort{#1}{#2}{#3}}}} + {\unexpanded\setgvalue{#2}{\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=, % we test for defined ! + \c!status=\v!start, + \c!criterium=, + \c!letter=, + \c!voor=, + \c!na=\endgraf]% + \presetheadtext[#2=\Word{#2}]% + \setvalue{\e!stel#2\e!in}[##1]% vervalt tzt + {\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} + +\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=\dimension] + +\protect \endinput diff --git a/tex/context/base/core-tab.tex b/tex/context/base/core-tab.tex index a8370143d..b216cf448 100644 --- a/tex/context/base/core-tab.tex +++ b/tex/context/base/core-tab.tex @@ -90,15 +90,13 @@ \newif\ifsplittables %D \macros -%D {iftracetables} +%D {tracetablestrue} %D %D When I documented this module, I felt the need for tracing %D options. After implementing this feature, I also added %D warnings, error recovery and automatic spacing. -\newif\iftracetables - -\let\tracetables \tracetablestrue +\newif\iftracetables %D We show this feature in an eample that also shows some of %D the basic table typesetting commands. @@ -367,8 +365,10 @@ \newif\ifForgetTableBarAndQuote \ForgetTableBarAndQuotetrue \bgroup + \catcode`\|=\@@active \catcode`\"=\@@active + \gdef\pushouterbarandquote% {\ifForgetTableBarAndQuote \ifnum\catcode`\|=\@@active \else @@ -382,6 +382,7 @@ \fi \let\outertablequote="% \fi} + \gdef\popouterbarandquote% {\ifForgetTableBarAndQuote \let|=\outertablebar @@ -389,11 +390,13 @@ \else \redefinetablebarandquote \fi} + \gdef\ObeyTableBarAndQuote% {\ForgetTableBarAndQuotefalse \ifintable \redefinetablebarandquote \fi} + \egroup %D \macros @@ -475,11 +478,11 @@ \def\BeginTableParBox#1% {\setbox\scratchbox=\vtop\bgroup % \setbox added - \hsize=#1 + \hsize=#1\relax \normalbaselines \let~=\!ttTie \let\-=\!ttDH - \blanko[\v!blokkeer] % added + \blanko[\v!blokkeer]% % added \the\EveryTableParBox} \def\EndTableParBox% @@ -764,7 +767,7 @@ ####% \noexpand\hfil \noexpand\stopglobalTABLEcolor % added - \the\!taRuleColumnTemplate} + \the\!taRuleColumnTemplate}% \!tfAdjoinPriorColumn} \def\!ttShortHruleA% @@ -859,8 +862,8 @@ \def\stoptabel% {\TABLEtail - \global\let\TABLEhead\empty - \global\let\TABLEtail\empty + \global\let\@@TABLEhead\empty + \global\let\@@TABLEtail\empty \finishTABLE \ifinsidefloat\else \stopbaselinecorrection % \outer.. @@ -909,12 +912,14 @@ % \catcode`\|=\@@other % \dodoubleargument\dodefinetabletemplate} +\def\douseTABLEtemplate#1#2#3% + {\gdef\TABLEhead{\getvalue{@@TABLEhead#2}}% + \gdef\TABLEtail{\getvalue{@@TABLEtail#3}}% + \complexsecondstagestartTABLE[#1]} + \def\dodefinetabletemplate[#1][#2][#3][#4]% {\ifsecondargument - \setgvalue{\c!Table#1}% - {\gdef\TABLEhead{\getvalue{@@TABLEhead#3}}% - \gdef\TABLEtail{\getvalue{@@TABLEtail#4}}% - \complexsecondstagestartTABLE[#2]}% + \setgvalue{\c!Table#1}{\douseTABLEtemplate{#2}{#3}{#4}}% \fi \egroup} @@ -1125,22 +1130,6 @@ %D the fact that the stopcondition is interface language %D dependant. -%\let\TABLEhead=\empty -%\let\TABLEtail=\empty -% -%\letvalue{\e!start \e!tabelkop}=\undefined -%\letvalue{\e!stop \e!tabelkop}=\undefined -%\letvalue{\e!start\e!tabelstaart}=\undefined -%\letvalue{\e!stop \e!tabelstaart}=\undefined -% -%\expanded -% {\def\csname\e!start\e!tabelkop\endcsname##1\csname\e!stop\e!tabelkop\endcsname% -% {\noexpand\def\noexpand\TABLEhead{##1}}} -% -%\expanded -% {\def\csname\e!start\e!tabelstaart\endcsname##1\csname\e!stop\e!tabelstaart\endcsname% -% {\noexpand\def\noexpand\TABLEtail{##1}}} - \let\@@TABLEhead\empty \def\TABLEhead{\@@TABLEhead} \let\@@TABLEtail\empty \def\TABLEtail{\@@TABLEtail} @@ -1157,12 +1146,6 @@ {\def\csname\e!start\e!tabelstaart\endcsname##1\csname\e!stop\e!tabelstaart\endcsname% {\noexpand\setTABLEtail##1\noexpand\end}} -% \def\setTABLEhead{\dosingleempty\dosetTABLEhead} -% \def\setTABLEtail{\dosingleempty\dosetTABLEtail} - -% \def\dosetTABLEhead[#1]#2\end{\setvalue{@@TABLEhead#1}{#2}} -% \def\dosetTABLEtail[#1]#2\end{\setvalue{@@TABLEtail#1}{#2}} - %D The second argument is a dummy one, by scanning for it, we %D get rid of interfering spaces. @@ -1369,7 +1352,8 @@ \chardef\TABLErowzero=0 \def\checkTABLErow#1% pure for message purposes - {\ifTABLEgraydone + {\unskip % added + \ifTABLEgraydone \convertargument #1\to\asciiA \convertcommand\TABLEendBCL\to\asciiB \ifx\asciiA\asciiB \else @@ -1729,7 +1713,10 @@ {\ifnum\currentTABLEcolumn>\maxTABLEcolumn \chuckTABLEautorow \else\ifnum\currentTABLEcolumn=0 - \chuckTABLEautorow + %\chuckTABLEautorow + \TABLEnoalign + {\global\let\checkTABLEautorow=\empty + \global\let\chuckTABLEautorow=\empty}% \else \setTABLEerror\TABLEmissingcolumn \handleTABLEerror @@ -2278,12 +2265,13 @@ \fi} \def\defineTABLEshorthands% - {\def\TWO {\use{2}}% - \def\THREE{\use{3}}% - \def\FOUR {\use{4}}% - \def\FIVE {\use{5}}% - \def\SIX {\use{6}}% - \def\REF {\ReFormat}} + {\def\SPAN##1{\use{##1}}% + \def\TWO {\use{2}}% + \def\THREE {\use{3}}% + \def\FOUR {\use{4}}% + \def\FIVE {\use{5}}% + \def\SIX {\use{6}}% + \def\REF {\ReFormat}} \def\defineTABLEunits% {\processaction diff --git a/tex/context/base/core-tbl.tex b/tex/context/base/core-tbl.tex index a1ec0887b..db534fca7 100644 --- a/tex/context/base/core-tbl.tex +++ b/tex/context/base/core-tbl.tex @@ -49,9 +49,11 @@ % j i skip right of column % k i skip around column -% Still to be done +% g g{char} align at char +% . align at . +% , align at , -% nesting, push en pop gebruiken +% Still to be done % N math numbers (best hook into existing digits mechanism) % n numbers (best hook into existing digits mechanism) @@ -60,6 +62,8 @@ % ~ \hskip.5em % | check +% nesting + % 10 evt auto stack; dan wel andere signal dan void nodig % present but not yet 100% ok @@ -80,41 +84,82 @@ % tricky: align scans ahead, over # and expands ones before % while doing -\newtoks\tabulatepreamble -\newtoks\tabulatebefore -\newtoks\tabulateafter -\newtoks\tabulatebmath -\newtoks\tabulateemath -\newtoks\tabulatefont -\newtoks\tabulatesettings - -\newtoks\tabulatedummy - -\newcounter\nofautotabulate -\newif \ifautotabulate -\newbox \tabulatebox -\newcounter\tabulatecolumns -\newif \ifsplittabulate \splittabulatetrue -\newdimen \tabulatepwidth -\newdimen \tabulatewidth -\newdimen \tabulateunit -\newif \iftabulateequal +% new: +% +% \starttabulate[|cg{.}|cg{,}|cg{,}|] +% \NC period \NC comma \NC comma \NC\NR +% \NG 100.000,00 \NG 100.000,00 \NG 100,00 \NC\NR +% \NG 10.000,00 \NG 10.000,00 \NG 1000,00 \NC\NR +% \NG 100,00 \NG 100,00 \NG 10,00 \NC\NR +% \NG 10 \NG 10 \NG 0,00 \NC\NR +% \stoptabulate +% +% \starttabulate[|c.|c,|c,|] +% \NC period \NC comma \NC comma \NC\NR +% \NG 100.000,00 \NG 100.000,00 \NG 100,00 \NC\NR +% \NG 10.000,00 \NG 10.000,00 \NG 1000,00 \NC\NR +% \NG 100,00 \NG 100,00 \NG 10,00 \NC\NR +% \NG 10 \NG 10 \NG 0,00 \NC\NR +% \stoptabulate + +\newtoks \tabulatepreamble +\newtoks \tabulatebefore +\newtoks \tabulateafter +\newtoks \tabulatebmath +\newtoks \tabulateemath +\newtoks \tabulatefont +\newtoks \tabulatesettings +\newtoks \tabulatedummy + +\newcounter \nofautotabulate +\newcounter \tabulatecolumns +\newcounter \tabulateminplines +\newcounter \tabulatemaxplines + +\newif \ifautotabulate +\newif \ifsplittabulate \splittabulatetrue +\newif \ifhandletabulatepbreak \handletabulatepbreaktrue +\newif \iftabulateequal +\newif \iftracetabulate + +\newdimen \tabulatepwidth +\newdimen \tabulatewidth +\newdimen \tabulateunit +\newdimen \tabulatemaxpheight + +\newbox \tabulatebox + +\let\handletabulatecharalign\empty \def\noftabcolumns{16} % quick and dirty stack -\def\@@tabbox@@ {@@tabbox@} -\def\@@tabhook@@{@@tabhook@} +\def\@@tabbox@@ {@@tabbox@} +\def\@@tabhook@@ {@@tabhook@} +\def\@@tabalign@@{@@tabalign@} \dorecurse\noftabcolumns {\@EA\newbox\csname\@@tabbox@@\recurselevel\endcsname} +\def\dotabulatenobreak% + {\noalign + {\nobreak + \iftracetabulate + \red\hrule\!!height.5\linewidth\!!depth.5\linewidth + \par + \kern-\linewidth + \nobreak + \fi}} + +\let\notabulatehook\empty + \def\checktabulatehook% {\ifnum\tabulatetype<2 - \let\tabulatehook\relax + %\global\let\tabulatehook\relax + \global\let\tabulatehook\notabulatehook \fi} \def\dodosettabulatepreamble#1#2% - {\ifdim\tabulatewidth=\!!zeropoint\relax + {\ifzeropt\tabulatewidth \ifcase\tabulatemodus\relax \let\preamblebox\empty \else @@ -126,34 +171,52 @@ \else \edef\preamblebox{\hsize\the\tabulatewidth}% \fi - \fi - % 0 = NC column next EQ equal column - % 1 = RC column raw RQ equal column raw - % 2 = HC column hook HQ equal column hook - \@EA\appendtoks \@EA&\@EA\hskip\pretabskip##&\to\!!toksa + \fi + % + % less bytes + % + %\edef\preamblebox% + % {\ifcase\tabulatewidth + % \ifcase\tabulatemodus\relax\else\noexpand\autotabulatetrue\fi + % \els + % \ifcase\tabulatemodus\relax\hbox to\else\hsize\fi\the\tabulatewidth + % \fi}% + % + % 0 = NC column next EQ equal column + % 1 = RC column raw RQ equal column raw + % 2 = HC column hook HQ equal column hook + \@EA\appendtoks \@EA&\@EA\hskip\pretabskip##&\to\!!toksa \@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\tabulatecolumns}\to\!!toksa - \@EA\appendtoks \preamblebox\to\!!toksa - \appendtoks \bgroup\bbskip\bgroup#1\to\!!toksa - \appendtoks \checktabulatehook\to\!!toksa - \appendtoks\ifnum\tabulatetype=1 \else \to\!!toksa - \@EA\appendtoks \the\tabulatebmath\to\!!toksa - \@EA\appendtoks \the\tabulatefont\to\!!toksa - \@EA\appendtoks \the\tabulatesettings\to\!!toksa - \@EA\appendtoks \the\tabulatebefore\to\!!toksa - \appendtoks\fi \to\!!toksa - \appendtoks \bgroup\ignorespaces\to\!!toksa - \appendtoks \tabulatehook##\to\!!toksa - \appendtoks \unskip\unskip\endgraf\egroup\to\!!toksa - \appendtoks\ifnum\tabulatetype=1 \else \to\!!toksa - \@EA\appendtoks \the\tabulateafter\to\!!toksa - \@EA\appendtoks \the\tabulateemath\to\!!toksa - \appendtoks\fi \to\!!toksa - \appendtoks #2\egroup\egroup\to\!!toksa - \@EA\appendtoks \@EA&\@EA\hskip\postabskip##\to\!!toksa + \@EA\appendtoks \preamblebox\to\!!toksa + \appendtoks \bgroup\bbskip\bgroup#1\to\!!toksa + \appendtoks \checktabulatehook\to\!!toksa + \appendtoks\ifnum\tabulatetype=1 \else \to\!!toksa + \@EA\appendtoks \the\tabulatebmath\to\!!toksa + \@EA\appendtoks \the\tabulatefont\to\!!toksa + \@EA\appendtoks \the\tabulatesettings\to\!!toksa + \@EA\appendtoks \the\tabulatebefore\to\!!toksa + \appendtoks\fi \to\!!toksa + \appendtoks \bgroup\ignorespaces\to\!!toksa + % + \appendtoks \tabulatehook##\to\!!toksa + % + %\doifdefinedelse{\@@tabalign@@\tabulatecolumns} + % {\appendtoks\handletabulatecharalign## \to\!!toksa} + % {\appendtoks\tabulatehook ##\to \!!toksa}% + % waarom kan ik hier geen \xx{##} geven, om een of + % andere reden passeert dan tex de hele regel (incl \NC's) + % als argument; elke delimiter <> space gaat trouwens fout + \appendtoks \unskip\unskip\ifmmode\else\endgraf\fi\egroup\to\!!toksa + \appendtoks\ifnum\tabulatetype=1 \else \to\!!toksa + \@EA\appendtoks \the\tabulateafter\to\!!toksa + \@EA\appendtoks \the\tabulateemath\to\!!toksa + \appendtoks\fi \to\!!toksa + \appendtoks #2\egroup\egroup\to\!!toksa + \@EA\appendtoks \@EA&\@EA\hskip\postabskip##\to\!!toksa \appendtoks\NC\to\tabulatedummy \let\bbskip\empty \def\pretabskip{.5\tabulateunit}% - \def\postabskip{.5\tabulateunit}% + \let\postabskip\pretabskip \let\gettabulateexit\dogettabulateexit \tabulatewidth\!!zeropoint} @@ -162,57 +225,35 @@ \let\nextnext\relax \else \let\nextnext\settabulatepreamble - \ifx x\next - \chardef\tabulatealign=0 - \else\ifx l\next - \chardef\tabulatealign=1 - \else\ifx r\next - \chardef\tabulatealign=2 - \else\ifx c\next - \chardef\tabulatealign=3 - \else\ifx p\next - \let\nextnext\gettabulateparagraph - \else\ifx w\next - \let\nextnext\gettabulatewidth - \else\ifx f\next - \let\nextnext\gettabulatefont - \else\ifx B\next - \tabulatefont{\bf}% - \else\ifx I\next - \tabulatefont{\it}% - \else\ifx S\next - \tabulatefont{\sl}% - \else\ifx T\next - \tabulatefont{\tt}% - \else\ifx R\next - \tabulatefont{\rm}% - \else\ifx m\next - \tabulatebmath{$}% - \tabulateemath{$}% - \else\ifx M\next - \tabulatebmath{$\displaystyle}% - \tabulateemath{$}% - \else\ifx h\next - \let\nextnext\gettabulatehook - \else\ifx b\next - \let\nextnext\gettabulatebefore - \else\ifx a\next - \let\nextnext\gettabulateafter - \else\ifx i\next - \let\nextnext\gettabulatepreskip - \else\ifx j\next - \let\nextnext\gettabulateposskip - \else\ifx k\next - \let\nextnext\gettabulatepreposskip - \else\ifx X\next - \let\nextnext\gettabulateexit - \else\ifx e\next - \appendtoks\global\tabulateequaltrue\to\tabulatesettings - \else\ifx ~\next - \appendtoks\fixedspaces\to\tabulatesettings - \else - \message{unknown preamble key [\meaning\next]}% - \fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi + \ifx x\next \chardef\tabulatealign=0 + \else\ifx l\next \chardef\tabulatealign=1 + \else\ifx r\next \chardef\tabulatealign=2 + \else\ifx c\next \chardef\tabulatealign=3 + \else\ifx p\next \let\nextnext\gettabulateparagraph + \else\ifx w\next \let\nextnext\gettabulatewidth + \else\ifx f\next \let\nextnext\gettabulatefont + \else\ifx B\next \tabulatefont{\bf}% + \else\ifx I\next \tabulatefont{\it}% + \else\ifx S\next \tabulatefont{\sl}% + \else\ifx T\next \tabulatefont{\tt}% + \else\ifx R\next \tabulatefont{\rm}% + \else\ifx m\next \tabulatebmath{$}\tabulateemath{$}% + \else\ifx M\next \tabulatebmath{$\displaystyle}\tabulateemath{$}% + \else\ifx h\next \let\nextnext\gettabulatehook + \else\ifx b\next \let\nextnext\gettabulatebefore + \else\ifx a\next \let\nextnext\gettabulateafter + \else\ifx i\next \let\nextnext\gettabulatepreskip + \else\ifx j\next \let\nextnext\gettabulateposskip + \else\ifx k\next \let\nextnext\gettabulatepreposskip + \else\ifx X\next \let\nextnext\gettabulateexit + \else\ifx e\next \appendtoks\global\tabulateequaltrue\to\tabulatesettings + \else\ifx ~\next \appendtoks\fixedspaces\to\tabulatesettings + \else\ifx g\next \let\nextnext\gettabulatealign + \else\ifx .\next \def\nextnext{\gettabulatealign.}% + \else\ifx ,\next \def\nextnext{\gettabulatealign,}% + \else \message{unknown preamble key [\meaning\next]}% + \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi \fi \nextnext} @@ -224,25 +265,25 @@ \def\gettabulatepreskip#1% {\doifnumberelse{#1} - {\dimen0=#1\tabulateunit\let\next\empty} - {\dimen0=.5\tabulateunit\def\next{#1}}% - \edef\pretabskip{\the\dimen0}% - \@EA\settabulatepreamble\next} + {\scratchdimen=#1\tabulateunit\let\next\empty} + {\scratchdimen=.5\tabulateunit\def\next{#1}}% + \edef\pretabskip{\the\scratchdimen}% + \@EA\settabulatepreamble\next} \def\gettabulateposskip#1% {\doifnumberelse{#1} - {\dimen0=#1\tabulateunit\let\next\empty} - {\dimen0=.5\tabulateunit\def\next{#1}}% - \edef\postabskip{\the\dimen0}% + {\scratchdimen=#1\tabulateunit\let\next\empty} + {\scratchdimen=.5\tabulateunit\def\next{#1}}% + \edef\postabskip{\the\scratchdimen}% \let\gettabulateexit\settabulatepreamble \@EA\settabulatepreamble\next} \def\gettabulatepreposskip#1% {\doifnumberelse{#1} - {\dimen0=#1\tabulateunit\let\next\empty} - {\dimen0=.5\tabulateunit\def\next{#1}}% - \edef\pretabskip{\the\dimen0}% - \edef\postabskip{\the\dimen0}% + {\scratchdimen=#1\tabulateunit\let\next\empty} + {\scratchdimen=.5\tabulateunit\def\next{#1}}% + \edef\pretabskip{\the\scratchdimen}% + \let\postabskip\pretabskip \let\gettabulateexit\settabulatepreamble \@EA\settabulatepreamble\next} @@ -250,6 +291,10 @@ {\setvalue{\@@tabhook@@\tabulatecolumns}{#1}% \settabulatepreamble} +\def\gettabulatealign#1% + {\setvalue{\@@tabalign@@\tabulatecolumns}{#1}% + \settabulatepreamble} + \def\gettabulatebefore#1% {\tabulatebefore{#1}% \settabulatepreamble} @@ -306,12 +351,12 @@ {\chardef\tabulatealign=\@@tabulatealign \chardef\tabulatemodus=0 \chardef\tabulatedimen=0 - \tabulatebefore{}% - \tabulateafter{}% - \tabulatebmath{}% - \tabulateemath{}% - \tabulatefont{}% - \tabulatesettings{}% + \tabulatebefore \emptytoks + \tabulateafter \emptytoks + \tabulatebmath \emptytoks + \tabulateemath \emptytoks + \tabulatefont \emptytoks + \tabulatesettings\emptytoks \doglobal\increment\tabulatecolumns \settabulatepreamble#1\relax\relax % permits i without n \ifcase\tabulatemodus\relax @@ -342,10 +387,11 @@ \fi} \def\splitofftabulatebox% - {\mindermeldingen + {\dontcomplain \@EA\global\@EA\setbox\@EA\tabulatebox\@EA \vsplit\csname\@@tabbox@@\tabulatecolumn\endcsname to \lineheight - \setbox\tabulatebox=\vbox{\unvbox\tabulatebox}% + \setbox\tabulatebox=\vbox + {\unvbox\tabulatebox}% \setbox\tabulatebox=\hbox to \wd\tabulatebox {\hss\dotabulatehook{\box\tabulatebox}\hss}% \ht\tabulatebox=\ht\strutbox @@ -355,6 +401,59 @@ \def\dotabulatehook% {\getvalue{\@@tabhook@@\tabulatecolumn}} +\def\dotabulatealign% + {\getvalue{\@@tabalign@@\tabulatecolumn}} + +\def\resettabulatepheight% + {\xdef\tabulateminplines{1}% + \getnoflines\tabulatemaxpheight + \xdef\tabulatemaxplines{\the\noflines}% + \global\tabulatemaxpheight=\!!zeropoint} + +\def\settabulatepheight% + {\scratchdimen=\ht\csname\@@tabbox@@\tabulatecolumn\endcsname\relax + \ifdim\scratchdimen>\tabulatemaxpheight + \global\tabulatemaxpheight=\scratchdimen + \fi} + +\def\handletabulatepbreak% + {\TABLEnoalign + {\ifhandletabulatepbreak \ifnum\tabulatemaxplines>1 + \ifnum\tabulateminplines=1 + \dotabulatenobreak + \fi + \doglobal\increment\tabulateminplines + \ifnum\tabulateminplines=\tabulatemaxplines\relax + \dotabulatenobreak + \fi + \fi \fi}} + +%D \startbuffer +%D \starttabulatie[|c|p|p|] +%D \NC \bf Alpha \NC \bf Beta \NC \bf Gamma \NC\NR +%D \NC 1 \NC right indeed \NC definitely wrong \NC\NR +%D \NC 2 \NC \thinrules[n=3] \NC \thinrules[n=3] \NC\NR +%D \NC 3 \NC oh yes \NC simply no \NC\NR +%D \NC 4 \NC very true \NC as false as can be \NC\NR +%D \NC 5 \NC \thinrules[n=5] \NC \thinrules[n=5] \NC\NR +%D \NC 6 \NC \thinrules[n=3] \NC \thinrules[n=4] \NC\NR +%D \stoptabulate +%D \stopbuffer +%D +%D \typebuffer {\tracetabulatetrue\haalbuffer} +%D +%D \startbuffer +%D \starttabulatie[|c|p|p|] +%D \NC \bf Alpha \NC \bf Beta \NC \bf Gamma \NC\NR +%D \NC 1 \NC right indeed \NC definitely wrong \NC\NR +%D \NC 2 \NC oh yes \NC simply no \NC\NR +%D \NC 3 \NC very true \NC as false as can be \NC\NR +%D \NC 4 \NC the whole truth \NC but the truth \NC\NR +%D \stoptabulatie +%D \stopbuffer +%D +%D \typebuffer {\tracetabulatetrue\haalbuffer} + % \definetabulate % \redefinetabulate % \starttabulate[preamble] @@ -368,11 +467,11 @@ \doifundefined{\??tt#1::\c!eenheid} {\copyparameters [\??tt#1::][\??tt\e!tabulate::]% - [\c!eenheid,\c!voor,\c!na,\c!binnen,\c!inspringen, + [\c!afstand,\c!eenheid,\c!voor,\c!na,\c!binnen,\c!inspringen, \c!uitlijnen,\c!lijnkleur,\c!lijndikte,EQ]}% \copyparameters [\??tt#1::#2][\??tt#1::]% - [\c!eenheid,\c!voor,\c!na,\c!binnen,\c!inspringen, + [\c!eenheid,\c!afstand,\c!voor,\c!na,\c!binnen,\c!inspringen, \c!uitlijnen,\c!lijnkleur,\c!lijndikte,EQ]% \setvalue{\e!start#1::#2}{\dofinalstarttabulate[#1][#2][#3]}% \setvalue{\e!start#1}{\bgroup\dosubstarttabulate[#1]}% @@ -402,6 +501,9 @@ \fi \next} +\newtoks\everytabulate +\chardef\tabulatepass=0 + \def\dofinalstarttabulate[#1][#2][#3]% identifier sub preamble {\edef\currenttabulate{#1::#2}% \ifinsidefloat \else @@ -409,13 +511,15 @@ \getvalue{\??tt\currenttabulate\c!voor}% \fi \bgroup + \chardef\tabulatepass=1 + \the\everytabulate \getvalue{\??tt\currenttabulate\c!binnen}% - \dimen0=\leftskip - \advance\dimen0 by \hangindent + \scratchdimen=\leftskip + \advance\scratchdimen by \hangindent \doifvalue{\??tt\currenttabulate\c!inspringen}{\v!ja} - {\advance\dimen0 by \parindent}% \voorwit}% - \edef\tabulateindent{\the\dimen0}% - \!!toksb{}% + {\advance\scratchdimen by \parindent}% \voorwit + \edef\tabulateindent{\the\scratchdimen}% + \!!toksb\emptytoks \def\dorepeat*##1##2% {\dorecurse{##1}{\appendtoks##2\to\!!toksb}\do}% \def\do% @@ -499,7 +603,8 @@ \newif\iftolerantTABLEbreak -%D +%D The main processing macro is large but splitting it up +%D would make things less clear. \def\processtabulate[|#1|]% in the process of optimizing {\tabulateunit=\getvalue{\??tt\currenttabulate\c!eenheid}% @@ -511,8 +616,7 @@ \s!default=>\def\@@tabulatealign{0}, \s!unknown=>\def\@@tabulatealign{0}]% \dorecurse\noftabcolumns % NEW - {\@EA\global\@EA\setbox\csname\@@tabbox@@\recurselevel\endcsname - =\box\voidb@x}% + {\global\setbox\csname\@@tabbox@@\recurselevel\endcsname=\box\voidb@x}% \let\pretabskip\!!zeropoint \def\postabskip{.5\tabulateunit}% \doglobal\newcounter\tabulatecolumns @@ -522,21 +626,28 @@ \let\minusnoftabulatelines\noftabulatelines \global\tabulatepwidth=\!!zeropoint \global\tabulateequalfalse + \resettabulatepheight \def\NC{\tabulatenormalcolumn0}% \def\RC{\tabulatenormalcolumn1}% \def\HC{\tabulatenormalcolumn2}% \def\EQ{\tabulateequalcolumn 0}% \def\RQ{\tabulateequalcolumn 1}% \def\HQ{\tabulateequalcolumn 2}% + \def\NG{\NC\handletabulatecharalign}% \def\NR% next row {\doglobal\increment\noftabulatelines \global\tabulateequalfalse \xdef\tabulatecolumn{0}% + \resettabulatepheight \unskip\unskip\crcr\flushtabulated \TABLEnoalign {\iftolerantTABLEbreak\else - \ifnum\noftabulatelines=1 \noalign{\nobreak}% - \else\ifnum\noftabulatelines=\minusnoftabulatelines\noalign{\nobreak}% + \ifnum\noftabulatelines=1 + \dotabulatenobreak + \else\ifnum\noftabulatelines=\minusnoftabulatelines + \ifnum\tabulatemaxplines<2 + \dotabulatenobreak + \fi \fi\fi \fi}}% \let\HL\empty \let\SR\NR \let\AR\NR @@ -553,9 +664,10 @@ \appendtoks\doglobal\increment\tabulatecolumn\to\!!toksa \appendtoks\NC\unskip\unskip\crcr\flushtabulated\to\tabulatedummy % no count \xdef\tabulatecolumn{0}% + \resettabulatepheight \def\bskip% {\setbox\tabulatebox=\vbox\bgroup - \global\let\tabulatehook\empty}% + \global\let\tabulatehook\notabulatehook}% \def\eskip {\par\egroup \global\let\tabulatehook\dotabulatehook}% @@ -568,7 +680,7 @@ \else \setlocalhsize \hsize=\localhsize \fi - \mindermeldingen + \dontcomplain \forgetall \setbox0=\vbox % outside if because of line counting {\footnotesenabledfalse @@ -586,34 +698,36 @@ \splittopskip\ht\strutbox \global\let\flushtabulatedindeed\empty \long\def\bbskip% - {\@EA\ifvoid\csname\@@tabbox@@\tabulatecolumn\endcsname + {\ifvoid\csname\@@tabbox@@\tabulatecolumn\endcsname \ifx\flushtabulatedindeed\empty\else \setbox0\hbox \fi \fi}% \def\bskip% - {\@EA\ifvoid\csname\@@tabbox@@\tabulatecolumn\endcsname - \@EA\global\@EA\setbox\csname\@@tabbox@@\tabulatecolumn\endcsname=\vbox + {\ifvoid\csname\@@tabbox@@\tabulatecolumn\endcsname + \global\setbox\csname\@@tabbox@@\tabulatecolumn\endcsname=\vbox \bgroup - \global\let\tabulatehook\empty + \global\let\tabulatehook\notabulatehook \ifautotabulate\hsize\tabulatewidth\fi %\begstrut % interferes with pre-\pars \ignorespaces \def\eskip% {\par\egroup + \settabulatepheight \global\let\tabulatehook\dotabulatehook \splitofftabulatebox}% \else \let\eskip\empty - \mindermeldingen + \dontcomplain \global\let\tabulatehook\dotabulatehook \expandafter\splitofftabulatebox \fi}% \gdef\flushtabulated% - {\noalign % no interference ! + {\TABLEnoalign % noalign % no interference ! {\global\let\flushtabulatedindeed\empty + \handletabulatepbreak \dorecurse\noftabcolumns - {\@EA\ifvoid\csname\@@tabbox@@\recurselevel\endcsname\else + {\ifvoid\csname\@@tabbox@@\recurselevel\endcsname\else \gdef\flushtabulatedindeed{\the\tabulatedummy}% \fi}}% \flushtabulatedindeed}% @@ -644,14 +758,14 @@ \baselinecorrection}% \def\FL{\TABLEnoalign {\ifinsidefloat\else - \doifemptyvalue{\??tt\currenttabulate\c!voor\endcsname} % no expansion + \doifemptyvalue{\??tt\currenttabulate\c!voor} % no expansion {\tablebaselinecorrection}% \fi \tabulaterule - \nobreak + \dotabulatenobreak \tabulateruleseperator \prevdepth\dp\strutbox - \nobreak}}% + \dotabulatenobreak}}% \def\ML{\TABLEnoalign {\tabulateruleseperator \tabulaterule @@ -661,16 +775,17 @@ \fi\fi \tabulateruleseperator}}% \def\LL{\TABLEnoalign - {\nobreak + {\dotabulatenobreak \tabulateruleseperator - \nobreak + \dotabulatenobreak \tabulaterule \ifinsidefloat\else - \doifemptyvalue{\??tt\currenttabulate\c!na\endcsname} % no expansion + \doifemptyvalue{\??tt\currenttabulate\c!na} % no expansion {\vskip\dp\strutbox \vbox{\strut} \vskip-\lineheight}% \fi}}% + \chardef\tabulatepass=2 \@EA\halign\@EA{\the\!!toksa\cr\tabulatecontent\crcr}% \prevdepth\dp\strutbox % nog eens beter, temporary hack \egroup diff --git a/tex/context/base/core-uti.tex b/tex/context/base/core-uti.tex new file mode 100644 index 000000000..721ca9e69 --- /dev/null +++ b/tex/context/base/core-uti.tex @@ -0,0 +1,368 @@ +%D \module +%D [ file=core-uti, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Utility File Handling, +%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. + +\writestatus{loading}{Context Core Macros / Utility File Handling} + +\unprotect + +% 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} + +\def\savecurrentvalue#1#2% + {\immediatewriteutilitycommand{\initializevariable\string#1{#2}}} + +\let\initializevariable\gdef + +\def\disableinitializevariables% + {\global\let\initializevariable\gobbletwoarguments} + +\let\reportutilityproblems=\relax + +\let\utilityresetlist=\empty + +%\def\addutilityreset#1% +% {\addtocommalist{\s!reset#1}\utilityresetlist} +% +%\def\resetutilities% +% {\processcommacommand[\utilityresetlist]\getvalue} + +\def\addutilityreset#1% + {\addtocommalist{#1}\utilityresetlist} + +\def\doresetutility#1% + {\getvalue{\s!reset#1}} + +\def\resetutilities% + {\processcommacommand[\utilityresetlist]\doresetutility} + +% #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} + +% no longer needed, since texutil is now multi platform +% +% \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} +% {}}} + +\def\checkutilityfile% + {} + +\long\def\doutilities#1#2#3#4#5% % introduceren in utility file + {\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 + \disableinitializevariables + \endgroup} + +% Saving the sort vector: + +\def\savesortkeys% + {\setbox\scratchbox=\hbox + \bgroup + \def\flushsortkey##1##2##3##4% + {\convertargument{##1}{##2}{##3}{##4}\to\ascii + \immediatewriteutility{k {\currentlanguage}{\currentencoding}\ascii}}% + \let\definesortkey\flushsortkey + \flushsortkeys + \egroup + \global\let\savesortkeys\relax} + +\prependtoks \savesortkeys \to \everystarttext + +% 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 +% +% also: +% +% \definerawpasslist{\s!xxx} +% \moverawpasslist\s!xxx\to\somemacro + +\let\alltwopasslists\empty % with 0,0 -> stepwise commalist +\let\allrawpasslists\empty % without 0,0 -> raw commalist + +\newif\iftwopassdatafound + +\def\twopassentry#1% + {\executeifdefined{@@#1\s!pass}\gobbletwoarguments} + +\def\appendtwopasselement#1#2#3% + {%\debuggerinfo{\m!systems}{twopass data #1 - #2 = #3}% + \@EA\ifx\csname#1:\s!list\endcsname\empty + \setxvalue{#1:\s!list}{#3}% + \else + \setxvalue{#1:\s!list}{\getvalue{#1:\s!list},#3}% + \fi} + +\def\dodefinetwopasslist#1% + {\doifundefined{#1:\s!list} + {%\debuggerinfo{\m!systems}{defining twopass class #1}% + \doglobal\addutilityreset{#1\s!pass}% + \setgvalue{\s!set#1\s!pass}% + {\global\letvalue{\s!set#1\s!pass}\gobbletwoarguments + \setgvalue{@@#1\s!pass}{\appendtwopasselement{#1}}}% + \setgvalue{\s!reset#1\s!pass}% + {\global\letvalue{@@#1\s!pass}\gobbletwoarguments}% + \getvalue{\s!reset#1\s!pass}}} + +\def\definetwopasslist#1% + {\expanded{\dodefinetwopasslist{#1}}% + \doglobal\addtocommalist{#1}\alltwopasslists} + +\def\definerawpasslist#1% + {\expanded{\dodefinetwopasslist{#1}}% + \doglobal\addtocommalist{#1}\allrawpasslists} + +\def\doloadtwopassdata#1% + {\doifundefined{#1:\s!list} + {\global\letvalue{#1:\s!list}\empty + \doutilities{#1\s!pass}{\jobname}{}{}{}% + \ifx\twopassdata\empty\else + \appendtwopasselement{#1}{0}\twopassdata + \fi}} + +\def\loadtwopassdata% + {\ifx\alltwopasslists\empty\else + \def\twopassdata{0,0}% end condition + \processcommacommand[\alltwopasslists]\doloadtwopassdata + \global\let\alltwopassdata\empty + \fi + \ifx\allrawpasslists\empty\else + \let\twopassdata\empty + \processcommacommand[\allrawpasslists]\doloadtwopassdata + \global\let\allrawpassdata\empty + \fi} + +\def\moverawpasslist#1#2% erases the old one, like the others do + {\loadtwopassdata + \@EA\let\@EA#2\csname#1:\s!list\endcsname + \@EA\let\csname#1:\s!list\endcsname\empty} + +\let\twopassdata=\empty + +\def\dogettwopassdata[#1,#2]#3% + {\doifelse{#1}{0} % \ifcase truukje gaat fout + {\twopassdatafoundfalse + \let\twopassdata\empty} + {\twopassdatafoundtrue + \setxvalue{#3:\s!list}{#2}% + \edef\twopassdata{#1}}} + +\def\gettwopassdata#1% + {\loadtwopassdata + \edef\!!stringa{\getvalue{#1:\s!list}}% + %\debuggerinfo{\m!systems}{twopass get #1 - \!!stringa}% + \expandafter\dogettwopassdata\expandafter[\!!stringa]{#1}} + +\def\findtwopassdata% + {\loadtwopassdata + \ExpandBothAfter\dofindtwopassdata} + +\def\dofindtwopassdata#1#2% + {\edef\!!stringa{,\getvalue{#1:\s!list}}% + %\debuggerinfo{\m!systems}{twopass find #2 - \!!stringa}% + \def\dodofindtwopassdata[##1,##2#2##3,##4]% + {\edef\twopassdata{##3}% + \ifx\twopassdata\empty + \twopassdatafoundfalse + \else + \twopassdatafoundtrue + \fi}% + \@EA\dodofindtwopassdata\@EA[\!!stringa,#2,#2,]} + +\def\getfirsttwopassdata#1% + {\loadtwopassdata + \edef\!!stringa{\getvalue{#1:\s!list}}% + \expandafter\dogetfirsttwopassdata\expandafter[\!!stringa]{#1}} + +\def\dogetfirsttwopassdata[#1,#2]#3% + {\doifelse{#1}{0} + {\twopassdatafoundfalse + \let\twopassdata\empty} + {\twopassdatafoundtrue + \edef\twopassdata{#1}}} + +\def\getlasttwopassdata#1% + {\loadtwopassdata + \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% + {\loadtwopassdata + \getfromcommacommand[\getvalue{#1:\s!list}][#2]% + \doifelsenothing{\commalistelement} + {\twopassdatafoundfalse + \let\twopassdata\empty} + {\twopassdatafoundtrue + \let\twopassdata\commalistelement}} + +% Default-instellingen (verborgen) + +\prependtoks \resetutilities \to \everyjob + +\protect \endinput diff --git a/tex/context/base/core-var.tex b/tex/context/base/core-var.tex index d42f57784..2b17ef1c5 100644 --- a/tex/context/base/core-var.tex +++ b/tex/context/base/core-var.tex @@ -15,15 +15,31 @@ \unprotect +%D \macros +%D {every...} +%D +%D A few every's. + \newevery \everyshipout \relax \newevery \everybeforeshipout \relax \newevery \everyaftershipout \relax \newevery \everylastshipout \relax \newevery \everybye \relax +\newevery \everygoodbye \relax \newevery \everystarttext \relax \newevery \everystoptext \relax \newevery \everypagebody \relax +%D \macros +%D {ifproductionrun} +%D +%D This boolean can be used to bypass certain +%D initializations. + +\newif\ifproductionrun + +\appendtoks \productionruntrue \to \everydump + %D \macros %D {fastmode} %D diff --git a/tex/context/base/core-ver.tex b/tex/context/base/core-ver.tex index 5b2e0a8c3..e85f23c7a 100644 --- a/tex/context/base/core-ver.tex +++ b/tex/context/base/core-ver.tex @@ -486,9 +486,9 @@ \def\initializetyping#1% {\donefalse \scratchskip=\getvalue{\??tp#1\c!onevenmarge}\relax - \ifdim\scratchskip=\!!zeropoint\relax\else\donetrue\fi + \ifzeropt\scratchskip\else\donetrue\fi \scratchskip=\getvalue{\??tp#1\c!evenmarge}\relax - \ifdim\scratchskip=\!!zeropoint\relax\else\donetrue\fi + \ifzeropt\scratchskip\else\donetrue\fi \ifdone \def\doopenupverbatimline% {\getpagestatus @@ -804,7 +804,7 @@ \def\typefile#1% {\getvalue{\??tp\v!file\c!voor}% - \doiffileelse{#1} + \doiflocfileelse{\pathplusfile\f!currentpath{#1}} {\startopelkaar % includes \bgroup \startcolor[\getvalue{\??tp\v!file\c!kleur}]% \doifinset{\getvalue{\??tp\v!file\c!optie}}{\v!commandos,\v!schuin,\v!normaal} @@ -813,7 +813,7 @@ {\expandafter\aftersplitstring#1\at.\to\prettyidentifier \letvalue{\??tp\v!file\c!optie}=\prettyidentifier}% \initializetyping\v!file - \processfileverbatim{#1}% + \processfileverbatim{\pathplusfile\f!currentpath{#1}}% \stopcolor \stopopelkaar} % includes \egroup {{\tttf[\makemessage{\m!verbatims}{1}{#1}]}% diff --git a/tex/context/base/core-vis.tex b/tex/context/base/core-vis.tex index d39482ee6..5c76ad84f 100644 --- a/tex/context/base/core-vis.tex +++ b/tex/context/base/core-vis.tex @@ -651,9 +651,9 @@ \fi} \def\pushwhatsit% - {\ifdim\lastskip=\!!zeropoint - \ifnum\lastpenalty=0 - \ifnum\lastkern=0 + {\ifzeropt\lastskip + \ifcase\lastpenalty + \ifzeropt\lastkern \ifhmode \let\popwhatsit\relax \else diff --git a/tex/context/base/enco-ans.tex b/tex/context/base/enco-ans.tex index 55ffd06e9..79bb55d67 100644 --- a/tex/context/base/enco-ans.tex +++ b/tex/context/base/enco-ans.tex @@ -130,7 +130,7 @@ \definecharacter oe 156 \definecharacter O 216 \definecharacter o 248 -\definecharacter ss 223 +\definecharacter sz 223 \definecharacter SS 223 \definecharacter aa 229 diff --git a/tex/context/base/enco-chi.tex b/tex/context/base/enco-chi.tex index b5c5161c7..2e420a9f7 100644 --- a/tex/context/base/enco-chi.tex +++ b/tex/context/base/enco-chi.tex @@ -94,21 +94,37 @@ \defineuclass 2 162 88 \defineuclass 2 163 223 -\defineudigit 0 185 115 -\defineudigit 1 164 64 -\defineudigit 2 164 71 -\defineudigit 3 164 84 -\defineudigit 4 165 124 -\defineudigit 5 164 173 -\defineudigit 6 164 187 -\defineudigit 7 164 67 -\defineudigit 8 164 75 -\defineudigit 9 164 69 -\defineudigit 10 164 81 -\defineudigit 100 166 202 -\defineudigit 1000 164 100 -\defineudigit 10000 201 69 -\defineudigit 100000000 187 245 +\defineudigit 0 162 179 +\defineudigit 1 164 64 +\defineudigit 2 164 71 +\defineudigit 3 164 84 +\defineudigit 4 165 124 +\defineudigit 5 164 173 +\defineudigit 6 164 187 +\defineudigit 7 164 67 +\defineudigit 8 164 75 +\defineudigit 9 164 69 +\defineudigit 10 164 81 +\defineudigit 100 166 202 +\defineudigit 1000 164 100 +\defineudigit 10000 201 69 +\defineudigit 100000000 187 245 + +\defineudigit 0* 185 115 +\defineudigit 1* 179 252 +\defineudigit 2* 182 76 +\defineudigit 3* 176 209 +\defineudigit 4* 184 118 +\defineudigit 5* 165 238 +\defineudigit 6* 179 176 +\defineudigit 7* 172 110 +\defineudigit 8* 174 195 +\defineudigit 9* 168 104 +\defineudigit 10* 172 66 +\defineudigit 100* 168 213 +\defineudigit 1000* 165 97 +\defineudigit 10000* 184 85 +\defineudigit 100000000* 187 245 \stopencoding @@ -162,21 +178,37 @@ \defineuclass 2 163 221 \defineuclass 2 163 253 -\defineudigit 0 193 227 -\defineudigit 1 210 187 -\defineudigit 2 182 254 -\defineudigit 3 200 253 -\defineudigit 4 203 196 -\defineudigit 5 206 229 -\defineudigit 6 193 249 -\defineudigit 7 198 223 -\defineudigit 8 176 203 -\defineudigit 9 190 197 -\defineudigit 10 202 174 -\defineudigit 100 176 217 -\defineudigit 1000 199 167 -\defineudigit 10000 205 242 -\defineudigit 100000000 210 218 +\defineudigit 0 161 240 +\defineudigit 1 210 187 +\defineudigit 2 182 254 +\defineudigit 3 200 253 +\defineudigit 4 203 196 +\defineudigit 5 206 229 +\defineudigit 6 193 249 +\defineudigit 7 198 223 +\defineudigit 8 176 203 +\defineudigit 9 190 197 +\defineudigit 10 202 174 +\defineudigit 100 176 217 +\defineudigit 1000 199 167 +\defineudigit 10000 205 242 +\defineudigit 100000000 210 218 + +\defineudigit 0* 193 227 +\defineudigit 1* 210 188 +\defineudigit 2* 183 161 +\defineudigit 3* 200 254 +\defineudigit 4* 203 193 +\defineudigit 5* 206 233 +\defineudigit 6* 194 189 +\defineudigit 7* 198 226 +\defineudigit 8* 176 198 +\defineudigit 9* 190 193 +\defineudigit 10* 202 176 +\defineudigit 100* 176 219 +\defineudigit 1000* 199 170 +\defineudigit 10000* 200 102 +\defineudigit 100000000* 210 218 \stopencoding diff --git a/tex/context/base/enco-ec.tex b/tex/context/base/enco-ec.tex index 5a377e54b..611523885 100644 --- a/tex/context/base/enco-ec.tex +++ b/tex/context/base/enco-ec.tex @@ -173,8 +173,8 @@ \definecharacter OE 215 \definecharacter o 248 \definecharacter O 216 -\definecharacter ss 255 -\definecharacter SS 223 +\definecharacter sz 255 % was 223 +\definecharacter SS 255 % was 223 \definecharacter th 254 \definecharacter TH 222 diff --git a/tex/context/base/enco-ibm.tex b/tex/context/base/enco-ibm.tex index 28d84d4fa..382c87795 100644 --- a/tex/context/base/enco-ibm.tex +++ b/tex/context/base/enco-ibm.tex @@ -50,7 +50,7 @@ \defineactivecharacter ¤ {\~n} -\defineactivecharacter á {\SS} +\defineactivecharacter á {\SS{}} \defineactivecharacter ® {\ifvmode\leavevmode\fi\leftguillemot\prewordbreak} \defineactivecharacter ¯ {\prewordbreak\rightguillemot} diff --git a/tex/context/base/enco-il2.tex b/tex/context/base/enco-il2.tex index f2e6986ad..25767ea4f 100644 --- a/tex/context/base/enco-il2.tex +++ b/tex/context/base/enco-il2.tex @@ -104,9 +104,10 @@ \definecharacter ae 26 \definecharacter AE 29 \definecharacter oe 27 \definecharacter OE 30 \definecharacter o 28 \definecharacter O 31 -\definecharacter i 16 +\definecharacter i 16 \definecharacter sz 25 \definecharacter j 17 \definecharacter SS 25 + %D Some rather \PLAIN\ \TEX\ redefinitions. \defineaccentcommand b {\ilencodedb} diff --git a/tex/context/base/enco-ini.tex b/tex/context/base/enco-ini.tex index 0ff61d384..874114eb9 100644 --- a/tex/context/base/enco-ini.tex +++ b/tex/context/base/enco-ini.tex @@ -167,7 +167,7 @@ %D This command is typically used in coding definitions, %D like the \UNICODE\ one. -\def\dodefineactivedecimal#1#2% +\def\dodefineactivedecimal#1#2% \unexpanded ? pdfdoc encoding {\catcode#1=\active % maybe \protectregimetrue \scratchcounter=\the\uccode`~ \uccode`~=#1\relax @@ -493,7 +493,7 @@ %D \stoptypen %D %D The first argument denotes the string to be treated. The -%D second argument is the raw replacement, while the second +%D second argument is the raw replacement, while the third %D argument determines the sort order given the replacement. %D The last argument is used as entry in the index (a, b, etc). %D @@ -817,6 +817,7 @@ %\appendtoks \def\i{I}\to \everyuppercase %\appendtoks \def\j{J}\to \everyuppercase +%\appendtoks \def\sz{sz}\to \everyuppercase % \sz <= \ss %\appendtoks \def\SS{SS}\to \everyuppercase % \SS <= \ss % %\appendtoks \let\l=\L \to \everyuppercase @@ -895,6 +896,11 @@ \unexpanded\def\udigit#1#2{\getvalue{@#1@uc\number#2}} +%D Just to be sure, we save the original values of \type {\ss}. + +\ifx\undefined\SS \let\SS=\ss \fi +\ifx\undefined\sz \let\sz=\ss \fi + %D Here come the definitions. \redefineaccent ' % grave @@ -920,7 +926,7 @@ \redefinecharacter OE % OE \redefinecharacter o % oslash \redefinecharacter O % Oslash -\redefinecharacter ss % germandbls +\redefinecharacter sz % germandbls \redefinecharacter SS % germandbls \redefinecharacter aa % aring \redefinecharacter AA % Aring @@ -944,12 +950,18 @@ \defineaccent ' i {\'\i} \defineaccent ' j {\'\j} \defineaccent ~ i {\~\i} \defineaccent ~ j {\~\j} +\redefinecharacter leftguillemot +\redefinecharacter rightguillemot +\redefinecharacter leftsubguillemot +\redefinecharacter rightsubguillemot + %D Some more: \startmapping[\s!default] \defineuppercasecom \i {I} \defineuppercasecom \j {J} +\defineuppercasecom \sz {SS} \defineuppercasecom \SS {SS} \defineuppercasecom \l \L \defineuppercasecom \ae \AE diff --git a/tex/context/base/enco-lat.tex b/tex/context/base/enco-lat.tex index 49f7485ea..a8e1525c1 100644 --- a/tex/context/base/enco-lat.tex +++ b/tex/context/base/enco-lat.tex @@ -24,8 +24,8 @@ \defineactivecharacter © {\v{S}} \defineactivecharacter ¾ {\v{z}} \defineactivecharacter ® {\v{Z}} -\defineactivecharacter ð {\pseudoencodeddj} -\defineactivecharacter Ð {\pseudoencodedDJ} +\defineactivecharacter ð {\pseudoencodeddj{}} +\defineactivecharacter Ð {\pseudoencodedDJ{}} \stopregime diff --git a/tex/context/base/enco-pdf.tex b/tex/context/base/enco-pdf.tex index 5b3729660..a4fbfdac2 100644 --- a/tex/context/base/enco-pdf.tex +++ b/tex/context/base/enco-pdf.tex @@ -94,7 +94,7 @@ \definecharacter OA ^^c5 \definecharacter oa ^^e5 \definecharacter oe ^^9c -\definecharacter ss ^^df +\definecharacter sz ^^df \definecharacter SS ^^df \definecharacter leftguillemot ^^ab diff --git a/tex/context/base/enco-vis.tex b/tex/context/base/enco-vis.tex index 38ac6b0af..77f18fdb2 100644 --- a/tex/context/base/enco-vis.tex +++ b/tex/context/base/enco-vis.tex @@ -96,7 +96,7 @@ \defineactivecharacter 206 {\~{I}} \defineactivecharacter 207 {\`{y}} -\defineactivecharacter 208 {\DJ} +\defineactivecharacter 208 {\DJ{}} \defineactivecharacter 209 {\'{hu}} \defineactivecharacter 210 {\`{O}} \defineactivecharacter 211 {\'{O}} @@ -130,7 +130,7 @@ \defineactivecharacter 238 {\~{i}} \defineactivecharacter 239 {\h{i}} -\defineactivecharacter 240 {\dj} +\defineactivecharacter 240 {\dj{}} \defineactivecharacter 241 {\d{hu}} \defineactivecharacter 242 {\`{o}} \defineactivecharacter 243 {\'{o}} diff --git a/tex/context/base/enco-win.tex b/tex/context/base/enco-win.tex index 73140490c..e31fb311a 100644 --- a/tex/context/base/enco-win.tex +++ b/tex/context/base/enco-win.tex @@ -21,16 +21,16 @@ \defineactivecharacter  {\^A} \defineactivecharacter à {\~A} \defineactivecharacter Ä {\"A} -\defineactivecharacter Å {\AA} -\defineactivecharacter Æ {\AE} +\defineactivecharacter Å {\AA{}} +\defineactivecharacter Æ {\AE{}} \defineactivecharacter à {\`a} \defineactivecharacter á {\'a} \defineactivecharacter â {\^a} \defineactivecharacter ã {\~a} \defineactivecharacter ä {\"a} -\defineactivecharacter å {\aa} -\defineactivecharacter æ {\ae} +\defineactivecharacter å {\aa{}} +\defineactivecharacter æ {\ae{}} \defineactivecharacter Ç {\c C} \defineactivecharacter ç {\c c} @@ -63,20 +63,20 @@ \defineactivecharacter Ô {\^O} \defineactivecharacter Õ {\~O} \defineactivecharacter Ö {\"O} -\defineactivecharacter Œ {\OE} -\defineactivecharacter Ø {\O} +\defineactivecharacter Œ {\OE{}} +\defineactivecharacter Ø {\O{}} \defineactivecharacter ò {\`o} \defineactivecharacter ó {\'o} \defineactivecharacter ô {\^o} \defineactivecharacter õ {\~o} \defineactivecharacter ö {\"o} -\defineactivecharacter œ {\oe} -\defineactivecharacter ø {\o} +\defineactivecharacter œ {\oe{}} +\defineactivecharacter ø {\o{}} \defineactivecharacter Š {\v{S}} \defineactivecharacter š {\v{s}} -\defineactivecharacter ß {\SS} +\defineactivecharacter ß {\SS{}} \defineactivecharacter Ù {\`U} \defineactivecharacter Ú {\'U} @@ -94,26 +94,26 @@ \defineactivecharacter ¿ {?`} \defineactivecharacter ¡ {!`} -\defineactivecharacter † {\dag} -\defineactivecharacter ‡ {\ddag} -\defineactivecharacter ¶ {\P} -\defineactivecharacter § {\S} +\defineactivecharacter † {\dag{}} +\defineactivecharacter ‡ {\ddag{}} +\defineactivecharacter ¶ {\P{}} +\defineactivecharacter § {\S{}} \defineactivecharacter – {--} \defineactivecharacter — {---} -\defineactivecharacter … {\dots} -\defineactivecharacter © {\copyright} -\defineactivecharacter £ {\pounds} - -\defineactivecharacter „ {\char44\kern-.1em\char44} -\defineactivecharacter “ {\char96\kern-.1em\char96} -\defineactivecharacter ” {\char34} -\defineactivecharacter ‘ {\upperleftsinglesixquote} -\defineactivecharacter ’ {\char39} -\defineactivecharacter › {\rightsubguillemot} -\defineactivecharacter ‹ {\leftsubguillemot} +\defineactivecharacter … {\dots{}} +\defineactivecharacter © {\copyright{}} +\defineactivecharacter £ {\pounds{}} + +\defineactivecharacter „ {\char44\kern-.1em\char44 } +\defineactivecharacter “ {\char96\kern-.1em\char96 } +\defineactivecharacter ” {\char34 } +\defineactivecharacter ‘ {\upperleftsinglesixquote{}} +\defineactivecharacter ’ {\char39 } +\defineactivecharacter › {\rightsubguillemot{}} +\defineactivecharacter ‹ {\leftsubguillemot{}} \defineactivecharacter « {\ifvmode\leavevmode\fi\leftguillemot\prewordbreak} -\defineactivecharacter » {\prewordbreak\rightguillemot} +\defineactivecharacter » {\prewordbreak\rightguillemot{}} \stopregime diff --git a/tex/context/base/font-ber.tex b/tex/context/base/font-ber.tex index f18bdd868..e748305bd 100644 --- a/tex/context/base/font-ber.tex +++ b/tex/context/base/font-ber.tex @@ -8,8 +8,8 @@ %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. +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. \definefontsynonym [Baskerville] [mbvr8t] [encoding=ec] \definefontsynonym [Baskerville-Italic] [mbvri8t] [encoding=ec] @@ -18,37 +18,44 @@ \definefontsynonym [Baskerville-SemiBold] [mbvs8t] [encoding=ec] \definefontsynonym [Baskerville-SemiBoldItalic] [mbvsi8t] [encoding=ec] -\definefontsynonym [Courier] [pcrr8t] [encoding=ec] -\definefontsynonym [Courier-Bold] [pcrb8t] [encoding=ec] -\definefontsynonym [Courier-Oblique] [pcrro8t] [encoding=ec] -\definefontsynonym [Courier-BoldOblique] [pcrbo8t] [encoding=ec] +\definefontsynonym [Courier] [pcrr8t] [encoding=ec] +\definefontsynonym [Courier-Bold] [pcrb8t] [encoding=ec] +\definefontsynonym [Courier-Oblique] [pcrro8t] [encoding=ec] +\definefontsynonym [Courier-BoldOblique] [pcrbo8t] [encoding=ec] -\definefontsynonym [Helvetica] [phvr8t] [encoding=ec] -\definefontsynonym [Helvetica-Oblique] [phvro8t] [encoding=ec] -\definefontsynonym [Helvetica-Bold] [phvb8t] [encoding=ec] -\definefontsynonym [Helvetica-BoldOblique] [phvbo8t] [encoding=ec] +\definefontsynonym [Helvetica] [phvr8t] [encoding=ec] +\definefontsynonym [Helvetica-Oblique] [phvro8t] [encoding=ec] +\definefontsynonym [Helvetica-Bold] [phvb8t] [encoding=ec] +\definefontsynonym [Helvetica-BoldOblique] [phvbo8t] [encoding=ec] -\definefontsynonym [Times-Roman] [ptmr8t] [encoding=ec] -\definefontsynonym [Times-Italic] [ptmri8t] [encoding=ec] -\definefontsynonym [Times-Bold] [ptmb8t] [encoding=ec] -\definefontsynonym [Times-BoldItalic] [ptmbi8t] [encoding=ec] +\definefontsynonym [Times-Roman] [ptmr8t] [encoding=ec] +\definefontsynonym [Times-Italic] [ptmri8t] [encoding=ec] +\definefontsynonym [Times-Bold] [ptmb8t] [encoding=ec] +\definefontsynonym [Times-BoldItalic] [ptmbi8t] [encoding=ec] -\definefontsynonym [AntykwaTorunska-Regular] [zatr8t] [encoding=ec] -\definefontsynonym [AntykwaTorunska-Italic] [zatri8t] [encoding=ec] -\definefontsynonym [AntykwaTorunska-Bold] [zatb8t] [encoding=ec] +\definefontsynonym [AntykwaTorunska-Regular] [zatr8t] [encoding=ec] +\definefontsynonym [AntykwaTorunska-Italic] [zatri8t] [encoding=ec] +\definefontsynonym [AntykwaTorunska-Bold] [zatb8t] [encoding=ec] -\definefontsynonym [AvantGarde] [pag] -\definefontsynonym [BookmanLight] [pbk] -\definefontsynonym [CentaurMT] [pur] -\definefontsynonym [Garamond] [pgm] -\definefontsynonym [GillSans] [pgs] -\definefontsynonym [NewBaskerville] [pnb] -\definefontsynonym [Optima] [pop] -\definefontsynonym [Palatino] [ppl] -\definefontsynonym [Symbol] [psy] -\definefontsynonym [Univers] [pun] -\definefontsynonym [Utopia] [put] -\definefontsynonym [ZapfChancery] [pzc] -\definefontsynonym [ZapfDingbats] [pzd] +\definefontsynonym [Palatino-Roman] [uplr8r] [encoding=ec] +\definefontsynonym [Palatino-Italic] [uplri8r] [encoding=ec] +\definefontsynonym [Palatino-Slanted] [uplro8r] [encoding=ec] +\definefontsynonym [Palatino-Bold] [uplb8r] [encoding=ec] +\definefontsynonym [Palatino-BoldItalic] [uplbi8r] [encoding=ec] +\definefontsynonym [Palatino-BoldSlanted] [uplbo8r] [encoding=ec] +\definefontsynonym [AvantGarde] [pag] +\definefontsynonym [BookmanLight] [pbk] +\definefontsynonym [CentaurMT] [pur] +\definefontsynonym [Garamond] [pgm] +\definefontsynonym [GillSans] [pgs] +\definefontsynonym [NewBaskerville] [pnb] +\definefontsynonym [Optima] [pop] +\definefontsynonym [Palatino] [ppl] +\definefontsynonym [Symbol] [psy] +\definefontsynonym [Univers] [pun] +\definefontsynonym [Utopia] [put] +\definefontsynonym [ZapfChancery] [pzc] +\definefontsynonym [ZapfDingbats] [pzd] + \endinput diff --git a/tex/context/base/font-chi.tex b/tex/context/base/font-chi.tex index 25fafaa82..9c2d8d5ce 100644 --- a/tex/context/base/font-chi.tex +++ b/tex/context/base/font-chi.tex @@ -1,18 +1,3 @@ -% still to be implemented: -% -% - columns left right touch -% - distance = (hsize-n*bodyfontsize)/(n-1) -% - char grids -% - char tables -% - all kind of rotated combinations -% - hanging puctuation -% - a few more encodings -% - rotation list -% -% currently under testing: big5 -% -% misschien een andere suffix: tux of tuc - %D \module %D [ file=font-chi, %D version=1999.10.10, @@ -29,6 +14,19 @@ \writestatus{loading}{Context Font Macros / Chinese} +%D Still to be implemented: +%D +%D \startopsomming +%D \som columns left right touch +%D \som distance = (hsize-n*bodyfontsize)/(n-1) +%D \som char grids +%D \som char tables +%D \som all kind of rotated combinations +%D \som hanging puctuation +%D \som a few more encodings +%D \som rotation list +%D \stopopsomming + %M \stelkorpsin[chi] %M %M \def\WangLei% @@ -475,22 +473,22 @@ %D \def\DoIt #1 #2 % %D {\hbox{\hbox to 2em{\uchar{#1}{#2}\hss}#1 #2}\par} %D -%D \startcolumns[n=5] +%D \startkolommen[n=5] %D \DoIt 161 162 \DoIt 161 163 \DoIt 161 164 \DoIt 161 167 \DoIt 161 173 %D \DoIt 161 175 \DoIt 161 177 \DoIt 161 179 \DoIt 161 181 \DoIt 161 183 %D \DoIt 161 185 \DoIt 161 187 \DoIt 161 189 \DoIt 161 191 \DoIt 161 227 %D \DoIt 161 228 \DoIt 161 229 \DoIt 163 161 \DoIt 163 162 \DoIt 163 167 %D \DoIt 163 169 \DoIt 163 172 \DoIt 163 174 \DoIt 163 186 \DoIt 163 187 %D \DoIt 163 190 \DoIt 163 191 \DoIt 163 221 \DoIt 163 253 -%D \stopcolumns +%D \stopkolommen %D %D A linebreak is not permitted after the following glyphs: %D -%D \startcolumns[n=5] +%D \startkolommen[n=5] %D \DoIt 161 174 \DoIt 161 176 \DoIt 161 178 \DoIt 161 180 \DoIt 161 182 %D \DoIt 161 184 \DoIt 161 186 \DoIt 161 188 \DoIt 161 190 \DoIt 163 168 %D \DoIt 163 219 \DoIt 163 224 \DoIt 163 251 -%D \stopcolumns +%D \stopkolommen %D \macros %D {tracechinesetrue, showchinesetracelegend} @@ -504,7 +502,8 @@ \newif\iftracechinese \def\showchinesetracelegend% - {\starttabulate[|c|l|l|l|] + {\definetabulate[\s!dummy][|c|l|l|l|]% + \startdummy \HL \NC \bf key \NC \bf meaning \NC \bf glyph \NC \bf keys \NC \NR \HL \NC u \NC unknown character type \NC \color[green]{current} \NC u l r \NC\NR \NC l \NC left boundary character \NC \color[red]{previous} \NC u l r c n \NC\NR @@ -512,7 +511,7 @@ \NC c \NC chinese character \NC \NC \NC\NR \NC s \NC following space \NC \NC \NC\NR \NC n \NC no preceding space \NC \NC \NC\NR \HL - \stoptabulate} + \stopdummy} \def\tracedchineseglyph% {\leavevmode @@ -635,8 +634,24 @@ % \fi\fi\fi\fi\fi\fi} % \stoptypen +%D We use a dirty trick to enable Chinese Capital Digits. In +%D the encoding vectors, we define these by appending a suffix +%D \type {*} to the digit. For the moment this method works ok. +%D With \type {\capstyle} one can switch to those capitalized +%D digits. + +\def\enablechinesecapdigits% + {\def\chinesedigitsuffix{*}} + +\def\disablechinesecapdigits% + {\let\chinesedigitsuffix\empty} + +\disablechinesecapdigits + +\let\capstyle\enablechinesecapdigits + \def\chinesedigit#1% - {\udigit{\chineseencoding}{\number#1}} + {\udigit{\chineseencoding}{\number#1\chinesedigitsuffix}} \def\chinesenumber#1% {\expandafter\dochinesenumber\number#1\relax} @@ -718,11 +733,11 @@ \chinesedigit{100000000}% \dododochinesenumber#3\relax} -%D The next gtable demonstates the correctness of the +%D The next table demonstates the correctness of the %D conversion macro. %D -%D \starybuffer -%D \starttable[|l|l|l|l|l|l|] +%D \startbuffer +%D \starttabel[|l|l|l|l|l|l|] %D \HL %D \NC number \NC converter \NC hard coded \NC %D number \NC converter \NC hard coded\NC \SR @@ -755,10 +770,10 @@ %D \NC 1111111111 \NC \chinesenumber{1111111111} \NC ʮһÒÚһǧһ°ÙһʮһÍòһǧһ°Ùһʮһ \NC %D 1000000000 \NC \chinesenumber{1000000000} \NC Ê®ÒÚ \NC\LR %D \HL -%D \stoptable +%D \stoptabel %D \stopbuffer %D -%D \plaatstabel{Some Chinese number examples.}{\getbuffer} +%D \plaatstabel{Some Chinese number examples.}{\haalbuffer} %D Although the conversion can be hooked into most commands %D that deal with numbers |<|those familiar with \TEX\ macro @@ -806,6 +821,8 @@ %D trick is to move the encoding value from the current font %D definition to the \type {\chineseencoding} macro. +\let\chineseencoding\empty + \def\setchineseencoding% normally SomeChineseRegular {\getfontfileparameters\unicodestyle \ifx\currentfontfileencoding\undefined \else @@ -887,38 +904,38 @@ %D Now it's time for some real Chinese. This example %D also shows that font switching is supported. %D -%D \startnarrower -%D \midalligned{\bfb Ë®µ÷¸èÍ·} -%D \blank -%D \midaligned{\sl ±û³½ÖÐÇ»¶Òû´ïµ©£¬´ó×í×÷´Ëƪ£¬¼æ»³×ÓÓÉ¡£} -%D \blank -%D \midaligned{\bs ËÕéø} -%D \blank +%D \startsmaller +%D \regelmidden{\tfd Ë®µ÷¸èÍ·} +%D \blanko +%D \regelmidden{\tfb ±û³½ÖÐÇ»¶Òû´ïµ©£¬´ó×í×÷´Ëƪ£¬¼æ»³×ÓÓÉ¡£} +%D \blanko +%D \regelmidden{\tfb ËÕéø} +%D \blanko %D Ã÷Ô¼¸Ê±ÓУ¿°Ñ¾ÆÎÊÇàÌì¡£²»ÖªÌìÉϹ¬ãÚ£¬½ñϦÊǺÎÄꣿÎÒÓû³Ë·ç¹éÈ¥ %D £¬ÓÖ¿ÖÇíÂ¥ÓñÓ¸ß´¦²»Ê¤º®¡£ÆðÎèŪÇåÓ°£¬ºÎËÆÔÚÈ˼䣿 -%D \blank +%D \blanko %D תÖì¸ó£¬µÍ»§£¬ÕÕÎÞÃß¡£²»Ó¦Óкޣ¬ºÎÊÂÆ«Ïò±ðʱԲ£¿ÈËÓб¯»¶ÀëºÏ£¬ %D ÔÂÓÐÒõÇçԲȱ£¬´ËʹÅÄÑÈ«¡£µ«Ô¸È˳¤¾Ã£¬Ç§Àﹲ濾ꡣ -%D \stopnarrower +%D \stopsmaller %D %D The english translation is: %D -%D \startnarrower -%D \midaligned{\slb Tune: Prelude to the Melody of Water} -%D \blank -%D \midaligned{\sl On the night of the Mid||Autumn Festival of +%D \startsmaller +%D \regelmidden{\tfd Tune: Prelude to the Melody of Water} +%D \blanko +%D \regelmidden{\tfb On the night of the Mid||Autumn Festival of %D 1076, I drank happily till dawn and wrote this in my cups %D while thinking of Zi||you.} -%D \blank -%D \midaligned{\bf Su Shi} -%D \blank +%D \blanko +%D \regelmidden{\tfb Su Shi} +%D \blanko %D How long will the bright moon appear? Wine||cup in hand, I %D ask the sky. I do not know waht time of year it would be %D tonight in the palace on high. Riding the wind, there I %D would fly, yet I fear the crystal palace would be far too %D high and cold for me. I rise and dance, with my shadow I %D play. On high as on earth, would it be as gay? -%D \blank +%D \blanko %D The moon goes round the mansion red though gauze||draped %D windows soft to shed her light upon the sleepless bed. %D Against man she should have no spite. Why then when people @@ -928,7 +945,7 @@ %D olden days. So let us wish that man will live long as he %D can! Though miles apart, we'll share the beauty she %D displays. -%D \stopnarrower +%D \stopsmaller %D This package is written in the city of Hasselt, a pretty %D small town in the |<|compare to China real small|>| diff --git a/tex/context/base/font-cmr.tex b/tex/context/base/font-cmr.tex index 8927b08f2..eccc2c1cb 100644 --- a/tex/context/base/font-cmr.tex +++ b/tex/context/base/font-cmr.tex @@ -52,7 +52,7 @@ \definefontsynonym [Fraktur] [eufm10] \definefontsynonym [Gothic] [eufm10] -\definefontsynonym [Caligraphic] [cmsy10] +\definefontsynonym [Calligraphic] [cmsy10] %D What follows next is the main definition part. @@ -450,6 +450,10 @@ bfb=cmbx10 scaled \magstep2, bfc=cmbx10 scaled \magstep3, bfd=cmbx10 scaled \magstep4, + ita=cmti10 scaled \magstep1, + itb=cmti10 scaled \magstep2, + itc=cmti10 scaled \magstep3, + itd=cmti10 scaled \magstep4, sla=cmsl10 scaled \magstep1, slb=cmsl10 scaled \magstep2, slc=cmsl10 scaled \magstep3, diff --git a/tex/context/base/font-fil.tex b/tex/context/base/font-fil.tex index 3a71f9529..9daebf9fc 100644 --- a/tex/context/base/font-fil.tex +++ b/tex/context/base/font-fil.tex @@ -11,105 +11,98 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\definefontsynonym [ComputerModern] [cmr10] -\definefontsynonym [ComputerModern-Bold] [cmbx10] -\definefontsynonym [ComputerModern-Italic] [cmti10] -\definefontsynonym [ComputerModern-Slanted] [cmsl10] -\definefontsynonym [ComputerModern-BoldItalic] [cmbxti10] -\definefontsynonym [ComputerModern-BoldSlanted] [cmbxsl10] -\definefontsynonym [ComputerModern-Caps] [cmr10] +\definefontsynonym [ComputerModern] [cmr10] +\definefontsynonym [ComputerModern-Bold] [cmbx10] +\definefontsynonym [ComputerModern-Italic] [cmti10] +\definefontsynonym [ComputerModern-Slanted] [cmsl10] +\definefontsynonym [ComputerModern-BoldItalic] [cmbxti10] +\definefontsynonym [ComputerModern-BoldSlanted] [cmbxsl10] +\definefontsynonym [ComputerModern-Caps] [cmr10] -\definefontsynonym [ComputerModernSans] [cmss10] -\definefontsynonym [ComputerModernSans-Bold] [cmssbx10] -\definefontsynonym [ComputerModernSans-Italic] [cmssi10] -\definefontsynonym [ComputerModernSans-Slanted] [cmssi10] -\definefontsynonym [ComputerModernSans-BoldItalic] [cmssbx10] -\definefontsynonym [ComputerModernSans-BoldSlanted] [cmssbx10] -\definefontsynonym [ComputerModernSans-Caps] [cmss10] +\definefontsynonym [ComputerModernSans] [cmss10] +\definefontsynonym [ComputerModernSans-Bold] [cmssbx10] +\definefontsynonym [ComputerModernSans-Italic] [cmssi10] +\definefontsynonym [ComputerModernSans-Slanted] [cmssi10] +\definefontsynonym [ComputerModernSans-BoldItalic] [cmssbx10] +\definefontsynonym [ComputerModernSans-BoldSlanted] [cmssbx10] +\definefontsynonym [ComputerModernSans-Caps] [cmss10] + +\definefontsynonym [ComputerModernMono] [cmtt10] +\definefontsynonym [ComputerModernMono-Bold] [cmtt10] +\definefontsynonym [ComputerModernMono-Italic] [cmitt10] +\definefontsynonym [ComputerModernMono-Slanted] [cmsltt10] +\definefontsynonym [ComputerModernMono-BoldItalic] [cmtt10] +\definefontsynonym [ComputerModernMono-BoldSlanted] [cmtt10] +\definefontsynonym [ComputerModernMono-Caps] [cmtt10] -\definefontsynonym [ComputerModernMono] [cmtt10] -\definefontsynonym [ComputerModernMono-Bold] [cmtt10] -\definefontsynonym [ComputerModernMono-Italic] [cmitt10] -\definefontsynonym [ComputerModernMono-Slanted] [cmsltt10] -\definefontsynonym [ComputerModernMono-BoldItalic] [cmtt10] -\definefontsynonym [ComputerModernMono-BoldSlanted] [cmtt10] -\definefontsynonym [ComputerModernMono-Caps] [cmtt10] +\definefontsynonym [ComputerModernMath-Roman] [cmr10] +\definefontsynonym [ComputerModernMath-Extension] [cmex10] +\definefontsynonym [ComputerModernMath-Italic] [cmmi10] +\definefontsynonym [ComputerModernMath-Symbol] [cmsy10] -\definefontsynonym [ComputerModernMath-Roman] [cmr10] -\definefontsynonym [ComputerModernMath-Extension] [cmex10] -\definefontsynonym [ComputerModernMath-Italic] [cmmi10] -\definefontsynonym [ComputerModernMath-Symbol] [cmsy10] +\definefontsynonym [Courier] [com] [encoding=texnansi] +\definefontsynonym [Courier-Oblique] [coo] [encoding=texnansi] +\definefontsynonym [Courier-Bold] [cob] [encoding=texnansi] +\definefontsynonym [Courier-BoldOblique] [cobo] [encoding=texnansi] -\definefontsynonym [Courier] [com] [encoding=texnansi] -\definefontsynonym [Courier-Oblique] [coo] [encoding=texnansi] -\definefontsynonym [Courier-Bold] [cob] [encoding=texnansi] -\definefontsynonym [Courier-BoldOblique] [cobo] [encoding=texnansi] +\definefontsynonym [Helvetica] [hv] [encoding=texnansi] +\definefontsynonym [Helvetica-Oblique] [hvo] [encoding=texnansi] +\definefontsynonym [Helvetica-Bold] [hvb] [encoding=texnansi] +\definefontsynonym [Helvetica-BoldOblique] [hvbo] [encoding=texnansi] -\definefontsynonym [Helvetica] [hv] [encoding=texnansi] -\definefontsynonym [Helvetica-Oblique] [hvo] [encoding=texnansi] -\definefontsynonym [Helvetica-Bold] [hvb] [encoding=texnansi] -\definefontsynonym [Helvetica-BoldOblique] [hvbo] [encoding=texnansi] +\definefontsynonym [Times-Roman] [tir] [encoding=texnansi] +\definefontsynonym [Times-Italic] [tii] [encoding=texnansi] +\definefontsynonym [Times-Bold] [tib] [encoding=texnansi] +\definefontsynonym [Times-BoldItalic] [tibi] [encoding=texnansi] -\definefontsynonym [Times-Roman] [tir] [encoding=texnansi] -\definefontsynonym [Times-Italic] [tii] [encoding=texnansi] -\definefontsynonym [Times-Bold] [tib] [encoding=texnansi] -\definefontsynonym [Times-BoldItalic] [tibi] [encoding=texnansi] - -\definefontsynonym [LucidaBlackletter] [lbl] [encoding=texnansi] -\definefontsynonym [LucidaBright] [lbr] [encoding=texnansi] -\definefontsynonym [LucidaBright-Demi] [lbd] [encoding=texnansi] -\definefontsynonym [LucidaBright-DemiItalic] [lbdi] [encoding=texnansi] -\definefontsynonym [LucidaBright-Italic] [lbi] [encoding=texnansi] -\definefontsynonym [LucidaBrightSmallcaps] [lbrsc] [encoding=texnansi] -\definefontsynonym [LucidaBrightSmallcaps-Demi] [lbdsc] [encoding=texnansi] -\definefontsynonym [LucidaBright-Oblique] [lbsl] [encoding=texnansi] -\definefontsynonym [LucidaCalligraphy-Italic] [lbc] [encoding=texnansi] -\definefontsynonym [LucidaCasual] [lbkr] [encoding=texnansi] -\definefontsynonym [LucidaCasual-Italic] [lbki] [encoding=texnansi] -\definefontsynonym [LucidaFax] [lfr] [encoding=texnansi] -\definefontsynonym [LucidaFax-Demi] [lfd] [encoding=texnansi] -\definefontsynonym [LucidaFax-DemiItalic] [lfdi] [encoding=texnansi] -\definefontsynonym [LucidaFax-Italic] [lfi] [encoding=texnansi] -\definefontsynonym [LucidaHandwriting-Italic] [lbh] [encoding=texnansi] -\definefontsynonym [LucidaSans] [lsr] [encoding=texnansi] -\definefontsynonym [LucidaSans-Demi] [lsd] [encoding=texnansi] -\definefontsynonym [LucidaSans-DemiItalic] [lsdi] [encoding=texnansi] -\definefontsynonym [LucidaSans-Italic] [lsi] [encoding=texnansi] -\definefontsynonym [LucidaSans-Bold] [lsb] [encoding=texnansi] -\definefontsynonym [LucidaSans-BoldItalic] [lsbi] [encoding=texnansi] -\definefontsynonym [LucidaSans-Typewriter] [lstr] [encoding=texnansi] -\definefontsynonym [LucidaSans-TypewriterBold] [lstb] [encoding=texnansi] -\definefontsynonym [LucidaSans-TypewriterBoldOblique] [lstbo] [encoding=texnansi] -\definefontsynonym [LucidaSans-TypewriterOblique] [lsto] [encoding=texnansi] -\definefontsynonym [LucidaTypewriter] [lbtr] [encoding=texnansi] -\definefontsynonym [LucidaTypewriterBold] [lbtb] [encoding=texnansi] -\definefontsynonym [LucidaTypewriterBoldOblique] [lbtbo] [encoding=texnansi] -\definefontsynonym [LucidaTypewriterOblique] [lbto] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-AltDemiItalic] [lbmdo] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-AltItalic] [lbmo] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Arrows] [lbma] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Arrows-Demi] [lbmad] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Extension] [lbme] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Roman] [lbmr] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Demibold] [lbmd] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-DemiItalic] [lbmdi] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Italic] [lbmi] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Symbol] [lbms] [encoding=texnansi] -\definefontsynonym [LucidaNewMath-Symbol-Demi] [lbmsd] [encoding=texnansi] +\definefontsynonym [LucidaBlackletter] [lbl] [encoding=texnansi] +\definefontsynonym [LucidaBright] [lbr] [encoding=texnansi] +\definefontsynonym [LucidaBright-Demi] [lbd] [encoding=texnansi] +\definefontsynonym [LucidaBright-DemiItalic] [lbdi] [encoding=texnansi] +\definefontsynonym [LucidaBright-Italic] [lbi] [encoding=texnansi] +\definefontsynonym [LucidaBrightSmallcaps] [lbrsc] [encoding=texnansi] +\definefontsynonym [LucidaBrightSmallcaps-Demi] [lbdsc] [encoding=texnansi] +\definefontsynonym [LucidaBright-Oblique] [lbsl] [encoding=texnansi] +\definefontsynonym [LucidaCalligraphy-Italic] [lbc] [encoding=texnansi] +\definefontsynonym [LucidaCasual] [lbkr] [encoding=texnansi] +\definefontsynonym [LucidaCasual-Italic] [lbki] [encoding=texnansi] +\definefontsynonym [LucidaFax] [lfr] [encoding=texnansi] +\definefontsynonym [LucidaFax-Demi] [lfd] [encoding=texnansi] +\definefontsynonym [LucidaFax-DemiItalic] [lfdi] [encoding=texnansi] +\definefontsynonym [LucidaFax-Italic] [lfi] [encoding=texnansi] +\definefontsynonym [LucidaHandwriting-Italic] [lbh] [encoding=texnansi] +\definefontsynonym [LucidaSans] [lsr] [encoding=texnansi] +\definefontsynonym [LucidaSans-Demi] [lsd] [encoding=texnansi] +\definefontsynonym [LucidaSans-DemiItalic] [lsdi] [encoding=texnansi] +\definefontsynonym [LucidaSans-Italic] [lsi] [encoding=texnansi] +\definefontsynonym [LucidaSans-Bold] [lsb] [encoding=texnansi] +\definefontsynonym [LucidaSans-BoldItalic] [lsbi] [encoding=texnansi] +\definefontsynonym [LucidaSans-Typewriter] [lstr] [encoding=texnansi] +\definefontsynonym [LucidaSans-TypewriterBold] [lstb] [encoding=texnansi] +\definefontsynonym [LucidaSans-TypewriterBoldOblique] [lstbo] [encoding=texnansi] +\definefontsynonym [LucidaSans-TypewriterOblique] [lsto] [encoding=texnansi] +\definefontsynonym [LucidaTypewriter] [lbtr] [encoding=texnansi] +\definefontsynonym [LucidaTypewriterBold] [lbtb] [encoding=texnansi] +\definefontsynonym [LucidaTypewriterBoldOblique] [lbtbo] [encoding=texnansi] +\definefontsynonym [LucidaTypewriterOblique] [lbto] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-AltDemiItalic] [lbmdo] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-AltItalic] [lbmo] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Arrows] [lbma] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Arrows-Demi] [lbmad] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Extension] [lbme] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Roman] [lbmr] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Demibold] [lbmd] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-DemiItalic] [lbmdi] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Italic] [lbmi] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Symbol] [lbms] [encoding=texnansi] +\definefontsynonym [LucidaNewMath-Symbol-Demi] [lbmsd] [encoding=texnansi] -\definefontsynonym [AntykwaTorunska-Bold] [anttb] -\definefontsynonym [AntykwaTorunska-Regular] [anttr] -\definefontsynonym [AntykwaTorunska-Italic] [anttri] - -\definefontsynonym [AntykwaTorunska-Regular] [zatr8t] -[encoding=ec] -\definefontsynonym [AntykwaTorunska-Italic] [zatri8t] -[encoding=ec] -\definefontsynonym [AntykwaTorunska-Bold] [zatb8t] -[encoding=ec] +\definefontsynonym [AntykwaTorunska-Bold] [anttb] [encoding=texnansi] +\definefontsynonym [AntykwaTorunska-Regular] [anttr] [encoding=texnansi] +\definefontsynonym [AntykwaTorunska-Italic] [anttri] [encoding=texnansi] -\definefontsynonym [ContextNavigation] [contnav] +\definefontsynonym [ContextNavigation] [contnav] -\definefontsynonym [RalfSmithFormalScript] [rsfs10] +\definefontsynonym [RalfSmithFormalScript] [rsfs10] \endinput diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex index 61ee1b90b..258c60125 100644 --- a/tex/context/base/font-ini.tex +++ b/tex/context/base/font-ini.tex @@ -888,8 +888,15 @@ \def\definefont% {\dodoubleargument\dodefinefont} +% \def\dodefinefont[#1][#2]% +% {\unexpanded\setvalue{#1}{\dododefinefont{#1}#2 sa sa*}} +% +% A more friendly version, which defaults to \type {sa 1} is: + \def\dodefinefont[#1][#2]% - {\unexpanded\setvalue{#1}{\dododefinefont{#1}#2 sa sa*}} + {\doifinstringelse{ }{#2} + {\unexpanded\setvalue{#1}{\dododefinefont{#1}#2 sa sa*}} + {\dodefinefont[#1][#2 sa 1]}} \def\dododefinefont#1#2sa #3sa#4*% {\edef\fontscale{#3}% @@ -986,7 +993,7 @@ \endTEX -\beginETEX +\beginETEX \ifcsname \def\currentfontscale% {\ifcsname\??ft\s!default\xfontsize\endcsname @@ -2198,22 +2205,22 @@ %D On behalf of {\frac Tobias Burnus}, we define some more of %D these: -\definefont [frak] [Fraktur sa \currentfontscale] -\definefont [goth] [Gothic sa \currentfontscale] -\definefont [cal] [Caligraphic sa \currentfontscale] +\definefont [frak] [Fraktur sa \currentfontscale] +\definefont [goth] [Gothic sa \currentfontscale] +\definefont [cal] [Calligraphic sa \currentfontscale] -\definefontsynonym [Fraktur] [Serif] -\definefontsynonym [Gothic] [Serif] -\definefontsynonym [Caligraphic] [Serif] +\definefontsynonym [Fraktur] [Serif] +\definefontsynonym [Gothic] [Serif] +\definefontsynonym [Calligraphic] [Serif] %D \macros -%D {fraktur, gothic, caligraphic} +%D {fraktur, gothic, calligraphic} %D %D For Tobias and friends: -\def\fraktur #1{\ifmmode\hbox\fi{\frak#1}} -\def\gothic #1{\ifmmode\hbox\fi{\goth#1}} -\def\caligraphic#1{\ifmmode\hbox\fi{\cal #1}} +\def\fraktur #1{\ifmmode\hbox\fi{\frak#1}} +\def\gothic #1{\ifmmode\hbox\fi{\goth#1}} +\def\calligraphic#1{\ifmmode\hbox\fi{\cal #1}} %D In \type {font-cmr} we will link these to real file names. @@ -2249,7 +2256,7 @@ %D system calls and are defined by the bodyfontenvironment. \def\setsmallbodyfont% - {\doswitchpoints[\getvalue{\??ft\normalizedbodyfontsize\v!klein}]% + {\doswitchpoints[\getvalue{\??ft\normalizedbodyfontsize\interfaced\v!klein}]% \doswitchstyle[\fontstyle]} \def\setmainbodyfont% @@ -2462,7 +2469,8 @@ \newconditional\emneeded \unexpanded\def\em% - {\ifdim\fontdimen1\font>\!!zeropoint\relax + {\relax + \ifdim\fontdimen1\font>\!!zeropoint\relax \settrue\emneeded \else \setfalse\emneeded @@ -2494,7 +2502,8 @@ {\let\normalbf\bf \let\setemphasisboldface\relax \def\bf% - {\ifnum\fam=\itfam + {\relax + \ifnum\fam=\itfam \bi \else\ifnum\fam=\slfam \bs @@ -2667,15 +2676,15 @@ \doifelsenothing{#1} {\def\title{\the\korpsgrootte}} {\switchtobodyfont[#1]\def\title{#1}} - \def\do##1##2% - {\getvalue{\??ft##1##2}} - \def\next##1##2% - {&&##1{##2}{\s!text}&&##1{##2}{\s!script}&&##1{##2}{\s!scriptscript}% - &&##1{##2}{\c!x}&&##1{##2}{\c!xx}% - &&##1{##2}{\v!klein}&&##1{##2}{\v!groot}&\cr + \def\next##1% + {&&\getvalue{\??ft##1\s!text}% + &&\getvalue{\??ft##1\s!script}% + &&\getvalue{\??ft##1\s!scriptscript}% + &&\getvalue{\??ft##1\c!x}% + &&\getvalue{\??ft##1\c!xx}% + &&\getvalue{\??ft##1\interfaced{\v!klein}}% + &&\getvalue{\??ft##1\interfaced{\v!groot}}&\cr \noalign{\hrule}} - \def\donext##1% - {\doifdefined{\??ft##1\s!text}{\next\do{##1}}} \setlocalhsize \halign to \localhsize {##&\vrule##\strut @@ -2687,8 +2696,10 @@ \noalign{\hrule} &\multispan{15}{\vrule\hfil\tttf\strut[\title]\hfil}\vrule\cr \noalign{\hrule} - \next\bf\relax - \@EA\globalprocesscommalist\@EA[\bodyfontenvironmentlist]\donext}} + &&\bf\s!text&&\bf\s!script&&\bf\s!scriptscript + &&\bf\c!x&&\bf\c!xx&&\bf\v!klein&&\bf\v!groot&\cr + \noalign{\hrule} + \@EA\globalprocesscommalist\@EA[\bodyfontenvironmentlist]\next}} \stopbaselinecorrection} %D \macros @@ -2704,13 +2715,16 @@ %D as one can see, it does obey the small and even smaller %D sizes. +% \def\getglyph#1#2% +% {{\ifcase\currentxfontsize\or +% \bodyfontsize=\getvalue{\??ft\normalizedbodyfontsize\c!x}% +% \else +% \bodyfontsize=\getvalue{\??ft\normalizedbodyfontsize\c!xx}% +% \fi +% \font\temp=\truefontname{#1} at \bodyfontsize \temp#2\relax}} + \def\getglyph#1#2% - {{\ifcase\currentxfontsize\or - \bodyfontsize=\getvalue{\??ft\normalizedbodyfontsize\c!x}% - \else - \bodyfontsize=\getvalue{\??ft\normalizedbodyfontsize\c!xx}% - \fi - \font\temp=\truefontname{#1} at \bodyfontsize \temp#2\relax}} + {{\definefont[\s!dummy][#1 sa \currentfontscale]\dummy#2}} %D Fonts can only be used when loaded. In \CONTEXT\ we %D postpone the loading of fonts, even when we load \PLAIN. @@ -2756,14 +2770,15 @@ \let\setplainfonts=\undefined %D \macros -%D {ss, SS} +%D {ss, SS, sz} %D %D We are going to redefine \type{\ss} but for those wo still %D want to have access to the german \SS, we save it's value in %D \type{\SS}. Ok, I should have used \type{\sf} insead of %D \type{\ss} in the first place. -\let\SS=\ss +\ifx\undefined\SS \let\SS=\ss \fi +\ifx\undefined\sz \let\sz=\ss \fi %D \macros %D {xi} @@ -2902,6 +2917,26 @@ \c!interlinie=, \c!em=\v!schuin] +\definebodyfontenvironment + [20.7pt] + [ \s!text=20.7pt, + \s!script=\!!fourteenpointfour, + \s!scriptscript=\!!twelvepoint, + \c!x=17.3pt, + \c!xx=\!!fourteenpointfour, + \c!groot=20.7pt, % !!!! + \c!klein=17.3pt] + +\definebodyfontenvironment + [17.3pt] + [ \s!text=17.3pt, + \s!script=\!!twelvepoint, + \s!scriptscript=\!!tenpoint, + \c!x=\!!fourteenpointfour, + \c!xx=\!!twelvepoint, + \c!groot=20.7pt, + \c!klein=\!!fourteenpointfour] + \definebodyfontenvironment [\!!fourteenpointfour] [ \s!text=\!!fourteenpointfour, @@ -3021,39 +3056,6 @@ \definebodyfontswitch [vii] [\!!sevenpoint] \definebodyfontswitch [vi] [\!!sixpoint] -%D Well, why not define a few more big ones. Nowadays memory -%D is not so much a problem any more. - -\definebodyfontenvironment - [14.4pt] - [ \s!text=14.4pt, - \s!script=11pt, - \s!scriptscript=9pt, - \c!x=12pt, - \c!xx=10pt, - \c!groot=17.3pt, - \c!klein=12pt] - -\definebodyfontenvironment - [17.3pt] - [ \s!text=17.3pt, - \s!script=12pt, - \s!scriptscript=10pt, - \c!x=14.4pt, - \c!xx=12pt, - \c!groot=20.7pt, - \c!klein=14.4pt] - -\definebodyfontenvironment - [20.7pt] - [ \s!text=20.7pt, - \s!script=14.4pt, - \s!scriptscript=12pt, - \c!x=17.3pt, - \c!xx=14.4pt, - \c!groot=20.7pt, % !!!! - \c!klein=17.3pt] - %D So far. \definefontstyle [\c!rm,\v!roman,\v!serif,\v!regular] [\c!rm] diff --git a/tex/context/base/font-map.tex b/tex/context/base/font-map.tex index fcdeca0d8..a124f63b9 100644 --- a/tex/context/base/font-map.tex +++ b/tex/context/base/font-map.tex @@ -8,7 +8,7 @@ %D copyright=NTG Maps] %C %C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C therefore copyrighted by \PRAGMA. See licen-en.pdf for %C details. \startnotmode[localfonts] diff --git a/tex/context/base/font-ppl.tex b/tex/context/base/font-ppl.tex new file mode 100644 index 000000000..9bd34ba35 --- /dev/null +++ b/tex/context/base/font-ppl.tex @@ -0,0 +1,26 @@ +%D \module +%D [ file=font-ppl, +%D version=2000.3.17, +%D title=\CONTEXT\ Font Macros, +%D subtitle=Palatino, +%D author=J. Hagen, +%D date=\currentdate, +%D copyright=J. Hagen] +%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 file load the Palatino. + +\definefontsynonym [Serif] [Palatino-Roman] +\definefontsynonym [SerifBold] [Palatino-Bold] +\definefontsynonym [SerifItalic] [Palatino-Italic] +\definefontsynonym [SerifSlanted] [Palatino-Slanted] +\definefontsynonym [SerifBoldItalic] [Palatino-BoldItalic] +\definefontsynonym [SerifBoldSlanted] [Palatino-BoldSlanted] +\definefontsynonym [SerifCaps] [Palatino-Roman] + +\definebodyfont [14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt] [rm] [default] + +\endinput diff --git a/tex/context/base/font-uni.tex b/tex/context/base/font-uni.tex index 8f0a0bfbd..800a45235 100644 --- a/tex/context/base/font-uni.tex +++ b/tex/context/base/font-uni.tex @@ -144,11 +144,6 @@ \handleunicodeglyph \egroup} -\unexpanded\def\uc#1#2% used in tricky situations - {\bgroup - \edef\unicodeone{#1}% - \afterassignment\dohandleunicodeflowglyph\chardef\nexttoken} - \unexpanded\def\uchar#1#2% use as standalone glyph {\bgroup \let\nextglyph\relax @@ -157,6 +152,17 @@ \unicodeposition=\unicodeone\unicodetwo\relax \handleunicodeglyph \egroup} + +\def\dohandleucflowglyph% + {\unicodeposition=\unicodeone\unicodetwo\relax + \handleunicodeglyph + \egroup} + +\unexpanded\def\uc#1#2% used in tricky situations + {\bgroup + \edef\unicodeone{#1}% + \edef\unicodetwo{#2}% + \futurelet\nextglyph\dohandleucflowglyph} % Alternative, handles [char >127]{number} too. % diff --git a/tex/context/base/java-ini.tex b/tex/context/base/java-ini.tex index 885292578..d3c4aff0b 100644 --- a/tex/context/base/java-ini.tex +++ b/tex/context/base/java-ini.tex @@ -442,7 +442,7 @@ \fi\fi \fi\fi} -\def\finalflushJSpreamble% +\def\finalflushJSpreamble% kan direct in \everylastshipout, testen {\iflocation \flushJSpreamble \ifcase\currentJSpreamble\relax\else @@ -452,7 +452,7 @@ \fi} \prependtoks \flushJSpreamble \to \everyshipout -\prependtoks \finalflushJSpreamble \to \everylastshipout +\prependtoks \finalflushJSpreamble \to \everylastshipout %D \macros %D {doPSsanitizeJScode} diff --git a/tex/context/base/lang-alt.tex b/tex/context/base/lang-alt.tex index beb746f33..e721219ae 100644 --- a/tex/context/base/lang-alt.tex +++ b/tex/context/base/lang-alt.tex @@ -37,28 +37,28 @@ \installlanguage [turkish] [\s!tr] \setupheadtext [\s!tr] [\v!inhoud=Fihrist] -\setupheadtext [\s!tr] [\v!tabellen=Cetrel..] -\setupheadtext [\s!tr] [\v!figuren=Risim..] -\setupheadtext [\s!tr] [\v!grafieken=Grafik..] -\setupheadtext [\s!tr] [\v!intermezzos=Entermezzos] -\setupheadtext [\s!tr] [\v!index=Endeks] -\setupheadtext [\s!tr] [\v!afkortingen=K\i saltma..] -\setupheadtext [\s!tr] [\v!logos=Logos] -\setupheadtext [\s!tr] [\v!eenheden=Birlik] +\setupheadtext [\s!tr] [\v!tabellen=Tablolar] +\setupheadtext [\s!tr] [\v!figuren=\c{S}ekiller] +\setupheadtext [\s!tr] [\v!grafieken=Grafikler] +\setupheadtext [\s!tr] [\v!intermezzos=...] +\setupheadtext [\s!tr] [\v!index=\.Index] +\setupheadtext [\s!tr] [\v!afkortingen=K\i saltmalar] +\setupheadtext [\s!tr] [\v!logos=Logolar] +\setupheadtext [\s!tr] [\v!eenheden=Birimler] -\setuplabeltext [\s!tr] [\v!tabel=Cetrel ] -\setuplabeltext [\s!tr] [\v!figuur=Risim ] -\setuplabeltext [\s!tr] [\v!intermezzo=Entermezzo ] +\setuplabeltext [\s!tr] [\v!tabel=Tablo ] +\setuplabeltext [\s!tr] [\v!figuur=\c{S}ekil ] +\setuplabeltext [\s!tr] [\v!intermezzo=... ] \setuplabeltext [\s!tr] [\v!grafiek=Grafik ] -\setuplabeltext [\s!tr] [\v!hoofdstuk=] -\setuplabeltext [\s!tr] [\v!paragraaf=] -\setuplabeltext [\s!tr] [\v!sub\v!paragraaf=] +\setuplabeltext [\s!tr] [\v!hoofdstuk=] % [\v!hoofdstuk=Konu ] +\setuplabeltext [\s!tr] [\v!paragraaf=] % [\v!paragraaf=Paragraf ] +\setuplabeltext [\s!tr] [\v!sub\v!paragraaf=] % [\c!sub\v!paragraaf=Altparagraf ] \setuplabeltext [\s!tr] [\v!sub\v!sub\v!paragraaf=] \setuplabeltext [\s!tr] [\v!sub\v!sub\v!sub\v!paragraaf=] -\setuplabeltext [\s!tr] [\v!bijlage=] -\setuplabeltext [\s!tr] [\v!deel=Fas\i l ] +\setuplabeltext [\s!tr] [\v!bijlage=] % [\v!bijlage=Ek ] +\setuplabeltext [\s!tr] [\v!deel=Cilt ] \setuplabeltext [\s!tr] [\v!regel=sat\i r ] -\setuplabeltext [\s!tr] [\v!regels=sat\i r ] +\setuplabeltext [\s!tr] [\v!regels=sat\i rlar ] \setuplabeltext [\s!tr] [\v!january=ocak] \setuplabeltext [\s!tr] [\v!february=\c{s}ubat] diff --git a/tex/context/base/lang-chi.tex b/tex/context/base/lang-chi.tex index bb80bb249..31829073e 100644 --- a/tex/context/base/lang-chi.tex +++ b/tex/context/base/lang-chi.tex @@ -76,15 +76,54 @@ \startlanguagespecifics[\s!cn] -\stelsectiein[\v!sectionlevel-1][\c!conversie=\s!chinese] -\stelsectiein[\v!sectionlevel-2][\c!conversie=\s!chinese] -\stelsectiein[\v!sectionlevel-3][\c!conversie=\s!chinese] -\stelsectiein[\v!sectionlevel-4][\c!conversie=\s!chinese] -\stelsectiein[\v!sectionlevel-5][\c!conversie=\s!chinese] -\stelsectiein[\v!sectionlevel-6][\c!conversie=\s!chinese] -\stelsectiein[\v!sectionlevel-7][\c!conversie=\s!chinese] - -% \stelblokkopjesin[\c!conversie=\s!chinese] +\startencoding[gbk] + +\setuplabeltext [\s!cn] [\v!january=\uchar{210}{187}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!february=\uchar{182}{254}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!march=\uchar{200}{253}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!april=\uchar{203}{196}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!may=\uchar{206}{229}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!june=\uchar{193}{249}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!july=\uchar{198}{223}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!august=\uchar{176}{203}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!september=\uchar{190}{197}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!october=\uchar{202}{174}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!november=\uchar{202}{174}\uchar{210}{187}\uchar{212}{194}] +\setuplabeltext [\s!cn] [\v!december=\uchar{202}{174}\uchar{182}{254}\uchar{212}{194}] + +\setuplabeltext [\s!cn] [\v!sunday=\uchar{208}{199}\uchar{198}{218}\uchar{200}{213}] +\setuplabeltext [\s!cn] [\v!monday=\uchar{208}{199}\uchar{198}{218}\uchar{210}{187}] +\setuplabeltext [\s!cn] [\v!tuesday=\uchar{208}{199}\uchar{198}{218}\uchar{182}{254}] +\setuplabeltext [\s!cn] [\v!wednesday=\uchar{208}{199}\uchar{198}{218}\uchar{200}{253}] +\setuplabeltext [\s!cn] [\v!thursday=\uchar{208}{199}\uchar{198}{218}\uchar{203}{196}] +\setuplabeltext [\s!cn] [\v!friday=\uchar{208}{199}\uchar{198}{218}\uchar{206}{229}] +\setuplabeltext [\s!cn] [\v!saturday=\uchar{208}{199}\uchar{198}{218}\uchar{193}{249}] +\stopencoding + +\startencoding[big5] + +\setuplabeltext [\s!cn] [\v!january=\uchar{164} {64}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!february=\uchar{164} {71}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!march=\uchar{164} {84}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!april=\uchar{165}{124}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!may=\uchar{164}{173}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!june=\uchar{164}{187}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!july=\uchar{164} {67}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!august=\uchar{164} {75}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!september=\uchar{164} {69}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!october=\uchar{164} {81}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!november=\uchar{164} {81}\uchar{164} {64}\uchar{164}{235}] +\setuplabeltext [\s!cn] [\v!december=\uchar{164} {81}\uchar{164} {71}\uchar{164}{235}] + +\setuplabeltext [\s!cn] [\v!sunday=\uchar{172} {80}\uchar{180}{193}\uchar{164}{233}] +\setuplabeltext [\s!cn] [\v!monday=\uchar{172} {80}\uchar{180}{193}\uchar{164}{64}] +\setuplabeltext [\s!cn] [\v!tuesday=\uchar{172} {80}\uchar{180}{193}\uchar{164}{71}] +\setuplabeltext [\s!cn] [\v!wednesday=\uchar{172} {80}\uchar{180}{193}\uchar{164}{84}] +\setuplabeltext [\s!cn] [\v!thursday=\uchar{172} {80}\uchar{180}{193}\uchar{165}{124}] +\setuplabeltext [\s!cn] [\v!friday=\uchar{172} {80}\uchar{180}{193}\uchar{164}{173}] +\setuplabeltext [\s!cn] [\v!saturday=\uchar{172} {80}\uchar{180}{193}\uchar{164}{187}] + +\stopencoding \stoplanguagespecifics diff --git a/tex/context/base/lang-ger.tex b/tex/context/base/lang-ger.tex index 0281c164e..e539bdc70 100644 --- a/tex/context/base/lang-ger.tex +++ b/tex/context/base/lang-ger.tex @@ -223,7 +223,7 @@ \startencoding[pdfdoc] \startlanguagespecifics[\s!de]% hm, a % is needed - \defineactivecharacter " {\"} + \defineactivecharacter " {\"} % no {\simplifiedcompoundcharacter"} \stoplanguagespecifics \stopencoding diff --git a/tex/context/base/lang-ini.tex b/tex/context/base/lang-ini.tex index 8a15a3136..53b4f6e88 100644 --- a/tex/context/base/lang-ini.tex +++ b/tex/context/base/lang-ini.tex @@ -278,8 +278,12 @@ %D %D \showsetup{\y!setuplanguage} -\def\setuplanguage[#1]% - {\dodoubleargument\getparameters[\??la#1]} +\def\setuplanguage% + {\dodoubleargument\dosetuplanguage} + +\def\dosetuplanguage[#1][#2]% + {\getparameters[\??la#1][#2]% % we need to make sure + \doif{#1}{\currentlanguage}{\language[#1]}} % that settings apply %D The values \type {\c!leftsentence} and \type %D {\c!rightsentence} can be (and are) used to implement @@ -385,8 +389,10 @@ % {\edef\currentmainlanguage{#1}} % We expand indeed! \def\mainlanguage[#1]% - {\@EA\let\@EA\currentmainlanguage\csname\l!prefix!#1\endcsname - \language[#1]} + {\doifsomething{#1} + {\doifdefined{\l!prefix!#1} + {\@EA\let\@EA\currentmainlanguage\csname\l!prefix!#1\endcsname + \language[#1]}}} %D \macros %D {defaultlanguage,languagedefault} @@ -542,13 +548,6 @@ \def\rightsubguillemot% {\hbox{\raise.25ex\hbox{$\scriptscriptstyle>$}}} -%D We enable proper substititutions by: - -\redefinecharacter leftguillemot -\redefinecharacter rightguillemot -\redefinecharacter leftsubguillemot -\redefinecharacter rightsubguillemot - %D Just like with subsentence boundary symbols, quotes %D placement depends on the current language, therefore we show %D the defaults here. diff --git a/tex/context/base/lang-sla.tex b/tex/context/base/lang-sla.tex index 83b36e2ca..8df66aa90 100644 --- a/tex/context/base/lang-sla.tex +++ b/tex/context/base/lang-sla.tex @@ -230,7 +230,7 @@ \setuplabeltext [\s!pl] [\v!tabel=Tabela ] \setuplabeltext [\s!cz] [\v!tabel=Tabulka ] \setuplabeltext [\s!sk] [\v!tabel=Tabu\v{l}ka ] -\setuplabeltext [\s!hr] [\v!tabel=Tablica ] +\setuplabeltext [\s!hr] [\v!tabel=T\'abl\'azat ] % [\v!tabel=Tablica ] \setuplabeltext [\s!pl] [\v!figuur=Ilustracja ] \setuplabeltext [\s!cz] [\v!figuur=Obr\'azek ] diff --git a/tex/context/base/m-chart.tex b/tex/context/base/m-chart.tex index 481368416..7598da088 100644 --- a/tex/context/base/m-chart.tex +++ b/tex/context/base/m-chart.tex @@ -143,6 +143,7 @@ \c!focus=, \c!achtergrond=, % \v!kleur, \c!achtergrondkleur=white, + \c!lijndikte=\linewidth, \c!kader=\v!uit, \c!kaderkleur=] @@ -465,44 +466,43 @@ \ifx\FLOWshape\empty \global\let\FLOWshape\@@FLOSdefault \fi - \ifx\FLOWshape\v!geen \else - \ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWshapes} - {\edef\FLOWshapetag{shape_\FLOWshape}% - \@EA\setFLOWname\@EA\FLOWshapetag\@EA{\FLOWshapetag}} - {\doifnumberelse{\FLOWshape} - {\let\FLOWshapetag\FLOWshape} - {\let\FLOWshapetag\empty}}% - \ifx\FLOWshapetag\empty \else - \ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWlines} - {\chardef\FLOWstate=0 } - {\ExpandBothAfter\doifcommonelse{\FLOWcell,\FLOWfocus}{\@@FLOWfocus} - {\chardef\FLOWstate=1 } - {\chardef\FLOWstate=2 }}% - \startMPdrawing - begin_sub_chart ; - \ifcase\FLOWstate - shape_line_color := \MPcolor{\@@FLOLkleur} ; - shape_fill_color := \MPcolor{\@@FLOLkleur} ; - shape_line_width := \@@FLOLlijndikte ; - \or - shape_line_color := \MPcolor{\@@FLOFkaderkleur} ; - shape_fill_color := \MPcolor{\@@FLOFachtergrondkleur} ; - shape_line_width := \@@FLOFlijndikte ; - \or - shape_line_color := \MPcolor{\@@FLOSkaderkleur} ; - shape_fill_color := \MPcolor{\@@FLOSachtergrondkleur} ; - shape_line_width := \@@FLOSlijndikte ; - \fi - \ifx\FLOWoverlay\empty - peepshape := false ; - \else - peepshape := true ; - \fi - new_shape(\FLOWlocation,\FLOWshapetag) ; - end_sub_chart ; - \stopMPdrawing - \fi - \fi + \doifnot{\FLOWshape}{\v!geen} + {\ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWshapes} + {\edef\FLOWshapetag{shape_\FLOWshape}% + \@EA\setFLOWname\@EA\FLOWshapetag\@EA{\FLOWshapetag}} + {\doifnumberelse{\FLOWshape} + {\let\FLOWshapetag\FLOWshape} + {\let\FLOWshapetag\empty}}% + \ifx\FLOWshapetag\empty \else + \ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWlines} + {\chardef\FLOWstate=0 } + {\ExpandBothAfter\doifcommonelse{\FLOWcell,\FLOWfocus}{\@@FLOWfocus} + {\chardef\FLOWstate=1 } + {\chardef\FLOWstate=2 }}% + \startMPdrawing + begin_sub_chart ; + \ifcase\FLOWstate + shape_line_color := \MPcolor{\@@FLOLkleur} ; + shape_fill_color := \MPcolor{\@@FLOLkleur} ; + shape_line_width := \@@FLOLlijndikte ; + \or + shape_line_color := \MPcolor{\@@FLOFkaderkleur} ; + shape_fill_color := \MPcolor{\@@FLOFachtergrondkleur} ; + shape_line_width := \@@FLOFlijndikte ; + \or + shape_line_color := \MPcolor{\@@FLOSkaderkleur} ; + shape_fill_color := \MPcolor{\@@FLOSachtergrondkleur} ; + shape_line_width := \@@FLOSlijndikte ; + \fi + \ifx\FLOWoverlay\empty + peepshape := false ; + \else + peepshape := true ; + \fi + new_shape(\FLOWlocation,\FLOWshapetag) ; + end_sub_chart ; + \stopMPdrawing + \fi}% \ignorespaces}% \haalbuffer[flw-\currentFLOWnumber]% \long\def\startFLOWcell##1\stopFLOWcell% @@ -555,7 +555,7 @@ \def\MPareapath##1##2##3##4% {\def\areaMPllx{##1bp}\def\areaMPlly{##2bp}% \def\areaMPurx{##3bp}\def\areaMPury{##4bp}}% - \readfile{mpgraph.tmp}{}{}% + \readfile{\MPdatafile}{}{}% \doglobal\newcounter\FLOWcomment \long\def\startFLOWcell##1\stopFLOWcell% {\resetFLOWcell @@ -602,11 +602,9 @@ m=>{\setupframed[\c!uitlijnen=\v!midden]}, c=>{\setupframed[\c!uitlijnen=\v!midden]}]% \fi - \ifx\FLOWshape\v!geen - \setupframed[\c!offset=\v!overlay]% - \else - \setupframed[\c!offset=.5\bodyfontsize]% - \fi + \doifelse{\FLOWshape}{\v!geen} + {\setupframed[\c!offset=\v!overlay]} + {\setupframed[\c!offset=.5\bodyfontsize]}% \framed [\c!kader=\v!uit,\c!breedte=\FLOWshapewidth,\c!hoogte=\FLOWshapeheight] {\FLOWtext}}% @@ -782,17 +780,17 @@ \hfill}}} \vfill}}}% \wd8=\wd0\ht8=\ht0\dp8=\dp0 - \framed + \framed [\c!offset=\v!overlay,\c!kaderkleur=green] - {\hbox{\box4\hskip-\wd0 \raise1pt \box0\hskip-\wd2\box2\hskip-\wd6\box6\hskip-\wd8\box8}}} + {\hbox{\box4\hskip-\wd0\box0\hskip-\wd2\box2\hskip-\wd6\box6\hskip-\wd8\box8}}} {\framed [\c!offset=\v!overlay, \c!kader=\@@FLOWkader, +\c!lijndikte=\@@FLOWlijndikte, \c!kaderkleur=\@@FLOWkaderkleur, \c!achtergrond=\@@FLOWachtergrond, \c!achtergrondkleur=\@@FLOWachtergrondkleur] -% {\hbox{\box4\hskip-\wd0 \raise1pt \box0\hskip-\wd2\box2}}}% raise is a bug - {\hbox{\box4\hskip-\wd0 \box0\hskip-\wd2\box2}}}% + {\hbox{\box4\hskip-\wd0\box0\hskip-\wd2\box2}}}% %\message{[\FLOWcells]}\wait \egroup} diff --git a/tex/context/base/m-chemic.tex b/tex/context/base/m-chemic.tex index f03dc4260..cfefdf83f 100644 --- a/tex/context/base/m-chemic.tex +++ b/tex/context/base/m-chemic.tex @@ -13,7 +13,13 @@ %C details. \ifx\beginpicture\undefined + \let\normalgrid\grid + \let\normalaxis\axis \input pictex.tex \relax + \let\pictexgrid\grid + \let\pictexaxis\axis + \let\grid\normalgrid + \let\axis\normalaxis \fi \input ppchtex.tex \relax diff --git a/tex/context/base/m-pictex.tex b/tex/context/base/m-pictex.tex index 182cdc027..ac74c1d6b 100644 --- a/tex/context/base/m-pictex.tex +++ b/tex/context/base/m-pictex.tex @@ -14,23 +14,36 @@ %D This module is one big hack. This hack is not needed when %D using \ETEX, so there we simply load \PICTEX\ and quit. -\ifx\eTeXversion\undefined \else - - \ifx\undefined\fiverm - \font\fiverm=cmr5 - \fi - - \ifx\beginpicture\undefined - \ifx\newenvironment\undefined - \input pictex.tex \relax - \else - \input prepictex.tex \relax - \input pictex.tex \relax - \input postpictex.tex \relax - \fi - \fi - -\expandafter \endinput \fi +%D Not every package defines \type{\fiverm}, \PICTEX's pixel, +%D so let's take care of that omision here. The actual loading +%D of \PICTEX\ depends on the package. For \LATEX\ users we +%D take care of loading the auxiliary ones too. + +\def\loadpictex% + {\ifx\grid\undefined \else \let\normalgrid\grid \fi + \ifx\axis\undefined \else \let\normalaxis\axis \fi + \ifx\undefined\fiverm + \font\fiverm=cmr5 + \fi + \ifx\beginpicture\undefined + \ifx\newenvironment\undefined + \input pictex.tex \relax + \else + \input prepictex.tex \relax + \input pictex.tex \relax + \input postpictex.tex \relax + \fi + \fi + \ifx\normalgrid\undefined \else + \let\pictexgrid\grid + \let\grid\normalgrid + \fi + \ifx\normalaxis\undefined \else + \let\pictexaxis\axis + \let\axis\normalaxis + \fi} + +\ifx\eTeXversion\undefined \else \loadpictex \expandafter \endinput \fi %D When not in \ETEX\ and not in \CONTEXT, we load a few %D auxiliary macros. @@ -224,26 +237,9 @@ \input #1 \relax \message{[after: d=\the\count11,s=\the\count12]}}% -%D Not every package defines \type{\fiverm}, \PICTEX's pixel, -%D so let's take care of that omision now: - -\ifx\undefined\fiverm - \font\fiverm=cmr5 -\fi - -%D The actual loading of \PICTEX\ depends on the package. -%D For \LATEX\ users we take care of loading the auxiliary -%D ones too. +%D Now we can load \PICTEX: -\ifx\beginpicture\undefined - \ifx\newenvironment\undefined - \dimeninput pictex.tex \relax - \else - \dimeninput prepictex.tex \relax - \dimeninput pictex.tex \relax - \dimeninput postpictex.tex \relax - \fi -\fi +\loadpictec %D Finally we restore the old definitions of \type{\newdimen} %D and \type{\newskip}: diff --git a/tex/context/base/main-001.tex b/tex/context/base/main-001.tex new file mode 100644 index 000000000..db1a16b4a --- /dev/null +++ b/tex/context/base/main-001.tex @@ -0,0 +1,10650 @@ +%D \module +%D [ file=main-001, +%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. See mreadme.pdf for +%C details. + +%D This module is still to be split and documented. + +% nog oplossen: voetnoot setten ivm later veranderde +% witruimte; probleem: als lijn graphic + +% The %I etc thing will be replaced by documentation. Some +% years ago they served as helpinfo blocks for our editor. + +\writestatus{loading}{Context Core Macros (1)} + +\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 \stelspatieringin \to \everybodyfont % nieuw +\appendtoks \setdisplayskips \to \everybodyfont % nieuw + +% \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 + + +\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 module -- geladen + 6: geen macro's in module -- gevonden + 7: macro's uit module -- 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 -- + 24: Plaatsblokken + 25: Verwijzingen + 26: Registers + 27: Versie +\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 module -- loaded + 6: no macros found in module -- + 7: macros of module -- 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 -- + 24: Floatblocks + 25: References + 26: Registers + 27: Version +\stopmessages + +\startmessages german library: systems + title: system + 1: Laden der Hilfsdatei verschoben (tippenmodus) + 2: -- geladen + 3: Versuche LaTeX + 4: Befehl -- ist bereits definiert + 5: Makros aus Modul -- geladen + 6: Keine Makros in Modul -- gefunden + 7: Makros aus Modul -- 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: Benoetige gueltige Hilfsdateie + 23: -- angeordnet auf -- + 24: Fliessbloecke + 25: Referenzen + 26: Register + 27: Version +\stopmessages + +\startmessages czech library: systems + title: system + 1: nacteni pomocneho souboru odlozeno (typemode) + 2: -- nacteno + 3: zkuste LaTeX + 4: prikaz -- je jiz definovan + 5: makra z -- nactena + 6: zadna makra v -- nenalezena + 7: makra z -- jsou jiz nactena + 8: nova verze pomocneho souboru, je treba druheho behu + 9: -- nenalezeno/nezpracovano + 10: nepouzivejte em v -- + 11: vytvarim jednoduchy pomocny soubor + 12: pomosny soubor neni setriden, pouzijte texutil + 13: znacka -- definovana -- + 14: vynucena nova stranka v seznamu na -- + 15: uklada se buffer -- + 16: sazi se buffer -- + 17: sazi se doslovny (verbatim) buffer -- + 18: synonymum -- -- neexistuje + 19: vyznam (synonyma) -- nacten + 20: vyznam (trideni) -- nacten + 21: pomocny soubor necten + 22: pouzijte platny pomocny soubor + 23: -- upraveno na -- + 24: plovouci bloky + 25: reference + 26: registry + 27: verze +\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 czech library: floatblocks + title: plovouciobjekty + 1: -- precislovano / -- => -- + 2: -- ulozeno + 3: -- presunuto + 4: -- umisteno + 5: poradi prizpusobeno + 6: pocet hornich plovoucich objektu je omezen na -- + 7: pocet spodnich plovoucich objektu je omezen na -- + 8: radku je mene nez -- + 9: poradi naruseno + 10: -- omezeno + 11: nedan zadny blok + 12: nedefinovano +\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 + 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 + 10: -- and -- don't add up to 1.0 + 11: spacing -- not permitted in gridmode +\stopmessages + +\startmessages german library: layouts + title: Layout + 1: Texthoehe angepasst mit -- auf Seite -- + 2: -- mal verschobener Text plaziert + 3: -- mal Text verschoben + 4: marginalbloecke aktiv + 5: marginalbloecke inaktiv + 6: Unterseitenfolge -- verarbeitet (Groesse --) + 7: berechne Platz des Logo + 8: berechne Hintergrund + 10: -- und -- ergeben zusammen nicht 1.0 + 11: Zwischenraum -- nicht im Grittermoduserlau +\stopmessages + +\startmessages czech library: layouts + title: layout + 1: vyska textu prizpusobena s -- na strane -- + 2: -- krat odlozeny text umisten + 3: -- krat text odlozen + 4: okrajove bloky aktivni + 5: okrajove bloky neaktivni + 6: sada stran -- zpracovana (velikost --) + 7: pocita se misto pro logo + 8: pocita se pozadi + 10: -- a -- nedava dohromady 1.0 + 11: svisla mezera -- neni povolena v pevnem radkovem rejstriku +\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 + +\def\convertexpanded#1#2#3% watch the double \v!ja expansion ! + {\ExpandFirstAfter\processaction + [\getvalue{#1\c!expansie}] + [ \v!ja=>{{\honorunexpanded\xdef\@@globalexpanded{#2}% + \xdef\@@globalexpanded{\@@globalexpanded}}% + \dodoglobal\convertcommand\@@globalexpanded\to#3}, + \v!commando=>{\dodoglobal\convertcommand #2\to#3}, + \s!default=>{\dodoglobal\convertargument#2\to#3}, + \s!unknown=>{\dodoglobal\convertargument#2\to#3}]} + +% 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\removelastskip% a redefinition of plain + {\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi\fi} + +\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 + {\ifinpagebody \else + \global\indentationfalse + \gdef\checkindentation% + {\donoindentation + \gdef\checkindentation{\global\indentationtrue}}% + \fi} + +\def\nonoindentation% bv bij floats + {\ifinpagebody \else + \global\indentationtrue + \gdef\checkindentation{\global\indentationtrue}% + \fi} + +\def\indentation% + {\ifvmode + \ifdim\parindent=\!!zeropoint + \else + \hskip\parindent + \fi + \fi} + +% vergeten + +\def\forgeteverypar% + {\everypar{}} + +\def\forgeteverypar% + {\everypar{\the\neverypar}} + +\def\forgetparindent% + {\forgeteverypar + \indentfirstparagraphtrue % recently added + \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 + \notragged + \forgetparskip + \forgetparindent + \forgetbothskips + \forgetspacing % i.v.m. funny spacing in pagebody + \everypar{}} % indeed! + +\def\localvbox#1#% + {\vbox#1\bgroup + \forgetparskip + \setlocalhsize + \hsize=\localhsize + \forgetparindent + \forgetbothskips + \forgeteverypar + \let\next=} + +% ach ja + +\unexpanded\def\dostartattributes#1#2#3% + {\begingroup % geen \bgroup, anders in mathmode lege \hbox + \doifdefinedelse{#1#2} + {\def\fontattribute{\getvalue{#1#2}}} + {\let\fontattribute=\empty}% + \doifdefinedelse{#1#3} + {\def\colorattribute{\getvalue{#1#3}}} + {\let\colorattribute=\empty}% + \startcolor[\colorattribute]% + \@EA\doconvertfont\@EA{\fontattribute}} + +\unexpanded\def\dostopattributes% + {\stopcolor + \endgroup} + +\unexpanded\def\doattributes#1#2#3#4% + {\dostartattributes{#1}{#2}{#3}{#4}\dostopattributes} + +% kan vaker worden toegepast: + +\newskip\leftskipadaption + +\def\doadaptleftskip#1% + {\leftskipadaption\!!zeropoint + \processaction[#1] % \ExpandFirstAfter + [\v!standaard=>\leftskipadaption= + \ifdim\voorwit=\!!zeropoint\@@sllinks\else\voorwit\fi, + \v!ja=>\leftskipadaption= + \ifdim\voorwit=\!!zeropoint\@@sllinks\else\voorwit\fi, + \v!nee=>, + \s!unknown=>\leftskipadaption=#1]% + \advance\leftskip by \leftskipadaption} + +\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 -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,\pseudostrut +%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.5} + +\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 + +% plain definition: +% +% \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} +% +% could be: +% +% \def\strut{\relax\ifmmode\copy\else\unhcopy\fi\strutbox} + +\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\ifhmode\ifdim\ht\strutbox=\!!zeropoint\else + \unskip\unskip\unskip + \normalpenalty\!!tenthousand + \normalhskip\!!zeropoint + \strut + \fi\fi} + +\def\setnostrut% + {\setbox\strutbox=\normalhbox{\normalhbox{}}% + \let\strut=\empty + \let\endstrut=\empty + \let\begstrut=\empty} + +% unsave: +% +% \def\pseudostrut% +% {\bgroup +% \setnostrut +% \normalstrut +% \egroup} +% +% try: +% +% \startchemie +% \chemie[ONE,Z0,SB15,MOV1,SB15,Z0][C,C] +% \stopchemie +% +% so: + +\def\pseudostrut% + {\noindent} % better: \dontleavehmode + +\let\pseudobegstrut\pseudostrut + +\def\pseudoendstrut% removes all kind of signals + {\ifhmode\unskip\unskip\unskip\unskip\fi} + +\def\resetteststrut% + {\let\strutwidth=\!!zeropoint + \setstrut} + +\def\setfontparameters% + {\the\everybodyfont} + +%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% + {\ifdim\baselineskip>\!!zeropoint + \edef\oninterlineskip% + {\baselineskip=\the\baselineskip + \lineskip=\the\lineskip + \lineskiplimit=\the\lineskiplimit + \noexpand\let\noexpand\offinterlineskip=\noexpand\normaloffinterlineskip}% + \else + \let\oninterlineskip=\setnormalbaselines + \fi + \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% + {\ifdim\tussenwit>\!!zeropoint + #1\tussenwit\!!plus#2\tussenwit\!!minus#2\tussenwit\relax + \else + #1\lineheight\!!plus#2\lineheight\!!minus#2\lineheight\relax + \fi} + +\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. + +\let\mindermeldingen\dontcomplain + +% 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}} + +% NOG EENS NAGAAN WANNEER NU GLOBAL EN WANNEER NIET + +\def\calculatevsizes% global needed in \resetlayoutregel + {\redoglobal\teksthoogte=\zethoogte + \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 + \doifsomething{\@@lytekstbreedte} % may be set to \tekstbreedte + {\tekstbreedte=\@@lytekstbreedte} % which is tricky but ok + \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. + +% 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. + +\ifx\stelpapierformaatin\undefined + \let\stelpapierformaatin\relax +\fi + +\def\dodefinieerpapierformaat[#1][#2]% + {\ifsecondargument + \getparameters + [\??pp#1] % geen \c!schaal, scheelt hash ruimte + [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte, + \c!offset=\@@ppoffset,#2]% + \else + \getparameters[\??pp][#1]% + \stelpapierformaatin + \fi} + +\def\definieerpapierformaat% + {\dodoubleempty\dodefinieerpapierformaat} + +\definieerpapierformaat + [\c!breedte=210mm,\c!hoogte=297mm,\c!offset=0pt] + +\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}]} + +\ifx\calculatepaperoffsets\undefined + + \def\calculatepaperoffsets#1% + {\scratchdimen=\getvalue{\??pp#1\c!offset}% + \global\advance\papierbreedte by -2\scratchdimen + \global\advance\papierhoogte by -2\scratchdimen} + +\fi + +\def\dostelpapierformaatin[#1][#2]% + {\doifinstringelse{=}{#1} + {\getparameters[\??pp][#1]} + {\doifinstringelse{=}{#2} + {\getparameters[\??pp#1][#2]} + {\dodostelpapierformaatin[#1][#2]}}} + +\def\dodostelpapierformaatin[#1][#2]% + {\ifsecondargument + \dostelpapierrichtingin{#1}\paperlandscape\paperrotation\paperreverse\papermirror + \dostelpapierrichtingin{#2}\printlandscape\printrotation\printreverse\printmirror + \def\docommando##1% + {\doifsomething{##1}{\doifdefined{\??pp##1\c!breedte} + {\global\papierbreedte=\getvalue{\??pp##1\c!breedte}% + \global\papierhoogte=\getvalue{\??pp##1\c!hoogte}% + \calculatepaperoffsets{##1}% + \xdef\papierformaat{##1}}}}% + \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}% + \xdef\printpapierformaat{##1}}}}% + \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 + \else\iffirstargument + \stelpapierformaatin[#1][#2]% + \else\ifx\papierformaat\undefined\else + \stelpapierformaatin[\papierformaat][\printpapierformaat]% + \fi\fi\fi} + +\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 -\rugwit + \doifelsenothing{\@@lysnijwit} + {\global\advance\zetbreedte by -\rugwit} + {\global\advance\zetbreedte by -\@@lysnijwit}} + {\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 -\kopwit + \doifelsenothing{\@@lybodemwit} + {\global\advance\zethoogte by -\kopwit} + {\global\advance\zethoogte by -\@@lybodemwit}} + {\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\lineheight + \global\advance\zethoogte by \hoofdhoogte + \global\advance\zethoogte by \voethoogte}% + \rugoffset=\@@lyrugoffset + \kopoffset=\@@lykopoffset + \calculatehsizes + \calculatevsizes + \global\newlogostrue + \global\newbackgroundtrue + \setMPpagedata} + +\ifx\setMPpagedata\undefined \let\setMPpagedata\relax \fi + +\def\checklayout% + {\doifsomething{\@@lyregels} + {\ifdim\zethoogte=\@@lyregels\lineheight \else \resetlayout \fi}} + +\appendtoks \checklayout \to \everystarttext + +\newif\ifdoublesidedprint + +\def\presetcenterpagebox% in \stellayoutin !!!!!!!!!!!!!!!! + {\doublesidedprintfalse + \ExpandFirstAfter\processallactionsinset + [\@@lyplaats] + [ \v!midden=>{\stelpapierformaatin[\c!links=\hss,\c!rechts=\hss,\c!boven=\vss,\c!onder=\vss]}, + \v!links=>{\stelpapierformaatin[\c!links=,\c!rechts=\hss]}, + \v!rechts=>{\stelpapierformaatin[\c!links=\hss,\c!rechts=]}, + \v!onder=>{\stelpapierformaatin[\c!boven=\vss,\c!onder=]}, + \v!boven=>{\stelpapierformaatin[\c!boven=,\c!onder=\vss]},% + \v!dubbelzijdig=>\doublesidedprinttrue, + \v!enkelzijdig=>\doublesidedprintfalse]} + +\def\complexstellayoutin[#1]% + {\ConvertToConstant\doifnot{#1}{\v!reset} + {\getparameters[\??ly][#1]% + \checkforems[#1]}% + \resetlayout + \presetcenterpagebox} + +\definecomplexorsimpleempty\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}% + \letbeundefined{\??za\realfolio}} + {}} + +\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\c!letter\c!kleur{}% + \begstrut\ignorespaces} + +\def\dostopmargeblok% + {\unskip\endstrut + \dostopattributes + \egroup + \egroup} + +\def\dontstartmargeblok% + {\@@mbvoor + \bgroup + \dostartattributes\??mb\c!letter\c!kleur{}} + +\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 + +\newif\ifinuitstellen + +\newevery\everytopofpage\relax + +\appendtoks\the\everytopofpage\to\everystarttext +\appendtoks\global\everytopofpage{}\to\everystoptext + +\def\douitstellen% + {\the\everytopofpage + \ifinuitstellen\else\ifcase\nofpostponedblocks\else % The \nof-test is + \global\pagetotal\!!zeropoint % recently added + \global\inuitstellentrue % definitely needed + \dorecurse{\nofpostponedblocks} % else we can loose + {\haalbuffer[buf-\recurselevel]} % or disorder floats + \doflushfloats % new but potential dangerous % and that is something + \doglobal\newcounter\nofpostponedblocks % we don't want, do we? + \global\inuitstellenfalse % Anyhow, 'uitstellen' + \fi\fi} % is still suboptimal. + +\setvalue{\e!start\e!uitstellen}% + {\doglobal\increment\nofpostponedblocks + \showmessage{\m!layouts}{3}{\nofpostponedblocks}% + \dostartbuffer[buf-\nofpostponedblocks] + [\e!start\e!uitstellen][\e!stop\e!uitstellen]} + +% \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% overlapt behoorlijk met realpage macro + {\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!eerstesubpagina}\firstsubpage + \setglobalsystemreference\rt!page{\v!laatstesubpagina}\lastsubpage + \bgroup + \ifnum\realpageno=\firstsubpage\relax + \global\let\prevsubpage=\firstsubpage +\setglobalsystemreference\rt!page{\v!sub\v!achteruit}\lastsubpage + \else + \xdef\prevsubpage{\realfolio}% + \doglobal\decrement\prevsubpage +\setglobalsystemreference\rt!page{\v!sub\v!achteruit}\prevsubpage + \fi + \setglobalsystemreference\rt!page{\v!vorigesubpagina}\prevsubpage + \ifnum\realpageno=\lastsubpage\relax + \global\let\nextsubpage=\lastsubpage +\setglobalsystemreference\rt!page{\v!sub\v!vooruit}\firstsubpage + \else + \xdef\nextsubpage{\realfolio}% + \doglobal\increment\nextsubpage +\setglobalsystemreference\rt!page{\v!sub\v!vooruit}\nextsubpage + \fi + \setglobalsystemreference\rt!page{\v!volgendesubpagina}\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!eerstepagina}\firstpage + \setglobalsystemreference\rt!page{\v!laatstepagina}\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!vorigepagina}\prevpage + \egroup + \bgroup + \ifnum\realpageno<\lastpage\relax + \advance\realpageno by 1 + \xdef\nextpage{\realfolio}% + \setglobalsystemreference\rt!page{\v!pagina}\nextpage + \setglobalsystemreference\rt!page{\v!vooruit}\nextpage + \bgroup + \xdef\nextnextpage{\realfolio}% + \ifodd\realpageno + \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\nextnextpage + \else + \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\nextnextpage + \fi + \advance\realpageno by 1 + \xdef\nextnextpage{\realfolio}% + \ifnum\realpageno>\lastpage\relax + %\ifodd\realpageno + % \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\lastpage + %\else + % \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\lastpage + %\fi + \else + \ifodd\realpageno + \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\nextnextpage + \else + \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\nextnextpage + \fi + \fi + \egroup + \else + \global\let\nextpage=\lastpage + \setglobalsystemreference\rt!page{\v!pagina}\firstpage + \setglobalsystemreference\rt!page{\v!vooruit}\firstpage + \setglobalsystemreference\rt!page{\v!volgendeonevenpagina}\lastpage + \setglobalsystemreference\rt!page{\v!volgendeevenpagina}\lastpage + \fi + \setglobalsystemreference\rt!page{\v!volgendepagina}\realfolio + \egroup} + +\def\checkrealpage% + {\global\realpageno=0 + \gotonextrealpage + \global\let\checkrealpage=\relax} + +\def\savenofpages% + {\advance\realpageno by -1 + \savecurrentvalue\lastpage{\realfolio}}% + +\def\totaalaantalpaginas% + {\lastpage} + +\def\initializepaper% + {\iflocation + \dosetuppaper + {\papierformaat} + {\the\papierbreedte} + {\the\papierhoogte}% + \else + \dosetuppaper + {\printpapierformaat} + {\the\printpapierbreedte} + {\the\printpapierhoogte}% + \fi} + +\def\myshipout#1% + {\voorpagina + \dontshowcomposition + \ifarrangingpages + \actualarrange + {\thisisrealpage{\realfolio}#1}% + \else + \actualshipout + {\thisisrealpage{\realfolio}#1}% + \fi + \gotonextrealpage + \napagina} + +\newbox\postponedcontent + +\def\flushatshipout% + {\dowithnextbox + {\global\setbox\postponedcontent=\hbox to \!!zeropoint + {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt) + \box\postponedcontent\box\nextbox}% + \global\ht\postponedcontent=\!!zeropoint + \global\dp\postponedcontent=\!!zeropoint + \global\wd\postponedcontent=\!!zeropoint}% + \hbox} + +% \starttypen +% \def\pagestoshipout{1,3,5} +% \stoptypen + +\newcounter\shippedoutpages +\let\pagestoshipout\empty % {1,3,6} +\chardef\whichpagetoshipout=0 % 0=all 1=odd 2=even + +\def\actualshipout#1% + {\doglobal\increment\shippedoutpages + \ifx\pagestoshipout\empty + \ifcase\whichpagetoshipout\relax + \donetrue + \or % 1 + \ifodd\shippedoutpages\relax\donetrue\else\donefalse\fi + \or % 2 + \ifodd\shippedoutpages\relax\donefalse\else\donetrue\fi + \else + \donetrue + \fi + \else + \ExpandBothAfter\doifinsetelse{\shippedoutpages}{\pagestoshipout} + \donetrue\donefalse + \fi + \ifdone + \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 + \ifnum\realpageno=\lastpage\relax + \the\everylastshipout + \global\everylastshipout\emptytoks + \fi}% + \smashbox\scratchbox + \box\scratchbox + \box\postponedcontent % evt ver naar links ! + \box0}}% + \else + \message + {[\ifarrangingpages arranged \fi page + \ifarrangingpages\the\arrangeno\else\the\realpageno\fi\normalspace + not flushed]}% + \setbox0=\hbox{#1}% + \deadcycles=0 + \fi} + +\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 + \nofbotfloats=0 + \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% \box \unvbox + {\bgroup % niet breedte zetten, kan fractie zijn! + \forgetall + \boxmaxdepth=\maxdepth + \setbox0=\vbox \ifbottomnotes to \teksthoogte \fi + {\edef\currentpagedepth{\the\dp#2}% still to be derived from #1 + \dotopinsertions + #1#2% \fuzzysnappedbox{#1}{#2}% goes wrong + \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}% +\ifbottomnotes + \ifgridsnapping + \getnoflines\teksthoogte + \advance\noflines by -1 + \scratchdimen=\noflines\lineheight + \advance\scratchdimen by \topskip + \else + \scratchdimen=\ht0 + \fi +\else + \scratchdimen=\!!zeropoint +\fi + \setbox2=\hbox + {\ifvoid\savedfootins \else + \setbox\footins=\box\savedfootins + \fi + \lower\scratchdimen\vbox{\placefootnotes}}% + \smashbox2 +\ifbottomnotes + \ht0=\!!zeropoint +\fi + \vbox to \teksthoogte + {\box0\box2\ifbottomnotes\else\vfill\fi}% + \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}% + {\vskip\bovenhoogte} % \vbox to \bovenhoogte{\vss}} + +\setvalue{\s!dummy\c!commando\v!onder}% + {\vskip\onderhoogte} % \vbox to \onderhoogte{\vss}} + +\def\plaatslinkerrandblok {\dodummypageskip\v!links} +\def\plaatsrechterrandblok {\dodummypageskip\v!rechts} + +\def\plaatsboventekstblok {\dodummypageskip\v!boven} +\def\plaatsondertekstblok {\dodummypageskip\v!onder} + +% kan tzt nog eens als: +% +% \newtoks\everyboventekstblok +% +%\def\plaatsboventekstblok% +% {\vbox to \bovenhoogte +% {\the\everyboventekstblok} +% +% \def\doplaatsboventekstblok#1% +% {\vbox to \bovenhoogte +% {\@@tkboventekstvoor#1\@@tkboventekstna\kern\!!zeropoint}% +% \vskip-\bovenhoogte} +% +% \appendtoks\interactiemenus[\v!boven]\to\everyboventekstblok +% +% kan vaker, is namelijk sneller als commalist + +\newtoks\afterpage \newtoks\aftereverypage +\newtoks\beforepage \newtoks\beforeeverypage + +\newif\ifshowgrid \showgridfalse + +\def\toongrid% + {\tracegridsnappingtrue + \showgridtrue} + +\def\doplaatstekstblok#1#2% + {\bgroup + \setbox0=\hbox to \zetbreedte + {\hss % new + \vbox to \teksthoogte % can be < \makeupwidth + {\offinterlineskip % so don't change this + \tekstbreedte=\zetbreedte % + \doifsomething{\@@lytekstbreedte} % + {\tekstbreedte=\@@lytekstbreedte}% + \hsize=\tekstbreedte % local variant of \sethsize + \boxmaxdepth\maxdepth % + \noindent % the contents can be < \hsize + \dopagecontents#1#2}% + \hss}% new + \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\centerpagebox#1% + {\printpapierbreedte=\papierschaal\printpapierbreedte + \printpapierhoogte =\papierschaal\printpapierhoogte + \setbox#1=\vbox to \printpapierhoogte + {\@@ppboven + \hbox to \printpapierbreedte + {\ifdoublesidedprint + \doifbothsides + \@@pplinks\box#1\@@pprechts + \orsideone + \@@pplinks\box#1\@@pprechts + \orsidetwo + \@@pprechts\box#1\@@pplinks + \od + \else + \@@pplinks\box#1\@@pprechts + \fi}% + \par + \@@pponder}} + +\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\hskip\@@lydx}\unskip}% + \vskip\@@lydy} + \unskip}} + +\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 + {\beginrestorecatcodes + \forgetall % igv problemen, check: \boxmaxdepth\maxdimen + \boxmaxdepth\maxdimen % new + \mindermeldingen + \setbox0=\vbox + {\offinterlineskip + \ifpagebodyornaments + \getbackgroundbox + \getlogobox + \bgroup % else footnotes get inconsistent font/baseline + \doconvertfont{\@@lyletter}{}% + \offinterlineskip + \gettextboxes + \egroup + \fi + \getmainbox#1#2}% including footnotes + \buildpagebox0 + \ifpagebodyornaments + \addpagebackground0 + \fi + \ifarrangingpages \else + \addpagecutmarks0 + \replicatepagebox0 + \scalepagebox0 + \mirrorpaperbox0 + \rotatepaperbox0 + \addpagecolormarks0 + \centerpagebox0 +\addprintbackground0 + \mirrorprintbox0 + \rotateprintbox0 + \offsetprintbox0 + \negateprintbox0 + \fi + \box0 + \endrestorecatcodes}} + +\def\addprintbackground#1% + {\ifsomebackgroundfound\v!papier + \setbox#1=\vbox\localframed + [\??ma\v!papier]% + [\c!offset=\v!overlay,\c!strut=\v!nee, + \c!breedte=\printpapierbreedte,\c!hoogte=\printpapierhoogte]% + {\noindent\box#1}% + \fi} + +\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]% + {\framed + [\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 + {\framed + [\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 + +\appendtoks \restoreglobalbodyfont \to \everypagebody +\appendtoks \restorecolumnsettings \to \everypagebody + +\def\dopagebody#1#2% + {\getallmarks + \the\everypagebody + \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]}} + +\newtoks\pageboundsettings + +\prependtoks \initializepaper \to \pageboundsettings + +\def\dofinaloutput#1#2% + {\beforefinaloutput + \the\everybeforeshipout + \ifspecialbasedsettings + \myshipout{\hbox{\hbox to \!!zeropoint{\the\pageboundsettings}\hbox{\dopagebody#1#2\setpagecounters}}}% + \else + \the\pageboundsettings + \myshipout{\hbox{\dopagebody#1#2\setpagecounters}}% + \fi + \the\everyaftershipout + \afterfinaloutput + \popcolor} % ... and here ... + +\def\donofinaloutput#1#2% + {\beforefinaloutput + \the\everybeforeshipout + \setpagecounters + \message{[-\the\realpageno]}% + \setbox0=\hbox + {\the\everyshipout + \dopagebody#1#2}% + \deadcycles=0 + \gotonextrealpage + \the\everyaftershipout + \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\complexstelspatieringin[#1]% + {\processaction + [#1] + [\v!opelkaar=>\newfrenchspacing, + \v!ruim=>\nonfrenchspacing]% + \updateraggedskips} + +\def\simplestelspatieringin% + {\updateraggedskips} + +\definecomplexorsimple\stelspatieringin + +\bgroup +\catcode`\~=\@@active % eigenlijk is ~ al actief +\gdef\fixedspaces% % in Plain \TeX, maar we weten + {\catcode`\~=\@@active % nooit wat er inmiddels is + \def~{\fixedspace}} % gebeurd, vandaar. +\egroup + +\def\space { } +\def\fixedspace {\hskip.5em\relax} +\def\nospace {\unskip\ignorespaces} + +\let\spatie \space +\let\hardespatie\fixedspace +\let\geenspatie \nospace + +\def\opelkaar% + {\nointerlineskip} + +\def\omlaag[#1]% nog eens mooier, relateren aan blanko + {\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]}} + +\newif\ifwitruimteflexibel \witruimteflexibeltrue + +\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}{\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} + +\def\savecurrentwitruimte% + {\edef\restorecurrentwitruimte% + {\tussenwit=\the\tussenwit + \parskip=\the\parskip + \noexpand\def\noexpand\currentwitruimte{\currentwitruimte}% + \ifwitruimteflexibel + \noexpand\witruimteflexibeltrue + \else + \noexpand\witruimteflexibelfalse + \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 +\baselinecorrection %% zie in \plaatsregister[n=1] + \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} + +\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 % redundant \setstrut + \updateraggedskips} % yes indeed + {\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 + \updateraggedskips % funny one here + \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 +\newif\ifblankoforceer + +\newskip\blankoskip \blankoskip=\bigskipamount +\newskip\blankoskipamount + +\def\skipfactor {.75} +\def\skipgluefactor {.25} + +\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 + +% old +% +% \def\doblanko#1% +% {\processallactionsinset +% [#1] +% [ \v!groot=>\dosingleblanko\v!groot, % happens often +% \v!buiten=>\ifvmode\ifinner\blankobuitentrue\fi\fi, +% \v!reset=>\global\blankoresettrue, +% \v!flexibel=>\global\lokaalblankoflexibeltrue, +% \v!vast=>\global\lokaalblankovasttrue, +% \v!back=>\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=>\global\blankoforceertrue, +% \v!regel=>\global\advance\blankoskip by \lineheight, +% \v!halveregel=>\global\fuzzyvskiptrue\global\advance\blankoskip by .5\lineheight, +% \s!unknown=>{\herhaalmetcommando[#1]\dosingleblanko}]} +% +% new, see below + +\def\doblanko#1% + {\processallactionsinset + [#1] + [ \v!groot=>\dosingleblanko\v!groot, % happens often + \v!buiten=>\ifvmode\ifinner\blankobuitentrue\fi\fi, + \v!reset=>\global\blankoresettrue, + \v!flexibel=>\global\lokaalblankoflexibeltrue, + \v!vast=>\global\lokaalblankovasttrue, + \v!back=>\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=>\global\blankoforceertrue, + \v!regel=>\global\advance\blankoskip by \lineheight, + \v!halveregel=>\global\fuzzyvskiptrue\global\advance\blankoskip by .5\lineheight, + \s!unknown=>\doindirectblanko{#1}]} + +\def\oldprevdepth{\prevdepth}% +\def\newprevdepth{-1001pt} + +\def\mindimen{0.00002pt} % beter 1sp + +\newif\iflokaalblankovast +\newif\iflokaalblankoflexibel + +\def\docomplexdoblanko[#1]% pas op \relax's zijn nodig ivm volgende \if + {\global\blankoresetfalse + \global\blankoblokkeerfalse + \global\blankogeenwitfalse + \global\lokaalblankoflexibelfalse + \global\lokaalblankovastfalse + \global\blankoskip=\!!zeropoint + \global\blankoforceerfalse + \blankobuitenfalse + \processcommalist[#1]\doblanko +\ifdim\blankoskip=\!!zeropoint\relax + \iflokaalblankoflexibel \dosingleblanko\currentblanko \fi + \iflokaalblankovast \dosingleblanko\currentblanko \fi +\fi + \ifblankobuiten + \else + \par + \ifvmode + \ifblankoforceer\ifdim\prevdepth>\!!zeropoint\else + \vbox{\strut}\kern-\lineheight + \fi\fi + \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 +\ifblankoflexibel \else + \blankoskip=1\blankoskip +\fi +\iflokaalblankovast + \blankoskip=1\blankoskip +\fi +\iflokaalblankoflexibel + \blankoskip=1\blankoskip + \!!plus\skipgluefactor\blankoskip + \!!minus\skipgluefactor\blankoskip +\fi + \ifdim\prevdepth=\newprevdepth + \else + \iffuzzyvskip + \removelastfuzzyvskip + \fuzzyvskip\blankoskip\relax + \else + \removelastskip + \vskip\blankoskip\relax + \fi + \fi + \else + \iffuzzyvskip + \removelastfuzzyvskip + \fuzzyvskip\blankoskip\relax + \fi + \fi + \fi + \fi + \fi + \global\fuzzyvskipfalse + \presetindentation} + +\def\complexdodoblanko[#1]% + {\flushfootnotes + \ifopelkaar + \ifinpagebody + \expanded{\docomplexdoblanko[#1]}% \expanded=nieuw + \else + \par + \fi + \else + \expanded{\docomplexdoblanko[#1]}% \expanded = nieuw + \fi} + +% old +% +% \def\doindirectblanko#1% +% {\ifundefined{\??bo#1}% <-etex \expandafter\ifx\csname\??bo#1\endcsname\relax +% \expanded{\complexdodoblanko[#1]}% +% \else +% \expandafter\complexdoblanko\expandafter[\csname\??bo#1\endcsname]% +% \fi} +% +% \def\complexdoblanko[#1]% enables [force,8\bodyfontsize] +% {\doifinstringelse{,}{#1} +% {\expanded{\complexdodoblanko[#1]}} +% {\doifnumberelse{#1} +% {\expanded{\complexdodoblanko[#1]}} +% {\doindirectblanko{#1}}}} +% +% new, more robust +% +% \def\doindirectblanko#1% +% {\edef\ascii{#1}\convertcommand\ascii\to\ascii +% \ifundefined{\??bo\ascii}% <-etex \expandafter\ifx\csname\??bo#1\endcsname\rel +% \herhaalmetcommando[#1]\dosingleblanko +% \else +% \expandafter\complexdoblanko\expandafter[\csname\??bo\ascii\endcsname]% +% \fi} +% +% even more robust + +\def\doindirectblanko#1% + {\edef\ascii{#1}\convertcommand\ascii\to\ascii + \ifundefined{\??bo\ascii}% <-etex \expandafter\ifx\csname\??bo#1\endcsname + \expanded{\herhaalmetcommando[#1]\noexpand\dosingleblanko}% + \else + \expandafter\complexdoblanko\expandafter[\csname\??bo\ascii\endcsname]% + \fi} + +\def\complexdoblanko[#1]% enables [force,8\bodyfontsize] + {\expanded{\complexdodoblanko[#1]}} + +\def\currentblanko% + {\v!groot} + +%D For a long time we had: +%D +%D \startypen +%D \def\simpledoblanko% +%D {\doifelse{\currentwitruimte}{\v!geen} +%D {\blanko[\currentblanko]} +%D {\blanko[\currentwitruimte]}} +%D \stoptypen +%D +%D But Berend de Boer wanted more control, so now we have: + +\def\simpledoblanko% + {\doifelse{\currentwitruimte}{\v!geen} + {\blanko[\currentblanko]} + {\blanko[\s!default]}} + +%D Another useful definition would be: +%D +%D \starttypen +%D \definieerblanko +%D [\s!default] +%D [\v!groot] +%D \stoptypen + +\def\blanko% % the \relax is definitely needed due to the many \if's + {\relax\complexorsimple\doblanko} + +%\def\dostelblankoin#1% +% {\bgroup % rommelig +% \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\dostelblankoin#1% + {\bigskipamount=#1\relax + \ifblankoflexibel \else + \bigskipamount=1\bigskipamount + \fi + \smallskipamount=\bigskipamount + \medskipamount=\bigskipamount + \divide\medskipamount by 2 + \divide\smallskipamount by 4 }% + +\def\complexstelblankoin[#1]% + {\ifgridsnapping + \blankoflexibelfalse + \else + \ExpandFirstAfter\processallactionsinset + [#1] + [ \v!flexibel=>\blankoflexibeltrue, + \v!vast=>\blankoflexibelfalse]% + \fi + \ExpandFirstAfter\processallactionsinset + [#1] + [ \v!flexibel=>\dostelblankoin{\deblankoskip}, + \v!vast=>\dostelblankoin{\deblankoskip}, + \v!regel=>\edef\deblankoskip{\regelafstand}% + \dostelblankoin{\deblankoskip}% + \let\deblanko=\v!groot, + \v!halveregel=>\scratchskip=.5\regelafstand + \edef\deblankoskip{\the\scratchskip}% + \dostelblankoin{\deblankoskip}% + \let\deblanko=\v!middel, + \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} + +\definecomplexorsimpleempty\stelblankoin + +\def\dodefinieerblanko[#1][#2]% + {\def\docommando##1{\setvalue{\??bo##1}{#2}}% + \processcommalist[#1]\docommando} + +\def\definieerblanko% + {\dodoubleargument\dodefinieerblanko} + +\def\savecurrentblanko% + {\edef\restorecurrentblanko% + {\bigskipamount=\the\bigskipamount + \medskipamount=\the\medskipamount + \smallskipamount=\the\smallskipamount + \noexpand\def\noexpand\currentblanko{\currentblanko}% + \ifblankoflexibel + \noexpand\blankoflexibeltrue + \else + \noexpand\blankoflexibelfalse + \fi}} + +%D Now. + +\definieerblanko + [\s!default] + [\v!wit] + +%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% + {\doifoutervmode + {\ifindentfirstparagraph\else\noindentation\fi}} + +\def\dostelinspringenin[#1]% + {\processallactionsinset + [#1] + [ \v!eerste=>\indentfirstparagraphtrue, + \v!volgende=>\indentfirstparagraphfalse, + \s!default=>\dodostelinspringenin, + \s!unknown=>\edef\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=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!status=\v!start, + \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 +% \doifnot{\@@psstatus}{\v!overlay} +% {\skip2=##5\relax +% \advance\skip2 by ##3\relax +% \ifdim##3<-##7\relax\global##7=-##3\relax\fi +% \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 % kan beter. +% {\vskip\ypositie +% \hbox to \!!zeropoint +% {\hskip\xpositie +% \box0 +% \hskip-\xpositie}% +% \vskip-\ypositie}% +% \ignorespaces} + +\def\berekenpositioneren#1#2#3#4#5#6#7#8#9% + {\setdimensionwithunit\scratchskip{#1}\@@pseenheid % \scratchskip=#1\@@pseenheid + \scratchskip=#8\scratchskip + \scratchskip=#9\scratchskip + \advance\scratchskip by #4\relax + \doif{#2}{\v!relatief}% + {\advance\scratchskip by #3% + \let#4\!!zeropoint}% + #3=\scratchskip\relax + \doifnot{\@@psstatus}{\v!overlay} + {\scratchskip=#5\relax + \advance\scratchskip by #3\relax + \ifdim#3<-#7\relax\global#7=-#3\relax\fi + \ifdim\scratchskip>#6\relax\global#6=\scratchskip\relax\fi}} + +\def\positioneer% + {\dosingleempty\dopositioneer} + +\def\dopositioneer[#1]#2(#3,#4)% + {\dowithnextbox + {\bgroup + \stelpositionerenin[#1]% + \dontcomplain + \berekenpositioneren{#3}{\@@psxstap}{\xpositie} + {\@@psxoffset}{\wd\nextbox}{\xafmeting}{\xoffset} + {\@@psxschaal}{\@@psxfactor}% + \scratchdimen=\ht\nextbox \advance\scratchdimen \dp\nextbox + \berekenpositioneren{#4}{\@@psystap}{\ypositie} + {\@@psyoffset}{\scratchdimen}{\yafmeting}{\yoffset} + {\@@psyschaal}{\@@psyfactor}% + \setbox\nextbox=\hbox + {\hskip\xpositie\lower\ypositie\box\nextbox}% + \smashbox\nextbox + \box\nextbox + \egroup + \ignorespaces} + \hbox} + +%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\dostelkolommenin} + +\def\stelkolommenin[#1]% + {\getparameters[\??kl][#1]% + \nofcolumns=\@@kln\relax + \processaction + [\@@kllijn] + [ \v!aan=>\let\betweencolumns=\linebetweencolumns, + \v!uit=>\let\betweencolumns=\spacebetweencolumns, + \s!default=>\let\betweencolumns=\spacebetweencolumns, + \s!unknown=>\let\betweencolumns=\@@kllijn]} + +\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% + {\doifinsetelse{\@@kloffset}{\v!geen,\v!overlay} + {\let\@@kloffset\!!zeropoint} + {\scratchdimen=\@@kloffset + \advance\scratchdimen by -\@@kllijndikte + \edef\@@kloffset{\the\scratchdimen}}% + \localframed + [\??kl] + [\c!strut=\v!nee, + \c!breedte=\v!passend, + \c!hoogte=\v!passend, + \c!uitlijnen=]} + +\let\restorecolumnsettings\relax + +\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 + \def\columntextoffset{\@@kloffset}}% + \ifx\@@klcommando\empty\else + \let\postprocesscolumnline\@@klcommando + \fi + \doifelsenothing{\@@klhoogte} + {\heightencolumnsfalse} + {\heightencolumnstrue}% + \doifelse{\@@klrichting}{\v!rechts} + {\reversecolumnsfalse} + {\reversecolumnstrue}% + \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 + % + % probably more is needed, and how about nesting save's + % + \savecurrentblanko + \savecurrentwitruimte + \def\restorecolumnsettings% + {\boxmaxdepth\maxdimen % done elsewhere + \restorecurrentblanko + \restorecurrentwitruimte}% + % + \edef\fixedcolumnheight{\@@klhoogte}% +\edef\minbalancetoplines{\@@klnboven}% + \steltolerantiein[\@@kltolerantie]% %% \startkolommen + \stelblankoin[\@@klblanko]% + \ifdim\tussenwit>\!!zeropoint + \stelwitruimtein[\@@klblanko]% + \fi + \def\stopkolommen% + {\endmulticolumns + \global\binnenkolommenfalse + \endgroup + \egroup}% + \global\binnenkolommentrue + \beginmulticolumns + \fi + \fi} + +\definecomplexorsimpleempty\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\dotoonkader[#1][#2]% + {\ifsecondargument + \stelachtergrondenin + [#1][#2] + [\c!achtergrond=, + \c!kader=\v!aan, + \c!hoek=\v!recht, + \c!kaderoffset=\!!zeropoint, + \c!kaderdiepte=\!!zeropoint, + \c!kaderkleur=] + \else\iffirstargument + \toonkader + [\v!hoofd,\v!tekst,\v!voet] + [#1] + \else + \toonkader + [\v!hoofd,\v!tekst,\v!voet] + [\v!linkerrand,\v!linkermarge, + \v!tekst, + \v!rechtermarge,\v!rechterrand] + \fi\fi + \let\pageseparation=\!!zeropoint} + +\def\toonkader{\dodoubleempty\dotoonkader} + +\def\tooninstellingA#1#2% + {#1&\PtToCm{\the#2}&\the#2&\tttf\string#2\cr} + +\def\tooninstellingC#1#2% + {#1&\dimen0=#2\PtToCm{\the\dimen0}&\dimen0=#2\the\dimen0&\tttf\string#2\cr} + +\def\tooninstellingB#1#2#3% + {#1&#3&\tttf\string#3\cr} + +\startinterface dutch + +\def\tooninstellingen% + {\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 + \noalign{\blanko} + \tooninstellingA{kopwit} \kopwit + \tooninstellingA{rugwit} \rugwit + \tooninstellingA{hoogte} \zethoogte + \tooninstellingA{breedte} \zetbreedte + \noalign{\blanko} + \tooninstellingA{boven} \bovenhoogte + \tooninstellingC{bovenafstand} \bovenafstand + \tooninstellingA{hoofd} \hoofdhoogte + \tooninstellingC{hoofdafstand} \hoofdafstand + \tooninstellingA{teksthoogte} \teksthoogte + \tooninstellingC{voetafstand} \voetafstand + \tooninstellingA{voet} \voethoogte + \tooninstellingC{onderafstand} \onderafstand + \tooninstellingA{onder} \onderhoogte + \noalign{\blanko} + \tooninstellingA{linkerrand} \linkerrandbreedte + \tooninstellingC{linkerrandafstand} \linkerrandafstand + \tooninstellingA{linkermarge} \linkermargebreedte + \tooninstellingC{linkermargeafstand} \linkermargeafstand + \tooninstellingA{tekstbreedte} \tekstbreedte + \tooninstellingC{rechtermargeafstand}\rechtermargeafstand + \tooninstellingA{rechtermarge} \rechtermargebreedte + \tooninstellingC{rechterrandafstand} \rechterrandafstand + \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}}} + +\stopinterface + +\startinterface english + +\def\tooninstellingen% + {\noindent + \vbox + {\forgetall + \mindermeldingen + \switchtobodyfont[\v!klein] + \tabskip\!!zeropoint + \halign + {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr + \tooninstellingA{paperheight} \paperheight + \tooninstellingA{paperwidth} \paperwidth + \tooninstellingA{printpaperheight} \printpaperheight + \tooninstellingA{printpaperwidth} \printpaperwidth + \noalign{\blanko} + \tooninstellingA{topspace} \topspace + \tooninstellingA{backspace} \backspace + \tooninstellingA{height} \makeupheight + \tooninstellingA{width} \makeupwidth + \noalign{\blanko} + \tooninstellingA{top} \topheight + \tooninstellingC{topdistance} \topdistance + \tooninstellingA{header} \headerheight + \tooninstellingC{headerdistance} \headerdistance + \tooninstellingA{textheight} \textheight + \tooninstellingC{footerdistance} \footerdistance + \tooninstellingA{footer} \footerheight + \tooninstellingC{bottomdistance} \bottomdistance + \tooninstellingA{bottom} \bottomheight + \noalign{\blanko} + \tooninstellingA{leftedge} \leftedgewidth + \tooninstellingC{leftedgedistance} \leftedgedistance + \tooninstellingA{leftmargin} \leftmarginwidth + \tooninstellingC{leftmargindistance} \leftmargindistance + \tooninstellingA{textwidth} \textwidth + \tooninstellingC{rightmargindistance}\rightmargindistance + \tooninstellingA{rightmargin} \rightmarginwidth + \tooninstellingC{rightedgedistance} \rightedgedistance + \tooninstellingA{rightedge} \rightedgewidth + \noalign{\blanko} + \tooninstellingB{bodyfontsize} \the \globalbodyfontsize + \noalign{\blanko} + \tooninstellingB{line} \relax \normallineheight + \tooninstellingB{height} \relax \strutheightfactor + \tooninstellingB{depth} \relax \strutdepthfactor + \tooninstellingB{topskip} \relax \topskipfactor + \tooninstellingB{maxdepth} \relax \maxdepthfactor}}} + +\stopinterface + +\startinterface german + +\def\tooninstellingen% + {\noindent + \vbox + {\forgetall + \mindermeldingen + \switchtobodyfont[\v!klein] + \tabskip\!!zeropoint + \halign + {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr + \tooninstellingA{papierhoehe} \papierhoehe + \tooninstellingA{papierbreite} \papierbreite + \tooninstellingA{printpapierhoehe} \printpapierhoehe + \tooninstellingA{printpapierbreite} \printpapierbreite + \noalign{\blanko} + \tooninstellingA{kopfweite} \kopfweite + \tooninstellingA{rumpfweite} \rumpfweite + \tooninstellingA{hoehe} \satzhoehe + \tooninstellingA{breite} \satzbreite + \noalign{\blanko} + \tooninstellingA{oben} \hoeheoben + \tooninstellingC{abstandoben} \abstandoben + \tooninstellingA{kopfzeile} \kopfzeilenhoehe + \tooninstellingC{kopfzeilenabstand} \kopfzeilenabstand + \tooninstellingA{texthoehe} \texthoehe + \tooninstellingC{fusszeileabstand} \fusszeileabstand + \tooninstellingA{fusszeilen} \fusszeilenhoehe + \tooninstellingC{abstandunten} \abstandunten + \tooninstellingA{hoeheunten} \hoeheunten + \noalign{\blanko} + \tooninstellingA{linkerrand} \breitelinkerrand + \tooninstellingC{abstandlinkerrand} \abstandlinkerrand + \tooninstellingA{linkemarginal} \linkemarginalbreite + \tooninstellingC{linkemarginalafstand} \linkemarginalafstand + \tooninstellingA{textbreite} \textbreite + \tooninstellingC{rechtemarginalafstand}\rechtemarginalafstand + \tooninstellingA{rechtemarginal} \rechtemarginalbreite + \tooninstellingC{abstandrechterrand} \abstandrechterrand + \tooninstellingA{rechterrand} \breiterechterrand + \noalign{\blanko} + \tooninstellingB{fliesstext} \the \globalbodyfontsize + \noalign{\blanko} + \tooninstellingB{linie} \relax \normallineheight + \tooninstellingB{hoehe} \relax \strutheightfactor + \tooninstellingB{tiefe} \relax \strutdepthfactor + \tooninstellingB{topskip} \relax \topskipfactor + \tooninstellingB{maxdepth} \relax \maxdepthfactor}}} + +\stopinterface + +\startinterface czech + +\def\tooninstellingen% + {\noindent + \vbox + {\forgetall + \mindermeldingen + \switchtobodyfont[\v!klein] + \tabskip\!!zeropoint + \halign + {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr + \tooninstellingA{vyskapapiru} \vyskapapiru + \tooninstellingA{sirkapapiru} \sirkapapiru + \tooninstellingA{vyskatiskpapiru} \vyskatiskpapiru + \tooninstellingA{sirkatiskpapiru} \sirkatiskpapiru + \tooninstellingA{hornimezera} \hornimezera + \tooninstellingA{spodnimezera} \spodnimezera + \tooninstellingA{vyska} \vyskasazby + \tooninstellingA{breite} \sirkasazby + \tooninstellingA{vyskatextu} \vyskatextu + \tooninstellingA{sirkatextu} \sirkatextu + \tooninstellingA{horejsek} \vyskahorejsku + \tooninstellingC{vzdalenosthorejsku} \vzdalenosthorejsku + \tooninstellingA{zahlavi} \vyskazahlavi + \tooninstellingC{vzdalenostzahlavi} \vzdalenostzahlavi + \tooninstellingC{fusszeileabstand} \vzdalenostupati + \tooninstellingA{upati} \vyskaupati + \tooninstellingC{vzdalenostspodku} \vzdalenostspodku + \tooninstellingA{spodek} \vyakaspodku + \tooninstellingA{levyokraj} \sirkalevehookraje + \tooninstellingC{vzdalenostlevehookraje}\vzdalenostlevehookraje + \tooninstellingA{levamarginalie} \sirkalevemarginalie + \tooninstellingC{vzdalenostlevemarginalie}\vzdalenostlevemarginalie + \tooninstellingC{vzdalenostpravemarginalie}\vzdalenostpravemarginalie + \tooninstellingA{pravamarginalie} \sirkapravemarginalie + \tooninstellingC{vzdalenostpravehookraje}\vzdalenostpravehookraje + \tooninstellingA{pravyokraj} \sirkapravehookraje + \noalign{\blanko} + \tooninstellingB{zakladnivelikost} \the \globalbodyfontsize + \noalign{\blanko} + \tooninstellingB{linka} \relax \normallineheight + \tooninstellingB{vyska} \relax \strutheightfactor + \tooninstellingB{hloubka} \relax \strutdepthfactor + \tooninstellingB{topskip} \relax \topskipfactor + \tooninstellingB{maxdepth} \relax \maxdepthfactor}}} + +\stopinterface + +\def\toonlayout% interfereert lelijk met een \typefile er na + {\bgroup + \pagina + \toonkader + \stellayoutin[\c!markering=\v!aan] + \herhaal[4*\tooninstellingen\pagina] + \egroup} + +%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 + +\chardef\raggedstatus=0 % normal left center right + +\def\leftraggedness {2\bodyfontsize} +\def\rightraggedness {2\bodyfontsize} +\def\middleraggedness {6\bodyfontsize} + +\def\setraggedness#1% + {\ifnum\tolerance<1500\relax % small values have + \tolerance=1500\relax % unwanted side effects + \fi % + \spaceskip=2.5\hsize % we misuse these + \xspaceskip=#1\relax % registers for temporary + \divide\spaceskip by \xspaceskip % storage; they are + \hyphenpenalty=\spaceskip} % changed anyway + +\let\updateraggedskips\relax + +\def\setraggedskips#1#2#3#4#5#6#7% never change this name + {\def\updateraggedskips% + {\dosetraggedskips{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% + \updateraggedskips} + +\def\dosetraggedskips#1#2#3#4#5#6#7% + {\chardef\raggedstatus=#1\relax + \leftskip=1\leftskip\!!plus#2\relax % zie: Tex By Topic 8.1.3 + \rightskip=1\rightskip\!!plus#3\relax % zie: Tex By Topic 8.1.3 + \spaceskip#4\relax + \xspaceskip#5\relax + \parfillskip\!!zeropoint\!!plus#6\relax + \parindent#7\relax} + +\def\notragged% + {\setraggedskips{0}{0em}{0em}{0em}{0em}{1fil}{\parindent}} + +\def\raggedleft% + {\setraggedness\leftraggedness + \setraggedskips{1}{\leftraggedness}{0em}{.3333em}{.5em}{0em}{0em}} + +\def\raggedcenter% + {\setraggedness\middleraggedness + \setraggedskips{2}{\middleraggedness}{\middleraggedness}{.3333em}{.5em}{0em}{0em}} + +%D We used to have: +%D +%D \starttypen +%D \def\raggedright% +%D {\setraggedness\rightraggedness +%D \setraggedskips{3}{0em}{\rightraggedness}{.3333em}{.5em}{0em}{\parindent}} +%D \stoptypen +%D +%D However, the next alternative, suggested by Taco, is better. + +\def\raggedright% + {\setraggedness\rightraggedness + \setraggedskips{3}{0em}{\rightraggedness}{.3333em}{.5em}{1fil}{\parindent}} + +\def\veryraggedleft% + {\setraggedskips{1}{1fil}{0em}{.3333em}{.5em}{0em}{0em}} + +%D When we want the last line to have a natural width: +%D +%D \starttypen +%D \def\veryraggedleft% +%D {\setraggedskips{1}{1fil}{0em}{.3333em}{.5em}{0em}{-1fil}} +%D \stoptypen +%D +%D but this one is not accepted by the macros. + +\def\veryraggedcenter% + {\setraggedskips{2}{1fil}{1fil}{.3333em}{.5em}{0em}{0em}} + +\def\veryraggedright% + {\setraggedskips{3}{0em}{1fil}{.3333em}{.5em}{0em}{\parindent}} + +\def\ttraggedright% + {\tttf + \setraggedskips{3}{0em}{\rightraggedness}{0em}{0em}{0em}{\parindent}} % {\voorwit}} + +%D A bonus one: + +\def\raggedwidecenter% + {\setraggedness\middleraggedness + \setraggedskips{2}{.5fil}{.5fil}{.3333em}{.5em}{0em}{0em}} + +\def\dodosteluitlijnenin[#1]% + {\doifinsetelse{\v!ruim} {#1}{\!!doneatrue}{\!!doneafalse}% + \doifinsetelse{\v!breed}{#1}{\!!donebtrue}{\!!donebfalse}% + \ExpandFirstAfter\processallactionsinset + [#1] + [ \v!regel=>\baselinebottom, + \v!onder=>\raggedbottom, + \v!hoogte=>\normalbottom, + \v!breedte=>\notragged, + \v!normaal=>\notragged, + \v!ja=>\notragged, + \v!nee=>\raggedright, + \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!!doneb\raggedwidecenter\else + \if!!donea\veryraggedcenter\else\raggedcenter\fi\fi, + \v!reset=>\notragged\normalbottom]} + +\def\dosteluitlijnenin[#1]% + {\expanded{\dodosteluitlijnenin[#1]}} + +\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} + +% also supporting \\ +% +% \def\doalignline#1#2% +% {\dowithnextbox +% {\noindent\hbox to \hsize +% {\strut#1\unhbox\nextbox#2}} +% \hbox\bgroup +% \def\\{\egroup\par\doalignline#1#2\bgroup}\let\next=} + +\def\doalignline#1#2% + {\bgroup + \def\\{\egroup\par\doalignline#1#2\bgroup}% + \dowithnextbox + {\noindent\hbox to \hsize + {\strut#1\unhbox\nextbox#2}\egroup} + \hbox} + +% directe commando's + +\def\regellinks {\doalignline \relax \hss } +\def\regelrechts{\doalignline \hss \relax} +\def\regelmidden{\doalignline \hss \hss } + +\def\regelbegrensd#1{\limitatetext{#1}{\hsize}{\unknown}} + +% indirecte commando's + +\setvalue{regel\v!links }{\doalignline \relax \hss } +\setvalue{regel\v!rechts}{\doalignline \hss \relax} +\setvalue{regel\v!midden}{\doalignline \hss \hss } + +\def\doregelplaats#1% + {\getvalue{regel#1}} + +\def\dosteltolerantiein[#1]% + {\doifinsetelse{\v!vertikaal}{#1}% + {\ExpandFirstAfter\processallactionsinset + [#1] + [\v!zeerstreng=>\def\bottomtolerance{}, + \v!streng=>\def\bottomtolerance{.050}, + \v!soepel=>\def\bottomtolerance{.075}, + \v!zeersoepel=>\def\bottomtolerance{.100}]}% + {\ExpandFirstAfter\processallactionsinset + [#1] + [ \v!rek=>\emergencystretch=\bodyfontsize, + \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\margestrutheight{\ht\strutbox} + +\def\maakmargetekstblok#1#2#3#4#5#6% + {#4\relax + \bgroup + \forgetall % added, else problems with 'center' and nested itemize + \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!nee=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!normaal}, + \v!binnen=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2}, + \v!buiten=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#3}, + \v!links=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!links}, + \v!midden=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!midden}, + \v!rechts=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{\v!rechts}, + \s!default=>\setvalue{\??im\margetekstnummer\c!uitlijnen}{#2}]% + \setbox0=\vbox\localframed + [\??im\margetekstnummer] + [\c!strut=\v!nee] + {\decrement\margetekstregels + \@@imvoor + \doattributes + {\??im\margetekstnummer}\c!letter\c!kleur + {\dorecurse{\margetekstregels}{\strut\\}% + \xdef\margestrutheight{\the\ht\strutbox}% + \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 + \dimen0=\dp\strutbox + \advance\dimen0 by \margestrutheight + \advance\dimen0 by -\ht\strutbox + \raise\dimen0 + \fi + \box0}}% + \ht0=\!!zeropoint + \dp0=\!!zeropoint + \gdef\margestrutheight{\the\ht\strutbox}% + \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 + [\v!links][\doinlinker][\doinrechter]} + +\def\inrechter% + {\indentation\doquintupleempty\doinmarge + [\v!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% + {\restoreinterlinepenalty % here? + \ifnum\margincontent>0 % called quite often, so we + \expandafter\doflushmargincontents % speed up the \fi scan by + \fi} % using a \do.. + +\def\doflushmargincontents% % links + rechts + {\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} + +\def\docomplexmargewoord#1#2#3% + {\@EA\setgvalue\@EA{\@EA\??im\@EA\margincontent\@EA}\@EA + {\@EA\stelinmargein\@EA[\margincontent][]% see next macro + \flushmargincontent[#1][#2]{#3}}} + +\def\complexmargewoord[#1][#2]#3% + {\doglobal\increment\margincontent + \stelinmargein[\margincontent][]% see next macro + \ifsecondargument + \doifnumberelse{#1} + {\docomplexmargewoord{#2}{#1}{#3}} + {\docomplexmargewoord{#1}{#2}{#3}}% + \else + \doifnumberelse{#1} + {\docomplexmargewoord{}{#1}{#3}} + {\docomplexmargewoord{#1}{}{#3}}% + \fi} + +\def\margewoordpositie[#1]#2% + {\ifnum#1>\margincontent + \xdef\margincontent{#1}% + \fi + \stelinmargein[#1][]% when at outer level, saves local settings + \setgvalue{\??im#1}% + {\stelinmargein[#1][]% needed when par start outside group + \flushmargincontent[][]{#2}}} + +\def\margewoord% + {\dodoubleempty\complexmargewoord} + +\def\margetitel% + {\margewoord} + +\def\margetekst% + {\margewoord} + +\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 {\inleftmargin} % 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, + \c!nummer=, + #1]% + \doifsomething{\@@pnnummer} + {\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]% + {\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 + \fi + \else + \goodbreak + \fi + \fi} + +\let\resetcurrentsectionmarks=\relax + +% was: \resetsectionmarks[\firstsection], zie \handelpaginaaf + +\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=>\doifinstringelse{+}{#1} + {\ejectinsert\ejectpage + \dorecurse{#1}{\insertdummypage}} + {\doifnumberelse{#1} + {\ejectinsert\ejectpage + \doloop + {\ifnum\userpageno<#1\relax + \insertdummypage + \else + \exitloop + \fi}} + {}}]% + \egroup} + +\def\complexpagina[#1]% + {\expanded{\docomplexpagina[#1]}} + +\def\simplepagina% + {\docomplexpagina[\v!ja]} + +\definecomplexorsimple\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=,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]} + +% THIS: !!! + +\def\dolimitateteksten#1#2% + {\doifelsevaluenothing{#1}{#2}{\limitatetext{#2}{\getvalue{#1}}{...}}} + +\def\doteksten#1#2#3#4#5#6% + {\bgroup + %\showcomposition % I need to test first + \convertargument#6\to\ascii + \doifsomething{\ascii} + {\doattributes{#1#2}#3#4% + {\doifvalue{#1\v!tekst\c!strut}{\v!ja}{\setstrut\strut}% here! + \doifdefinedelse{\??mk\ascii\c!koppeling} % brrr + {\dolimitateteksten{#1#2#5}{\haalmarkering[\ascii][\v!eerste]}} + {\ConvertConstantAfter\doifelse{\v!paginanummer}{#6} + {\@@plaatspaginanummer} + {\ConvertConstantAfter\doifelse{\v!datum}{#6} + {\currentdate} + {\opeenregel\dolimitateteksten{#1#2#5}{#6}}}}}}% + \egroup} + +\def\dodoteksten#1#2#3#4#5#6% + {\doifonevenpaginaelse + {\doteksten{#1}{#2}#3{#4}} % #3 => provides three arguments + {\doteksten{#1}{#2}#5{#6}}} % #5 => provides three arguments + +\def\dodododoteksten[#1][#2][#3][#4][#5][#6]% + {\ifsixthargument + \setvalue{\??tk#1#2\c!linkertekst}% + {\dodoteksten{\??tk#1}{#2} + {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#3} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#6}}% + \setvalue{\??tk#1#2\c!rechtertekst}% + {\dodoteksten{\??tk#1}{#2} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#4} + {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#5}}% + \else\iffifthargument + \setvalue{\??tk#1\v!tekst\c!linkertekst}% + {\dodoteksten{\??tk#1}{\v!tekst} + {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#2} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#5}}% + \setvalue{\??tk#1\v!tekst\c!rechtertekst}% + {\dodoteksten{\??tk#1}{\v!tekst} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#3} + {\c!linkerletter \c!linkerkleur \c!linkerbreedte }{#4}}% + \else\iffourthargument + \setvalue{\??tk#1#2\c!linkertekst}% + {\dodoteksten{\??tk#1}{#2} + {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#3} + {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#3}}% + \setvalue{\??tk#1#2\c!rechtertekst}% + {\dodoteksten{\??tk#1}{#2} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#4} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#4}}% + \else\ifthirdargument + \setvalue{\??tk#1\v!tekst\c!linkertekst}% + {\dodoteksten{\??tk#1}{\v!tekst} + {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#2} + {\c!linkerletter\c!linkerkleur\c!linkerbreedte}{#2}}% + \setvalue{\??tk#1\v!tekst\c!rechtertekst}% + {\dodoteksten{\??tk#1}{\v!tekst} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#3} + {\c!rechterletter\c!rechterkleur\c!rechterbreedte}{#3}}% + \else\ifsecondargument % new + \setvalue{\??tk#1\v!tekst\c!linkertekst}{}% + \setvalue{\??tk#1\v!tekst\c!rechtertekst}{}% + \setvalue{\??tk#1\v!tekst\c!middentekst}% + {\doteksten{\??tk#1}{\v!tekst}\c!letter\c!kleur\c!breedte{#2}}% + \else + \dosixtupleempty\dodododoteksten[#1][\v!tekst][][][][]% + \dosixtupleempty\dodododoteksten[#1][\v!marge][][][][]% + \dosixtupleempty\dodododoteksten[#1][\v!rand] [][][][]% + \fi\fi\fi\fi\fi} + +\def\stelboventekstenin {\dosixtupleempty\dodododoteksten[\v!boven]} +\def\stelhoofdtekstenin {\dosixtupleempty\dodododoteksten[\v!hoofd]} +\def\stelteksttekstenin {\dosixtupleempty\dodododoteksten[\v!tekst]} +\def\stelvoettekstenin {\dosixtupleempty\dodododoteksten[\v!voet]} +\def\stelondertekstenin {\dosixtupleempty\dodododoteksten[\v!onder]} + +\def\@@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 % \hss's niet meer wijzigen + {\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\definieertekst% + {\dosixtupleempty\dodefinieertekst} + +\def\dodefinieertekst[#1][#2][#3][#4][#5][#6]% + {\ifsixthargument + \setvalue{\??tk#2#1}{\dosixtupleempty\dodododoteksten[#2][#3][#4][#5][#6]}% + \else\iffourthargument + \setvalue{\??tk#2#1}{\dosixtupleempty\dodododoteksten[#2][#3][#4]}% + \else + \setvalue{\??tk#2#1}{\dosixtupleempty\dodododoteksten[#2][#3]}% + \fi\fi} + +% \definieertekst[hoofdstuk][voet][paginanummer] +% \stelkopin[hoofdstuk][hoofd=hoog,voet=hoofdstuk] +% \stelhoofdtekstenin[paginanummer] +% \stelvoettekstenin[links][rechts] +% \hoofdstuk{eerste} \dorecurse{20}{\input tufte \relax} +% \hoofdstuk{tweede} \dorecurse{20}{\input tufte \relax} + +\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=>\bgroup % new + \setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}% + \getvalue{\??tk#1\commalistelement}% + \doplaatslayoutregel{#1}{#2}% + \egroup]} + +\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-\bovenhoogte + \plaatsboventekstblok + \vskip\bovenafstand + \plaatshoofdregel + \vskip\hoofdafstand + \placepositionanchors + \vskip-\teksthoogte + \plaatstekstregel + \vskip\voetafstand + \plaatsvoetregel + \vskip\onderafstand + \plaatsonderregel + \vskip-\onderhoogte + \plaatsondertekstblok + \plaatsversieaanduiding + \vfilll}% + \smashbox0 + \box0 + \egroup} + +\ifx\undefined\placepositionanchors + \def\placepositionanchors{\vskip\teksthoogte} +\fi + +%\def\@@plaatspaginascheider% +% {\doif{\@@nmstatus}{\v!start}% +% {\@@nmtekstscheider}} + +\def\@@nmin {} % kan vervallen (upward compatibility) +\def\@@nmplaats {} % mag {plaats, in} zijn + +\newcounter\@@pagenumberlocation + +\def\do@@plaatspaginanummer#1% + {\ifnum#1=\@@pagenumberlocation\@@plaatspaginanummer\fi} + +\def\dodosetpagenumberlocation#1% tricky because of ...texts + {\increment\@@pagenumberlocation + \ifx\@@nmplaats\empty\else + \def\dododosetpagenumberlocation##1% + {\donetrue + \setevalue{\??tk#1##1}% + {\noexpand\do@@plaatspaginanummer{\@@pagenumberlocation}}}% + \donefalse + \ExpandFirstAfter\processallactionsinset + [\@@nmplaats] + [ \v!midden=>\dododosetpagenumberlocation{\v!tekst\c!middentekst}, + \v!links=>\dododosetpagenumberlocation{\v!tekst\c!linkertekst}, + \v!rechts=>\dododosetpagenumberlocation{\v!tekst\c!rechtertekst}, + \v!inlinker=>\dododosetpagenumberlocation{\v!marge\c!linkertekst}, + \v!inrechter=>\dododosetpagenumberlocation{\v!marge\c!rechtertekst}, + \v!inmarge=>\dododosetpagenumberlocation{\v!marge\ifdubbelzijdig + \c!margetekst\else\c!rechtertekst\fi}, + \v!marge=>\dododosetpagenumberlocation{\v!marge\ifdubbelzijdig + \c!margetekst\else\c!rechtertekst\fi}, + \v!opmarge=>\dododosetpagenumberlocation{\v!tekst\c!kantlijntekst}, + \v!kantlijn=>\dododosetpagenumberlocation{\v!tekst\c!kantlijntekst}]% + \ifdone \else + \dododosetpagenumberlocation{\v!tekst\c!middentekst}% default + \fi + \fi} + +\def\dosetpagenumberlocation% + {\ExpandBothAfter\doifinsetelse{\v!hoofd}{\@@nmplaats,\@@nmin} + {\dodosetpagenumberlocation\v!hoofd} + {\dodosetpagenumberlocation\v!voet}} + +\def\dostelnummeringin[#1]% + {\getparameters[\??nm][#1]% + \preparepaginaprefix{\??nm}% + \enkelzijdigfalse + \dubbelzijdigfalse + \ExpandFirstAfter\processallactionsinset + [\@@nmvariant] + [ \v!enkelzijdig=>\enkelzijdigtrue, + \v!dubbelzijdig=>\dubbelzijdigtrue]% + \ifdubbelzijdig + \trackingmarginnotestrue + \else + \trackingmarginnotesfalse + \fi + \dosetpagenumberlocation + \global\newbackgroundtrue + \global\newlogostrue} + +\def\stelnummeringin% + {\dosingleempty\dostelnummeringin} + +% listig: hangt af van \@@kolijst + +% erg fout +% +% \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} +% +% nog fouter +% +% \def\preparepaginaprefix#1% +% {\def\dopreparepaginaprefix##1% +% {\doifelsevalue{#1##1\v!nummer}{\v!ja} % v +% {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!ja}} % v +% {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!nee}}}% % v +% \processcommacommand[\@@kolijst]\dopreparepaginaprefix} +% +% best, beware, chapter (yes) can be followed by title (no) + +\def\preparepaginaprefix#1% + {\def\dopreparepaginaprefix##1% + {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!nee}}% %v + \processcommacommand[\@@kolijst]\dopreparepaginaprefix + \def\dopreparepaginaprefix##1% + {\doifvalue{#1##1\v!nummer}{\v!ja} %v + {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!ja}}}% + \processcommacommand[\@@kolijst]\dopreparepaginaprefix} + +\def\dopaginaprefix#1#2% + {\let\normaluchar\uchar\let\uchar\relax % ugly but needed + \doifelsevalue{#1#2\v!nummer}{\v!ja} % \v! and no \c! + {\@EA\beforesplitstring\@EA{\postprefix}\at:\to\preprefix + \@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix + \let\uchar\normaluchar % ugly but needed + \doifsomething{\preprefix} + {\doifnot{\preprefix}{0}{\preprefix\@@nmnummerscheider}}}% + {\@EA\aftersplitstring\@EA{\postprefix}\at:\to\postprefix + \let\uchar\normaluchar}} % ugly but needed + +\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} + +\unexpanded\def\@@plaatspaginanummer% called in empty tests + {\doif{\@@nmstatus}{\v!start}% + {{\@@nmcommando{\doattributes\??nm\c!letter\c!kleur{\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\v!nummer}{\v!ja} % v + {\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=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}{\realfolio}% to be sure + \setxvalue{\s!lst:#1\currentsectionformat}{\realfolio}% + \setxvalue{\e!vorigelokale#1}{\s!lst:#1\previoussectionformat}% + \setxvalue{\e!huidigelokale#1}{\s!lst:#1\currentsectionformat}% + \doifelse{\currentsectionformat}{} + {\setglobalcrossreference + {\e!vorige#1}{}{\realfolio}{}} +% + {\setglobalsystemreference\rt!list + {\e!vorige#1}{\getvalue{\e!vorigelokale#1}}}% +% +% {\definereference[\e!vorige#1][\getvalue{\e!vorigelokale#1}]% +% + \def\stoplistreferences{\dostoplistreferences}} + +\def\dostoplistreferences#1% + {\iflijstgeplaatst + \addtocommalist{#1}\updatedlistreferences % nog global (\doglobal) + \global\let\updatedlistreferences=\updatedlistreferences % een noodverbandje + \gdef\updatelistreferences% + {\def\docommando####1% +% + {\setglobalsystemreference\rt!list + {\e!vorige####1}{\getvalue{\e!huidigelokale####1}}}% +% +% {\definereference[\e!vorige####1][\getvalue{\e!huidigelokale####1}]% +% + \processcommacommand[\updatedlistreferences]\docommando + \global\let\updatelistreferences=\relax + \global\let\updatedlistreferences=\empty}% + \fi} + +\def\stoplistreferences% + {\gobbleoneargument} + +% de rest + +\newcount\prefixteller + +\def\referenceprefix{} + +% \def\showlocation #1{#1} +% \def\showcontrastlocation#1#2#3{#3} +% \def\showcoloredlocation #1#2{#2} + +\unexpanded\def\referencepagenumber[#1]% + {\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 + \witruimte + %\pagina[\v!voorkeur]} gaat mis na koppen, nieuw: later \nobreak + \begingroup + \def\@@rgstepyes{\parindent\!!zeropoint}% + \def\@@rgstepno{\parindent\!!zeropoint}% + \edef\@@rgparindent{\the\parindent}% + \gdef\@@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 + \let\checkindentation=\relax + \@@rgstepno + \ignorespaces + \gdef\afterfirstobeyedline% tzt two pass, net als opsomming + {\gdef\afterfirstobeyedline% + {\nobreak + \global\let\afterfirstobeyedline\relax}}% + \def\obeyedline% + {\par + \afterfirstobeyedline + \ifdim\lastskip>\!!zeropoint + \gdef\@@rglinesteptoggle{0}% + \else + \doglobal\increment\@@rglinesteptoggle + \fi + \ifodd\@@rglinesteptoggle\relax + \@@rgstepyes + \else + \@@rgstepno + \fi + \futurelet\next\dobetweenthelines}% + \GotoPar} + +% \def\dobetweenthelines% +% {\convertcommand \next \to\!!stringa % very ugly and fuzzy +% \convertargument\obeyedline\to\!!stringb % but needed anyway +% \ifx\!!stringa\!!stringb % but alas, it fails +% \@@rgtussen % hopelessly in non +% \fi} % etex + +\def\dobetweenthelines% + {\doifmeaningelse{\next}{\obeyedline}{\@@rgtussen}{}} + +\def\stopregels% + {\endgroup + \@@rgna} + +\newcount\linenumber +\newcount\linestepper +\newif\ifinregelnummeren + +% 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 + \inregelnummerentrue + \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\c!letter\c!kleur{\dodoschrijfregelnummer}% + \fi + \fi} + +\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]}} +% +% double labels: + +\def\inregel#1[#2]% + {\doifelsenothing{#1} + {\doifinstringelse{--}{\currenttextreference} + {\in{\leftlabeltext\v!regels}{\rightlabeltext\v!regels}[\@@rnprefix#2]} + {\in{\leftlabeltext\v!regel }{\rightlabeltext\v!regel }[\@@rnprefix#2]}} + {\in{#1}[\@@rnprefix#2]}} + +\def\dostartnummerenPAR% + {\beginofshapebox + \doglobal\newcounter\linereference} + +% localcrossref heroverwegen + +\def\setlinereference#1#2#3#4% + {\setxvalue{lrf:#1}{\noexpand\dogetlinereference{#2}{#3}{#4}}} + +\def\getlinereference#1% + {\getvalue{lrf:#1}} + +\def\dogetlinereference#1#2#3% + {\edef\linereferencename{#1}% + \edef\linereferenceline{#2}% + \edef\linereferenceplus{#3}} + +% 1 xxx xxx xxx xxx xxx xxx xxx +% 2 xxx yyy yyy yyy yyy yyy yyy <= start y +% 3 yyy yyy yyy yyy yyy yyy yyy +% 4 yyy yyy yyy yyy yyy xxx xxx <= stop y +% 5 xxx xxx xxx xxx xxx xxx xxx + +%\def\regelreferentie#1[#2]% +% {\bgroup +% \dimen0=\dp\strutbox +% \doif{\@@rnrefereren}{\v!aan} +% {\doglobal\increment\linereference +% % start 1=>(n=y,l=0,p=1) +% % stop 2=>(n=y,l=0,p=2) +% \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 \!!height \!!zeropoint +% \prewordbreak +% \egroup} + +\def\regelreferentie#1[#2]% + {\bgroup + \dimen0=\dp\strutbox + \doif{\@@rnrefereren}{\v!aan} + {\doglobal\increment\linereference + % start 1=>(n=y,l=0,p=1) + % stop 2=>(n=y,l=0,p=2) + \setlinereference{\linereference}{\@@rnprefix#2}{0}{#1}% + \advance\dimen0 by \linereference sp}% + \prewordbreak + \vrule \!!width \!!zeropoint \!!depth \dimen0 \!!height \!!zeropoint + \prewordbreak + \egroup} + +\def\dostopnummerenPAR% dp's -> openstrutdepth + {\endofshapebox + \checkreferences + \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 + % 1=>4 | 2=>4 1=>2 + % start 1=>(n=y,l=2,p=1) + % stop 2=>(n=y,l=4,p=2) + \dostepwiserecurse{1}{\number\dimen0}{1} + {\getlinereference\recurselevel + \setlinereference\recurselevel + {\linereferencename}{\the\linenumber}{\linereferenceplus}}% + \fi}% + \global\advance\linenumber by \linestepper + \ifnum\linereference>0 % anders vreemde loop in paragraphs+recurse + \dorecurse{\linereference} + {\getlinereference\recurselevel + \ifnum\linereferenceplus=2 % stop + % ref y: text = 4 / Kan dit buiten referentie mechanisme om? + \expanded{\setlocalcrossreference + {\referenceprefix\linereferencename}{}{}{\linereferenceline}}% + \fi}% + \dorecurse{\linereference} + {\getlinereference\recurselevel + \ifnum\linereferenceplus<2 % start / lone + \ifnum\linereferenceplus=1 % start + \getreferenceelements{\linereferencename}% text = 4 + \ifnum\linereferenceline<0\currenttextreference\relax % 0 prevents error + \edef\linereferenceline{\linereferenceline--\currenttextreference}% + \fi + \fi + \expanded{\setlocalcrossreference + {\referenceprefix\linereferencename}{}{}{\linereferenceline}}% + \fi}% + \global\let\scratchline=\linenumber % We are going back! + \reshapebox + {\doglobal\decrement\scratchline + \hbox + {\dorecurse{\linereference} + {\getlinereference\recurselevel + \getreferenceelements{\linereferencename}% + \beforesplitstring\currenttextreference--\at--\to\firstline + \ifnum\firstline=\scratchline\relax + % beter een rawtextreference + \textreference[\linereferencename]{\currenttextreference}% + \expanded{\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}}% no \strut ! + \else + \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}% no \strut ! + \fi} + {\reshapebox{\global\advance\linenumber by -1}% + \global\advance\linenumber by \linestepper + \reshapebox{\hbox{\schrijfregelnummer\box\shapebox}}}% no \strut ! + \global\advance\linenumber by \linestepper + \flushshapebox + \egroup} + +\def\crlf% + {\ifhmode\unskip\else\strut\fi\ifcase\raggedstatus\hfil\fi\break} + +\def\opeenregel% + {\def\crlf{\ifhmode\unskip\fi\space}\let\\\crlf} + +\newcount\internalparagraphnumber + +\def\stelparagraafnummerenin% + {\dosingleempty\dostelparagraafnummerenin} + +\def\dostelparagraafnummerenin[#1]% + {\getparameters + [\??ph][#1]% + \processaction + [\@@phstatus] + [\v!start=>\let\showparagraphnumber\doshowparagraphnumberA, + \v!stop=>\let\showparagraphnumber\relax, + \v!regel=>\let\showparagraphnumber\doshowparagraphnumberB, + \v!reset=>\global\internalparagraphnumber=0 + \let\showparagraphnumber\doshowparagraphnumberA]} + +\def\dodoshowparagraphnumber% + {\global\advance\internalparagraphnumber 1 + \inleftmargin % \tf normalizes em + {\tf{\doattributes\??ph\c!letter\c!kleur{\the\internalparagraphnumber}}% + \kern\@@phafstand}} + +\def\doshowparagraphnumberA% + {\ifprocessingverbatim + \iflinepar\dodoshowparagraphnumber\fi + \else + \dodoshowparagraphnumber + \fi} + +\def\doshowparagraphnumberB% + {\ifinregelnummeren + \doshowparagraphnumberA + \fi} + +%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\dodostopopmaak[#1]% + {\dododostopopmaak[#1]% + \doflushopmaak[#1]% + \endgroup + \calculatehsizes + \calculatevsizes} + +\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% + {\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=>\global\advance\middensmaller by \commalistelement]} + +\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]} + +\definecomplexorsimple\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 {...} +%I \rbox{tekst\\tekst\\tekst} of \rbox to {...} +%I \cbox{tekst\\tekst\\tekst} of \cbox to {...} +%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\dosetraggedvbox#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\dosetraggedhbox#1% + {\processaction + [#1] + [ \v!links=>\let\raggedbox\regellinks, + \v!rechts=>\let\raggedbox\regelrechts, + \v!midden=>\let\raggedbox\regelmidden, + \v!normaal=>\let\raggedbox\hbox, + \s!default=>\let\raggedbox\hbox, + \s!unknown=>\let\raggedbox\hbox]} + +\def\dosetraggedcommand#1% ook ruim,rechts en zo + {\processaction + [#1] + [ \v!links=>\def\raggedcommand{\raggedleft}, + \v!rechts=>\def\raggedcommand{\raggedright}, + \v!midden=>\def\raggedcommand{\raggedcenter}, + \v!nee=>\def\raggedcommand{\raggedright}, + \v!normaal=>\let\raggedcommand\relax, + \s!default=>\def\raggedcommand{\raggedcenter}, + \s!unknown=>\let\raggedcommand\relax]} + +%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[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 +%I \lege +%P +%I Het is mogelijk ruimte voor een blok te reserveren: +%I +%I \reserveer[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{titel}{blok} +%I \reserveer{titel} +%I +%I Ten behoeve van een consistente verwijzing wordt het +%I commando: +%I +%I \in[referentie] +%I +%I gedefinieerd. Dit levert in de tekst op: +%I +%I 'in ' +%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}{#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!plaats=\@@bkplaats, + \c!achtergrond=\@@bkachtergrond, + \c!achtergrondraster=\@@bkachtergrondraster, + \c!achtergrondkleur=\@@bkachtergrondkleur, + \c!achtergrondoffset=\@@bkachtergrondoffset, + \c!bovenkader=\@@bkbovenkader, + \c!onderkader=\@@bkonderkader, + \c!linkerkader=\@@bklinkerkader, + \c!rechterkader=\@@bkrechterkader, + \c!kaderoffset=\@@bkkaderoffset, + \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=\Word{#1}~]% + \presetheadtext[#2=\Word{#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}}} + +\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 even more! In inner, gaat't mis omdat daar +% pagetotal enz niet zijn aangepast. Inner kan overigens niet +% betrouwbaar worden getest! + +% NOT TOEVOEGEN: \the\everytrace + +\everypar ={\flushfootnotes + \ifinner\else\checksidefloat\fi + \checkindentation + \showparagraphnumber % here ? + \flushmargincontents + \flushcomments} +\neverypar ={} +\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}% + \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 + \global\holdinginserts=1 + \else + \global\advance\sidefloatvsize by \sidefloatbottomskip + \global\floatshortfalse + \fi + \roomforfloattrue + \fi} + +\def\setsidefloat% + {\vbox{\strut}\vskip-\lineheight + \kern\sidefloattopskip + \edef\presidefloatdepth{\the\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=\presidefloatdepth + %\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% + {\bgroup + \!!counta=\totalnoffloats + \advance\!!counta by -\savednoffloats + \dofloatinfomessage{<}{3}{\the\!!counta}% + \egroup} + +\def\doinsertfloatinfo% + {\dofloatinfomessage{<}{4}{\the\totalnoffloats}} + +% ook voetnoten saven + +\def\dosavefloat% + {\global\setbox\floatlist=\vbox + {\nointerlineskip + \box\floatbox + \unvbox\floatlist}% + \global\advance\savednoffloats by 1 + \global\somefloatwaitingtrue + \dosavefloatinfo + \nonoindentation} + +\def\doresavefloat% + {\global\setbox\floatlist=\vbox + {\nointerlineskip + \unvbox\floatlist + \box\floatbox}% + \global\advance\savednoffloats by 1 + \global\somefloatwaitingtrue} + +\def\doreversesavefloat% + {\global\setbox\floatlist=\vbox + {\nointerlineskip + \unvbox\floatlist + \box\floatbox}% + \global\advance\savednoffloats by 1 + \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 + \global\somefloatwaitingfalse + \fi + \else + \global\savednoffloats=0 + \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} + +% The number of topinserts also influences the float order, +% in this respect that when a moved float does not fit, but a +% next one does, it is indeed placed. Take for instance a +% sequence of 20 floats, large and small, where a large one +% migrates and the next smaller one is inserted. + +\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 + \let\totaltopinserted=\!!zeropoint + \dodosettopinserts + \ifnum\@@bknonder=0 + \ifnum\@@bknregels>0 + \ifdim\totaltopinserted>\!!zeropoint\relax + \dimen0=\lineheight + \dimen0=\@@bknregels\dimen0 + \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 + \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 + \doifinsetelse{\v!beide}{#1}% + {\doifinsetelse{\v!laag}{#1} + {\vfill\box\floatbox} + {\doifinsetelse{\v!midden}{#1} + {\vfill\box\floatbox\vfill} + {\box\floatbox\vfill}}} + {\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} + {\doroomfloat + \ifroomforfloat + \processallactionsinset + [#1] + [ \v!boven=>\dotopfloat, + \v!onder=>\dobotfloat, + \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}\c!letter\c!kleur{#3}}}% + \doifelsevalue{\??kj#1\c!nummer}{\v!ja} + {\def\dofloatnummer% + {{\xdef\floatcaptionnumber{#1}% + \hbox{\doattributes{\??kj#1}\c!kopletter\c!kopkleur + {\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!plaats=\v!normaal, + \c!offset=\@@bkoffset]% + {\box\floatbox}}} + +\newbox\captionbox + +\def\putcompletecaption#1#2#3#4% + {\noindent + \xdef\floatcaptionnumber{#1}% + \doattributes{\??kj#1}\c!letter\c!kleur + {\doifvalue{\??kj#1\c!nummer}{\v!ja} + {\hbox{\doattributes{\??kj#1}\c!kopletter\c!kopkleur{\strut#2\floatcaptionsuffix}}% + \ConvertToConstant\doifnot{#3}{} + {\ifcase#4\relax + \tfskip\emergencystretch=.5em + \else + \ifx\@@kjkjtussen\empty\else\unskip\@@kjkjtussen\fi + \fi}}% + \begstrut#3\endstrut\endgraf}} + +\def\dosetpagfloat#1#2#3#4% \copy wegwerken + {\bgroup + \forgetall + \postponefootnotes + \mindermeldingen + %\showcomposition + \putborderedfloat#4\in4\\% + \def\locatefloat% + {\doregelplaats\@@flflplaats}% + \ConvertToConstant\doifelse{#3}{\v!geen} + {\global\setbox\floatbox=\vbox % pas op als wd groter dan hsize + {\ifbinnenkolommen\ifdim\wd4>\hsize + \let\locatefloat\relax + \fi\fi + \locatefloat{\box4}}} + {\setbox2=\hbox + {\footnotesenabledfalse\putcompletecaption{#4}{#2}{#3}{0}}% + \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 + \putcompletecaption{#4}{#2}{#3}{1}}} + {\doifelse{\@@kjkjbreedte}{\v!max} + {\dosetraggedvbox{\@@kjkjuitlijnen}% + \setbox2=\raggedbox + {\hsize\wd4\relax + \putcompletecaption{#4}{#2}{#3}{0}}} + {\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 + \footnotesenabledfalse + \putcompletecaption{#4}{#2}{#3}{0}}% + \ifdim\ht0>\lineheight\relax + \setbox2=\vbox + {\forgetall + \hsize=0.9\wd4 + \putcompletecaption{#4}{#2}{#3}{0}}% + \else + \setbox0=\vbox + {\forgetall + \hsize=1.0\wd4 + \putcompletecaption{#4}{#2}{#3}{0}}% + \fi + \else + \setbox0=\vbox + {\forgetall + \dimen2=1.5\dimen0\relax + \ifdim\dimen2<\hsize + \hsize=\dimen2\relax + \fi + \footnotesenabledfalse + \putcompletecaption{#4}{#2}{#3}{0}}% + \ifdim\ht0>\lineheight\relax + \setbox2=\vbox + {\forgetall + \dimen2=1.2\dimen0\relax + \ifdim\dimen2<\hsize + \hsize=\dimen2\relax + \fi + \putcompletecaption{#4}{#2}{#3}{0}}% + \else + \setbox0=\vbox + {\forgetall + \dimen2=1.5\dimen0\relax + \ifdim\dimen2<\hsize + \hsize=\dimen2\relax + \fi + \putcompletecaption{#4}{#2}{#3}{0}}% + \fi + \fi} + {\dosetraggedvbox{\@@kjkjuitlijnen}% + \setbox2=\raggedbox + {\hsize\@@kjkjbreedte + \putcompletecaption{#4}{#2}{#3}{0}}}% + \fi}}% + \global\setbox\floatbox=\vbox + {\forgetall + \processaction + [\@@kjkjplaats] + [ \v!boven=>\locatefloat{\copy2}% + \endgraf\@@kjkjtussen + \locatefloat{\copy4}, + \v!onder=>\locatefloat{\copy4}% + \endgraf\@@kjkjtussen + \locatefloat{\copy2}, + \v!hoog=>\locatefloat + {\doifelse{\@@flflplaats}{\v!links} + {\copy4 + \tfskip + \vbox to\ht4{\@@kjkjtussen\copy2\vfill}} + {\vbox to\ht4{\@@kjkjtussen\copy2\vfill}% + \tfskip + \copy4}}, + \v!laag=>\locatefloat + {\doifelse{\@@flflplaats}{\v!links} + {\copy4 + \tfskip + \vbox to\ht4 + {\vfill\copy2\@@kjkjtussen}} + {\vbox to\ht4 + {\vfill\copy2\@@kjkjtussen}% + \tfskip + \copy4}}, + \v!midden=>\locatefloat + {\doifelse{\@@flflplaats}{\v!links} + {\copy4 + \tfskip + \vbox to\ht4{\vfill\copy2\vfill}} + {\vbox to\ht4{\vfill\copy2\vfill}% + \tfskip + \copy4}}, + \v!geen=>\locatefloat{\copy4}]}}% + \ifdim\wd4>\hsize + \global\setbox\floatbox= + \hbox to \ifbinnenkolommen\wd4\else\hsize\fi + {\hss\box\floatbox\hss}% + \fi + \egroup} + +\def\dosetparfloat#1#2#3#4% + {\bgroup + \forgetall + \postponefootnotes + \mindermeldingen + %\showcomposition + \putborderedfloat#4\in4\\ + \ConvertToConstant\doifelse{#3}{\v!geen} + {\global\setbox\floatbox=\vbox{\box4}} + {\setbox2=\hbox + {\forgetall\putcompletecaption{#4}{#2}{#3}{0}}% + \doifelse{\@@kjkjbreedte}{\v!max} + {\dosetraggedvbox{\@@kjkjuitlijnen}% + \setbox2=\raggedbox + {\hsize\wd4\putcompletecaption{#4}{#2}{#3}{0}}}% + {\doifelse{\@@kjkjbreedte}{\v!passend} + {\ifdim\wd2>\wd4\relax + \setbox2=\vbox + {\forgetall\hsize\wd4\putcompletecaption{#4}{#2}{#3}{0}}% + \else + \setbox2=\hbox to \wd4 + {\hss\box2\hss}% + \fi} + {\dosetraggedvbox{\@@kjkjuitlijnen}% + \setbox2=\raggedbox + {\hsize\wd4\putcompletecaption{#4}{#2}{#3}{0}}}}% + \global\setbox\floatbox=\vbox + {\processaction + [\@@kjkjplaats] + [ \v!boven=>\box2\endgraf\@@kjkjtussen\box4, + \v!onder=>\box4\endgraf\@@kjkjtussen\box2, + \v!geen=>\box4, + \s!unknown=>\box4\endgraf\@@kjkjtussen\box2]}}% + \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}}% + \edef\@@flflplaats {\getvalue{\??fl#4\c!plaats}}% + \ifparfloat + \dosetparfloat{#1}{#2}{#3}{#4}% + \else + \dosetpagfloat{#1}{#2}{#3}{#4}% + \fi + \setbox\floatbox=\hbox{\black\box\floatbox}% + \global\floatheight=\ht\floatbox + \global\advance\floatheight by \dp\floatbox + \global\floatwidth=\wd\floatbox + \global\advance\totalnoffloats by 1 + \doifnotinset{\v!marge}{#1} % gaat namelijk nog fout + {\setbox\floatbox=\vbox + {\parindent\!!zeropoint + \ifvoorlopig + \inleftmargin{\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 + \let\next\relax % ivm eetex + \processfirstactioninset + [#1] + [ \v!hier=>\def\next{\global\floatsonpagetrue\someelsefloat[#1]}, + \v!forceer=>\def\next{\global\floatsonpagetrue\somefixdfloat[#1]}, + \v!links=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]\presetindentation}, + \v!rechts=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, + \v!tekst=>\def\next{\global\floatsonpagetrue\sometextfloat[#1]}, + \v!boven=>\def\next{\someelsefloat[#1]\nonoindentation}, % ! + \v!onder=>\def\next{\global\floatsonpagetrue\someelsefloat[#1]}, + \v!marge=>\def\next{\somenextfloat[#1]\nonoindentation}, % ! + \v!pagina=>\def\next{\global\floatsonpagetrue\somepagefloat[#1]}, + \v!naast=>\def\next{\global\floatsonpagetrue\somefacefloat[#1]}, + \v!inmarge=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, + \v!inlinker=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, + \v!inrechter=>\def\next{\global\floatsonpagetrue\somesidefloat[#1]}, + \s!default=>\def\next{\global\floatsonpagetrue\someelsefloat[\v!hier,#1]}, + \s!unknown=>\def\next{\global\floatsonpagetrue\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=\vbox + {\unvbox\floatbox + \vss % gets rid of the depth + \rawpagereference{\s!flt}{#2}}% + \egroup\dofloat{#4}{}{#6}{#1}} + {\doglobal\convertargument#6\to\asciititle % \asciititle is global + \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}{\asciititle}}% + \doschrijfnaarlijst{#3}{\hetnummer}{#6}{#3}}% + \egroup\dofloat{#4}{\labeltexts{#5}{\hetnummer}}{#6}{#1}} + {\global\setbox\floatbox=\vbox + {\unvbox\floatbox % no \vss, keep the depth + \rawreference{\s!flt}{#2}{{}{\asciititle}}}% + \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 +\def\docomplexpagina[##1]{\goodbreak}% + \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 + \ifdim\ht\nextbox>\!!zeropoint + \pagina + \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]} + +%% + +\newconditional\handleformulanumber +\newconditional\incrementformulanumber + +\def\dododoformulenummer#1#2#3#4% (#1,#2)=outer(ref,sub) (#3,#4)=inner(ref,sub) + {\hbox\bgroup + \ifconditional\handleformulanumber + \ifconditional\incrementformulanumber + \verhoognummer[\v!formule]% + \fi + \maakhetnummer[\v!formule]% + \setbox0=\hbox{\ignorespaces#2\unskip}% + \ifdim\wd0>\!!zeropoint + \edef\hetsubnummer{#2}% + \else + \let\hetsubnummer\empty + \fi + \doifsomething{#1}{\rawreference{\s!for}{#1}{\hetnummer\hetsubnummer}}% + \setbox0=\hbox{\ignorespaces#4\unskip}% + \ifdim\wd0>\!!zeropoint + \edef\hetsubnummer{#4}% + \fi + \doifsomething{#3}{\rawreference{\s!for}{#3}{\hetnummer\hetsubnummer}}% + \rm\strut\@@fmlinks + \ignorespaces\hetnummer\ignorespaces\hetsubnummer\unskip + \@@fmrechts + \fi + \egroup} + +\def\dodoformulenummer[#1][#2][#3]% + {\doquadruplegroupempty\dododoformulenummer{#1}{#2}{#3}} + +\def\doformulenummer% + {\dotripleempty\dodoformulenummer} + +% + +\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}{\dostartformula} +\setvalue{\e!stop \e!formule}{\dostopformula} + +\def\dostartformula% + {\dowithnextbox + {\scratchskip=\ifdim\tussenwit>\!!zeropoint\tussenwit\else\blankoskip\fi + \startregelcorrectie[\the\scratchskip] + \box\nextbox + \stopregelcorrectie} + \vbox\bgroup + \forgetall + \abovedisplayskip\!!zeropoint + \belowdisplayskip\!!zeropoint + \abovedisplayshortskip\!!zeropoint + \belowdisplayshortskip\!!zeropoint +\vbox{\strut}\vskip-2\lineheight % Why 2 and not 1? + $$\def\dostopformula{$$\egroup}} + +\def\plaatsformule% + {\settrue\incrementformulanumber + \dodoubleempty\doplaatsformule} + +\def\plaatssubformule% + {\setfalse\incrementformulanumber + \dodoubleempty\doplaatsformule} + +\def\doplaatsformule[#1][#2]% #2 = dummy, gobbles spaces + {\def\redoplaatsformule% + {\ifx\next\bgroup + \expandafter\xdoplaatsformule + \else + \expandafter\ydoplaatsformule + \fi[#1]}% + \futurelet\next\redoplaatsformule} + +\long\def\xdoplaatsformule[#1]#2#3% #3 gobbles spaces + {\def\redoplaatsformule% + {\expandafter\ifx\csname\e!start\e!formule\endcsname\next + \expandafter\dodoplaatsstartformule + \else + \expandafter\dodoplaatsformule + \fi[#1]{#2}}% + \futurelet\next\redoplaatsformule#3} + +\long\def\ydoplaatsformule[#1]#2% #3 gobbles spaces + {\def\redoplaatsformule% + {\expandafter\ifx\csname\e!start\e!formule\endcsname\next + \expandafter\dodoplaatsstartformule + \else + \expandafter\dodoplaatsformule + \fi[#1]}% + \futurelet\next\redoplaatsformule#2} + +\def\dodoplaatsformule[#1]#2$$#3$$% + {\begingroup + \setdisplayskips + \doifelse{#1}{-} + {\setfalse\handleformulanumber} + {\doifelse{#2}{-} + {\setfalse\handleformulanumber} + {\settrue\handleformulanumber}}% + \ifconditional\handleformulanumber + \def\formulenummer% + {\global\let\doeqno\empty + \global\let\doleqno\empty + %\global\let\formulenummer\doformulenummer ??? + \doformulenummer[#1][#2]}% + \def\subformulenummer% + {\setfalse\incrementformulanumber + \formulenummer}% + \gdef\doleqno{\leqno{\doformulenummer[#1][#2][]{}}}% + \gdef\doeqno {\eqno {\doformulenummer[#1][#2][]{}}}% + \doifelse{\@@fmplaats}{\v!links} + {\dostartformula#3\doleqno\dostopformula} + {\dostartformula#3\doeqno \dostopformula}% + \else + \def\formulenummer{\doformulenummer[#1][#2]}% + \let\subformulenummer\doformulenummer + \dostartformula#3\dostopformula + \fi + \par + \ignorespaces + \endgroup} + +%I n=Naast +%I c=\startnaast,\stelnaastplaatsenin +%I +%I Experiment: +%I +%I \startnaast +%I ... +%I \stopnaast +%I +%I \stelnaastplaatsenin[status=] + +\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=\vbox + \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=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\ifsomebackgroundfound#1% + {\edef\!!stringe{\??ma#1}% + \doifelsevaluenothing{\!!stringe\c!achtergrond } + {\doifelsevalue{\!!stringe\c!kader }\v!aan\!!doneatrue + {\doifelsevalue{\!!stringe\c!linkerkader }\v!aan\!!doneatrue + {\doifelsevalue{\!!stringe\c!rechterkader}\v!aan\!!doneatrue + {\doifelsevalue{\!!stringe\c!bovenkader }\v!aan\!!doneatrue + {\doifelsevalue{\!!stringe\c!onderkader }\v!aan\!!doneatrue + \!!doneafalse}}}}} + \!!doneatrue + \if!!donea} + +\def\doaddpagebackground#1#2% + {\doifelsevaluenothing{\??ma#1\c!achtergrond} + {\doifelsevaluenothing{\??ma#1\c!kader} + {\donefalse} + {\donetrue}} + {\donetrue}% + \ifdone + \edef\setpagebackgrounddepth% + {\dp#2=\the\dp#2}% + \setbox#2=\vbox\localframed + [\??ma#1] + [\c!strut=\v!nee,\c!offset=\v!overlay, + \c!breedte=\papierbreedte,\c!hoogte=\papierhoogte] + {\dp#2=\!!zeropoint\box#2}% + \setpagebackgrounddepth + \fi} + +\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% + {\ifsomebackgroundfound{#3#4}% + \localframed + [\??ma#3#4] + [\c!breedte=#1,\c!hoogte=#2,\c!offset=\v!overlay] + {\getvalue{\??ma#3#4\c!commando}}% {\hsize=#1\vsize=#2....} + \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 + \doifnot{\@@mastatus}{\v!herhaal}{\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=, + \c!onderkader=,\c!bovenkader=,\c!linkerkader=,\c!rechterkader=]% + \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]% + {\ifthirdargument + \docheckbackgrounddefinitions + \def\docommando##1% + {\doifinsetelse{##1}{\v!papier,\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\ifsecondargument + \docheckbackgrounddefinitions + \doifcommonelse{#1}{\v!papier,\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]}% + \else\iffirstargument + \getparameters[\??ma][#1]% + \fi\fi\fi + \doifelse{\@@mastatus}{\v!stop} + {\global\newbackgroundfalse} + {\global\newbackgroundtrue}} + +\def\stelachtergrondenin% + {\dotripleempty\dostelachtergrondenin} + +% a lot of setups, including short ones + +\presetlocalframed [\??ma\v!papier] +\presetlocalframed [\??ma\v!pagina] +\presetlocalframed [\??ma\v!linkerpagina] +\presetlocalframed [\??ma\v!rechterpagina] + +\copyparameters + [\??ma\v!papier\c!kader][\??ma\v!pagina] + [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster] + +\copyparameters + [\??ma\v!papier\c!achtergrond][\??ma\v!pagina] + [\c!offset,\c!diepte,\c!straal,\c!hoek,\c!kleur,\c!raster] + +\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\processlocalfile#1#2% + {\doglobal\increment\fileprocesslevel + \setxvalue{\c!file::\fileprocesslevel}{#2}% + \@EA\doglobal\@EA\addtocommalist\@EA{#2}\processedfiles + #1{#2}{}{}% #1=\readlocfile|\readsetfile{dir} #2=filename + \doglobal\decrement\fileprocesslevel} + +\def\processfile#1% + {\ifx\allinputpaths\empty + \processlocalfile{\readlocfile}{#1}{}% + \else + \let\filepath\empty + \def\docommando##1% + {\doiffileelse{\pathplusfile{##1}{#1}} + {\donetrue\def\filepath{##1}} + {\donefalse}% + \ifdone\expandafter\quitcommalist\fi}% + \processcommacommand[.,\allinputpaths]\docommando + \ifx\filepath\empty + \processlocalfile{\readlocfile }{#1}% fall back ../../.. + \else + \processlocalfile{\readsetfile\filepath}{#1}% file found + \fi + \fi} + +\let\allinputpaths\empty + +\def\usepath[#1]% + {\def\docommando##1% + {\doifelse{##1}{\v!reset} + {\let\allinputpaths\empty} + {\addtocommalist{##1}\allinputpaths}}% + \processcommalist[#1]\docommando} + +\def\registreerfileinfo[#1#2]#3% + {\writestatus{\m!systems}{#1#2 file #3 at line \the\inputlineno}% + \immediatewriteutility{f #1 {#3}}} + +\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}}{}} + +% test \@@svgebied + +\def\loadallsystemfiles#1% + {\ifx\@@svgebied\empty + \readsysfile{#1}{\showmessage{\m!systems}{2}{#1}}{}% + \else + \def\doloadsystemfile##1% + {\readsetfile{##1}{#1}{\showmessage{\m!systems}{2}{#1}}{}}% + \processcommacommand[\@@svgebied]\doloadsystemfile + \fi} + +\def\loadsystemfiles% + {\readsysfile{\f!newfilename} + {\showmessage{\m!systems}{2}{\f!newfilename}}{}% + \readsysfile{\f!oldfilename} + {\showmessage{\m!systems}{2}{\f!oldfilename}}{}% + \loadallsystemfiles\f!filfilename + \loadallsystemfiles\f!sysfilename} + +%D Loading of \type {cont-usr.tex} and \type {cont-exe.tex} +%D (the one generated by texexec). + +\def\loaduserspecifications + {\readsysfile{\f!usrfilename} + {\showmessage{\m!systems}{2}{\f!usrfilename}}{}% + \readjobfile{\f!fmtfilename} + {\showmessage{\m!systems}{2}{\f!fmtfilename}}{}} + +%D We don't want multiple jobfiles to interfere. + +\bgroup +\catcode`\%=\@@other +\xdef\texcommentsymbol{%} +\egroup + +\def\loadoptionfile% + {\readjobfile{\jobname.\f!optionextension} + {\showmessage{\m!systems}{2}{\jobname.\f!optionextension}}% + {}} + +% \newevery \everyjob \EveryJob +% \appendtoks ... \to \everyjob + +\prependtoks \showcontextbanner \to \everyjob + +\appendtoks \loadsystemfiles \to \everyjob +\appendtoks \preloadfonts \to \everyjob +\appendtoks \settopskip \to \everyjob +\appendtoks \preloadlanguages \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 % pas op: hangt af van korps + +\appendtoks \pagina[\v!laatste] \pagina \to \everybye +\appendtoks \ifarrangingpages\poparrangedpages\fi \to \everybye +\appendtoks \registreerfileinfo[end]{\jobname} \to \everybye + +\appendtoks \savenofpages \to \everybye +\appendtoks \savenofsubpages \to \everybye + +\appendtoks \closeutilities \to \everygoodbye +\appendtoks \stopcopyingblocks \to \everygoodbye +\appendtoks \closespecialfile \to \everygoodbye + +\appendtoks \checkreferences \to \everystarttext % nieuw 4-12-1999 + +\def\doateverystarttext% + {\the\everystarttext + \global\let\doateverystarttext\relax} + +\def\starttekst% + {\doateverystarttext + \ifnum\textlevel=0\relax + \registreerfileinfo[begin]{\jobname}% + \startcopyingblocks + \fi + \doglobal\increment\textlevel\relax} + +\def\stoptekst% + {\doglobal\decrement\textlevel\relax + \ifnum\textlevel>0 \else + \the\everystoptext + %\the\everybye % + %\the\everygoodbye % == \end (new) + %\expandafter\normalend % + \expandafter\end + \fi} + +\let\normalend=\end + +\def\end% + {\ifnum\textlevel>0 \else + \the\everybye + \the\everygoodbye + \global\everygoodbye\emptytoks % rather unneeded + \global\everybye\emptytoks % but for sure + \expandafter\normalend + \fi} + +\def\doexecutefileonce#1% + {\beforesplitstring#1\at.\to\currentfile + \ExpandBothAfter\doifnotinset{\currentfile}{\loadedfiles}% + {\ExpandFirstAfter\addtocommalist{\currentfile}\loadedfiles + \doexecutefile{#1}}} + +\def\doexecutefile#1% + {\registreerfileinfo[begin]{#1} + \processfile{#1}% + \registreerfileinfo[end]{#1}} + +\def\donotexecutefile#1% + {} + +\def\verwerkfile#1 % + {\doexecutefile{#1}} + +\def\omgeving #1 % at outermost level only + {\def\startomgeving ##1 {}% + \let\stopomgeving=\relax + \startreadingfile + \processfile{#1}% \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 + \expandafter\stoptekst + \else + \decrement\filelevel\relax + \expandafter\endinput + \fi} + +\def\startprojekt #1 % + {\!!donextlevel\currentproject + \donotexecutefile\doexecutefileonce + \doexecutefileonce\doexecutefile#1\\} + +\def\stopprojekt% + {\doprevlevel} + +\def\startprodukt #1 % + {\doateverystarttext + \!!donextlevel\currentproduct + \doexecutefileonce\doexecutefileonce + \donotexecutefile\doexecutefile#1\\} + +\def\stopprodukt% + {\doprevlevel} + +\def\startonderdeel #1 % + {\doateverystarttext + \!!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{\startprodukt} +\def\stopproduct {\stopprodukt} +\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}} + +\edef\utilityversion{1998.07.07} % was: 1996.03.15 % status variables +\edef\utilityversion{1998.12.20} % was: 1998.07.07 % index attributes + +\def\doplaatsversieaanduiding#1#2% + {\doifsomething{#2} + {\@EA\convertargument#2\to\ascii + \ #1: \ascii\ + \!!doneatrue}} + +\def\plaatsversieaanduiding% nog engels maken + {\ifvoorlopig + \vskip\!!sixpoint + \hbox to \zetbreedte + {\infofont + \getmessage\m!systems{27}: \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} + +% this will be inserts some day + +\newbox\referentieinfobox +\newbox\registerinfobox +\newbox\floatinfobox + +\def\dotestinfo#1#2#3% + {\ifvoorlopig\ifinpagebody\else + \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} + {12em} + {..}% + \quad}}}% + \endgroup + \ifinner + \aftergroup\totaltestinfo + \else + \totaltestinfo + \fi + \fi\fi} + +\def\referentieinfo% + {\dotestinfo\referentieinfobox} + +\def\registerinfo% + {\dotestinfo\registerinfobox} + +\def\floatinfo% + {\dotestinfo\floatinfobox} + +\def\plaatstestinfo% + {\setbox0=\vbox to \teksthoogte + {\forgetall + \infofont + \hsize10em + \ifvoid\floatinfobox\else + \strut \getmessage\m!systems{24} + \vskip\!!sixpoint + \unvbox\floatinfobox + \vskip\!!twelvepoint + \fi + \ifvoid\referentieinfobox\else + \strut \getmessage\m!systems{25} + \vskip\!!sixpoint + \unvbox\referentieinfobox + \vskip\!!twelvepoint + \fi + \ifvoid\registerinfobox\else + \strut \getmessage\m!systems{26} + \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\complexdefinieer[#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} + +\definecomplexorsimpleempty\definieer + +\unexpanded\def\naam#1% + {\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\getvalue{\e!start#1}} +\def\complexstop [#1]{\getvalue{\e!stop #1}\egroup} + +\def\simplestart{\bgroup} +\def\simplestop {\egroup} + +\definecomplexorsimple\start +\definecomplexorsimple\stop + +\def\dodefinieerstartstop[#1][#2]% + {\getparameters + [\??be#1] + [\c!voor=, + \c!na=, + \c!commandos=, + \c!letter=, + #2]% +% \setvalue{\e!stel#1\e!in}[##1]% +% {\dodoubleargument\getparameters[\??be##1]}% + \unexpanded\setvalue{#1}% + {\groupedcommand + {\getvalue{\??be#1\c!commandos}% + \dostartattributes{\??be#1}\c!letter\c!kleur} + {\dostopattributes}}% + \setvalue{\e!start#1}% + {\getvalue{\??be#1\c!voor}% + \bgroup + \getvalue{\??be#1\c!commandos}% + \dostartattributes{\??be#1}\c!letter\c!kleur{}}% + \setvalue{\e!stop#1}% + {\dostopattributes + \egroup + \getvalue{\??be#1\c!na}}} + +\def\definieerstartstop% + {\dodoubleargument\dodefinieerstartstop} + +\def\stelstartstopin[#1]% + {\dodoubleargument\getparameters[\??be#1]} + +% 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\dosetupsystem[#1]% + {\getparameters[\??sv][#1]% + \setuprandomize[\@@svwillekeur]% + \beforesplitstring\@@svresolutie\at dpi\to\@@svresolutie + \let\outputresolution=\@@svresolutie} + +\def\setupsystem% + {\dosingleargument\dosetupsystem} + +\def\setuprandomize[#1]% + {\doifsomething{#1} + {\bgroup + \setrandomseed{-1}% + \processaction + [#1] + [ \v!klein=>\divide\time 900, % 15 taco vragen hoe + \v!middel=>\divide\time 1800, % 30 time werkt; nodig voor + \v!groot=>\divide\time 3600, % 60 random pos deadlock + \v!normaal=>, + \s!default=>, + \s!unknown=>\time=#1]% + \nextrandom + \egroup}} + +% Default-instellingen (verborgen) + +\resetutilities + +% Uitgestelde instellingen + +\def\dooutput{\sidefloatoutput} % redefinition of \dooutput + +% Default-instellingen (zichtbaar) + +\setupsystem + [\c!gebied=, + \c!resolutie=300dpi, + \c!willekeur=, + \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!tekstbreedte=, % dangerous here \tekstbreedte + \c!letter=, + \c!markering=\v!uit, + \c!plaats=\v!enkelzijdig, + \c!schaal=1, + \c!nx=1, + \c!ny=1, + \c!dx=\!!zeropoint, + \c!dy=\!!zeropoint, + \c!grid=\v!nee, + \c!regels=, + \c!snijwit=, + \c!bodemwit=] + +% 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] + +\stelpapierformaatin + [\c!boven=, + \c!onder=\vss, + \c!links=, + \c!rechts=\hss] + +\stelinterliniein + [\c!hoogte=.72, + \c!diepte=.28, + \c!boven=1.0, + \c!onder=0.4, + \c!regel=2.8ex] + +\stelkolommenin + [\c!n=2, + \c!nboven=1, + \c!commando=, + \c!richting=\v!rechts, + \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 % \get??tk#1#2#3 would save quite some 3K in fmt size + [\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!hoofd\v!tekst\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!hoofd\v!tekst\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!hoofd\v!marge\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!hoofd\v!marge\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!hoofd\v!rand\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!hoofd\v!rand\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!voet\v!tekst\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!voet\v!tekst\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!voet\v!marge\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!voet\v!marge\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!voet\v!rand\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!voet\v!rand\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!boven\v!tekst\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!boven\v!tekst\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!boven\v!marge\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!boven\v!marge\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!boven\v!rand\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!boven\v!rand\c!breedte}] + +\stelonderin + [\v!tekst] + [\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!onder\v!marge\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!onder\v!marge\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!onder\v!rand\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!tekst\v!tekst\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!tekst\v!tekst\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!tekst\v!marge\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!tekst\v!marge\c!breedte}] + +\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!breedte=, + \c!linkerbreedte=\getvalue{\??tk\v!tekst\v!rand\c!breedte}, + \c!rechterbreedte=\getvalue{\??tk\v!tekst\v!rand\c!breedte}] + +\stelblankoin + [\v!standaard, + \v!groot] + +\definieerblanko[\v!default] [\currentblanko] +\definieerblanko[\v!voor] [\v!default] +\definieerblanko[\v!tussen] [\v!default] +\definieerblanko[\v!na] [\v!voor] + +% doen? + +\def\@@blankovoor {\blanko[\v!voor]} % +\def\@@blankotussen{\blanko[\v!tussen]} % scheelt 5 tokens == >20 bytes +\def\@@blankona {\blanko[\v!na]} % + +\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!achtergrondoffset=\!!zeropoint, + \c!bovenkader=, + \c!onderkader=, + \c!linkerkader=, + \c!rechterkader=, + \c!kaderoffset=\!!zeropoint, + \c!voor=, + \c!na=, + \c!voorwit=\v!groot, + \c!nawit=\v!groot, + \c!zijvoorwit=\@@bkvoorwit, + \c!zijnawit=\@@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] + +\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] % njet + +\stelinmargein + [\v!rechts] + [\c!plaats=\v!rechts] +% \c!uitlijnen=\v!rechts] % njet + +\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] + +\stelparagraafnummerenin + [\c!status=\v!stop, + \c!letter=, + \c!kleur=, + \c!afstand=\ifregelnummersinmarge2em\else\!!zeropoint\fi] + +\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!tussen=\blanko, + \c!inspringen=\v!nee] + +\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] + +\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] + +\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 + [\c!status=\c!start] + +\stelachtergrondenin + [\v!papier,\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, % later set to \v!overlay, watch out ! + \c!diepte=\!!zeropoint, + \c!scheider=\v!nee] + +\def\documentstyle% + {\showmessage{\m!systems}{3}{} + \stoptekst} + +\protect \endinput 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 bijvoorbeeld publicatie is. Dit levert: +% +% \start +% \stop +% +% \beginvan +% \eindvan +% +% \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 diff --git a/tex/context/base/main-003.tex b/tex/context/base/main-003.tex new file mode 100644 index 000000000..989e6a792 --- /dev/null +++ b/tex/context/base/main-003.tex @@ -0,0 +1,657 @@ +%D \module +%D [ file=main-003, +%D version=1997.03.31, +%D title=\CONTEXT\ Core Macros, +%D subtitle=1C (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 (3)} + +\unprotect + +\startmessages dutch library: systems + 41: externe file -- in groep -- bestaat niet +\stopmessages + +\startmessages english library: systems + 41: external file -- in group -- does not exist +\stopmessages + +\startmessages german library: systems + 41: Externe Datei -- in Gruppe -- existiert nicht +\stopmessages + +\startmessages czech library: systems + 41: externi soubor -- ve skupine -- neexistuje +\stopmessages + +%I n=Formules+ +%I c=\startlegenda,\startgegeven +%I +%I Ten behoeve van een consistente toelichting op een +%I formule zijn er de volgende commando's: +%I +%I \startlegenda +%I \leg symbool \\ betekenis \\ dimensie \\ +%I \leg symbool \\ betekenis \\ dimensie \\ +%I \stoplegenda +%I +%I \startgegeven +%I \geg betekenis \\ symbool \\ waarde \\ +%I \geg betekenis \\ symbool \\ waarde \\ +%I \stopgegeven +%I +%I Ten behoeve van het zetten van ub- en superscripts zijn +%I er, naast \hbox, de commando's \xbox en \xxbox. +%P +%I Het onderstaande mag ook: +%I +%I \startlegenda[twee] +%I \leg symbool \\ symbool \\ betekenis \\ dimensie \\ +%I \leg symbool \\ symbool \\ betekenis \\ dimensie \\ +%I \stoplegenda + +\definetabulate + [\e!legenda] + [|emj1|i1|mR|] + +\setuptabulate + [\e!legenda] + [\c!eenheid=.75em,\c!binnen=\setquicktabulate\leg,EQ={=}] + +\definetabulate + [\e!legenda][\v!twee] + [|emj1|emk1|i1|mR|] + +\definetabulate + [\e!gegeven] + [|R|ecmj1|i1mR|] + +\setuptabulate + [\e!gegeven] + [\c!eenheid=.75em,\c!binnen=\setquicktabulate\geg,EQ={=}] + +\unexpanded\def\xbox% + {\bgroup\aftergroup\egroup\hbox\bgroup\tx\let\next=} + +\unexpanded\def\xxbox% + {\bgroup\aftergroup\egroup\hbox\bgroup\txx\let\next=} + +% \def\mrm#1% +% {$\rm#1$} + +%D \macros +%D {setuplegend, placelegend} +%D +%D It makes sense to typeset a legend to a figure in \TEX\ and +%D not in a drawing package. The macro \type {\placelegend} +%D combines a figure (or something else) and its legend. +%D +%D \showsetup{placelegend} +%D +%D The legend is placed according to \type {location}, being +%D \type {bottom} or \type {right}. The macro macro is used as +%D follows. +%D +%D \starttypen +%D \placefigure +%D {whow} +%D {\placelegend +%D {\externalfigure[cow]} +%D {\starttabulation +%D \NC 1 \NC head \NC \NR +%D \NC 2 \NC legs \NC \NR +%D \NC 3 \NC tail \NC \NR +%D \stoptabulation}} +%D +%D \placefigure +%D {whow} +%D {\placelegend +%D {\externalfigure[cow]} +%D {\starttabulation[|l|l|l|l|] +%D \NC 1 \NC head \NC 3 \NC tail \NC \NR +%D \NC 2 \NC legs \NC \NC \NC \NR +%D \stoptabulation}} +%D +%D \placefigure +%D {whow} +%D {\placelegend[n=2] +%D {\externalfigure[cow]} +%D {\starttabulation +%D \NC 1 \NC head \NC \NR +%D \NC 2 \NC legs \NC \NR +%D \NC 3 \NC tail \NC \NR +%D \stoptabulation}} +%D +%D \placefigure +%D {whow} +%D {\placelegend[n=2] +%D {\externalfigure[cow]} +%D {head \par legs \par tail}} +%D +%D \placefigure +%D {whow} +%D {\placelegend[n=2] +%D {\externalfigure[cow]} +%D {\startitemize[packed] +%D \item head \item legs \item tail \item belly \item horns +%D \stopitemize}} +%D +%D \placefigure +%D {whow} +%D {\placelegend[n=2,width=.8\hsize] +%D {\externalfigure[cow]} +%D {\startitemize[packed] +%D \item head \item legs \item tail \item belly \item horns +%D \stopitemize}} +%D \stoptypen +%D +%D There are a few more parameters: +%D +%D \showsetup{setuplegend} + +\def\setuplegend% + {\dodoubleargument\getparameters[\??ld]} + +\setuplegend + [\c!n=1, + \c!afstand=1em, + \c!tussen={\blanko[\v!middel]}, + \c!breedte=\hsize, + \c!hoogte=\vsize, + \c!korps=, + \c!plaats=\v!onder] + +\def\placelegend% + {\bgroup + \dosingleempty\doplacelegend} + +\def\doplacelegend[#1]% watch the hsize/vsize tricks + {\setuplegend[#1]% % and don't change them + \dowithnextbox + {\switchtobodyfont[\@@ldkorps]% split under same regime + \scratchdimen=\wd\nextbox + \doifelse{\@@ldplaats}{\v!rechts} + {\vsize=\ht\nextbox + \vsize=\@@ldhoogte + \hsize=\zetbreedte + \advance\hsize by -\scratchdimen + \advance\hsize by -\@@ldafstand + \plaatsnaastelkaar{\box\nextbox}\bgroup} + {\hsize\scratchdimen + \plaatsonderelkaar{\box\nextbox}\bgroup}% + \hsize\@@ldbreedte + \doif{\@@ldplaats}{\v!rechts}{\hskip\@@ldafstand}% + \ifnum\@@ldn>1 + \setrigidcolumnhsize\hsize\@@ldafstand\@@ldn + \fi + \dowithnextbox + {\doifelse{\@@ldplaats}{\v!rechts} + {\vbox to \vsize + {\ifnum\@@ldn>1 + \rigidcolumnbalance\nextbox + \else + \box\nextbox + \fi + \vfill}} + {\vbox + {\@@ldtussen + \ifnum\@@ldn>1 + \rigidcolumnbalance\nextbox + \else + \box\nextbox + \fi}}% + \egroup\egroup}% + \vbox + \bgroup + \forgetall + \tolerantTABLEbreaktrue % hm. + \blanko[\v!blokkeer]% + \everypar{\begstrut}% + \let\next=} + \hbox} + +%I n=Combinaties +%I c=\startcombinatie,\stelcombinatiesin +%I +%I Er kunnen meerdere tabellen, figuren enz. worden +%I gecombineerd. Dit gebeurt met het commando: +%I +%I \startcombinatie[n*m] +%I {inhoud 1}{ondertitel 1} +%I {inhoud 2}{ondertitel 2} +%I ..... +%I \stopcombinatie +%I +%I Eventueel kan volstaan worden met [n]. Vier inhouden +%I kunnen bijvoorbeeld worden gecombineerd als: +%I +%I [4*1] of [4] vier inhouden naast elkaar +%I [1*4] vier inhouden onder elkaar +%I [2*2] inhouden twee aan twee onder elkaar +%P +%I Dit commando is goed te combineren met \plaats-commando's: +%I +%I \plaatsfiguur[][]{} +%I \startcombinatie[2] +%I {\legefiguur}{a} +%I {\legefiguur}{b} +%I \stopcombinatie +%I +%I Rond \start-\stopcombineer hoeven geen {} te worden +%I geplaatst. +%I +%I De afstanden tussen de inhouden en de titels kunnen worden +%I ingesteld met: +%I +%I \stelcombinatiesin[voor=,na=,tussen=,afstand=, +%I uitlijnen=,hoogte=,breedte=] +%I +%I Waarbij de afstand betrekking heeft op de horizontale +%I afstand (een maat dus) en voor, na en tussen commando's +%I zijn (bijvoorbeeld \blanko). + +%T n=combinaties +%T m=com +%T a=c +%T +%T \startcombinatie +%T {?} {} +%T {} {} +%T \stopcombinatie + +\newcount\horcombinatie % counter +\newcount\totcombinatie + +\def\stelcombinatiesin% + {\dodoubleargument\getparameters[\??co]} + +\long\def\dodostartcombinatie[#1*#2*#3]% + {\stelfractiesin + [\c!n=\v!passend, + \c!afstand=\@@coafstand]% + \global\horcombinatie=#1\relax + \global\totcombinatie=#2\relax + \xdef\maxhorcombinatie{\the\horcombinatie}% + \multiply\totcombinatie by \horcombinatie + \tabskip=\!!zeropoint + \doifelse{\@@cobreedte}{\v!passend} + {\halign} + {\halign to \@@cobreedte}% + \bgroup&\hfil##\hfil&\tabskip\!!zeropoint \!!plus 1fill##\cr + \docombinatie} + +% \def\docombinatie% +% {\dowithnextbox +% {\setbox0=\box\nextbox +% \dowithnextbox +% {\setbox2=\box\nextbox +% \dodocombinatie} +% \hbox} +% \hbox} + +\def\docombinatie% we want to add struts but still ignore an empty box + {\dowithnextbox% + {\setbox0=\box\nextbox + \dowithnextbox + {\setbox2=\box\nextbox + \dodocombinatie} + \vtop\bgroup + \def\next% + {\futurelet\nexttoken\nextnext} + \def\nextnext% + {\ifx\nexttoken\egroup \else % the next box is empty + \hsize\wd0 + \steluitlijnenin[\@@couitlijnen] + \bgroup + \aftergroup\endstrut + \aftergroup\egroup + \begstrut + \fi} + \afterassignment\next\let\nexttoken=} + \hbox} + +\def\dodocombinatie% + {\vbox + {\forgetall % \stelwitruimtein[\v!geen]% + \vbox + {\copy0}% + \ifdim\ht2>\!!zeropoint\relax % beter dan \wd2, nu \strut mogelijk + \@@cotussen + %\vtop + % {\nointerlineskip % recently added + % \hsize\wd0 + % \steluitlijnenin[\@@couitlijnen]% % \raggedcenter + % \begstrut\unhbox2\endstrut}% + \box2 + \fi}% + \ifnum\totcombinatie>1 + \global\advance\totcombinatie by -1 + \global\advance\horcombinatie by -1 + \ifnum\horcombinatie=0 + \def\next% + {\cr\noalign + {\forgetall %\stelwitruimtein[\v!geen]% + \nointerlineskip + \@@cona + \@@covoor + \vss + \nointerlineskip}% + \global\horcombinatie=\maxhorcombinatie\relax + \docombinatie}% + \else + \def\next% + {&&&\hskip\@@coafstand&\docombinatie}% + \fi + \else + \def\next% + {\cr\egroup}% + \fi + \next} + +\def\complexdostartcombinatie[#1]% + {\dodostartcombinatie[#1*1*]} + +\def\simpledostartcombinatie% + {\complexdostartcombinatie[2]} + +\def\startcombinatie% + {\bgroup + \forgetall + \doifelse{\@@cohoogte}{\v!passend} + {\vbox} + {\vbox to \@@cohoogte}% + \bgroup + \complexorsimple\dostartcombinatie} + +\def\stopcombinatie% + {\egroup + \egroup} + +\def\plaatsondernaastelkaar#1#2% + {\bgroup + \def\doplaatsondernaastelkaar% + {#2\cr\omit\bgroup#2% + \aftergroup#2% + \aftergroup\cr + \aftergroup\egroup + \aftergroup\egroup + \let\next=}% + #1\bgroup##\cr + \omit\bgroup#2% + \aftergroup\doplaatsondernaastelkaar + \let\next=} + +\def\plaatsonderelkaar% + {\plaatsondernaastelkaar\halign\hss} + +\def\plaatsnaastelkaar% + {\plaatsondernaastelkaar\valign\vss} + +%I n=Files +%I c=\definieerfile +%I +%I De onderstaande commando's zijn beschikbaar, maar nog in +%I ontwikkeling. +%I +%I \gebruikexternefile [groep] [naam] [file] [instellingen] +%I +%I \gebruikexternefiles [groep] [korps=,file=] +%I \stelexternefilesin [groep] [korps=,file=] +%I +%I \naam{naam} of \naam +%I +%I Standaard zijn gedefinieerd: +%I +%I \gebruikexternefiles[pictex][korps=klein,file=pictex] +%I \gebruikexternefiles[table][file=table] + +\def\dogebruikexternefiles[#1][#2]% + {\getparameters + [\??fi#1] + [\c!file=, + \c!korps=, + \c!optie=, + #2]} + +\def\gebruikexternefiles% + {\dodoubleargument\dogebruikexternefiles} + +\def\dostelexternefilesin[#1][#2]% + {\doifundefinedelse{\??fi#1\c!file} + {\gebruikexternefiles[#1][#2]} + {\getparameters[\??fi#1][#2]}} + +\def\stelexternefilesin% + {\dodoubleargument\dostelexternefilesin} + +\def\verwerkexternefile#1#2#3% + {\bgroup + \getparameters[\??fi#1][\c!file=,#3]% + \doinputonce{\getvalue{\??fi#1\c!file}}% + \ExpandFirstAfter\switchtobodyfont[\getvalue{\??fi#1\c!korps}]% + \readsysfile{#2} % beter: loc of fix gebied + {} + {\showmessage{\m!systems}{41}{#2,#1}}% + \egroup} + +\def\dogebruikexternefile[#1][#2][#3][#4]% + {\stelexternefilesin[#1][]% + \doinputonce{\getvalue{\??fi#1\c!file}}% + \doifelsenothing{#2} + {\setvalue{#3}{\verwerkexternefile{#1}{#3}{#4}}} + {\setvalue{#2}{\verwerkexternefile{#1}{#3}{#4}}}} + +\def\gebruikexternefile% + {\doquadrupleargument\dogebruikexternefile} + +%I n=Roteren +%I c=\roteer +%I +%I Er is een rotatiecommando beschikbaar: +%I +%I \roteer[rotatie=]{} +%I +%I Waarbij als rotatie 0, 90, 180 of 270 kan worden opgegeven. +%I Als extra instellingen kunnen de instellingen van +%I \omlijnd worden meegegeven. Er wordt gebruik gemaakt van +%I het \special commando en het rotatiemechanisme van +%I PostScript. Dit betekent dat in de previewer de tekst +%I niet (!) geroteerd wordt. Overigens draagt TeX zorg voor +%I de exacte plaatsing, uitlijnen enz. De afhankelijkheid +%I van PostScript is dus tot een minimum beperkt. +%I +%I Verder zijn dezelfde instellingen mogelijk als bij +%I \omlijnd. + +\presetlocalframed[\??ro] + +\def\stelroterenin% + {\dodoubleargument\getparameters[\??ro]} + +% \ht, \vfillvoor, \vfillna, \wd, \hfillvoor, \hfillna + +\def\dodostoproteer#1#2#3#4#5#6% + {\dontshowcomposition + \vbox to #1\nextbox + {#2\relax + \hbox to #4\nextbox + {#5\relax + \doifelsenothing{\@@rorotatie} + {\dostartrotation{90}} + {\dostartrotation{\@@rorotatie}}% + \wd\nextbox=\!!zeropoint + \ht\nextbox=\!!zeropoint + \box\nextbox + \dostoprotation + #6} + #3}% + \egroup} + +\def\dostoproteer% + {\!!counta=\@@rorotatie + \divide\!!counta by 90 + \ifcase\!!counta + \dodostoproteer\ht\relax\vfill\wd\relax\hfill + \or + \dodostoproteer\wd\vfill\relax\ht\relax\hfill + \or + \dodostoproteer\ht\vfill\relax\wd\hfill\relax + \or + \dodostoproteer\wd\relax\vfill\ht\hfill\relax + \or + \dodostoproteer\ht\relax\vfill\wd\relax\hfill + \else + \def\@@rotatie{90}% + \dodostoproteer\ht\relax\vfill\wd\relax\hfill + \fi} + +\def\dorotatebox#1% {angle} \hbox/\vbox/\vtop + {\bgroup + \hbox\bgroup % compatibility hack + \dowithnextbox + {\edef\@@rorotatie{#1}% + \setbox\nextbox=\vbox{\box\nextbox}% + \dostoproteer + \egroup}} + +\def\complexroteer[#1]% + {\dowithnextbox + {\getparameters[\??ro][#1]% + \dostoproteer}% + \vbox\localframed[\??ro][#1]} + +\def\roteer% + {\bgroup % \roteer kan argument zijn + \complexorsimpleempty\roteer} + +% schaal + +\def\doschaal[#1]% + {\bgroup + \forgetall + \getparameters[\??xy][\c!sx=1,\c!sy=1,#1]% + \dowithnextbox + {\dontshowcomposition + \dimen0=\@@xysy\ht\nextbox + \dimen2=\@@xysy\dp\nextbox + \dimen4=\@@xysx\wd\nextbox + \dimen6=\dimen0\advance\dimen6 by \dimen2 + \setbox\nextbox=\vbox to \dimen6 + {\ht\nextbox=\!!zeropoint + \dp\nextbox=\!!zeropoint + \vfill % erbij + \dostartscaling\@@xysx\@@xysy\box\nextbox\dostopscaling + }% was \vfill}% + \ht\nextbox=\dimen0 + \dp\nextbox=\dimen2 + \wd\nextbox=\dimen4 + \box\nextbox + \egroup} + \hbox} % was \vbox} + +\def\schaal% + {\dosingleempty\doschaal} + +% mirror + +\def\domirrorbox% \hbox/\vbox/\vtop + {\bgroup + \dowithnextbox + {\dontshowcomposition + \dimen0=\wd\nextbox + \setbox\nextbox=\vbox + {\dostartmirroring\hskip-\wd\nextbox\box\nextbox\dostopmirroring}% + \wd\nextbox=\dimen0 + \box\nextbox + \egroup}} + +\def\spiegel% + {\domirrorbox\hbox} + +%\setbox0=\hbox{gans} +% +%\ruledhbox{\copy0 \schaal[sx=2,sy=2]{\copy0}} +% +%\spiegel{\ruledhbox{\copy0 \schaal{\box0}}} + +% verdelen \hsize in fracties +% +% \fractie[n/m,elementen,afstand] +% +% \fractie[2/5,3,1em] +% \fractie[2/5,3,1em] +% \fractie[1/5,3,1em] +% +% \stelfractiesin[afstand=,aantal=] (passend,passend) + +\def\??fr{@@fr} + +\def\stelfractiesin% + {\dodoubleargument\getparameters[\??fr]} + +\def\dodofractie[#1/#2,#3,#4,#5]% + {\doifelsenothing{#3} + {\doifelse{\@@frn}{\v!passend} + {\!!counta=#2\relax} + {\!!counta=\@@frn\relax}} + {\!!counta=#3\relax}% + \doifelsenothing{#4} + {\doifelse{\@@frafstand}{\v!passend} + {\!!widtha=\!!zeropoint} + {\!!widtha=\@@frafstand}} + {\!!widtha=#4}% + \advance\!!counta by -1\relax + \multiply\!!widtha by \!!counta + \advance\hsize by -\!!widtha + \divide\hsize by #2\relax + \hsize=#1\hsize} + +\def\dofractie[#1]% + {\dodofractie[#1,,,,,,]} + +\def\fractie% + {\dosingleargument\dofractie} + +\stelfractiesin + [\c!afstand=\tfskipsize, + \c!n=\v!passend] + +% Standaardinstellingen + +\stelroterenin + [\c!rotatie=90, + \c!breedte=\v!passend, + \c!hoogte=\v!passend, + \c!offset=\v!overlay, + \c!kader=\v!uit] + +\stelcombinatiesin + [\c!breedte=\v!passend, + \c!hoogte=\v!passend, + \c!afstand=1em, + \c!voor=\blanko, + \c!tussen={\blanko[\v!middel]}, + \c!na=, + \c!uitlijnen=\v!midden] + +\gebruikexternefiles + [pictex] + [\c!korps=\v!klein, + \c!file=pictex] + +\gebruikexternefiles + [table] + [\c!file=table] + +\protect + +\endinput diff --git a/tex/context/base/mult-com.tex b/tex/context/base/mult-com.tex index e2664de00..3df62fa62 100644 --- a/tex/context/base/mult-com.tex +++ b/tex/context/base/mult-com.tex @@ -8,8 +8,8 @@ %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 licen-en.pdf for -%C details. +%C therefore copyrighted by \PRAGMA. See licen-en.pdf for +%C details. %D In this module we define the commands. A more than quick %D glance at this list leans that it's incomplete. This is due @@ -20,8 +20,8 @@ %D the words left of the \type{:} are in dutch. In the near %D future english will be the core language.} %D -%D The German translations were provided by Tobias Burnus, -%D and the Czech ones by Tom Hudec. +%D The German translations were provided by Tobias Burnus, +%D and the Czech ones by Tom Hudec. \writestatus{loading}{Context Multilingual Macros / Commands} @@ -82,7 +82,7 @@ stopcoding: stopcodering stopcoding stopkodierung stopkodovani definebodyfontenvironment: definieerkorpsomgeving definebodyfontenvironment - definierefliesstextumgebung definujzakladnifont + definierefliesstextumgebung definebodyfontenvironment % TOM, was duplicate setupbodyfontenvironment: stelkorpsomgevingin setupbodyfontenvironment stellefliesstextumgebungein nastavprostredizakladnihofont definebodyfont: definieerkorps definebodyfont @@ -95,6 +95,8 @@ definierestil definujstyl definefontstyle: definieerfontstijl definefontstyle definiereschriftstil definujstylfontu + setupstrut: stelstrutin setupstrut + setupstrut setupstrut setuptype: steltypein setuptype stelletipein nastavtype @@ -187,7 +189,7 @@ convertnumber: converteernummer convertnumber konvertierezahl konvertujcislo - setupcapitals: stelkapitalenin setupcapitals + setupcapitals: stelkapitalenin setupcapitals stelleversalienein nastavverzalky kap: kap kap @@ -232,7 +234,7 @@ showbodyfont: toonkorps showbodyfont zeigefliesstext ukazzakladnifont showbodyfontenvironment: toonkorpsomgeving showbodyfontenvironment - zeigefliesstextumgebung ukazpostredizakladnihofont + zeigefliesstextumgebung ukazpostredizakladnihofontu headtext: koptekst headtext ueberschrifttext texthlavicky @@ -269,7 +271,9 @@ inframed: inlijnd inframed imumriss zaramovani mframed: wilijnd maframed - maframed mazaramovani + maumrise maoramovani + inmframed: inwilijnd inmaframed + immaumrise mazaramovani setupframed: stelomlijndin setupframed stelleumrahmtein nastavoramovani @@ -306,7 +310,6 @@ defineoverlay: definieeroverlay defineoverlay definiereoverlay definujprekryv - background: achtergrond background hintergrund pozadi startbackground: startachtergrond startbackground @@ -351,9 +354,6 @@ marginaltitel marginalninadpis margewoord: margewoord marginword marginalwort marginalnislovo - - % dit wordt: - margetekst: margetekst margintext marginaltext marginalnitext @@ -396,7 +396,7 @@ korrigierezwischenraum korekcebilehomista fixedspaces: vastespaties fixedspaces festesspatium tvrdemezery - fixedspace: vastespatie fixedspace + fixedspace: vastespatie fixedspace festesspatium tvrdamezera nospace: geenspatie nospace keinspatium zadnamezera @@ -439,12 +439,14 @@ startzeilen startradky stopregels: stopregels stoplines stopzeilen stopradky + stelparagraafnummerenin: stelparagraafnummerenin setupparagraphnumbering + stelleabsatznummerierungein nastavcislovaniodstavcu stelregelnummerenin: stelregelnummerenin setuplinenumbering - stellezeilennummerierungein nastavcislovaniradku + stellezeilennumerierungein nastavcislovaniradku startregelnummeren: startregelnummeren startlinenumbering - startzeilennummerierung startcislovaniradku + startzeilennumerierung startcislovaniradku stopregelnummeren: stopregelnummeren stoplinenumbering - stopzeilennummerierung stopcislovaniradku + stopzeilennumerierung stopcislovaniradku startregel: startregel startline startzeile startradek stopregel: stopregel stopline @@ -654,7 +656,6 @@ stelarrangerenin: stelarrangerenin setuparranging stelleanordnenein nastavusporadani - versie: versie version version verze @@ -672,8 +673,8 @@ stelleinteraktionsmenueein nastavinterakcnimenu definieerinteractiemenu: definieerinteractiemenu defineinteractionmenu definiereinteraktionsmenue definujinterakcnimenu -% startinteractiemenu: startinteractiemenu startinteractionmenu -% startinteraktionsmenue startinterakcnimenu +% startinteractiemenu: startinteractiemenu startinteractionmenu +% startinteraktionsmenue startinterakcnimenu blokkeerinteractiemenu: blokkeerinteractiemenu disableinteractionmenu inaktiviereinteraktionsmenue zablokujinterakcnimenu interactiebuttons: interactiebuttons interactionbuttons @@ -771,7 +772,7 @@ bepaallijstkenmerken: bepaallijstkenmerken determinelistcharacteristics bestimmelistencharakeristika stanovcharakteristickuseznamu - lijstlengte: lijstlengte listlength + lijstlengte: lijstlengte listlength listenlaenge delkaseznamu lijstbreedte: lijstbreedte listwidth listenbreite sirkaseznamu @@ -781,7 +782,7 @@ geenlijst: geenlijst nolist keineliste zadnyseznam -% zal vervallen +% zal vervallen definieerreferentielijst: definieerreferentielijst definereferencelist definierereferenzliste definujseznamodkazu @@ -947,7 +948,7 @@ % marking: markeer marking % beschriftung oznacujici remark: toelichting remark - bemerkung poznamka + bemerkung remark % other word than poznamka/note, a commenting note colorbar: kleurenbalk colorbar farbbalken barevnalista @@ -978,18 +979,20 @@ referenz odkaz definereference: definieerreferentie definereference definierereferenz definujodkaz + definereferenceformat: definieerreferentieformaat definereferenceformat + definierereferenzformat definujformatodkazu useJSscripts: gebruikJSscripts useJSscripts verwendeJSscript uzijJSscripts uit: uit from - von z + von from % z in: in in - in v + in in % v op: op at - bei v + bei at % v over: over about - euber o + ueber about % o naar: naar goto zu jdina atpage: oppagina atpage @@ -997,23 +1000,28 @@ somewhere: ergens somewhere irgendwo nekde ref: ref ref - ref odkaz + ref odk % short naarbox: naarbox gotobox zurbox jdinabox naarpagina: naarpagina gotopage zurseite jdinastranu -% zurseite % - old but forgotten -% startformule: startformule startformula -% startformel startrovnice -% stopformule: stopformule stopformula -% stopformel stoprovnice +% startformule: startformule startformula +% startformel startrovnice +% stopformule: stopformule stopformula +% stopformel stoprovnice plaatsformule: plaatsformule placeformula platziereformel umistirovnici plaatssubformule: plaatssubformule placesubformula platziereunterformel umistipodrovnici stelformulesin: stelformulesin setupformulae stelleformelnein nastavrovnice + formulenummer: formulenummer formulanumber + formelnummer cislorovnice + + subformulenummer: subformulenummer subformulanumber + unterformelnummer cislopodrovnice + % startgegeven: startgegeven startfact % startgegeben startfakt % stopgegeven: stopgegeven stopfact @@ -1022,9 +1030,9 @@ % startlegende startlegenda % stoplegenda: stoplegenda stoplegend % stoplegende stoplegenda - leg: leg leg + leg: leg leg leg leg - geg: geg fact + geg: geg fact geg fakt mathematics: wiskunde mathematics @@ -1124,6 +1132,9 @@ stopopmaak: stopopmaak stopmakeup stopumbruch stopuprava + useexternalsoundtrack: gebruikexterngeluidsfragment useexternalsoundtrack + verwendeexternestonstueck uzijexternizvuk + gebruikexternefile: gebruikexternefile useexternalfile verwendeexternedatei uzijexternisoubor gebruikexternefiles: gebruikexternefiles useexternalfiles @@ -1134,11 +1145,11 @@ kenmerkdatum: kenmerkdatum referraldate verweisdatum odkaznadatum - hoog: hoog high + high: hoog high hoch vysoky - laho: laho lohi + lohi: laho lohi hoti nivy - laag: laag low + low: laag low tief nizky % startuitstellen: startuitstellen startpostponing @@ -1212,8 +1223,8 @@ setupsystem: stelsysteemin setupsystem stellesystemein nastavsystem - usepath: gebruikgebied usepath - benutzepfad uzijcestu + usepath: gebruikgebied usedirectory + benutzeverzeichnis uzijcestu % TOBIAS definieeralineas: definieeralineas defineparagraphs definiereabsaetze definujodstavce @@ -1253,27 +1264,61 @@ tooltip: suggestie tooltip tooltip bublinkovanapoveda fillinfield: invulveld fillinfield - ausfuellfeld vyplnovepole % or vyplnenepole ? + ausfuellfeld vyplnovepole definefieldstack: definieerveldstapel definefieldstack definierefeldstapel definujzasobnikpoli fieldstack: veldstapel fieldstack feldstapel zasobnikpoli - setupclipping: stelclipin setupclipping - stelleausschnittein setupclipping % TOM - clip: clip clip - ausschnitt clip % TOM + setupclipping: stelclipin setupclipping + stelleausschnittein nastavorez + clip: clip clip + ausschnitt orez - placelegend: plaatslegenda placelegend - platzierelegende placelegend % TOM + placelegend: plaatslegenda placelegend + platzierelegende umistilegendu setuplegend: stellegendain setuplegend - stellelegendeein setuplegend % TOM - - setuppagecomment: stelpaginacommentaarin setuppagecomment - setuppagecomment setuppagecomment % TOBIAS % TOM + stellelegendeein nastavlegendu + + setuppagecomment: stelpaginacommentaarin setuppagecomment + stelleseitenkommentarein nastavkomentarstrany + + setupstrut: stelstrutin setupstrut + setupstrut setupstrut + + definerule: definieerlijn definerule + definerule definerule + placerule: plaatslijn placerule + placerule placerule + setuprule: stellijnin setuprule + setuprule setuprule + + definetextvariable: definieertekstvariabele definetextvariable + definetextvariable definetextvariable + setuptextvariable: steltekstvariabelein setuptextvariable + setuptextvariable setuptextvariable + settextvariable: kentekstvariabeletoe settextvariable + settextvariable settextvariable + placetextvariable: plaatstekstvariabele placetextvariable + placetextvariable placetextvariable + textvariable: tekstvariabele textvariable + textvariable textvariable + + definetextposition: definieertekstpositie definetextposition + definetextposition definetextposition + setuptextposition: steltekstpositiein setuptextposition + setuptextposition setuptextposition + positiontext: positioneertekst positiontext + positiontext positiontext + definerawfont: definerawfont definerawfont + definerawfont definerawfont + switchtorawfont: switchtorawfont switchtorawfont + switchtorawfont switchtorawfont \stopcommands +% ^ ^ ^ nadenken over \settextvariable vs \setuptextvariable in nl + %D \stopcompressdefinitions %D There are a lot of variables that users can use in setups diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex index 03b370db8..765011727 100644 --- a/tex/context/base/mult-con.tex +++ b/tex/context/base/mult-con.tex @@ -75,7 +75,7 @@ \startvariables dutch english german czech - oppagina: oppagina atpage aufseite nastrane + oppagina: oppagina atpage aufseite nastrance hierboven: hierboven hencefore vorher vyse hieronder: hieronder hereafter nachher nize @@ -89,6 +89,8 @@ %D \startcompressdefinitions +% to be added: sub subsub subsubsub subsubsubsub + \startvariables dutch english german czech @@ -107,8 +109,8 @@ titul margetitel: margetitel margintitle marginaltitel - margetitel % TOM - + titulmarginalie + inhoud: inhoud content inhalt obsah inhouden: inhouden contents inhalte @@ -275,6 +277,8 @@ predel afstand: afstand distance abstand vzdalenost + alinea: alinea paragraph absatz + odstavec assenstelsel: assenstelsel axis achsen osa auteur: auteur author autor @@ -291,6 +295,8 @@ prekazka blokwijze: blokwijze blockway blockauf dobloku + bodemwit: bodemwit bottomspace bottomspace + bottomspace boven: boven top oben vrsek bovenafstand: bovenafstand topdistance obenabstand @@ -315,6 +321,10 @@ kontrastnibarva conversie: conversie conversion konversion konverze + kopconversie: kopconversie headconversion headconversion + konverzehlavicky % TOBIAS + koplabel: koplabel headlabel headlabel + popisekhlavicky % TOBIAS criterium: criterium criterium kriterium kriterium datum: datum date datum @@ -330,7 +340,7 @@ doorgaan: doorgaan continue fortsetzen pokracovat dubbelzijdig: dubbelzijdig doublesided doppelseitig - dvoustranny + oboustranne dummy: dummy dummy dummy dummy eenheid: eenheid unit einheit @@ -344,7 +354,7 @@ factor: factor factor faktor faktor converteerfile: converteerfile convertfile konvertieredatei - converteerfile % TOM + konverzesouboru file: file file datei soubor formaat: formaat size groesse @@ -357,11 +367,12 @@ adresar grid: grid grid gritter mrizka - groot: groot big gross velky + groot: groot big gross + velky haal: haal get hole ziskat hang: hang hang haengend - viset + zaveseni herhaal: herhaal repeat wiederholen opakovat hfactor: hfactor hfactor hfaktor @@ -409,7 +420,11 @@ kantlijn: kantlijn marginedge marginalkante textovahrana kantlijntekst: kantlijntekst marginedgetext marginalkantetext - textmarginalnihookraje + textmarginalnihookraje + karakteruitlijnen: karakteruitlijnen aligncharacter aligncharacter + aligncharacter % TOBIAS / TOM + uitlijnkarakter: uitlijnkarakter alignmentcharacter alignmentcharacter + alignmentcharacter % TOBIAS / TOM klein: klein small klein male kleur: kleur color farbe @@ -419,19 +434,19 @@ kolomafstand: kolomafstand columndistance spaltenabstand vzdalenostsloupcu kopkleur: kopkleur headcolor kopffarbe - barvahlavy + barvahlavicky kopletter: kopletter headstyle kopfstil - stylhlavy + stylhlavicky kopna: kopna afterhead nachkopf - pohlave + pohlavicce kopoffset: kopoffset veroffset kopfoffset - offsethlavy + offsethlavicky koppeling: koppeling coupling verknuepfung propojeni koppelwijze: koppelwijze couplingway verkopplungsart zpusobpropojeni kopvoor: kopvoor beforehead vorkopf - predhlavou + predhlavickou kopwit: kopwit topspace kopfspatium svrchnimezera korps: korps bodyfont fliesstext @@ -477,13 +492,13 @@ logos: logos logos logos loga lokaal: lokaal local lokal - lokalni + lokalne marge: marge margin marginalie marginalie margeafstand: margeafstand margindistance marginalabstand vzdalenostokraje margetekst: margetekst margintext marginaltext - margetekst % TOM: must be unique + textmarginalie markering: markering marking beschriftung znaceni markleur: markleur marcolor beschrfarbe @@ -549,21 +564,21 @@ onevenmarge: onevenmarge oddmargin ungeraderand lichyokraj op: op at bei - op % TOM: not 'na', since that's already taken by aan: + u % not 'na', since that's already taken by 'aan' optie: optie option option volba pagina: pagina page seite - strana + stranka paginacommando: paginacommando pagecommand seitenbefehl strankovyprikaz paginakleur: paginakleur pagecolor seitenfarbe - barvastrany + barvastranky paginaletter: paginaletter pagestyle seitenstil - stylstrany + stylstranky paginanummer: paginanummer pagenumber seitennummer - cislostrany + cislostranky paginaovergangen: paginaovergangen pageboundaries seitenbegrenzung - hranicestrany + hranicestranky palet: palet palet palette paleta papier: papier paper papier @@ -573,9 +588,9 @@ plaatsafsluiter: plaatsafsluiter placestopper setzetrenner predelmista plaatsen: plaatsen place platziere - plaatsen % TOM: must be unique, 'to place' or 'place it' + umistit plaatskop: plaatskop placehead setzekopf - hlavamista + umistihlavicku prefix: prefix prefix prefix prefix preset: preset preset voreinstellung @@ -633,7 +648,7 @@ rugwit: rugwit backspace rumpfspatium zpetnamezera richting: richting direction richtung - richting % TOM + smer schaal: schaal scale format meritko scheider: scheider separator seperator @@ -646,6 +661,8 @@ oddil sectienummer: sectienummer sectionnumber abschnittsnummer cislooddilu + snijwit: snijwit cutspace cutspace + cutspace soort: soort family familie rodina spatie: spatie space spatium @@ -689,6 +706,8 @@ znak tekst: tekst text text text + tekstbreedte: tekstbreedte textwidth textbreite + sirkatextu tekstcommando: tekstcommando textcommand textbefehl textovyprikaz tekstformaat: tekstformaat textsize textgroesse @@ -710,7 +729,7 @@ tussen: tussen inbetween zwischen mezi type: type type typ - type + typ uitlijnen: uitlijnen align ausrichtung zarovnani urlspatie: urlspatie urlspace urlspatium @@ -748,11 +767,11 @@ vorigenummer: vorigenummer previousnumber vorigenummer predchozicislo wachttijd: wachttijd delay wartezeit - wachttijd % TOM + prodleva wijze: wijze way art zpusob willekeur: willekeur random zufaellig - willekeur % TOM + nahodne wit: wit white weiss bily xfactor: xfactor xfactor xfaktor @@ -776,9 +795,9 @@ ystap: ystap ystep yschritt ykrok zelfdepagina: zelfdepagina samepage selbeseite - stejnastrana + stejnastranka zij: zij side objektabstand - zij % TOM: was strana must be unique, see pagina: + strana veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrundfarbe barvapozadipole @@ -793,10 +812,10 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund zavriakci openpaginaactie: openpaginaactie openpageaction openpageaction - openpageaction % TOBIAS % TOM + akceotevrenistranky % TOBIAS sluitpaginaactie: sluitpaginaactie closepageaction closepageaction - closepageaction % TOBIAS % TOM - + akcezavrenistranky % TOBIAS + klikin: klikin clickin klickin klikuvnitr klikuit: klikuit clickout klickaus @@ -815,21 +834,21 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund pocitat klik: klik click klick - klik % TOM + klik vcommando: vcommando vcommand vbefehl - vcommando % TOM + vprikaz icommando: icommando icommand ibefehl - icommando % TOM + iprikaz ccommando: ccommando ccommand cbefehl - ccommando % TOM + cprikaz \stopconstants %D \stopcompressdefinitions %D The keywords of values are very language specific and -%D therefore variables for the systems. This list shows soem +%D therefore variables for the systems. This list shows some %D overlap with the previous one. %D \startcompressdefinitions @@ -838,7 +857,8 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund czech aan: aan on an - na + zap % opposite of off + aanelkaar: aanelkaar serried kleinerabstand semknuto aansluitend: aansluitend joinedup keinabstand @@ -853,8 +873,8 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund akce afsluiter: afsluiter stopper trenner predel - alinea: alinea paragraph absaetze - odstavce % TOBIAS % TOM -> singular + alinea: alinea paragraph absatz + odstavec alles: alles all alles vse altijd: altijd always immer @@ -872,7 +892,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund boven: boven top oben vrsek breed: breed wide breit - siroky + siroce breedte: breedte width breite sirka buffer: buffer buffer puffer @@ -898,7 +918,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund definitief: definitief final endfassung finalni diepte: diepte depth tiefe - hloubka + podlehloubky % ? hloubka dubbelzijdig: dubbelzijdig doublesided doppelseitig dvoustranny eerste: eerste first erste @@ -906,7 +926,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund elk: elk each jede kazdy enkelzijdig: enkelzijdig singlesided einzelseitig - jednostranny + jednostranne ergens: ergens somewhere irgendwo nekde nergens: nergens nowhere nirgens @@ -918,7 +938,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund file: file file datei soubor flexibel: flexibel flexible flexibel - prizpusobivy + prizpusobive forceer: forceer force zwinge sila gebruikt: gebruikt used verwende @@ -934,13 +954,13 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund gespiegeld: gespiegeld mirrored gespiegelt zrcadleno globaal: globaal global global - globalni + globalne grid: grid grid gritter mrizka groot: groot big gross velky grotevoorkeur: grotevoorkeur bigpreference grosszuegig - velkaprednost + vysokapriorita grijs: grijs gray grau seda halveregel: halveregel halfline halbezeile @@ -962,7 +982,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund hoogte: hoogte height hoehe vyska horizontaal: horizontaal horizontal horizontal - horizontalni + horizontalne huidige: huidige current aktuell aktualni italic: italic italic italic @@ -973,6 +993,8 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund naokraji inrechter: inrechter inright imrechten vpravo + interactie: interactie interaction interaktion + interakce intekst: intekst intext imtext dotextu intro: intro intro intro @@ -1014,11 +1036,11 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund kleinvetitalic: kleinvetitalic smallbolditalic kleinfettitalic maletucnekurzivni kleur: kleur color farbe - barva + barevne kolommen: kolommen columns spalten sloupce kop: kop head kopf - hlava + hlavicka laag: laag low tief nizko laatste: laatste last letzte @@ -1026,7 +1048,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund label: label label label popisek lang: lang tall lang - vysoky + vysoko leeg: leeg empty leer prazdne Letter: Letter Character Buchstabe @@ -1041,18 +1063,20 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund nasirku lijn: lijn rule linie linka + lijst: lijst list liste + seznam linkermarge: linkermarge leftmargin linkerrand levyokraj linkerpagina: linkerpagina leftpage linkerseite - levastrana + levastranka linkerrand: linkerrand leftedge linkekante levahrana links: links left links vlevo lokaal: lokaal local lokal - lokalni + lokalne nieuw: nieuw new neu - nieuw % TOM + novy MAAND: MAAND MONTH MONAT MESIC maand: maand month monat @@ -1068,13 +1092,13 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund middel: middel medium mittel stredni midden: midden middle mittig - stredni + nastred na: na after nach po naam: naam name name jmeno naast: naast opposite gegenueber - opacny + naproti % ? opacna nee: nee no nein ne negatief: negatief negative negativ @@ -1098,7 +1122,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund opelkaar: opelkaar packed gepackt zhustene vanelkaar: vanelkaar unpacked ungepackt - vanelkaar % TOM + rozbalene opmaak: opmaak markup umbruch zlom opmarge: opmarge atmargin amrand @@ -1106,17 +1130,15 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund overlay: overlay overlay overlay prekryv pagina: pagina page seite - strana + stranka paginanummer: paginanummer pagenumber seitennummer - cislostrany + cislostranky papier: papier paper papier papir scherm: scherm display bildschirm obrazovka passend: passend fit passend - prizpusobivy - per: per by pro - skrz + prizpusobive postscript: postscript postscript postscript postscript preview: preview preview vorschau @@ -1136,13 +1158,15 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund rechtermarge: rechtermarge rightmargin rechterrand pravyokraj rechterpagina: rechterpagina rightpage rechterseite - pravastrana + pravastranka rechterrand: rechterrand rightedge rechterkante pravahrana rechts: rechts right rechts vpravo regel: regel line zeile radek + register: register register register + rejstrik relatief: relatief relative relativ relativni reset: reset reset zuruecksetzten @@ -1156,11 +1180,11 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund Grieks: Grieks Greek Griechisch Recky rond: rond round rund - kolo + zaobleny roteer: roteer rotate drehe otoc rek: rek stretch strecken - rek % TOM + natahnout ruim: ruim broad breit siroky schuin: schuin slanted geneigt @@ -1202,7 +1226,7 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund type: type type tippen type uit: uit off aus - pryc + vyp % opposite of on url: url url url url URL: URL URL URL @@ -1230,11 +1254,11 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund voor: voor before vor pred voorgrond: voorgrond foreground vordergrund - voorgrond % TOM + popredi voorkeur: voorkeur preference einstellung nastaveni voorlopig: voorlopig temporary temporaer - docasny + docasne vooruit: vooruit forward vorwaerts vpred vorige: vorige previous vorig @@ -1263,33 +1287,33 @@ veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor feldhintergrund smallcaps: smallcaps smallcaps smallcaps maleverzalky WOORD: WOORD WORD WORT - WOORD % TOM + SLOVO eerstepagina: eerstepagina firstpage ersteseite - prvnistrana + prvnistranka vorigepagina: vorigepagina previouspage vorigeseite - predchozistrana + predchozistranka volgendepagina: volgendepagina nextpage folgendeseite - dalsistrana + dalsistranka laatstepagina: laatstepagina lastpage letzteseite - poslednistrana + poslednistranka eerstesubpagina: eerstesubpagina firstsubpage ersteunterseite - prvnipodstrana + prvnipodstranka vorigesubpagina: vorigesubpagina previoussubpage vorigeunterseite - predchozipodstrana + predchozipodstranka volgendesubpagina: volgendesubpagina nextsubpage folgendeunterseite - dalsipodstrana + dalsipodstranka laatstesubpagina: laatstesubpagina lastsubpage letzteunterseite - poslaednipodstrana + poslaednipodstranka volgendeevenpagina: volgendeevenpagina nextevenpage naechstegeradeseite - volgendeevenpagina % TOM + dalsisudastranka volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungeradeseite - volgendeonevenpagina % TOM + dalsilichastranka vorigeevenpagina: vorigeevenpagina previousevenpage vorigegeradeseite - vorigeevenpagina % TOM + predchozisudastranka vorigeonevenpagina: vorigeonevenpagina previousoddpage vorigeungeradeseite - vorigeonevenpagina % TOM + predchozilichastranka alleenleesbaar: alleenleesbaar readonly nurlesbar pouzeprocteni @@ -1307,7 +1331,24 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades tisknutelne bookmark: bookmark bookmark bookmark - bookmark + zalozka + +\stopvariables + +%D \stopcompressdefinitions + +%D Maybe it's better to make the next few variables into +%D elements as well. + +%D \startcompressdefinitions + +\startvariables dutch english german + czech + + conversie: conversie conversion konversion + konverze + per: per by pro + skrz \stopvariables @@ -1324,6 +1365,8 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades dy: dy nx: nx ny: ny + nr: nr + nc: nc sx: sx sy: sy n: n @@ -1403,6 +1446,8 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades oddil register: register register register rejstrik + interactie: interactie interaction interaktion + interakce synoniem: synoniem synonym synonym synonymum synoniemen: synoniemen synonyms synonyme @@ -1413,12 +1458,12 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades tridit naam: naam name name jmeno - blok: blok block block - blok - blokken: blokken blocks bloecke - bloky - alinea: alinea paragraph absaetze - odstavce % TOBIAS % TOM -> singular + blok: blok float gleitobjekt + plvouciobjekt + blokken: blokken floats gleitobjekte + plvouciobjekty + alinea: alinea paragraph absatz + odstavec framedtext: kadertekst framedtext umrahmtertext oramovanytext @@ -1452,7 +1497,7 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades huidigelokale: huidigelokale currentlocal aktuelllokal aktualnelokalni in: in - ein - v % TOM needed? + - % v, not really needed instellingen: instellingen setups einstellungen nastaveni interactiemenu: interactiemenu interactionmenu interaktionsmenue @@ -1468,11 +1513,11 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades lijstmet: lijstmet listof auflistenvon seznam lokale: lokale local lokal - lokalni + lokalne opmaak: opmaak makeup umbruch zlom plaats: plaats place platziere - misto + umisti % better than 'misto' reserveer: reserveer reserve reservieren rezervovat start: start start start @@ -1516,10 +1561,10 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades legenda helptext: helptekst helptext hilfetext - helptekst % TOM + textnapovedy pagecomment: paginacommentaar pagecomment pagecomment - pagecomment % TOBIAS % TOM + komentarstranky % TOBIAS \stopelements @@ -1537,7 +1582,7 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades FirstPage: EerstePagina FirstPage ErsteSeite PrvniStrana PreviousPage: VorigePagina PreviousPage VorigeSeite - PredchoziStrana + JdiNaStranku NextPage: VolgendePagina NextPage FolgendeSeite DalsiStrana LastPage: LaatstePagina LastPage LetzteSeite @@ -1574,6 +1619,15 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades ResumeMovie: HervatFilm ResumeMovie FortsetzenFilm PokracovatVeFilmu + StartSound: StartGeluid StartSound StartSound + StartZvuk % TOBIAS + StopSound: StopFilm StopSound StopSound + StopZvuk % TOBIAS + PauseSound: PauzeerFilm PauseSound PauseSound + PauzaZvuk % TOBIAS + ResumeSound: HervatSound ResumeSound ResumeSound + PokracovatZvuk % TOBIAS + SaveForm: BewaarFormulier SaveForm SpeicheFormular UlozitFormular LoadForm: LaadFormulier LoadForm LadeFormular @@ -1597,17 +1651,17 @@ volgendeonevenpagina: volgendeonevenpagina nextoddpage naechsteungerades czech New: Nieuw New Neu - Nieuw % TOM + Novy Balloon: Ballon Balloon Ballon - Ballon % TOM + Bublinka Addition: Toevoeging Addition Zusatz - Toevoeging % TOM + Pridavek % Dodatek Help: Help Help Hilfe - Help % TOM + Napoveda Paragraph: Paragraaf Paragraph Absatz - Paragraaf % TOM + Odstavec Key: Sleutel Key Schluessel - Sleutel % TOM + Klic \stopvariables diff --git a/tex/context/base/mult-ini.tex b/tex/context/base/mult-ini.tex index ffdd61f85..16e67b67f 100644 --- a/tex/context/base/mult-ini.tex +++ b/tex/context/base/mult-ini.tex @@ -436,7 +436,7 @@ \fi} %D \macros -%D {dosetvalue,dosetevalue,docopyvalue,doresetvalue} % dogetvalue +%D {dosetvalue,dosetevalue,dosetgvalue,docopyvalue,doresetvalue} % dogetvalue %D %D We already defined these auxiliary macros in the system %D modules. Starting with this module however, we have to take @@ -547,6 +547,16 @@ \@EA\edef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}% \fi} +\def\dosetgvalue#1#2#3% + {\let\c!internal!\c!internal!n + \@EA\ifx\csname\k!prefix!#2\endcsname\relax + \let\c!internal!\c!internal!y + \@EA\gdef\csname#1#2\endcsname{#3}% + \else + \let\c!internal!\c!internal!y + \@EA\gdef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}% + \fi} + \def\docopyvalue#1#2#3% {\let\c!internal!\c!internal!n \@EA\ifx\csname\k!prefix!#3\endcsname\relax @@ -585,6 +595,16 @@ \@EA\edef\csname#1#2\endcsname{#3}% \fi} +\def\dosetgvalue#1#2#3% + {\let\c!internal!\c!internal!n + \ifcsname\k!prefix!#2\endcsname + \let\c!internal!\c!internal!y + \@EA\gdef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}% + \else + \let\c!internal!\c!internal!y + \@EA\gdef\csname#1#2\endcsname{#3}% + \fi} + \def\docopyvalue#1#2#3% {\let\c!internal!\c!internal!n \ifcsname\k!prefix!#3\endcsname @@ -1125,7 +1145,6 @@ %D \macros %D {startelements} -%D {} %D %D Due to the object oriented nature of \CONTEXT, we also need %D to define the elements that are used to build commands: diff --git a/tex/context/base/mult-sys.tex b/tex/context/base/mult-sys.tex index 4203fda89..599d063c1 100644 --- a/tex/context/base/mult-sys.tex +++ b/tex/context/base/mult-sys.tex @@ -343,15 +343,16 @@ \definesystemvariable {ef} % ExternFiguur \definesystemvariable {ep} % ExternfiguurPreset \definesystemvariable {ex} % ExterneFiguren +\definesystemvariable {ht} % HiddenText \definesystemvariable {fd} % FielD -\definesystemvariable {fg} % FiGuurmaten \definesystemvariable {ff} % FontFile +\definesystemvariable {fg} % FiGuurmaten \definesystemvariable {fi} % FIle \definesystemvariable {fl} % Floats \definesystemvariable {fm} % ForMules -\definesystemvariable {ft} % FonTs \definesystemvariable {fp} % FilegroeP \definesystemvariable {fs} % FileSynonym +\definesystemvariable {ft} % FonTs \definesystemvariable {ia} % Interactie \definesystemvariable {ib} % InteractieBalk \definesystemvariable {id} % Index @@ -376,8 +377,8 @@ \definesystemvariable {kt} % KonTakten \definesystemvariable {kw} % KontaktWaarde \definesystemvariable {la} % LAnguage -\definesystemvariable {lg} % taal (LanGuage) \definesystemvariable {ld} % LegenDa +\definesystemvariable {lg} % taal (LanGuage) \definesystemvariable {li} % LIjst \definesystemvariable {ln} % LijNen \definesystemvariable {lo} % LOgos @@ -400,6 +401,7 @@ \definesystemvariable {pc} % PageComment \definesystemvariable {pf} % ProFiel \definesystemvariable {pg} % KoppelPagina +\definesystemvariable {ph} % ParagrapH \definesystemvariable {pl} % PLaats \definesystemvariable {pn} % PaginaNummer \definesystemvariable {pp} % PaPier @@ -416,6 +418,7 @@ \definesystemvariable {sa} % ScAle \definesystemvariable {sb} % SectieBlok \definesystemvariable {sc} % SCherm +\definesystemvariable {sd} % SounD \definesystemvariable {se} % SEctie \definesystemvariable {si} % SplIt \definesystemvariable {sk} % SectieKop diff --git a/tex/context/base/ppchtex.tex b/tex/context/base/ppchtex.tex index 4d7de633e..8e3bb50e9 100644 --- a/tex/context/base/ppchtex.tex +++ b/tex/context/base/ppchtex.tex @@ -485,7 +485,7 @@ \endpspicture \or \resetchemicalcoordinates - \setbox2=\hbox{\getMPdrawing}% + \setbox2=\hbox{\MPshiftdrawingtrue\getMPdrawing}% \wd2=\!!zeropoint\ht2=\!!zeropoint\dp2=\!!zeropoint \put {\box2} at 0 0 \endpicture @@ -524,7 +524,7 @@ \put {\box\chemicalsymbols} at 0 0 % elders \ifMPdrawingdone \resetchemicalcoordinates - \setbox2=\hbox{\getMPdrawing}% + \setbox2=\hbox{\MPshiftdrawingtrue\getMPdrawing}% \wd2=\!!zeropoint\ht2=\!!zeropoint\dp2=\!!zeropoint \put {\box2} at 0 0 % \fi diff --git a/tex/context/base/s-abr-01.tex b/tex/context/base/s-abr-01.tex index d11fd3633..870dee7a7 100644 --- a/tex/context/base/s-abr-01.tex +++ b/tex/context/base/s-abr-01.tex @@ -129,6 +129,8 @@ \logo [WDT] {wdt} \logo [WWW] {www} \logo [XML] {xml} +\logo [XSL] {xsl} +\logo [XSLT] {xslt} \logo [XDVI] {Xdvi} \logo [XINDY] {Xindy} \logo [YandY] {y\&y} diff --git a/tex/context/base/s-chi-00.tex b/tex/context/base/s-chi-00.tex new file mode 100644 index 000000000..36c372c00 --- /dev/null +++ b/tex/context/base/s-chi-00.tex @@ -0,0 +1,47 @@ +%D \module +%D [ file=s-chi-01, +%D version=1999.12.21, +%D title=\CONTEXT\ Style File, +%D subtitle=Basic Chinese Style, +%D author=Hans Hagen, +%D date=\currentdate, +%D suggestions=Wang Lei, +%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. + +\mainlanguage[cn] + +\setupbodyfont[chi] + +\unprotect + +\stelsectiein [\v!sectionlevel-1] [\c!kopconversie=\s!chinese] +\stelsectiein [\v!sectionlevel-2] [\c!kopconversie=\s!chinese] +\stelsectiein [\v!sectionlevel-3] [\c!kopconversie=\s!chinese] + +\stelkopin [\v!hoofdstuk] [\c!afstand=1.25em] +\stelkopin [\v!paragraaf] [\c!afstand=1.25em] +\stelkopin [\v!sub\v!paragraaf] [\c!afstand=1.00em] + +\stellijstin [\v!hoofdstuk] [\c!koplabel=\v!ja,\c!kopconversie=\v!ja,\c!breedte=5em] +\stellijstin [\v!paragraaf] [\c!koplabel=\v!ja,\c!kopconversie=\v!ja,\c!breedte=5em] + +\stelmarkeringin [\v!hoofdstuk\v!nummer] [\c!koplabel=\v!ja,\c!kopconversie=\v!ja] +\stelmarkeringin [\v!paragraaf\v!nummer] [\c!koplabel=\v!ja,\c!kopconversie=\v!ja] + +\setuplabeltext[cn][\v!sub\v!paragraaf={\symbol[S]\kern.25em}] +\setuplabeltext[cn][\v!sub\v!sub\v!paragraaf={\symbol[S]\kern.25em}] +\setuplabeltext[cn][\v!sub\v!sub\v!sub\v!paragraaf={\symbol[S]\kern.25em}] +\setuplabeltext[cn][\v!sub\v!sub\v!sub\v!sub\v!paragraaf={\symbol[S]\kern.25em}] + +% nog taalonafhankelijk maken -> \e!tabel enz + +\definereferenceformat [intable] [\c!label=\v!tabel] +\definereferenceformat [infigure] [\c!label=\v!figuur] +\definereferenceformat [inchapter] [\c!label=\v!hoofdstuk] +\definereferenceformat [insection] [\c!label=\v!paragraaf] + +\protect \endinput diff --git a/tex/context/base/s-faq-01.tex b/tex/context/base/s-faq-01.tex index 41618a375..f3197842d 100644 --- a/tex/context/base/s-faq-01.tex +++ b/tex/context/base/s-faq-01.tex @@ -75,6 +75,7 @@ \setupregister [index] [coupling=yes, + unknownreference=none, interaction=text] \coupleregister @@ -120,7 +121,8 @@ \def\CurrentIndexOfFAQ% {\bgroup \setupinteraction[color=]% - \menubox[bottom]{\let\index\coupledindex\IndexOfFAQ}% + \menubox[bottom]% + {\hskip-.5em\def\index{\hskip.5em\coupledindex}\IndexOfFAQ}% \egroup} \setupinteractionmenu @@ -192,15 +194,13 @@ \pagereference[faqs] \useblocks[question]} -\def\MyFrame% - {\startreusableMPgraphic{Frame:\overlaywidth:\overlayheight} - path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ; - pickup pencircle scaled 2pt ; - fill p withcolor \MPcolor{\overlaycolor} ; - draw p withcolor \MPcolor{\overlaylinecolor} ; - \stopreusableMPgraphic - \reuseMPgraphic{Frame:\overlaywidth:\overlayheight}} +\startuniqueMPgraphic{Frame} + path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ; + pickup pencircle scaled 2pt ; + fill p withcolor \MPcolor{\overlaycolor} ; + draw p withcolor \MPcolor{\overlaylinecolor} ; +\stopuniqueMPgraphic -\defineoverlay[MyFrame][\MyFrame] +\defineoverlay[MyFrame][\uniqueMPgraphic{Frame}] \endinput diff --git a/tex/context/base/s-map-01.tex b/tex/context/base/s-map-01.tex index 13923377c..4f1f06dd6 100644 --- a/tex/context/base/s-map-01.tex +++ b/tex/context/base/s-map-01.tex @@ -542,11 +542,12 @@ \c!tussen=] %D Gezien het brede karakter van de \MAPS\ gebruiken we andere -%D waarden voor links geraffeld uitlijnen. +%D waarden voor links geraffeld uitlijnen. The low level macro +%D used here is subjected to changes! \def\raggedleft% {\setraggedness\leftraggedness - \setraggedskips{1fill}{0em}{.3333em}{.5em}{1fil}{\parindent}} + \setraggedskips{1}{1fill}{0em}{.3333em}{.5em}{1fil}{\parindent}} %D Standaard gebruikt \CONTEXT\ kleur bij pretty verbatim %D printing. In the \MAPS\ gebruiken we echter fonts: diff --git a/tex/context/base/s-pre-00.tex b/tex/context/base/s-pre-00.tex index b04a80e6f..583d2a0ec 100644 --- a/tex/context/base/s-pre-00.tex +++ b/tex/context/base/s-pre-00.tex @@ -51,7 +51,7 @@ \def\presentationstep% {\dopresentationstep0} -\def\dopresentationstep#1% +\def\dopresentationstep#1% not ok yet {\global\setbox\presentationstack=\vbox {\ifnum\presentationcounter=0 \global\presentationheight=\!!zeropoint @@ -62,6 +62,7 @@ \scratchdimen=\textheight \fi \advance\scratchdimen by -\presentationheight + \edef\presentationstepheight{\the\scratchdimen} \global\presentationheight=\pagetotal \forgetall \offinterlineskip @@ -80,7 +81,7 @@ [\presentationshade] \def\presentationshade% {\presentationshield - [\c!breedte=\tekstbreedte,\c!hoogte=\scratchdimen]{}} + [\c!breedte=\tekstbreedte,\c!hoogte=\presentationstepheight]{}} \definefield[\presentationtag][check][presentation][\presentationtag][\presentationtag] \fitfield[\presentationtag]}} @@ -150,7 +151,9 @@ %D %D There is also: %D +%D \starttypen %D \autopresentationsteptrue +%D \stoptypen %D %D One can enable this feature as \type {step} mode. @@ -158,7 +161,8 @@ \appendtoks \ifautopresentationstep\presentationstep\fi \to \everypar -\doifmode{step}{\enablepresentationstep} +\doifmode{step} {\enablepresentationstep} +\doifmode{autostep}{\autopresentationsteptrue\enablepresentationstep} %D When in \type {comment} mode, embedded page comments are %D processed and put below the page. The default space of diff --git a/tex/context/base/s-pre-05.tex b/tex/context/base/s-pre-05.tex index ec4c6e372..dac9efc9c 100644 --- a/tex/context/base/s-pre-05.tex +++ b/tex/context/base/s-pre-05.tex @@ -81,16 +81,22 @@ background=HashFrameB, frame=off, offset=10pt, - % align=middle, % this is a nice alternative + style=smallbold, width=\rightedgewidth, + maxwidth=.8\rightedgewidth, interaction=all, - textcommand=\TopicLine, before=, after=] \vfill \button{Close}[CloseDocument] \stopinteractionmenu +\setupwhitespace + [big] + +\setupblank + [big] + %D \macros %D {TitlePage} %D @@ -163,12 +169,7 @@ continue=no, style=\tfa] -\def\TopicLine#1% - {\limitatetext{#1}{80pt}{...}} - \startMPinclusions - input mp-tool ; - def random_hash_frame (expr width, height, offset, linewidth ) = def delta = ((uniformdeviate .5offset) + .25offset) enddef ; diff --git a/tex/context/base/spec-dvi.tex b/tex/context/base/spec-dvi.tex index 4266b36c4..ad80d2ee1 100644 --- a/tex/context/base/spec-dvi.tex +++ b/tex/context/base/spec-dvi.tex @@ -59,6 +59,46 @@ \unvbox0\setbox0=\lastbox\unhbox0 \egroup} +%D \macros +%D {dosetposition, +%D dosetpositionwhd} +%D +%D The next specials only identify a position. It is up to +%D a \DVI\ postprocessing utility to merge the right commands +%D into the utility file. Since in \CONTEXT, we only deal +%D with relative positions, the reference point is not so +%D important. +%D +%D The postprocessor should translate the specials into +%D commands and append these to \type {jobname.tuo} using the +%D format: +%D +%D \starttypen +%D \pospxy {identifier}{page}{x}{y} +%D \pospxywhd{identifier}{page}{x}{y}{w}{h}{d} +%D \stoptypen +%D +%D The postprocessor should, of course, provide the \type +%D {page}, \type {x}, and \type {y} values. + +\definespecial\dosetposition#1% + {\special{pos:pxy "#1"}} + +\definespecial\dosetpositionwhd#1#2#3#4% + {\special{pos:pxywhd "#1" #2 #3 #4}} + +%D The next special tells the position postprocessor what +%D page dimensions were used. + +\let\flushDVIpositionpapersize\relax + +\definespecial\dosetpositionpapersize#1#2% + {\xdef\flushDVIpositionpapersize% + {\special{pos:papersize #1 #2}% + \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}} + +\prependtoks \flushDVIpositionpapersize \to \everyshipout + \stopspecials \protect diff --git a/tex/context/base/spec-fdf.tex b/tex/context/base/spec-fdf.tex index e1482d397..dd440d9aa 100644 --- a/tex/context/base/spec-fdf.tex +++ b/tex/context/base/spec-fdf.tex @@ -316,31 +316,36 @@ %D fast convert the command asked for. This is how the \PDF\ %D code looks like. -\def\PDFmoviecode% +\def\PDFmoviecode#1#2#3% {/Movie - /T (movie \ifx\argumentA\empty\currentmovie\else\argumentA\fi) - /Operation\space} + /T (\ifcase#1movie \else sound \fi\ifx\argumentA\empty#2\else\argumentA\fi) + /Operation /\ifcase#3Play\or Stop\or Pause\or Resume\fi\space} -\def\PDFexecutestart {\PDFmoviecode /Play} -\def\PDFexecutestop {\PDFmoviecode /Stop} -\def\PDFexecutepause {\PDFmoviecode /Pause} -\def\PDFexecuteresume {\PDFmoviecode /Resume} +\def\PDFexecutestartmovie {\PDFmoviecode0\currentmovie0} +\def\PDFexecutestopmovie {\PDFmoviecode0\currentmovie1} +\def\PDFexecutepausemovie {\PDFmoviecode0\currentmovie2} +\def\PDFexecuteresumemovie {\PDFmoviecode0\currentmovie3} + +\def\PDFexecutestartsound {\PDFmoviecode1\currentsound0} +\def\PDFexecutestopsound {\PDFmoviecode1\currentsound1} +\def\PDFexecutespausesound {\PDFmoviecode1\currentsound2} +\def\PDFexecuteresumesound {\PDFmoviecode1\currentsound3} \def\PDFformcode#1% {\doFDFiffieldset{#1}{/Field [\doFDFgetfieldset{#1}]}} \chardef\PDFsubmitformat=1 % 0=FDF 1=HTML -\def\PDFexecuteimport {/Named /N /AcroForm:ImportFDF} -\def\PDFexecuteexport {/Named /N /AcroForm:ExportFDF} -\def\PDFexecutereset {/ResetForm \PDFformcode\argumentA} -\def\PDFexecutesubmit {/SubmitForm \PDFformcode\argumentB - %/Flags \ifnum\PDFsubmitformat=1 12\fi - %/Flags \ifnum\PDFsubmitformat=1 4\fi - /F (\argumentA)} +\def\PDFexecuteimportform {/Named /N /AcroForm:ImportFDF} +\def\PDFexecuteexportform {/Named /N /AcroForm:ExportFDF} +\def\PDFexecuteresetform {/ResetForm \PDFformcode\argumentA} +\def\PDFexecutesubmitform {/SubmitForm \PDFformcode\argumentB + %/Flags \ifnum\PDFsubmitformat=1 12\fi + %/Flags \ifnum\PDFsubmitformat=1 4\fi + /F (\argumentA)} -\def\PDFexecutehide {/Hide /T (\argumentA) /H true} -\def\PDFexecuteshow {/Hide /T (\argumentA) /H false} +\def\PDFexecutehide {/Hide /T (\argumentA) /H true} +\def\PDFexecuteshow {/Hide /T (\argumentA) /H false} \def\PDFexecutefirst {/Named /N /FirstPage} \def\PDFexecuteprevious {/Named /N /PrevPage} @@ -478,9 +483,11 @@ %D link}, but here is another one: the {\em movie} annotation. %D The driver module must implement \type {setcurrentmovie}. +\let\currentmovie\s!unknown + \def\doPDFinsertmov#1#2#3#4#5#6#7#8#9% {\bgroup - \setcurrentmovie{#1}% + \xdef\currentmovie{#2}% label \ScaledPointsToBigPoints{#7}\width \ScaledPointsToBigPoints{#8}\height \let\pdf@@options\empty @@ -493,7 +500,23 @@ {/Subtype /Movie /T (movie \currentmovie) /Movie << /F (#1) /Aspect [\width\space\height] \pdf@@options >> - /A << \pdf@@actions>>} + /A << \pdf@@actions>>}% + \egroup} + +%D \macros +%D {doPDFinsertsoundtrack} +%D +%D In \PDF\ sounds can be embedded like movies. + +\let\currentsound\s!unknown + +\def\doPDFinsertsoundtrack#1#2#3% + {\bgroup + \xdef\currentsound{#2}% + \doPDFannotation width 0 height 0 data + {/Subtype /Movie + /T (sound \currentsound) + /Movie <>}% \egroup} %D \macros @@ -716,7 +739,7 @@ \currentreferencearguments \doPSsanitizeJScode\JScode\to\JScode \xdef\sanitizedJScode{\sanitizedJScode\space\JScode}} - {\invalidreference{##1}}} + {\illegalreference{##1}}} {\unknownreference{##1}}}% \@EA\processcommalist\@EA[#2]\setFDFaction % one level expansion \ifx\sanitizedJScode\empty \else @@ -799,7 +822,7 @@ {\FDFcollection\space\PDFobjectreference}% \fi} -\prependtoks \flushFDFnames \to \everylastshipout +\prependtoks \flushFDFnames \to \everylastshipout % test \everybye %D \macros %D {defineFDFfonts, @@ -1069,12 +1092,13 @@ \newif\ifFDFvalues -\def\doFDFpresetpushcheckfield#1#2#3#4#5#6#7% +\def\doFDFpresetpushcheckfield#1#2#3#4#5#6#7#8% {\bgroup + \ifcase#8\relax\FDFvaluesfalse\else\FDFvaluestrue\fi \setFDFswitches[#5]% \setFDFactions[#7]% \ifcase\currentFDFmode - \doFDFappearance{On}{#6}% + \doFDFappearance{On}{#6}{#8}% \doFDFdefault{#6}{#4}% \doPDFannotationobject class FDF name #1 width #2 height #3 data {/Subtype /Widget /T (#1) /FT /Btn @@ -1096,7 +1120,7 @@ \FDFactions}% \registerFDFobject{#1}% \or - \doFDFappearance{On}{#6}% + \doFDFappearance{On}{#6}{#8}% \doFDFdefault{#6}{#4}% \doPDFgetobjectreference{FDF}{\currentFDFparent}\PDFobjectreference \global\objectreferencingtrue @@ -1108,7 +1132,7 @@ \FDFappearance\space \FDFactions}% \or - \doFDFappearance{On}{#6}% + \doFDFappearance{On}{#6}{#8}% \doFDFdefault{#6}{#4}% \doPDFgetobjectreference{FDF}{\currentFDFparent}\PDFobjectreference \global\objectreferencingtrue @@ -1121,12 +1145,10 @@ \egroup} \def\doFDFpresetpushfield#1#2#3#4#5#6#7% - {\FDFvaluesfalse - \doFDFpresetpushcheckfield{#1}{#2}{#3}{#4}{PushButton,#5}{#6}{#7}} + {\doFDFpresetpushcheckfield{#1}{#2}{#3}{#4}{PushButton,#5}{#6}{#7}{0}} \def\doFDFpresetcheckfield#1#2#3#4#5#6#7% - {\FDFvaluestrue - \doFDFpresetpushcheckfield{#1}{#2}{#3}{#4}{#5}{#6}{#7}} + {\doFDFpresetpushcheckfield{#1}{#2}{#3}{#4}{#5}{#6}{#7}{1}} \def\doFDFpresetradiofield#1#2#3#4#5#6#7% {\bgroup @@ -1134,7 +1156,7 @@ \setFDFswitches[#4]% \setFDFactions[#7]% \ifcase\currentFDFmode - \doFDFappearance{#1}{#6}% + \doFDFappearance{#1}{#6}{1}% \doPDFgetobjectreference{FDF}{#5}\PDFobjectreference \doPDFannotationobject class FDF name #1 width #2 height #3 data {/Subtype /Widget @@ -1153,7 +1175,7 @@ \FDFactions}% \registerFDFobject{#1}% \or - \doFDFappearance{#1}{#6}% + \doFDFappearance{#1}{#6}{1}% \doPDFgetobjectreference{FDF}{\currentFDFparent}\PDFobjectreference \global\objectreferencingtrue \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data @@ -1163,7 +1185,7 @@ \FDFappearance\space \FDFactions}% \or - \doFDFappearance{#1}{#6}% + \doFDFappearance{#1}{#6}{1}% \doPDFgetobjectreference{FDF}{\currentFDFparent}\PDFobjectreference \global\objectreferencingtrue \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data @@ -1188,7 +1210,8 @@ \egroup} %D At the cost of some more references, we can save bytes, -%D by sharing appearance dictionaries. Surprise: +%D by sharing appearance dictionaries. This code needs more +%D documentation. Surprise: \def\dodoFDFappearance#1#2% {\ifx#2\empty\else @@ -1218,9 +1241,14 @@ \fi \fi} -\def\doFDFappearance#1#2% - {\dogetcommacommandelement1\from#2,\to\yes - \dogetcommacommandelement2\from#2,\to\no +\def\doFDFappearance#1#2#3% + {\ifcase#3\relax % push only field + \edef\yes{#2}% + \let\no\empty + \else % on / off field + \dogetcommacommandelement1\from#2,\to\yes + \dogetcommacommandelement2\from#2,\to\no + \fi \def\FDFappearance{/H /N}% \doifobjectfoundelse{FDF}{ap:#1:\yes:\no} {\redoFDFappearance\yes @@ -1448,7 +1476,7 @@ \long\def\sanitizePDFdocencoding#1\to#2% {\enablePDFcrlf \enablePDFdocencoding -\honorunexpanded + %\honorunexpanded % otherwise problems with "e etc in de \edef#2{#1}} \bgroup diff --git a/tex/context/base/spec-ini.tex b/tex/context/base/spec-ini.tex index 8117cb8fc..f1a37104e 100644 --- a/tex/context/base/spec-ini.tex +++ b/tex/context/base/spec-ini.tex @@ -1,5 +1,3 @@ -% \dogetfiguresize will be a special ! - %D \module %D [ file=spec-ini, %D version=1996.01.25, @@ -17,7 +15,7 @@ %D \TEX\ even more platform independant and permit easy %D adaption to new developments. One major drawback of specials %D is that they have to be supported by printer drivers. We've -%D tried to overcome this problem by implementinmg specials as +%D tried to overcome this problem by implementing specials as %D a sort of drivers themselves. \writestatus{loading}{Context Special Macros / Initialization} @@ -84,6 +82,32 @@ 21: -- kod vlozen \stopmessages +%D \TEX\ produces files in the \DVI\ format. This format is +%D well defined and stable. In this format one||byte commands +%D are used which can optionally be followed by length +%D specifiers and arguments. The \DVI||format incorporates a +%D channel to the outside world. This channel is activated by +%D the \TEX\ primitive \type {\special}. The sequence +%D +%D \starttypen +%D \special{Hello here I am.} +%D \stoptypen +%D +%D results in \DVI||codes: +%D +%D \starttypen +%D xxx1 16 Hello here I am. +%D \stoptypen +%D +%D The \type {xxx1} is represented in byte code 239 and the +%D number of following bytes in a~1, 2, 3 or~4 byte number. So +%D here we get $1+1+16$ bytes of code. +%D +%D Translating these codes is upto the \DVI\ driver. It's +%D common use to ignore specials that cannot be interpreted, so +%D the example string should have no consequences for the +%D output. + %D \macros %D {everyresetspecials} %D @@ -580,6 +604,61 @@ %D {dostartgraymode,dostopgraymode, %D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode,dostopcolormode} %D +%D Switching to and from color can be done in two ways: +%D +%D \startopsomming[opelkaar,n] +%D \som insert driver specific commands +%D \som pass instructions to the output device +%D \stopopsomming +%D +%D The first approach is more general and lays the +%D responsibility at the driver side. Probably due to the fact +%D that \TEX\ does not directly support color, we have been +%D confronted for the last few years with changing special +%D definitions. The need for support depends on how a macro +%D package handles colored text that crosses the page boundary. +%D Again, there are two approaches. +%D +%D \startopsomming[opelkaar,n] +%D \som let \TEX\ do the job +%D \som let the driver handle things +%D \stopopsomming +%D +%D The first approach is as driver independant as possible and +%D can easily be accomplished by using \TEX's mark mechanism. +%D In \CONTEXT\ we follow this approach. More and more, drivers +%D are starting to support color, including stacking them. +%D +%D Colors as well as grayscales can be represented in scales +%D from~0 to~1. When drivers use values in the range 0..255, +%D this value has to be adapted in the translation process. +%D Technically it's possible to get a grayscale from combining +%D colors. In the \kap{RGB} color system, a color with Red, +%D Green and Blue components of 0.80 show the same gray as a +%D Gray Scale specified 0.80. The \kap{CMYK} color system +%D supports a Black component apart from Cyan, Magenta and +%D Yellow. +%D +%D Depending on the target format, color support differs from +%D gray support. PostScript for example offers different +%D operators for setting gray and color. This is because +%D printing something using three colors is someting else than +%D printing with just black. +%D +%D In \CONTEXT\ we have implemented a color subsystem that +%D supports the use of well defined colors that, when printed +%D in black and white, still can be distinguished. This +%D approach enables us to serve both printed and electronic +%D versions, using colored text and illustrations. More on the +%D fundamentals of this topic can be found in the \kap{MAPS} of +%D the Dutch User Group, 14 (95.1). +%D +%D To satisfy all those needs, we define four specials which +%D supply enough information for drivers to act upon. We +%D could have used more general commands with the keywords +%D 'rgb' and 'gray', but because these specials are used often, +%D we prefer the more direct and shorter alternative. +%D %D We start with the installation of color and grayscale %D specials. The values are in the range 0..1 (e.g. 0.25). %D @@ -603,13 +682,23 @@ \installspecial [\dostartgraycolormode] [or] [1] \installspecial [\dostopcolormode] [or] [0] +%D For some drivers, the stop special is of no use and can +%D simply call the start one with zero arguments. + %D \macros %D {doinsertfile} %D %D Probably the most problematic special is the following %D one. Because we want to be able to support different %D schemes, we pass a lot of data to it. -%D +%D +%D The support of inserting files (like illustrations) comes in +%D many flavors. Some drivers use scales, some take dimensions. +%D Some need offsets and others act on stored characteristics. +%D They need one thing in common: a filename. Although separate +%D specials for different formats sometimes are more clear, we +%D decided to combine them all in one: +%D %D \starttypen %D \doinsertfile {type,method} {file,label} %D {xscale} {yscale} {x} {y} {w} {h} @@ -618,17 +707,33 @@ %D %D The scale is given percents, the other values are base %D points. -%D -%D The special is implemented as \type{or}. Because -%D \DVIPSONE\ understands them all, a chain of alternatives -%D would generate multiple occurrences of the same -%D illustration. -%D +%D +%D The special is implemented as \type{or}. Because \DVIPSONE\ +%D understands them all, a chain of alternatives would generate +%D multiple occurrences of the same illustration. +%D %D When option 1 is passed, the viewers is asked to present a %D preview, like the first frame of a movie. \installspecial [\doinsertfile] [or] [9] +%D No start||stop construction is needed here, because there in +%D no further interference of \TEX. All dimensions are output +%D as scaled points and scales as a number, where 100 equal +%D 100\%. + +%D \macros +%D {doinsertsoundtrack} +%D +%D Sounds are (for the moment) just files with +%D associated options. +%D +%D \starttypen +%D \doinsertsoundtrack {file} {label} {options} +%D \stoptypen + +\installspecial [\doinsertsoundtrack] [or] [3] + %D \macros %D {dogetnofinsertpages} %D @@ -637,13 +742,15 @@ %D to the total number of pages. %D %D \starttyping -%D \dogetnofinsertpages\nofinsertpages +%D \dogetnofinsertpages{filename} %D \stoptyping %D -%D The number is available after the insert is placed, +%D The number is also available after the insert is placed, %D since inclusion may take place immediate when an insert is %D called upon. +\def\nofinsertpages{1} % one of the few 'talk backs' + \installspecial [\dogetnofinsertpages] [or] [1] %D \macros @@ -863,6 +970,41 @@ %D {dostartgotolocation, dostopgotolocation, %D dostartgotorealpage, dostopgotorealpage} %D +%D When we want to support hypertext buttons, again we have +%D to deal with two concepts. +%D +%D \startopsomming[opelkaar,n] +%D \som let \TEX\ highlight the text +%D \som let the driver show us where to click +%D \stopopsomming +%D +%D The first approach is the most secure one. It gives us +%D complete control over the visual appearance of hyper +%D buttons. The second alternative lets the driver guess what +%D part of the text needs highlighting. As long as we deal with +%D not too complicated textual buttons, this is no problem. +%D It's even a bit more efficient when we take long mid +%D paragraph active regions into account. When we let \TEX\ +%D handle active sentences {\em for instance marked like this +%D one}, we have to take care of line- and pagebreaks ourselve. +%D However, it's no trivial matter to let a driver find out +%D where things begin and end. Because most hyperlinks can be +%D found in tables of contents and registers, the saving in +%D terms of bytes can be neglected and the first approach is a +%D clear winner. +%D +%D The most convenient way of cross||referencing is using named +%D destinations. A more simple scheme is using page numbers as +%D destinations. Because the latter alternative can often be +%D implemented more efficient, and because we cannot be sure +%D what scheme a driver supports, we always have to supply a +%D pagenumber, even when we use named destinations. +%D +%D To enable a driver to find out what to make active, we have +%D to provide begin and endpoints, so like with color, we use +%D pairs of specials. The first scheme can be satisfied with +%D proper dimensions of the areas to be made active. +%D %D The interactive real work is done by the following four %D specials. The reason for providing the first one with both %D a label and a number, is a result of the quite poor @@ -893,10 +1035,14 @@ \installspecial [\dostartgotorealpage] [and] [5] \installspecial [\dostopgotorealpage] [and] [0] +%D One may wonder why jumps to page and location are not +%D combined. By splitting them, we enable macro||packages to +%D force the prefered alternative, while on the other hand +%D drivers can pick up the alternative desired most. + %D \macros %D {dostartgotoJS, doflushJSpreamble} %D -%D %D Rather special is the option to include and execute %D JavaScript code. This is a typical \PDF\ option. %D @@ -917,6 +1063,12 @@ %D {dostartthisislocation, dostopthisislocation, %D dostartthisisrealpage, dostopthisisrealpage} %D +%D Before we can goto some location or page, we have to tell +%D the system where it can be found. Because some drivers +%D follow the \SGML\ approach of begin||end tags, we have to +%D support pairs. A possible extension to this scheme is +%D supplying coordinates for viewing the text. +%D %D The opposite commands of \type{\dogotosomething} have only %D one argument: %D @@ -940,6 +1092,10 @@ \installspecial [\dostartthisisrealpage] [and] [1] \installspecial [\dostopthisisrealpage] [and] [0] +%D In \CONTEXT\ we don't use the \type{\stopsomething} +%D macros because we let \TEX\ take care of typographic +%D issues. + %D \macros %D {doresetgotowhereever} %D @@ -1177,7 +1333,7 @@ %D \macros %D {doinsertcomment} %D -%D Not so much out ot need, but to be complete, we also +%D Not so much out of need, but to be complete, we also %D implement text annotations, so called comment: %D %D \starttypen @@ -1187,6 +1343,26 @@ \installspecial[\doinsertcomment] [and] [7] +%D \macros +%D {dosetposition, dosetpositionwhd, dosetpositionpapersize} +%D +%D Not natural to \TEX, but available in \PDFTEX, and by +%D means of postprocessed \DVI, we can save and call upon +%D positions. +%D +%D \starttypen +%D \dosetposition {identifier} +%D \dosetpositionwhd {identifier} {width} {height} {depth} +%D \dosetpositionpapersize {width} {height} +%D \stoptypen +%D +%D This is one of the few specials where when using \PDFTEX\ +%D the driver directly deals with the utility file. + +\installspecial [\dosetposition] [or] [1] +\installspecial [\dosetpositionwhd] [or] [4] +\installspecial [\dosetpositionpapersize] [or] [2] + %D So far for the installation. For quite some time the %D \CONTEXT\ way of specifying the output format has been: %D diff --git a/tex/context/base/spec-pdf.tex b/tex/context/base/spec-pdf.tex index 21080bac7..377821506 100644 --- a/tex/context/base/spec-pdf.tex +++ b/tex/context/base/spec-pdf.tex @@ -184,13 +184,16 @@ %D \POSTSCRIPT\ drivers. We just link the movie annotation %D handled to the file inclusion system. -\let\currentmovie\s!unknown - -\def\setcurrentmovie{\xdef\currentmovie} - \definefileinsertion{yy}{mov}{\doPDFinsertmov} \definefileinsertion{tr}{mov}{\doPDFinsertmov} +%D \macros +%D {doinsertsoundtrack} +%D +%D Sounds look much like movies: + +\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack} + %D \macros %D {dostartobject,dostopobject, %D doinsertobject} diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex index 77a097cc7..3b6065ec9 100644 --- a/tex/context/base/spec-tpd.tex +++ b/tex/context/base/spec-tpd.tex @@ -61,6 +61,12 @@ \pdfimageresolution=300 +%D Another downward compatible hack: + +\ifx\pdflastximagepages\undefined + \newcount\pdflastximagepages \pdflastximagepages=1 +\fi + % %D Why are the Acrobat viewers so buggy? To prevent font cache % %D mismatches, we say: % @@ -110,7 +116,7 @@ \appendtoks \let\defaultspecial\normalspecial \to \everyresetspecials -\let\PDFcode=\pdfliteral +\let\PDFcode\pdfliteral %D \macros %D {dosetuppaper} @@ -151,8 +157,11 @@ %D The number of pages in (for instance an \PDF) insert %D file, can be asked for using: -\definespecial\dogetnofinsertpages#1% global ! - {\global\let#1\PDFimagenofpages} +\definespecial\dogetnofinsertpages#1% + {\xdef\nofinsertpages{1}% global + \doifvalidpdfimagefileelse{#1}% + {\pdfximage{#1}\xdef\nofinsertpages{\the\pdflastximagepages}} + {}} %D Currently we support \type{pdf} for \PDF\ files, \type{mps} %D for \METAPOST\ graphics, \type{png} and \type{jpg} for @@ -214,7 +223,7 @@ \doifnumberelse{\commalistelement} {\ifcase\commalistelement\else \edef\pdfimagepagenumber{page \commalistelement}% - \message{(pdf image page \pdfimagepagenumber)}% + \message{(pdf image \pdfimagepagenumber)}% \fi} {}} @@ -228,7 +237,7 @@ \pdfimagepagenumber {#1}% \xdef\PDFimagereference{\the\pdflastximage}% - \xdef\PDFimagenofpages{\the\pdflastximagepages}% + \xdef\nofinsertpages{\the\pdflastximagepages}% \pdfrefximage\pdflastximage} {\framed[\c!breedte=#7sp,\c!hoogte=#8sp]{#1}}% \egroup} @@ -253,12 +262,14 @@ %D similar to figure inclusion. The next macro calls the %D general \PDF\ one. -\newcounter\currentmovie +\definefileinsertion{tpd}{mov}{\doPDFinsertmov} -\def\setcurrentmovie#1% - {\doglobal\increment\currentmovie} +%D \macros +%D {doinsertsoundtrack} +%D +%D We use numbers instead of labels to keep track of sounds. -\definefileinsertion{tpd}{mov}{\doPDFinsertmov} +\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack} %D \macros %D {measureTPDfiguresizetrue} @@ -305,7 +316,7 @@ \global\setbox\foundexternalfigure=\vbox {\immediate\pdfximage \pdfimageattributes \pdfimagepagenumber{#2}% \xdef\PDFimagereference{\the\pdflastximage}% - \xdef\PDFimagenofpages{\the\pdflastximagepages}% + \xdef\nofinsertpages{\the\pdflastximagepages}% \pdfrefximage\pdflastximage}% #6=\wd\foundexternalfigure #7=\ht\foundexternalfigure @@ -716,6 +727,34 @@ \definespecial\doregistercalculationset{\doFDFregistercalculationset} +%D \macros +%D {dosetposition, dosetpositionwdh} +%D +%D Opposite to its \DVI\ counterpart, the \PDFTEX\ backend +%D can provide positional information directly. Since +%D \CONTEXT\ only uses relative positions, the origin is of +%D less importance. + +\def\doTPDsetposition#1#2#3% + {\bgroup + \edef\doTPDsetposition% + {\writeutilitycommand + {#1% + {#2}% + {\noexpand\realfolio}% + {\noexpand\number\pdflastxpos}% + {\noexpand\number\pdflastypos}% + #3}}% + \pdfsavepos + \doTPDsetposition + \egroup} + +\definespecial\dosetposition#1% + {\doTPDsetposition{\pospxy}{#1}{}} + +\definespecial\dosetpositionwhd#1#2#3#4% + {\doTPDsetposition{\pospxywhd}{#1}{{#2}{#3}{#4}}} + %D \macros %D {doPDFdestination} %D @@ -764,7 +803,8 @@ \xdef\lastPDFaction{<<#3>>}% \or \ifsharePDFactions - \immediate\pdfobj{<<#3>>}\xdef\lastPDFaction{\the\pdflastobj\space0 R}% + \immediate\pdfobj{<<#3>>}% + \xdef\lastPDFaction{\the\pdflastobj\space0 R}% \else \xdef\lastPDFaction{<<#3>>}% \fi @@ -827,16 +867,14 @@ {\pdfcatalog} \def\doPDFpageattribute#1% - {\expanded{\global\pdfpageattr{\the\pdfpageattr#1}}} + {\expanded{\global\pdfpageattr{#1\the\pdfpageattr}}} \def\doPDFpagesattribute#1% - {\expanded{\global\pdfpagesattr{\the\pdfpagesattr#1}}} + {\expanded{\global\pdfpagesattr{#1\the\pdfpagesattr}}} \def\doPDFresetattributes% {\global\pdfpageattr{}} -% \global\pdfpagesattr{}} - \appendtoks\doPDFresetattributes\to\everyaftershipout %D \macros diff --git a/tex/context/base/supp-box.tex b/tex/context/base/supp-box.tex index 3e85c3940..abc14fc67 100644 --- a/tex/context/base/supp-box.tex +++ b/tex/context/base/supp-box.tex @@ -8,8 +8,8 @@ %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. +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. %D This module implements some box manipulation macros. Some %D are quite simple, some are more advanced and when understood @@ -63,33 +63,29 @@ %D and smashed alternatives. The later ones reduce all %D dimensions to zero. -\def\hsmash#1% - {\bgroup - \setbox0=\normalhbox{#1}% - \hsmashbox0% - \box0 - \egroup} - -\def\vsmash#1% - {\bgroup - \setbox0=\normalvbox{#1}% - \vsmashbox0% - \box0 - \egroup} +% Ok, but inefficient and/or catcode unsafe: +% +% \def\hsmash #1{\bgroup\setbox0=\normalhbox{#1}\hsmashbox0\box0\egroup} +% \def\vsmash #1{\bgroup\setbox0=\normalvbox{#1}\vsmashbox0\box0\egroup} +% \def\hsmashed#1{\bgroup\setbox0=\normalhbox{#1}\smashbox 0\box0\egroup} +% \def\vsmashed#1{\bgroup\setbox0=\normalvbox{#1}\smashbox 0\box0\egroup} +% +% Better, but a waste of tokens: +% +% \def\hsmash {\bgroup\dowithnextbox{\hsmashbox\nextbox\box\nextbox\egroup}\normalhbox} +% \def\vsmash {\bgroup\dowithnextbox{\vsmashbox\nextbox\box\nextbox\egroup}\normalvbox} +% \def\hsmashed{\bgroup\dowithnextbox{\smashbox \nextbox\box\nextbox\egroup}\normalhbox} +% \def\vsmashed{\bgroup\dowithnextbox{\smashbox \nextbox\box\nextbox\egroup}\normalvbox} +% +% The best: -\def\hsmashed#1% - {\bgroup - \setbox0=\normalhbox{#1}% - \smashbox0% - \box0 - \egroup} +\def\dosomesmash#1% + {\bgroup\dowithnextbox{#1\nextbox\box\nextbox\egroup}} -\def\vsmashed#1% - {\bgroup - \setbox0=\normalvbox{#1}% - \smashbox0% - \box0 - \egroup} +\def\hsmash {\dosomesmash\hsmashbox\normalhbox} +\def\vsmash {\dosomesmash\vsmashbox\normalvbox} +\def\hsmashed{\dosomesmash\smashbox \normalhbox} +\def\vsmashed{\dosomesmash\smashbox \normalvbox} %D \macros %D {getboxheight} @@ -118,16 +114,16 @@ {#1=\ht#3% \advance#1 by \dp#3\relax} -%D \macros +%D \macros %D {doiftextelse, doiftext} %D -%D When \type {\doifelse} cum suis hopelessly fail, for -%D instance because we pass data, we can fall back on the next -%D macro: -%D +%D When \type {\doifelse} cum suis hopelessly fail, for +%D instance because we pass data, we can fall back on the next +%D macro: +%D %D \starttypen %D \doiftextelse {data} {then branch} {else branch} -%D \doiftext {data} {then branch} +%D \doiftext {data} {then branch} %D \stoptypen \def\doiftextelse#1#2#3% @@ -228,8 +224,8 @@ %D \setbox\nextbox#2} %D \stoptypen %D -%D This alternative also accepts \type{\box0} and alike, but -%D we don't really need this functionality now. +%D This alternative also accepts \type{\box0} and alike, but +%D we don't really need this functionality now. %D \macros %D {beginofshapebox, @@ -316,7 +312,7 @@ %D %D \startbuffer %D \beginofshapebox -%D \flushshapebox +%D \flushshapebox %D \endofshapebox %D %D \reshapebox @@ -443,9 +439,9 @@ \else % make \prevdepth legal % \par before the next \vskip gives far worse results - \ifdim\parskip>\!!zeropoint\vskip\parskip\else\par\fi + \ifdim\parskip>\!!zeropoint\vskip\parskip\else\par\fi % and take a look - \ifdim\prevdepth=-1000pt + \ifdim\prevdepth=-1000pt \prevdepth=\!!zeropoint \fi \ifdim\prevdepth<\!!zeropoint\relax @@ -460,25 +456,25 @@ % give the previous line a normal depth \donetrue \vbox{\forgetall\strut}\nobreak\kern-\lineheight % geen \vskip - \vskip-\dp\strutbox + \vskip-\dp\strutbox \fi\fi\fi \unvcopy\newshapebox\relax % \prevdepth=0pt and \dp\newshapebox depend on last line \kern-\dp\newshapebox\relax % now \prevdepth=0pt \ifdone - \kern\dp\strutbox - \prevdepth\dp\strutbox + \kern\dp\strutbox + \prevdepth\dp\strutbox \fi \fi} -%D In real inner situations we can use: +%D In real inner situations we can use: %D %D \starttypen %D \flushinnershapebox %D \stoptypen %D -%D This one is used in \type{\framed}. +%D This one is used in \type{\framed}. \def\innerflushshapebox% {\ifdim\ht\newshapebox=\!!zeropoint\relax @@ -487,16 +483,16 @@ \kern-\dp\newshapebox\relax \fi} -%D For absolute control, one can use \type{\doreshapebox} -%D directly. This macro takes four arguments, that take care +%D For absolute control, one can use \type{\doreshapebox} +%D directly. This macro takes four arguments, that take care %D of: -%D +%D %D \startopsomming[n,opelkaar] %D \som \type{\shapebox} %D \som \type{\shapepenalty} %D \som \type{\shapekern} %D \som \type{\shapeskip} -%D \stopopsomming +%D \stopopsomming %D \macros %D {hyphenatedword, @@ -630,7 +626,7 @@ %D \stoptypen %D %D When no width is given, the whole text comes available. The -%D sentinel is optional. This is about the third version. +%D sentinel is optional. This is about the third version. \ifx\fakecompoundhyphen\undefined \let\fakecompoundhyphen\relax \fi @@ -642,6 +638,8 @@ {\doifelsenothing{#1} {\unhbox\nextbox} {\fakecompoundhyphen + \widowpenalty=0 + \clubpenalty=0 \scratchdimen=#1\relax \ifdim\wd\nextbox>\scratchdimen \setbox\scratchbox=\hbox{ #2}% @@ -745,28 +743,31 @@ %D splitting, packing and unpacking to get the spacing and %D dimensions right. %D -%D Normally the isolated words are separated by space, but +%D Normally the isolated words are separated by space, but %D one can overrule this separator by changing the next macros. %D -%D When needed, spacing can be suppressed by \type +%D When needed, spacing can be suppressed by \type %D {\nothingbetweenisolatedwords}. \newif\ifisolatedwords \def\betweenisolatedwords% - {\hskip\currentspaceskip} + {\hskip\currentspaceskip} -\def\setbetweenisolatedwords#1% - {\gdef\localbetweenisolatedwords{#1}} +%D In order to prevent problems with nested isolated words, we +%D do process them, but only split at the outermost level. -\def\processisolatedwords#1#2% - {\bgroup +\def\processisolatedwords#1#2% todo: vbox ipv hbox ivm afbreken! + {\bgroup % todo: doloop \fakecompoundhyphen \mindermeldingen \forgetall - \global\let\localbetweenisolatedwords\betweenisolatedwords - \setbox0=\hbox - {\ignorespaces#1% + \widowpenalty=0 + \clubpenalty=0 + \def\processisolatedwords##1##2{##2{##1}}% we split only once + \global\let\localbetweenisolatedwords\betweenisolatedwords + \setbox0=\hbox % we default to spaces, but from inside out + {\ignorespaces#1% \localbetweenisolatedwords can be overruled \xdef\isolatedlastskip{\the\lastskip}}% \setbox2=\vbox {%\hyphenpenalty10000 % this one fails in \url breaking, @@ -775,8 +776,8 @@ \hsize\!!zeropoint \unhcopy0}% == #1 \ifdim\ht0=\ht2 - \isolatedwordsfalse - #2{\unhcopy0}% == #2{#1} + \isolatedwordsfalse + #2{\unhcopy0}% == #2{#1} \else \isolatedwordstrue \setbox0=\hbox @@ -794,9 +795,22 @@ \hbox{#2{\hbox{\unhbox4}}}}}% \ifdim\ht2>\!!zeropoint \localbetweenisolatedwords \repeat \unskip}% - \unhbox0\unskip\hskip\isolatedlastskip + \unhbox0\unskip + \ifdim\isolatedlastskip=\!!zeropoint\else % added + \hskip\isolatedlastskip + \fi \fi \egroup} + +%D One can use the next macro to change the intersplit +%D material. An example can be found in the \type {\url} +%D macro. The innermost setting is used. In the url case, it +%D means that either very small spaces are used or no spaces +%D at all. So, the innermost settings are used, while the +%D outermost split takes place. + +\def\setbetweenisolatedwords#1% + {\gdef\localbetweenisolatedwords{#1}} %D \macros %D {sbox} @@ -914,13 +928,13 @@ \hbox} %D For those who don't want to deal with \type {\hsize} -%D and \type {\vsize}, we have: -%D +%D and \type {\vsize}, we have: +%D %D \starttypen -%D \centerednextbox width 2bp height 2bp +%D \centerednextbox width 2bp height 2bp %D {\framed[width=100bp,height=100bp]{}} %D \stoptypen -%D +%D %D Do you see what we call this one \type {next}? \def\centerednextbox#1#% @@ -932,17 +946,17 @@ \egroup} \hbox} -%D \macros +%D \macros %D {centerbox} %D -%D Centering on the available space is done by: +%D Centering on the available space is done by: %D %D \starttypen %D \centeredbox {content} %D \stoptypen %D -%D When omitted, the current \type {\hsize} and \type -%D {\vsize} are used. Local dimensions are supported. +%D When omitted, the current \type {\hsize} and \type +%D {\vsize} are used. Local dimensions are supported. \def\centerbox#1#% optional height +/-dimen width +/-dimen {\bgroup @@ -970,13 +984,13 @@ %D Both these macros are for instance used in typesetting %D footnotes. %D -%D Men kan het proces van breken enigzins beinvloeden met de +%D Men kan het proces van breken enigzins beinvloeden met de %D volgende twee switches: -\newif\ifalignrigidcolumns -\newif\ifstretchrigidcolumns +\newif\ifalignrigidcolumns +\newif\ifstretchrigidcolumns -%D De eerste switch bepaald het uitlijnen, de tweede rekt de +%D De eerste switch bepaald het uitlijnen, de tweede rekt de %D individuele kolommen op naar \type{\vsize}. \def\setrigidcolumnhsize#1#2#3% @@ -1000,7 +1014,8 @@ \setbox\rigidcolumnbox=\vbox {\unvbox\rigidcolumnbox \unpenalty\removelastskip}% get rid of \blank's - \splittopskip=\openstrutheight + %\splittopskip=\openstrutheight + \splittopskip=\!!zeropoint %\scratchdimen=\ht\rigidcolumnbox % sensitive for overflow %\divide\scratchdimen by \rigidcolumns % therefore we need the hack: \scratchdimen=1pt @@ -1079,9 +1094,9 @@ \box0 \egroup} -% % to be done: start halfway a line combined with one line +% % to be done: start halfway a line combined with one line % % extra to start with (skip) and one line less than counted. -% +% % \def\stopvboxtohbox% % {\egroup % \setbox2=\vbox @@ -1114,7 +1129,7 @@ \def\makehboxofhboxes% {\setbox0=\hbox{}% - \loop % \doloop { .. \exitloop .. } + \loop % \doloop { .. \exitloop .. } \setbox2=\lastbox \ifhbox2 \setbox0=\hbox{\box2\unhbox0}% @@ -1127,11 +1142,11 @@ \unhbox0 \fi} -%D \macros +%D \macros %D {unhhbox} %D -%D The next macro is used in typesetting inline headings. -%D Let's first look at the macro and then show an example. +%D The next macro is used in typesetting inline headings. +%D Let's first look at the macro and then show an example. \newbox \unhhedbox \newbox \hhbox @@ -1140,11 +1155,13 @@ \def\unhhbox#1\with#2% {\bgroup + \widowpenalty=0 + \clubpenalty=0 \mindermeldingen \forgetall - \setbox\unhhedbox=\vbox{\hskip\hhboxindent\strut\unhbox#1}% => \hsize + \setbox\unhhedbox=\vbox{\hskip\hhboxindent\strut\unhbox#1}% => \hsize \doloop - {\setbox\hhbox=\vsplit\unhhedbox to \lineheight + {\setbox\hhbox=\vsplit\unhhedbox to \lineheight \ifvoid\unhhedbox \setbox\hhbox=\hbox{\strut\hboxofvbox\hhbox}% \fi @@ -1159,7 +1176,7 @@ \ifvoid\unhhedbox \exitloop \else - \hskip\!!zeropoint \!!plus \!!zeropoint + \hskip\!!zeropoint \!!plus \!!zeropoint \fi}% \egroup} @@ -1177,26 +1194,26 @@ %D each line seperately, for instance, making it clickable. The %D main complication is that we want to be able to continue the %D paragraph, something that's needed in the in line section -%D headers. -%D +%D headers. +%D %D \startbuffer %D \setbox0=\hbox{\input tufte \relax} %D \setbox2=\hbox{\input knuth \relax} %D \unhhbox0\with{\ruledhbox{\box\hhbox}} -%D \hskip1em plus 1em minus 1em -%D \hhboxindent=\lasthhboxwidth +%D \hskip1em plus 1em minus 1em +%D \hhboxindent=\lasthhboxwidth %D \advance\hhboxindent by \lastskip %D \unhhbox2\with{\ruledhbox{\box\hhbox}} %D \stopbuffer -%D +%D %D \haalbuffer -%D +%D %D This piece of text was typeset by saying: -%D +%D %D \typebuffer -%D -%D Not that nice a definition, but effective. Note the stretch -%D we've build in the line that connects the two paragraphs. +%D +%D Not that nice a definition, but effective. Note the stretch +%D we've build in the line that connects the two paragraphs. %D \macros %D {doifcontent} @@ -1248,15 +1265,15 @@ %D Where the last call of course does not show up in this %D document, but definitely generates a confusing message. -%D \macros +%D \macros %D {processboxes} %D -%D The next macro gobble boxes and is for instance used for +%D The next macro gobble boxes and is for instance used for %D overlays. First we show the general handler. \newbox\processbox -\def\processboxes#1% +\def\processboxes#1% {\bgroup \def\doprocessbox{#1}% #1 can be redefined halfway \setbox\processbox=\box\voidb@x @@ -1277,15 +1294,15 @@ \def\dodogetprocessbox% {\dowithnextbox - {\ifhmode\unskip\fi\doprocessbox % takes \nextbox makes \processbox + {\ifhmode\unskip\fi\doprocessbox % takes \nextbox makes \processbox \afterassignment\dogetprocessbox\let\next=} \hbox\bgroup} -%D \macros +%D \macros %D {startoverlay} -%D +%D %D We can overlay boxes by saying: -%D +%D %D \startbuffer %D \startoverlay %D {\omlijnd{hans}} @@ -1293,15 +1310,15 @@ %D {\omlijnd[hoogte=2cm]{oeps}} %D \stopoverlay %D \stopbuffer -%D +%D %D \typebuffer %D -%D shows up as: +%D shows up as: %D %D \leavevmode\haalbuffer % \def\dooverlaybox% -% {\ifhmode\unskip\fi +% {\ifhmode\unskip\fi % \ifdim\ht\nextbox>\ht\processbox % \setbox\processbox=\vbox to \ht\nextbox % {\vss\box\processbox\vss}% @@ -1310,16 +1327,16 @@ % {\vss\box\nextbox\vss}% % \fi % \scratchdimen=\wd -% \ifdim\wd\nextbox>\wd\processbox +% \ifdim\wd\nextbox>\wd\processbox % \nextbox % \else % \processbox -% \fi +% \fi % \setbox\processbox=\hbox to \scratchdimen % {\hbox to \scratchdimen{\hss\box\processbox\hss}% % \hskip-\scratchdimen % \hbox to \scratchdimen{\hss\box\nextbox\hss}}} -% +% % \def\startoverlay% % {\bgroup % \let\stopoverlay\egroup @@ -1358,31 +1375,31 @@ \let\stopoverlay\egroup \processboxes\dooverlaybox} -% %D \macros +% %D \macros % %D {starthspread} -% %D -% %D In a similar way we can build a horizontal box, spread +% %D +% %D In a similar way we can build a horizontal box, spread % %D over the available width. -% %D +% %D % %D \startbuffer % %D \starthspread % %D {hans} % %D {ton} % %D {oeps} % %D \stophspread -% %D +% %D % %D \stopbuffer -% %D +% %D % %D \typebuffer % %D -% %D shows up as: +% %D shows up as: % %D % %D \leavevmode\haalbuffer -% +% % \def\dohspread% % {\box\nextbox % \def\dohspread{\hfil\box\nextbox}} -% +% % \def\starthspread% % {\hbox to \hsize \bgroup % \let\stophspread\egroup @@ -1390,15 +1407,15 @@ %D \macros %D {fakebox} -%D -%D The next macro is a rather silly one, but saves space. +%D +%D The next macro is a rather silly one, but saves space. %D %D \starttypen -%D \hbox{\fakebox0} +%D \hbox{\fakebox0} %D \stoptypen %D -%D returns an empty box with the dimensions of the box -%D specified, here being zero. +%D returns an empty box with the dimensions of the box +%D specified, here being zero. \def\dofakebox% {\setbox\scratchbox=\null @@ -1412,7 +1429,7 @@ {\bgroup \afterassignment\dofakebox\scratchcounter} -%D \macros +%D \macros %D {lbox,rbox,cbox,tbox,bbox} %D %D Here are some convenient alternative box types: @@ -1422,11 +1439,11 @@ %D \cbox{text ...} %D \rbox{text ...} %D \stoptypen -%D -%D Are similar to \type {\vbox}, which means that they also -%D accept something like \type{to 3cm}, but align to the left, -%D middle and right. These box types can be used to typeset -%D paragraphs. +%D +%D Are similar to \type {\vbox}, which means that they also +%D accept something like \type{to 3cm}, but align to the left, +%D middle and right. These box types can be used to typeset +%D paragraphs. \def\lbox{\lrcbox\raggedleft} \def\cbox{\lrcbox\raggedcenter} @@ -1437,10 +1454,10 @@ \let\\=\endgraf \forgetall#1\let\next=} -%D The alternatives \type {\tbox} and \type {\bbox} can be used +%D The alternatives \type {\tbox} and \type {\bbox} can be used %D to properly allign boxes, like in: -%D -%D \startbuffer +%D +%D \startbuffer %D \starttabel[|||] %D \HL %D \VL \tbox{\externfiguur[koe][hoogte=3cm,kader=aan]} \VL top aligned \VL\SR @@ -1449,20 +1466,20 @@ %D \HL %D \stoptabel %D \stopbuffer -%D +%D %D \typebuffer -%D -%D The positioning depends on the strut settings: -%D +%D +%D The positioning depends on the strut settings: +%D %D \haalbuffer \def\tbox{\tbbox\ht\dp} \def\bbox{\tbbox\dp\ht} -\def\tbbox#1#2% +\def\tbbox#1#2% {\hbox\bgroup - \dowithnextbox - {\scratchdimen=\ht\nextbox + \dowithnextbox + {\scratchdimen=\ht\nextbox \advance\scratchdimen\dp\nextbox \advance\scratchdimen-#1\strutbox #1\nextbox=#1\strutbox @@ -1478,15 +1495,15 @@ %D \macros %D {boxofsize} %D -%D Sometimes we need to construct a box with a height or -%D width made up of several dimensions. Instead of cumbersome -%D additions, we can use: +%D Sometimes we need to construct a box with a height or +%D width made up of several dimensions. Instead of cumbersome +%D additions, we can use: %D %D \starttypen %D \boxofsize \vbox 10cm 3cm -5cm {the text to be typeset} %D \stoptypen %D -%D This example demonstrates that one can use positive and +%D This example demonstrates that one can use positive and %D negative values. Dimension registers are also accepted. \newdimen\sizeofbox @@ -1525,7 +1542,7 @@ \unhbox\nextbox} \hbox} -\def\fittoptobaselinegrid% weg hier +\def\fittoptobaselinegrid% weg hier {\dowithnextbox {\bgroup \par @@ -1545,7 +1562,7 @@ \egroup} \vbox} -%D Some more undocumented macros (used in m-chart). +%D Some more undocumented macros (used in m-chart). \newif\iftraceboxplacement % \traceboxplacementtrue @@ -1624,12 +1641,12 @@ \def\middlebox#1% {\hbox{\setbox0=\placedbox{#1}\boxoffset=-.5\wd0\rightbox{\box0}}} -%D \macros +%D \macros %D {removedepth, obeydepth} %D -%D While \type {\removedepth} removes the preceding depth, -%D \type {\obeydepth} makes sure we have depth. Both macros -%D leave the \type {\prevdepth} untouched. +%D While \type {\removedepth} removes the preceding depth, +%D \type {\obeydepth} makes sure we have depth. Both macros +%D leave the \type {\prevdepth} untouched. \def\removedepth% {\ifvmode \ifdim\prevdepth>\!!zeropoint \kern-\prevdepth \fi \fi} @@ -1672,17 +1689,17 @@ %D %D \typebuffer %D \haalbuffer -% +% % \def\dodonormbox#1#2#3#4#5#6#7% % {\doifnumberelse{#1} -% {\dimen0=#1}{\setbox0=#3{#1}\dimen0=#50}% +% {\dimen0=#1}{\setbox0=#3{#1}\dimen0=#50}% % \doifinstringelse{f}{#2} % {\let\next#4}{\let\next#3}% % \next to \dimen0 % {\counttoken b\in#2\to\!!counta\dorecurse{\!!counta}{#6}#6% -% #7\nextbox +% #7\nextbox % \counttoken a\in#2\to\!!counta\dorecurse{\!!counta}{#6}#6}} -% +% % \def\donormbox[#1][#2]% % {\bgroup % \doifinstringelse{v}{#2} @@ -1698,7 +1715,7 @@ % \fi % \egroup}% % \next} -% +% % \def\normbox% % {\dodoubleempty\donormbox} diff --git a/tex/context/base/supp-eps.tex b/tex/context/base/supp-eps.tex index 24e9da14c..ad16fd760 100644 --- a/tex/context/base/supp-eps.tex +++ b/tex/context/base/supp-eps.tex @@ -74,13 +74,12 @@ \doprocessfile\scratchread{#1}\doprocessEPSline \egroup \ifnum\EPSfound>0 - \dimen0=1bp\relax - #2=\EPSllx\dimen0 - #4=\EPSurx\dimen0 - \advance#4 by -\EPSllx\dimen0 - #3=\EPSlly\dimen0 - #5=\EPSury\dimen0 - \advance#5 by -\EPSlly\dimen0 + #2=\EPSllx bp % Using \EPSllx bp instead of + #4=\EPSurx bp % \dimen0=1bp and \EPSllx\dimen0 + #3=\EPSlly bp % is more accurate (.005pt). + #5=\EPSury bp + \scratchdimen=\EPSllx bp \advance#4 -\scratchdimen + \scratchdimen=\EPSlly bp \advance#5 -\scratchdimen \else #2=\!!zeropoint #3=\!!zeropoint diff --git a/tex/context/base/supp-fil.tex b/tex/context/base/supp-fil.tex index 94fb6ed8c..59e21a663 100644 --- a/tex/context/base/supp-fil.tex +++ b/tex/context/base/supp-fil.tex @@ -342,7 +342,7 @@ \doopenin{#1}{\pathplusfile{#2}{#3}}} %D \macros -%D {doiffileelse,doiflocfileelse} +%D {doiffileelse,doiflocfileelse,doifjobfileelse} %D %D The next alternative only looks if a file is present. No %D loading is done. This one obeys the standard \TEX\ @@ -353,7 +353,7 @@ %D \stoptypen %D %D We use \type{\next} here, because we want to close the -%D file first. We also provide the local alternative: +%D file first. We also provide the alternatives: %D %D \starttypen %D \doiflocfileelse {filename} {before loading} {not found} diff --git a/tex/context/base/supp-fun.tex b/tex/context/base/supp-fun.tex index 769ec848f..bfddf5cd4 100644 --- a/tex/context/base/supp-fun.tex +++ b/tex/context/base/supp-fun.tex @@ -29,7 +29,7 @@ \fi %D \macros -%D {DroppedCaps} +%D {DroppedCaps, DroppedString, DroppedIndent, DroppedLines} %D %D \startbuffer %D \DroppedCaps @@ -116,33 +116,82 @@ %D fact that the offsets depend on the design of the glyphs %D used. -\def\DroppedCaps#1#2#3#4#5#6#7% - {\par - \vskip#6\baselineskip - \penalty-200 - \vskip-#6\baselineskip - \setbox0=\hbox - {\definefont[temp][#2 at #3]% - \temp#1{#7}\hskip#4}% - \setbox0=\hbox - {\lower#5\box0}% - \ht0=\ht\strutbox - \dp0=\dp\strutbox - \hangindent\wd0 - \hangafter-#6% - \noindent - \hskip-\wd0 - \vbox{\forgetall\box0}% - \nobreak} +\let\DroppedIndent\zeropoint \def\DroppedLines{0} + +\def\DroppedString% + {ABCDEFGHIJKLMNOPQRSTUVWXYZ} + +\def\DroppedCaps#1#2#3#4#5#6#7% + {\ExpandBothAfter\doifinstringelse{#7}{\DroppedString} % + {\ifvmode % this one is \EveryPar save, precede by \par if needed + \vskip#6\baselineskip + \penalty-200 + \vskip-#6\baselineskip + \fi + \ifhmode + \hskip-\parindent + \fi + \setbox0=\hbox + {\definefont[temp][#2 at #3]\temp#1{#7}\hskip#4}% + \ifdim\dp0>\dp\strutbox % one of those Q's , will be option + \setbox2=\hbox{\raise\dp0\hbox{\lower\dp\strutbox\copy0}}% + \ht2=\ht0 \dp0=\dp\strutbox \setbox0=\box2 + \fi + \setbox0=\hbox + {\lower#5\box0}% + \ht0=\ht\strutbox + \dp0=\dp\strutbox + \edef\DroppedIndent{\the\wd0}% + \edef\DroppedLines {\number#6}% + \hangindent\DroppedIndent + \hangafter-\DroppedLines + \noindent + \hskip-\DroppedIndent + \vbox{\forgetall\box0}% + \nobreak + \ignorespaces} % Could be a one character word ! + {\edef\DroppedIndent{0pt}% + \edef\DroppedLines {\number\maxdimen}% + #7}} + %D Before we go to the next topic, we summarize this command: %D %D \starttypen %D \DroppedCaps -%D {command} {font} -%D {height} {hoffset} {voffset} {lines} +%D {command} {font} +%D {height} {hoffset} {voffset} {lines} %D \stoptypen +%D \macros +%D {LineDroppedCaps, NiceDroppedCaps} +%D +%D To save definitions, we also provide: +%D +%D \starttypen +%D \LineDroppedCaps {command} {font} {hoffset} {lines} +%D \NiceDroppedCaps {command} {font} {hoffset} {lines} +%D \stoptypen +%D +%D The first command scales the font to the exact height, while +%D the second command scales the font to a nice 2.5 times the +%D line height, a value that gives a pleasant grayness. + +\def\DoLineDroppedCaps#1#2#3#4#5% compensation command font offset lines + {\scratchcounter=#5% + \advance\scratchcounter by -1 + \scratchdimen=\scratchcounter\baselineskip + \advance\scratchdimen by #1% + \NormalizeFontHeight\DummyFont{W}{\scratchdimen}{#3}% + \DroppedCaps{#2}{#3}{\TheNormalizedFontSize}{#4} + {\scratchcounter\baselineskip}{#5}} + +\def\LineDroppedCaps% command font offset lines + {\DoLineDroppedCaps{\ht\strutbox}} + +\def\NiceDroppedCaps% command font offset lines + {\DoLineDroppedCaps{.5\baselineskip}} + %D \macros %D {TreatFirstLine} %D @@ -358,7 +407,8 @@ %D \typebuffer[b] %D \macros -%D {NormalizeFontHeight, NormalizeFontWidth} +%D {NormalizeFontHeight, NormalizeFontWidth, +%D TheNormalizedFontSize} %D %D Next we introduce some font manipulation macros. When we %D want to typeset some text spread in a well defined area, it @@ -388,12 +438,17 @@ \divide\dimen4 by \dimen2 \divide\dimen0 by 1000 \dimen0=\number\dimen4\dimen0 + \xdef\TheNormalizedFontSize{\the\dimen0}% \definefont[temp][#5 at \the\dimen0]% \temp \expandafter \egroup \expandafter\font\expandafter#2\expandafter=\fontname\font\relax} +%D Afterwards, we have access to the calculated size by: + +\let\TheNormalizedFontSize\!!zeropoint + %D Consider for instance: %D %D \startbuffer diff --git a/tex/context/base/supp-lan.tex b/tex/context/base/supp-lan.tex index 94918583a..dc0ab5660 100644 --- a/tex/context/base/supp-lan.tex +++ b/tex/context/base/supp-lan.tex @@ -40,18 +40,18 @@ %D combining words, we often favor putting dashes between those %D words, because it facilitates reading, at least for those %D who are not that accustomed to it. -%D +%D %D In \TEX\ compound words, separated by a hyphen, are not %D hyphenated at all. In spite of the multiple pass paragraph %D typesetting this can lead to parts of words sticking into -%D the margin. The solution lays in saying -%D \type{spoelwater||terugwinunit} instead of -%D \type{spoelwater-terugwinunit}. By using a one character -%D command like \type{|}, delimited by the same character -%D \type{|}, we get ourselves both a decent visualization (in -%D \TEXEDIT\ and colored verbatim we color these commands -%D yellow) and an efficient way of combining words. -%D +%D the margin. The solution lays in saying \type +%D {spoelwater||terugwinunit} instead of \type +%D {spoelwater-terugwinunit}. By using a one character command +%D like \type {|}, delimited by the same character \type {|}, +%D we get ourselves both a decent visualization (in \TEXEDIT\ +%D and colored verbatim we color these commands yellow) and an +%D efficient way of combining words. +%D %D The sequence \type{||} simply leads to two words connected by %D a hyphen. Because we want to distinguish such a hyphen from %D the one inserted when \TEX\ hyphenates a word, we use a bit @@ -113,7 +113,7 @@ %D \test {well|_|known} %D \stoptest %D -%D to strees the compoundness of hyphenated words. +%D to stress the compoundness of hyphenated words. %D %D Of course we also have to take care of the special case: %D @@ -377,7 +377,8 @@ \scratchcounter=\the\uccode`~ \uccode`~=`#1\relax \uppercase{\def\next{~}}% - \expandafter\unexpanded\expandafter\def\next{#2}% + %\expandafter\unexpanded\expandafter\def\next{#2}% + \expandafter\def\next{#2}% unexpanded goes wrong in pdfdoc \uccode`~=\scratchcounter} %D The next alternative also supports character numbers: @@ -388,7 +389,8 @@ {\catcode #1=\@@active \uccode`~= #1\relax} {\catcode`#1=\@@active \uccode`~=`#1\relax}% \uppercase{\def\next{~}}% - \expandafter\unexpanded\expandafter\def\next{#2}% + %\expandafter\unexpanded\expandafter\def\next{#2}% + \expandafter\def\next{#2}% unexpanded goes wrong in pdfdoc \uccode`~=\scratchcounter} %D Although adapting character codes and making characters @@ -620,6 +622,88 @@ %D load macropackages afterwards that make use of \type{<} in %D \type{\ifnum} or \type{\ifdim} statements. +%D And then came the Polish users, and who can deny them? Like +%D the German \TEX\ users demand an active \type {"}, the +%D Polish cannot do without the \type {/}. The next alternative +%D is a bit slower but far the most robust alternative. As a +%D bonus it also offers \type {|^|} and even \type {|||} which +%D both result in a breakable|^|bar. +%D +%D The trick we use here is to convert the argument to a +%D string and compare this string to string'd tokens. + +\def\activedotextmodediscretionary#1% + {\bgroup + \let\nextnextnext\egroup + \def\handlecompoundcharacter##1% new, needed for polish + {\getvalue{\@nc@\string##1}}% where / is active + \def\next##1#1% + {\def\next{\activedododotextmodediscretionary#1{##1}}% + \futurelet\nextnext\next}% + \next} + +\def\activedododotextmodediscretionary#1#2% + {\convertargument#2\to\discretionarytoken + \def\textmodediscretionary{\getvalue{textmodediscretionary\string#1}}% + \ifx#1\nextnext % takec care of ||| and +++ and ...... + \prewordbreak\discretionary{\hbox{$#1$}}{}{\hbox{$#1$}}% + \allowbreak\postwordbreak + \def\nextnextnext{\afterassignment\egroup\let\next=}% + \else\ifx\discretionarytoken\empty + \checkafterdiscretionary + \bgroup + \checkbeforediscretionary + \prewordbreak\hbox{\textmodediscretionary\nextnext}\allowbreak\postwordbreak + \egroup + \else\convertargument=\to\next\ifx\next\discretionarytoken + \prewordbreak\textmodediscretionary + \else\convertargument~\to\next\ifx\next\discretionarytoken + \prewordbreak\discretionary{-}{}{\thinspace}\postwordbreak + \else\convertargument_\to\next\ifx\next\discretionarytoken + \prewordbreak\discretionary{\textmodediscretionary} + {\textmodediscretionary}{\textmodediscretionary}\prewordbreak + \else\convertargument(\to\next\ifx\next\discretionarytoken + \ifdim\lastskip>\!!zeropoint\relax + (\prewordbreak + \else + \prewordbreak\discretionary{}{(-}{(}\prewordbreak + \fi + \else\convertargument)\to\next\ifx\next\discretionarytoken + \ifx\nextnext\blankspace + \prewordbreak)\relax + \else\ifx\nextnext\space + \prewordbreak)\relax + \else + \prewordbreak\discretionary{-)}{}{)}\prewordbreak + \fi\fi + \else\convertargument'\to\next\ifx\next\discretionarytoken + \prewordbreak\discretionary{-}{}{'}\postwordbreak + \else\convertargument<\to\next\ifx\next\discretionarytoken + \beginofsubsentence\prewordbreak\beginofsubsentencespacing + \else\convertargument>\to\next\ifx\next\discretionarytoken + \endofsubsentencespacing\prewordbreak\endofsubsentence + \else\convertargument^\to\next\ifx\next\discretionarytoken + \prewordbreak\discretionary{\hbox{$|$}}{}{\hbox{$|$}}% + \allowbreak\postwordbreak + \else + \checkafterdiscretionary + \bgroup + \checkbeforediscretionary + \prewordbreak + \discretionary{\hbox{#2}}{}{\hbox{#2}}% + \allowbreak\postwordbreak + \egroup + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \nextnextnext} + +%D Since we don't have to bother about active characters any +%D longer, we end up with a pretty simple activating macro: + +\def\enableactivediscretionaries% + {\let\dotextmodediscretionary=\activedotextmodediscretionary} + +%D Done somewhere else: \type {\enableactivediscretionaries}. + %D \macros %D {installcompoundcharacter} %D @@ -697,10 +781,9 @@ %\let\next\relax % forget "{ee} -> ee \def\next{\handlecompoundcharacterone#1}% % ignore "{ee} -> "ee \else\ifx\next\egroup - \let\next\relax + \def\next{\getvalue{\@nc@\string#1}}% \else\ifx\next\blankspace - %\let\next\relax - \def\next{\getvalue{\@nc@\string#1}}% better + \def\next{\getvalue{\@nc@\string#1}}% \else \def\next{\dodohandlecompoundcharacter#1}% \fi\fi\fi diff --git a/tex/context/base/supp-mis.tex b/tex/context/base/supp-mis.tex index c8071bf55..5fe26ba9a 100644 --- a/tex/context/base/supp-mis.tex +++ b/tex/context/base/supp-mis.tex @@ -141,6 +141,8 @@ \ifnocontextobject \eightbitcharacterstrue \do \newif\ifeightbitcharacters \fi \ifnocontextobject \MPdrawingdonetrue \do \newif\ifMPdrawingdone \fi +\ifnocontextobject \ifzeropt \do \let\ifzeropt\ifcase \fi + %D \macros %D {@@...} %D @@ -158,6 +160,16 @@ \ifnocontextobject \@@active \do \chardef\@@active = 13 \fi \ifnocontextobject \@@comment \do \chardef\@@comment = 14 \fi +%D \macros +%D {@EA,expanded} +%D +%D Also needed: + +\let\@EA=\expandafter + +\def\expanded#1% + {\edef\@@expanded{\noexpand#1}\@@expanded} + %D \macros %D {everyline,EveryLine,EveryPar} %D diff --git a/tex/context/base/supp-mpe.tex b/tex/context/base/supp-mpe.tex new file mode 100644 index 000000000..92d2e860d --- /dev/null +++ b/tex/context/base/supp-mpe.tex @@ -0,0 +1,342 @@ +%D \module +%D [ file=supp-mpe, +%D version=1999.07.10, +%D title=\CONTEXT\ Support Macros, +%D subtitle=METAPOST Special Extensions, +%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 experimental and deals with some +%D extensions to \METAPOST. When using \POSTSCRIPT\ output, +%D these extensions can be supplied by means of proper +%D preamble definitions, but when producing \PDF\ we have to +%D set up the appropriate datastructures ourselves. It acts as +%D a plug in into \type {supp-pdf}. As soon as we need more +%D extensions, we will generalize these macro. + +\writestatus{loading}{MetaPost Special Extensions} + +%D We implement extensions by using the \METAPOST\ special +%D mechanism. Opposite to \TEX's specials, the \METAPOST\ ones +%D are flushed before or after the graphic data, but thereby +%D are no longer connected to a position. +%D +%D We implement specials by overloading the \type {fill} +%D operator. By counting the fills, we can let the converter +%D treat the appropriate fill in a special way. The +%D specification of the speciality can have two forms, +%D determined by the setting of a boolean variable: +%D +%D \starttypen +%D _inline_shading_ := false ; % comment like code (default) +%D _inline_shading_ := true ; % command like code +%D \stoptypen +%D +%D When the specification is embedded as comment, it looks +%D like: +%D +%D \starttypen +%D %%MetaPostSpecial +%D \stoptypen +%D +%D The in||line alternative is more tuned for \POSTSCRIPT, +%D since it permits us to define a macro \type {special}. +%D +%D \starttypen +%D inline : special +%D \stoptypen +%D +%D The \type {identifier} determines what to do, and the data +%D can be used to accomplish this. A type~2 shading function +%D has identifier~2. Alltogether, the number of parameters is +%D specified in \type {size}. The \type {number} is the number +%D of the fill that needs the special treatment. For a type~2 +%D and~3 shaded fill, the datablock contains the following +%D data: +%D +%D \starttypen +%D from to n inner_r g b x y outer_r g b x y +%D from to n inner_r g b x y radius outer_r g b x y radius +%D \stoptypen +%D +%D The implementation below, saves the data on the stack in +%D a way similar to the macros in \type {supp-pdf.tex}, and +%D just overload a few already defined handlers. That way, +%D the existing macros are still generic. \voetnoot {Actually, +%D the macros here are just as generic.} +%D +%D Currently the only extension concerns shading, which is +%D accomplished by handling yet another value of \type +%D {\finiMPpath}. The recource disctionary is stored and +%D later picked up by the general \CONTEXT\ figure inclusion +%D macros. + +\unprotect + +\newcount\currentPDFshade % global count +\newcount\currentMPshade % local count +\newcount\currentMPfill % local count +\chardef\inlineMPspecials=0 % only needed for stack resetting +\let\currentMPshades\empty + +\def\dohandleMPspecialcomment#1 + {\setMPargument{#1}% + \advance\scratchcounter by -1 + \ifcase\scratchcounter + \handleMPspecialcommand + \donetrue + \doresetMPstack + \let\handleMPsequence=\dohandleMPsequence + \expandafter\handleMPsequence + \else + \expandafter\dohandleMPspecialcomment + \fi} + +\def\handleMPspecialcomment #1 % number of arguments + {\doresetMPstack + \scratchcounter=#1\relax + \ifcase\scratchcounter % when zero, inline shading is used + \chardef\inlineMPspecials=1 + \let\handleMPsequence=\dohandleMPsequence + \expandafter\handleMPsequence + \else + \chardef\inlineMPspecials=0 + \expandafter\dohandleMPspecialcomment + \fi} + +\def\startMPresources% + {\global\let\currentMPshades\empty + \global\currentMPfill=0 + \global\currentMPshade=0 + \ifx\currentPDFresources\empty\else + \message{unused resources before shade \the\currentPDFshade}% + \fi + \global\let\currentPDFresources\empty} + +\def\stopMPresources% + {\ifx\currentMPshades\empty + \global\let\currentPDFresources\empty + \else + \xdef\currentPDFresources% + {/Shading << \currentMPshades >>}% + \fi} + +\def\startMPshading#1% + {\edef\currentMPspecial{\gMPs{#1}}} + +\def\stopMPshading% + {\global\advance\currentPDFshade by 1 + \global\advance\currentMPshade by 1 + \setevalue{mps:Sh:\currentMPspecial}% non global !! + {\the\currentPDFshade}% + \xdef\currentMPshades% + {\currentMPshades/Sh\the\currentPDFshade\space\the\pdflastobj\space0 R }} + +\def\processMPpath% + {\global\advance\currentMPfill by 1 + \ifnum\finiMPpath=2 \ifx\currentMPshades\empty \else + \doifdefined{mps:Sh:\the\currentMPfill} + {\chardef\finiMPpath=4 \PDFcode{q /Pattern cs}}% + \fi \fi + \flushMPpath + \closeMPpath + \PDFcode + {\ifcase\finiMPpath + W n\or S\or f\or B\or W n /Sh\getvalue{mps:Sh:\the\currentMPfill} sh Q% + \fi}% + \let\handleMPsequence=\dohandleMPsequence + \resetMPstack + \nofMPsegments=0 + \handleMPsequence} + +\def\handleMPspecialcommand% + {\ifcase\inlineMPspecials\or + \advance\nofMParguments by -1 % pop the size + \fi + \doifundefinedelse{\MPspecial} + {\message{[unknown \MPspecial]}} + {\getvalue{\MPspecial}}% + \ifcase\inlineMPspecials + \doresetMPstack % 0 + \else + \resetMPstack % 1 + \fi} + +\def\MPspecial% + {MP special \gMPs\nofMParguments} + +\def\defineMPspecial#1#2% + {\setvalue{MP special #1}{#2}} + +%D Shading is an example of a more advanced graphic feature, +%D but users will seldom encounter those complications. Here +%D we only show a few simple examples, but many other +%D alternatives are possible by setting up the functions built +%D in \PDF\ in the appropriate way. +%D +%D Shading has to do with interpolation between two or more +%D points or user supplied ranges. In \PDF, the specifications +%D of a shade has to be encapsulated in objects and passed on +%D as resources. This is a \PDF\ level 1.3. feature. One can +%D simulate three dimensional shades as well and define simple +%D functions using a limited set of \POSTSCRIPT\ primitives. +%D Given the power of \METAPOST\ and these \PDF\ features, we +%D can achieve superb graphic effects. +%D +%D Since everything is hidden in \TEX\ and \METAPOST\ graphics, +%D we can stick to high level \CONTEXT\ command, as shown in +%D the following exmples. +%D +%D \startbuffer +%D \startuniqueMPgraphic{CircularShade} +%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ; +%D circular_shade(p,0,.2red,.9red) ; +%D \stopuniqueMPgraphic +%D +%D \startuniqueMPgraphic{LinearShade} +%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ; +%D linear_shade(p,0,.2blue,.9blue) ; +%D \stopuniqueMPgraphic +%D +%D \startuniqueMPgraphic{DuotoneShade} +%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ; +%D linear_shade(p,2,.5green,.5red) ; +%D \stopuniqueMPgraphic +%D \stopbuffer +%D +%D \typebuffer +%D +%D \haalbuffer +%D +%D These graphics can be hooked into the overlay mechanism, +%D which is available in many commands. +%D +%D \startbuffer +%D \defineoverlay[demo 1][\uniqueMPgraphic{CircularShade}] +%D \defineoverlay[demo 2][\uniqueMPgraphic {LinearShade}] +%D \defineoverlay[demo 3][\uniqueMPgraphic {DuotoneShade}] +%D \stopbuffer +%D +%D \typebuffer +%D +%D \haalbuffer +%D +%D These backgrounds can for instance be applied to \type +%D {\framed}: +%D +%D \startbuffer +%D \setupframed[breedte=3cm,hoogte=2cm,kader=uit] +%D \startcombinatie[3*1] +%D {\framed[achtergrond=demo 1]{\bfd \white Demo 1}} {} +%D {\framed[achtergrond=demo 2]{\bfd \white Demo 2}} {} +%D {\framed[achtergrond=demo 3]{\bfd \white Demo 3}} {} +%D \stopcombinatie +%D \stopbuffer +%D +%D \typebuffer +%D +%D \startregelcorrectie +%D \haalbuffer +%D \stopregelcorrectie +%D +%D There are a few more alternatives, determined by the second +%D parameter passed to \type {circular_shade} and alike. +%D +%D \def\SomeShade#1#2#3#4#5% +%D {\startuniqueMPgraphic{Shade-#1} +%D width := \overlaywidth ; +%D height := \overlayheight ; +%D path p ; p := unitsquare xscaled width yscaled height ; +%D #2_shade(p,#3,#4,#5) ; +%D \stopuniqueMPgraphic +%D \defineoverlay[Shade-#1][\uniqueMPgraphic{Shade-#1}]% +%D \framed[achtergrond=Shade-#1,breedte=2cm,hoogte=2cm,kader=uit]{}} +%D +%D \startregelcorrectie +%D \startcombinatie[5*1] +%D {\SomeShade{10}{circular}{0}{.3blue}{.9blue}} {circular 0} +%D {\SomeShade{11}{circular}{1}{.3blue}{.9blue}} {circular 1} +%D {\SomeShade{12}{circular}{2}{.3blue}{.9blue}} {circular 2} +%D {\SomeShade{13}{circular}{3}{.3blue}{.9blue}} {circular 3} +%D {\SomeShade{14}{circular}{4}{.3blue}{.9blue}} {circular 4} +%D \stopcombinatie +%D \stopregelcorrectie +%D +%D \blanko +%D +%D \startregelcorrectie +%D \startcombinatie[5*1] +%D {\SomeShade{20}{circular}{0}{.9green}{.3green}} {circular 0} +%D {\SomeShade{21}{circular}{1}{.9green}{.3green}} {circular 1} +%D {\SomeShade{22}{circular}{2}{.9green}{.3green}} {circular 2} +%D {\SomeShade{23}{circular}{3}{.9green}{.3green}} {circular 3} +%D {\SomeShade{24}{circular}{4}{.9green}{.3green}} {circular 4} +%D \stopcombinatie +%D \stopregelcorrectie +%D +%D \blanko +%D +%D \startregelcorrectie +%D \startcombinatie[4*1] +%D {\SomeShade{30}{linear}{0}{.3red}{.9red}} {linear 0} +%D {\SomeShade{31}{linear}{1}{.3red}{.9red}} {linear 1} +%D {\SomeShade{32}{linear}{2}{.3red}{.9red}} {linear 2} +%D {\SomeShade{33}{linear}{3}{.3red}{.9red}} {linear 3} +%D \stopcombinatie +%D \stopregelcorrectie +%D +%D These macros closely cooperate with the \METAPOST\ module +%D \type {mp-spec.mp}, which is part of the \CONTEXT\ +%D distribution. +%D +%D The low level (\PDF) implementation is based on the \TEX\ +%D based \METAPOST\ to \PDF\ converter. Shading is supported +%D by overloading the \type {fill} operator as implemented +%D earlier. In \PDF\ type~2 and~3 shading functions are +%D specified in terms of: +%D +%D \starttabulatie[|Tl|l|] +%D \NC /Domain \NC sort of meeting range \NC \NR +%D \NC /C0 \NC inner shade \NC \NR +%D \NC /C1 \NC outer shade \NC \NR +%D \NC /N \NC smaller values, bigger inner circles \NC \NR +%D \stoptabulatie + +\defineMPspecial{2} + {\startMPshading{14}% type 2 + \immediate\pdfobj + {<>}% + \immediate\pdfobj + {<>}% + \stopMPshading} + +\defineMPspecial{3} + {\startMPshading{16}% type 3 + \immediate\pdfobj + {<>}% + \immediate\pdfobj + {<>}% + \stopMPshading} + +\protect \endinput diff --git a/tex/context/base/supp-mps.tex b/tex/context/base/supp-mps.tex index 51ea39dea..20885bebc 100644 --- a/tex/context/base/supp-mps.tex +++ b/tex/context/base/supp-mps.tex @@ -70,7 +70,7 @@ %D \macros %D {startMPrun} %D -%D If we just wat to run \METAPOST\ code, that is, not to +%D If we just want to run \METAPOST\ code, that is, not to %D explictly generate a figure in terms of \type{beginfig} and %D \type{endfig}, we can use: %D @@ -195,7 +195,7 @@ %D \MPinclusions{input mp-mine} %D \stoptypen %D -%D The token register type {\MPinitializations} is expanded +%D The token register \type {\MPinitializations} is expanded %D before all other inclusions. \newtoks \MPinitializations @@ -346,7 +346,8 @@ \let\stopwritingMPgraphic=\relax \let\flushMPgraphics =\relax -%D By default each graphic gets its own slot (number): +%D By default each graphic gets its own slot (number). Later +%D on we will define a recycle bin. \def \allocateMPslot#1{\global\advance#1 by 1 } \def\deallocateMPslot#1{} @@ -417,8 +418,17 @@ {\setbox\MPgraphicbox=\hbox {\ifinsertMPgraphics\insertMPfile{#1}{#2}\fi}} +% \def\placeMPgraphic% +% {\box\MPgraphicbox} + \def\placeMPgraphic% - {\box\MPgraphicbox} + {\ifMPshiftdrawing + \dimen0=\MPllx bp + \dimen2=\MPlly bp + \hbox{\hskip\dimen0\raise\dimen2\box\MPgraphicbox}% + \else + \box\MPgraphicbox + \fi} %D \macros %D {startreusableMPgraphic, reuseMPgraphic, useMPbox} @@ -649,7 +659,7 @@ %D inclusion macros. A decent plain \TEX\ alternative is: %D %D \starttypen -%D \def\includeMPgraphics#1% +%D \def\includeMPgraphic#1% %D {\hbox\bgroup %D \includeMPfonts{#1}% %D \dogetEPSboundingbox{#1}{\dimen2}{\dimen4}{\dimen6}{\dimen8}% @@ -672,7 +682,7 @@ %D scaling. For \LATEX\ users the next one wil do: %D %D \starttypen -%D \def\includeMPgraphics#1#% +%D \def\includeMPgraphic#1#% %D {\hbox\bgroup %D \def\includeMPgraphics##1% %D {\includeMPfonts{##1}% @@ -1074,7 +1084,7 @@ \let\MPdrawingdata\empty \newif\ifMPdrawingdone \MPdrawingdonefalse -\newif\ifMPshiftdrawing \MPshiftdrawingtrue +\newif\ifMPshiftdrawing \MPshiftdrawingfalse \def\resetMPdrawing% {\global\let\MPdrawingdata\empty @@ -1087,22 +1097,28 @@ \def\popMPdrawing% {\popmacro\MPdrawingdata} +% \def\getMPdrawing% +% {\ifMPdrawingdone +% \bgroup +% \setbox0=\hbox +% {\expandafter\startMPgraphic\MPdrawingdata\stopMPgraphic +% \loadcurrentMPgraphic\empty +% \placeMPgraphic}% +% \ifMPshiftdrawing +% \dimen0=\MPllx bp +% \dimen2=\MPlly bp +% \hbox{\hskip\dimen0\raise\dimen2\box0}% +% \else +% \box0 +% \fi +% \egroup +% \fi} + \def\getMPdrawing% {\ifMPdrawingdone - \bgroup - \setbox0=\hbox - {\expandafter\startMPgraphic\MPdrawingdata\stopMPgraphic - \loadcurrentMPgraphic\empty -%\deallocateMPslot\currentMPgraphic - \placeMPgraphic}% - \ifMPshiftdrawing - \dimen0=\MPllx bp - \dimen2=\MPlly bp - \hbox{\hskip\dimen0\raise\dimen2\box0}% - \else - \box0 - \fi - \egroup + \expandafter\startMPgraphic\MPdrawingdata\stopMPgraphic + \loadcurrentMPgraphic\empty + \placeMPgraphic \fi} \long\def\startMPdrawing#1\stopMPdrawing% @@ -1188,6 +1204,47 @@ \egroup} \egroup +%D \macros +%D {recycleMPslots} +%D +%D When coding and embedding many \METAPOST\ figures in a +%D document, one can save quite some disk space by using +%D \PDFTEX\ and setting the next switch: + +\newif\ifrecycleMPslots \recycleMPslotsfalse + +\def\allocateMPslot#1% + {\ifrunMPgraphics + \ifcase\pdfoutput \recycleMPslotsfalse \fi + \else + \recycleMPslotsfalse + \fi + \ifrecycleMPslots + \doloop + {\doifundefined{\recurselevel MP} + {\global\letvalue{\recurselevel MP}=\empty + \global#1=\recurselevel\exitloop}}% + %\message{[MP slot + \number#1]% + \else + \global\advance#1 by 1 + \fi} + +\def\deallocateMPslot#1% + {\ifrunMPgraphics + \ifcase\pdfoutput \recycleMPslotsfalse \fi + \else + \recycleMPslotsfalse + \fi + \ifrecycleMPslots + \global\letbeundefined{\number#1MP}% + %\message{[MP slot - \number#1]}% + \fi} + +%D Experimental: + +\def\MPdatafile% + {mp-\the\currentMPgraphic.tmp} + \protect \endinput diff --git a/tex/context/base/supp-pdf.tex b/tex/context/base/supp-pdf.tex index 972a4b02a..83205eb13 100644 --- a/tex/context/base/supp-pdf.tex +++ b/tex/context/base/supp-pdf.tex @@ -1,6 +1,6 @@ %D \module %D [ file=supp-pdf, -%D version=1998.10.15, +%D version=2000.04.28, %D title=\CONTEXT\ Support Macros, %D subtitle=\METAPOST\ to \PDF\ conversion, %D author=Hans Hagen, @@ -36,7 +36,7 @@ \ifx\pdfliteral\undefined \def\PDFcode#1{\message{[ignored pdfliteral: #1]}} \else - \let\PDFcode=\pdfliteral + \let\PDFcode\pdfliteral \fi %D \macros @@ -356,7 +356,7 @@ %D %D \starttypen %D \gMPa {number} -%D \sMPa {number} +%D \gMPs {number} %D \stoptypen %D %D When scanning a path specification, we also save the @@ -404,10 +404,10 @@ {\do#1}} \def\gMPa#1% - {\csname\@@MP0#1\endcsname} + {\csname\@@MP0\number#1\endcsname} \def\gMPs#1% - {\csname\@@MP\the\nofMPsegments#1\endcsname} + {\csname\@@MP\the\nofMPsegments\number#1\endcsname} \def\setMPkeyword#1 {\expandafter\def\csname\@@MP\the\nofMPsegments0\endcsname{#1}% @@ -577,6 +577,7 @@ \PDFcode{\gMPa1 M}% \resetMPstack \else\ifx\somestring\PSfshow + \PDFcode{n}% \handleMPfshow \resetMPstack \else\ifx\somestring\PSsetlinecap @@ -661,6 +662,7 @@ \dimen0=\MPxscale\dimen0 \xdef\MPwidth{\the\dimen0}% \advance\dimen2 by #5bp + \xdef\MPyshift{\the\dimen2}% unscaled \dimen2=\MPyscale\dimen2 \xdef\MPheight{\the\dimen2}% \chardef\currentMPboundingbox=#1\relax @@ -714,12 +716,13 @@ %D take care of \type{(split arguments)}. \def\handleMPfshow% - {\setbox0=\hbox + {\bgroup + \setbox\scratchbox=\hbox {\obeyMPspecials - \edef\size{\gMPa{\the\nofMParguments}}% + \edef\size{\gMPa\nofMParguments}% \ifx\size\PSnfont % round font size (to pt) \advance\nofMParguments by -1 - \expandafter\scratchdimen\gMPa{\the\nofMParguments}pt + \expandafter\scratchdimen\gMPa\nofMParguments pt \ifdim\scratchdimen<1pt \def\size{1pt}% \else @@ -731,7 +734,7 @@ \edef\size{\size bp}% \fi \advance\nofMParguments by -1 - \font\temp=\gMPa{\the\nofMParguments} at \size + \font\temp=\gMPa\nofMParguments\space at \size \advance\nofMParguments by -1 \temp \ifnum\nofMParguments=1 @@ -739,27 +742,41 @@ \gMPa1% \else \scratchcounter=1 - \def\do(##1{\if##1 \char32\else##1\fi}% - \gMPa{\the\scratchcounter}\space - \def\do{}% + \def\dodo##1% + {\edef\!!stringa{##1}\ifx\!!stringa\space\char32\else##1\fi}% + \def\do(##1{\dodo{##1}}% + \gMPa\scratchcounter\space + \let\do\relax \loop \advance\scratchcounter by 1 \ifnum\scratchcounter<\nofMParguments - \gMPa{\the\scratchcounter}\space + [\gMPa\scratchcounter]\space \repeat - \def\do##1){\if##1 \char32\else##1\fi}% - \gMPa{\the\scratchcounter}% + \def\do##1){\dodo{##1}}% + \gMPa\scratchcounter \fi \unskip}% - \dimen0=\lastMPmoveY bp - \advance\dimen0 by \ht0 - \ScaledPointsToBigPoints{\number\dimen0}\lastMPmoveY - \PDFcode{n q 1 0 0 1 \lastMPmoveX\space\lastMPmoveY\space cm}% - \dimen0=\ht0 - \advance\dimen0 by \dp0 - \box0 - \vskip-\dimen0 - \PDFcode{Q}} + % + % this fails in latest pdftex's + % + % \dimen0=\lastMPmoveY bp + % \advance\dimen0 by \ht0 + % \ScaledPointsToBigPoints{\number\dimen0}\lastMPmoveY + % \PDFcode{n q 1 0 0 1 \lastMPmoveX\space\lastMPmoveY\space cm}% + % \dimen0=\ht0 + % \advance\dimen0 by \dp0 + % \box0 + % \vskip-\dimen0 + % \PDFcode{Q}% + % \egroup} + % + \setbox\scratchbox=\hbox + {\hskip\lastMPmoveX bp\raise\lastMPmoveY bp\box\scratchbox}% + \ht\scratchbox\!!zeropoint + \dp\scratchbox\!!zeropoint + \wd\scratchbox\!!zeropoint + \box\scratchbox + \egroup} %D Most operators are just converted and keep their %D arguments. Dashes however need a bit different treatment, @@ -776,10 +793,10 @@ \scratchcounter=1 \loop \ifnum\scratchcounter<\nofMParguments - \edef\somestring{\somestring\space\gMPa{\the\scratchcounter}}% + \edef\somestring{\somestring\space\gMPa\scratchcounter}% \advance\scratchcounter by 1 \repeat - \edef\somestring{\somestring]\gMPa{\the\scratchcounter} d}% + \edef\somestring{\somestring]\gMPa\scratchcounter\space d}% \PDFcode{\somestring}% \egroup} @@ -1342,6 +1359,14 @@ \let\currentPDFresources\empty +\def\convertMPtoPDF#1#2#3% + {\bgroup + \setbox\scratchbox=\vbox\bgroup + \forgetall + \offinterlineskip + \startMPresources + \doprocessMPtoPDFfile{#1}{#2}{#3}} % {#1}{0#2}{0#3} would be saver + \def\processMPtoPDFfile% file xscale yscale {\bgroup \let\finishMPgraphic=\egroup @@ -1360,43 +1385,49 @@ \input#1\relax \deleteMPgraphic{#1}} -\def\convertMPtoPDF#1#2#3% - {\bgroup - \setbox0=\vbox\bgroup - \forgetall - \offinterlineskip - \PDFcode{q}% - \startMPresources - \doprocessMPtoPDFfile{#1}{#2}{#3}} - -\def\finishMPgraphic% +\def\finishMPgraphic% {\stopMPresources - \PDFcode{Q}% \egroup - \wd0=\MPwidth \ifx\pdftexversion\undefined\else\ifnum\pdftexversion<14 % for the moment \chardef\makeMPintoPDFobject=0 \fi\fi - \ifcase\makeMPintoPDFobject\or - \setbox0= - \or\ifx\currentPDFresources\empty\else - \chardef\makeMPintoPDFobject=1 \setbox0= + \ifcase\makeMPintoPDFobject\or\or\ifx\currentPDFresources\empty\else + \chardef\makeMPintoPDFobject=1 \fi\fi - \vbox to \MPheight + \setbox\scratchbox=\vbox {\forgetall - \vfill - \PDFcode{q \MPxscale\space 0 0 \MPyscale\space - \MPxoffset\space \MPyoffset\space cm}% - \box0 - \PDFcode{Q}}% - \ifcase\makeMPintoPDFobject\or - \immediate\pdfxform attr{\currentPDFresources}0% + \hbox + {\PDFcode{q \MPxscale\space 0 0 \MPyscale\space \MPxoffset\space \MPyoffset\space cm}% + \lower\MPyshift\box\scratchbox % unscaled shift + \PDFcode{Q}}}% + \ht\scratchbox\MPheight + \wd\scratchbox\MPwidth + \dp\scratchbox\!!zeropoint + \ifcase\makeMPintoPDFobject + \box\scratchbox + \or + \immediate\pdfxform attr{\currentPDFresources}\scratchbox \xdef\lastPDFMPobject{\the\pdflastxform}% \pdfrefxform\lastPDFMPobject \global\let\currentPDFresources\empty + \else + \box\scratchbox \fi \egroup} +% \setbox\scratchbox=\vbox +% {\forgetall +% \dimen0=\MPllx bp +% \dimen2=\MPlly bp +% \setbox\scratchbox=\hbox{\hskip-\dimen0\raise-\dimen2\box\scratchbox}% +% \ht\scratchbox=\!!zeropoint +% \dp\scratchbox=\!!zeropoint +% \wd\scratchbox=\!!zeropoint +% \hbox +% {\PDFcode{q \MPxscale\space 0 0 \MPyscale\space 0 0 cm}% +% \lower\MPheight\box\scratchbox +% \PDFcode{Q}}}% + %D \macros %D {deleteMPgraphic, %D startMPresources, diff --git a/tex/context/base/symb-ini.tex b/tex/context/base/symb-ini.tex index b58a496d2..16a05c096 100644 --- a/tex/context/base/symb-ini.tex +++ b/tex/context/base/symb-ini.tex @@ -89,8 +89,8 @@ {\doifdefinedelse{\??ss#1}{\getvalue{\??ss#1}}{#1}}% \fi} -\unexpanded\def\symbol% - {\dodoubleempty\dosymbol} +\unexpanded\def\symbol% % This one always gobbles spaces, + {\dodoubleempty\dosymbol} % so never change it again! %D \macros %D {definefiguresymbol} @@ -274,6 +274,13 @@ \definesymbol [\v!achteruit] [{\symbol[\v!vorigepagina]}] \definesymbol [\v!vooruit] [{\symbol[\v!volgendepagina]}] +%D The next two symbols (\symbol[P] and \symbol[S]) are +%D variations in their math counterparts. The following ones +%D {\em do} scale. + +\definesymbol[S][\getglyph{MathSymbol}{\char"78}] +\definesymbol[P][\getglyph{MathSymbol}{\char"7B}] + %D These symbols are taken from the Computer Moders Roman %D symbol set or, when present, from the additional symbols of %D the American Mathematical Society. Of course one can use diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex index 1c8ad40e0..229883caf 100644 --- a/tex/context/base/syst-ext.tex +++ b/tex/context/base/syst-ext.tex @@ -224,7 +224,7 @@ %D When writing advanced macros, we cannot do without %D signaling. A signal is a small (invisible) kern or penalty %D that signals the next macro that something just happened. -%D This macro can take any action depending onthe previous +%D This macro can take any action depending on the previous %D signal. Signals must be unique and the next macro takes care %D of that. %D @@ -235,12 +235,12 @@ %D Signals old dimensions and can be used in skips, kerns and %D tests like \type{\ifdim}. -\newdimen\currentsignal +\newdimen\maximumsignal % step is about 0.00025pt \def\newsignal#1% {\ifx#1\undefined - \advance\currentsignal by 0.00025pt - \edef#1{\the\currentsignal}% + \advance\maximumsignal by 2sp % to be save in rounding + \edef#1{\the\maximumsignal}% \fi} %D \macros @@ -248,7 +248,7 @@ %D %D \TEX\ offers 256 \DIMENSIONS\ and \SKIPS. Unfortunately this %D amount is too small to suit certain packages. Therefore when -%D possible one should use +%D possible one should use: %D %D \starttypen %D \newskimen\tempskimen @@ -333,6 +333,19 @@ \let\newconditional = \setfalse \let\ifconditional = \ifcase +%D \macros +%D {ifzeropt} +%D +%D The next macro is both cosmetic and byte saving. It is +%D pretty \type{\if}||safe too. It can be used in cases +%D like: +%D +%D \starttypen +%D \ifzeropt \somedimen ... \else ... \fi +%D \stoptypen + +\let\ifzeropt\ifcase + %D \macros %D {dorecurse,recurselevel,recursedepth, %D dostepwiserecurse, @@ -764,6 +777,25 @@ %D The \type{-}, the delimiter \type{\\\\} and the the second %D argument are completely redundant. +%D \macros +%D {doifmeaningelse} +%D +%D We can use both commands in testing, but alas, not all +%D meanings expand to something \type {->}. This is no problem +%D in the \ETEX\ implementation, but since we want +%D compatibility, we need: +%D +%D \starttypen +%D \doifmeaningelse {\next} {\something} {true} {false} +%D \stoptypen +%D +%D Watch the one level expansion of the second argument. + +\def\doifmeaningelse#1#2#3#4% + {\edef\!!stringa{\meaning#1}% + \def\!!stringb{#2}\edef\!!stringb{\meaning\!!stringb}% + \ifx\!!stringa\!!stringb#3\else#4\fi} + %D \macros %D {ExpandFirstAfter,ExpandSecondAfter,ExpandBothAfter} %D @@ -1496,45 +1528,65 @@ %D %D But here we prefer: -\def\appendtoks% - {\bgroup - \let\bgroup\relax - \futurelet\scratchtoken\doappendtoks} - -\def\doappendtoks% - {\ifx\scratchtoken\normalbgroup - \egroup\expandafter\dodoappendtoks - \else - \egroup\expandafter\dododoappendtoks - \fi} +% haha, far to complex +% +% \def\appendtoks% +% {\bgroup +% \let\bgroup\relax +% \futurelet\scratchtoken\doappendtoks} +% +% \def\doappendtoks% +% {\ifx\scratchtoken\normalbgroup +% \egroup\expandafter\dodoappendtoks +% \else +% \egroup\expandafter\dododoappendtoks +% \fi} +% +% \def\dodoappendtoks#1% +% {\dododoappendtoks{{#1}}} +% +% \def\dododoappendtoks#1\to#2% +% {\scratchtoks={#1}% +% \edef\scratchtoken{\noexpand#2={\the#2\the\scratchtoks}}% +% \scratchtoken +% \dodoglobal#2=#2} +% +% \def\prependtoks% +% {\bgroup +% \let\bgroup\relax +% \futurelet\scratchtoken\doprependtoks} +% +% \def\doprependtoks% +% {\ifx\scratchtoken\normalbgroup +% \egroup\expandafter\dodoprependtoks +% \else +% \egroup\expandafter\dododoprependtoks +% \fi} +% +% \def\dodoprependtoks#1% +% {\dododoprependtoks{{#1}}} +% +% \def\dododoprependtoks#1\to#2% +% {\scratchtoks={#1}% +% \edef\scratchtoken{\noexpand#2={\the\scratchtoks\the#2}}% +% \scratchtoken +% \dodoglobal#2=#2} -\def\dodoappendtoks#1% - {\dododoappendtoks{{#1}}} +\def\appendtoks% + {\doappendtoks\relax} -\def\dododoappendtoks#1\to#2% - {\scratchtoks={#1}% - \edef\scratchtoken{\noexpand#2={\the#2\the\scratchtoks}}% +\long\def\doappendtoks#1\to#2% + {\@EA\scratchtoks\@EA{\gobbleoneargument#1}% + \long\edef\scratchtoken{\noexpand#2={\the#2\the\scratchtoks}}% \scratchtoken \dodoglobal#2=#2} \def\prependtoks% - {\bgroup - \let\bgroup\relax - \futurelet\scratchtoken\doprependtoks} + {\doprependtoks\relax} -\def\doprependtoks% - {\ifx\scratchtoken\normalbgroup - \egroup\expandafter\dodoprependtoks - \else - \egroup\expandafter\dododoprependtoks - \fi} - -\def\dodoprependtoks#1% - {\dododoprependtoks{{#1}}} - -\def\dododoprependtoks#1\to#2% +\long\def\doprependtoks#1\to#2% {\scratchtoks={#1}% - \edef\scratchtoken{\noexpand#2={\the\scratchtoks\the#2}}% + \long\edef\scratchtoken{\noexpand#2={\the\scratchtoks\the#2}}% \scratchtoken \dodoglobal#2=#2} @@ -1745,6 +1797,12 @@ \aftersplitstring#3\at,,\to#3\relax \beforesplitstring#3\at,,\to#3} +\def\removefromcommalist#1#2% + {\doremovefromcommalist{ }{#1}{#2}% + \doremovefromcommalist{}{#1}{#2}% + \dofrontstrip#2% + \dodoglobal\edef#2{#2}} + \def\dodofrontstrip[#1#2]#3% {\ifx#1\space \def#3{#2}% @@ -1759,12 +1817,6 @@ \@EA\dodofrontstrip\@EA[#1]#1% \fi} -\def\removefromcommalist#1#2% - {\doremovefromcommalist{ }{#1}{#2}% - \doremovefromcommalist{}{#1}{#2}% - \dofrontstrip#2% - \dodoglobal\edef#2{#2}} - %D \macros %D {replaceincommalist} %D @@ -2318,37 +2370,82 @@ %D global character. %D \macros -%D {processconcanatedlist} +%D {processseparatedlist} %D %D Maybe a bit late, but here is a more general version of the %D \type{\processcommalist} command. This time we don't handle %D nesting but accept arbitrary seperators. %D %D \starttypen -%D \processconcanatedlist[list][separator]\command +%D \processseparatedlist[list][separator]\command %D \stoptypen %D %D One can think of things like: %D %D \starttypen -%D \processconcanatedlist[alfa+beta+gamma][+]\message +%D \processseparatedlist[alfa+beta+gamma][+]\message %D \stoptypen -\def\processconcanatedlist[#1][#2]#3% - {\def\doprocessconcanatedlist##1##2#2% +%D First we show the simple alternative: +%D +%D \starttypen +%D \def\processseparatedlist[#1][#2]#3% +%D {\def\doprocessseparatedlist##1##2#2% +%D {\if]##1% +%D \let\next=\relax +%D \else\if]##2% +%D \let\next=\relax +%D \else\ifx\blankspace##2% +%D #3{##1}% +%D \let\next=\doprocessseparatedlist +%D \else +%D #3{##1##2}% +%D \let\next=\doprocessseparatedlist +%D \fi\fi\fi +%D \next}% +%D \doprocessseparatedlist#1#2]#2} +%D \stoptypen +%D +%D However, we want to handle all situations, like: +%D +%D \starttypen +%D \processseparatedlist[{aap noot}] [ ]{\def\xxx} \show\xxx +%D \processseparatedlist[{aap} {noot}][ ]{\def\xxx} \show\xxx +%D \processseparatedlist[aap {noot}] [ ]{\def\xxx} \show\xxx +%D \processseparatedlist[aap noot] [ ]{\def\xxx} \show\xxx +%D \stoptypen +%D +%D Therefore we smuggle a \type {\relax} in front of the +%D argument, which we remove afterwards. + +\def\doprocessseparatedlist#1]#2[#3]#4% + {\def\dodoprocessseparatedlist##1##2#3% {\if]##1% - \let\next=\relax + \let\dodoprocessseparatedlist\relax \else\if]##2% - \let\next=\relax + \let\dodoprocessseparatedlist\relax \else\ifx\blankspace##2% - #3{##1}% - \let\next=\doprocessconcanatedlist + #4{##1}% \else - #3{##1##2}% - \let\next=\doprocessconcanatedlist + #4{##1##2}% \fi\fi\fi - \next}% - \doprocessconcanatedlist#1#2]#2} + \dodoprocessseparatedlist}% + \@EA\dodoprocessseparatedlist\gobbleoneargument#1#3]#3} + +\def\processseparatedlist[% + {\doprocessseparatedlist\relax} + +% %D \macros +% %D {dohonorgroupedargument} +% %D +% %D The previous macro uses yet another auxiliary macro to +% %D handle the special case. +% +% \def\dohonorgroupedargument#1[% +% {\doifnextcharelse\bgroup{\dodohonorgroupedargument#1}{#1[}} +% +% \def\dodohonorgroupedargument#1#2% +% {#1[{{#2}}} %D \macros %D {processassignlist} @@ -2949,6 +3046,20 @@ \def\@Not #1{0\ifcase#11 \or\@EA 1\else \@EA 0\fi} \def\@And #1#2{0\ifcase#1#2 \@EA 0\else \@EA 1\fi} +%D \macros +%D {setdimensionwithunit} +%D +%D The next assignments are all valid: +%D +%D \starttypen +%D \setdimensionwithunit\scratchdimen{10} {cm} +%D \setdimensionwithunit\scratchdimen{10cm}{cm} +%D \setdimensionwithunit\scratchdimen{10cm}{} +%D \stoptypen + +\def\setdimensionwithunit#1#2#3% number unit dimension / nice trick + {\afterassignment\gobblefourarguments#1=#2#3pt\relax\relax\relax\relax\relax} + \protect \endinput diff --git a/tex/context/base/syst-gen.tex b/tex/context/base/syst-gen.tex index 83879d0fa..2d42c944d 100644 --- a/tex/context/base/syst-gen.tex +++ b/tex/context/base/syst-gen.tex @@ -108,6 +108,14 @@ %D \writestatus{laden}{Context Systeem Macro's (a)} %D \stoptypen +%D The next few macros are needed in case this module is +%D used outside \CONTEXT. + +\ifx\beginTEX\undefined + \long\def\beginETEX#1\endETEX{} + \let\beginTEX\relax \let\endTEX\relax +\fi + %D \macros %D [beschermen] %D {protect,unprotect} @@ -264,6 +272,7 @@ \newdimen\!!widtha \newdimen\!!heighta \newdimen\!!deptha \newdimen\!!widthb \newdimen\!!heightb \newdimen\!!depthb +\newdimen\!!widthc \newdimen\!!heightc \newdimen\!!depthc \newif\if!!donea \newif\if!!doneb \newif\if!!donec @@ -397,7 +406,10 @@ %D \stoptypen %D %D However complicated it may look, I'm still glad I stumbled -%D into this construction. +%D into this construction. Saving and restoring \type {\:} is +%D needed when we use \PPCHTEX\ in \LATEX. + +\let\next\: \def\:{\let\blankspace= } \: @@ -405,6 +417,8 @@ \expandafter\def\: {\futurelet\nexttoken\inspectnextcharacter} +\let\:\next + %D \macros %D {setvalue,setgvalue,setevalue,setxvalue, %D letvalue, @@ -451,6 +465,17 @@ \def\resetvalue#1% {\expandafter\let\csname#1\endcsname\empty} +%D \macros +%D {showvalue,showargument} +%D +%D A handy macro for testing purposes only, is the following: + +\def\showvalue#1% + {\expandafter\show\csname#1\endcsname} + +\def\showargument#1% + {\convertargument#1\to\ascii\show\ascii} + %D \macros %D {donottest,unexpanded} %D @@ -1303,42 +1328,65 @@ \def\doprocesscommaitem% {\futurelet\nexttoken\dodoprocesscommaitem} -\def\doprocesscommalistA#1#2]#3% - {\global\advance\commalevel 1 - \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,% - {#3{##1}\doprocesscommaitem}% - \doprocesscommaitem{#1}#2,]\relax - \global\advance\commalevel -1 } - -\def\doprocesscommalistB#1]#2% - {\global\advance\commalevel 1 - \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,% - {#2{##1}\doprocesscommaitem}% - \doprocesscommaitem#1,]\relax - \global\advance\commalevel -1 } - %D Empty arguments are not processed. Empty items (\type{,,}) %D however are treated. We have to check for the special case %D \type{[{a,b,c}]}. +%D +%D \starttypen +%D \def\processcommalist[% +%D {\futurelet\nexttoken\docheckcommaitem} +%D +%D \def\docheckcommaitem% +%D {\ifx\nexttoken]% +%D \let\nextcommaitem\gobbletwoarguments +%D \else\ifx\nexttoken\bgroup +%D \let\nextcommaitem\doprocesscommalistA +%D \else +%D \let\nextcommaitem\doprocesscommalistB +%D \fi\fi +%D \nextcommaitem} +%D +%D \def\doprocesscommalistA#1#2]#3% +%D {\global\advance\commalevel 1 +%D \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,% +%D {#3{##1}\doprocesscommaitem}% +%D \doprocesscommaitem{#1}#2,]\relax +%D \global\advance\commalevel -1 } +%D +%D \def\doprocesscommalistB#1]#2% +%D {\global\advance\commalevel 1 +%D \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,% +%D {#2{##1}\doprocesscommaitem}% +%D \doprocesscommaitem#1,]\relax +%D \global\advance\commalevel -1 } +%D \stoptypen +%D +%D However, this is not a the most straightforward solution! +%D We can misuse one of \TEX's hidden features, and prepend +%D and remove a \type {\relax}. By the way, although it +%D involves less testing, this cleaner alternative is not +%D faster. + +\def\processcommalist[% + {\futurelet\nexttoken\docheckcommaitem} \def\docheckcommaitem% {\ifx\nexttoken]% - \let\nextcommaitem\gobbletwoarguments - \else\ifx\nexttoken\bgroup - \let\nextcommaitem\doprocesscommalistA + \expandafter\gobblethreearguments \else - \let\nextcommaitem\doprocesscommalistB - \fi\fi - \nextcommaitem} + \expandafter\doprocesscommalist + \fi + \relax} % this one preserved the next {} -\def\processcommalist[% - {\futurelet\nexttoken\docheckcommaitem} +\def\doprocesscommalist#1]#2% + {\global\advance\commalevel 1 + \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,% + {#2{##1}\doprocesscommaitem}% + \@EA\dodoprocesscommaitem\gobbleoneargument#1,]\relax + \global\advance\commalevel -1 } %D One way of quitting a commalist halfway is: -% \def\quitcommalist% -% {\@EA\let\csname\s!next\the\commalevel\endcsname\gobbleoneargument} - \def\quitcommalist% {\bgroup\let\doprocesscommaitem\doquitcommalist} @@ -1860,7 +1908,7 @@ %D %D The macro accepts \type{123}, \type{abc}, \type{{}}, %D \type{\getal} and \type{\the\count...}. This macro is a -%D reather dirty one. +%D rather dirty one. \long\def\doifnumberelse#1#2#3% {\bgroup\donefalse @@ -2028,7 +2076,7 @@ % \fi} %D \macros -%D {dosetvalue,dosetevalue,docopyvalue,doresetvalue, +%D {dosetvalue,dosetevalue,dosetgvalue,docopyvalue,doresetvalue, %D dogetvalue} %D %D When we are going to do assignments, we have to take @@ -2038,6 +2086,7 @@ %D \starttypen %D \dosetvalue {label} {variable} {value} %D \dosetevalue {label} {variable} {value} +%D \dosetgvalue {label} {variable} {value} %D \docopyvalue {to label} {from label} {variable} %D \doresetvalue {label} {variable} %D \stoptypen @@ -2051,6 +2100,9 @@ \def\dosetevalue#1#2% #3 {\@EA\edef\csname#1#2\endcsname} % {#3}} +\def\dosetevalue#1#2% #3 + {\@EA\gdef\csname#1#2\endcsname} % {#3}} + \def\doresetvalue#1#2% {\@EA\def\csname#1#2\endcsname{}} @@ -2129,7 +2181,7 @@ {\dosetvalue{#1}{#2}{#3}}} %D \macros -%D {getparameters,geteparameters} % ,forgetparameters} +%D {getparameters,geteparameters,getgparameters} % ,forgetparameters} %D %D Using the assignment commands directly is not our %D ideal of user friendly interfacing, so we take some further @@ -2210,6 +2262,9 @@ \def\geteparameters% {\dogetparameters\dosetevalue} +\def\getgparameters% + {\dogetparameters\dosetgvalue} + % \def\forgetparameters% % {\dogetparameters\doresetvalue} diff --git a/tex/context/base/syst-tex.tex b/tex/context/base/syst-tex.tex index de41c84f5..5d0bc72c6 100644 --- a/tex/context/base/syst-tex.tex +++ b/tex/context/base/syst-tex.tex @@ -130,7 +130,7 @@ \fi %D When applicable, we also load the \ETEX\ source and -%D defintion files. +%D definition files. \bgroup \obeylines diff --git a/tex/context/base/verb-ini.tex b/tex/context/base/verb-ini.tex index e9ac25290..5cc8f7676 100644 --- a/tex/context/base/verb-ini.tex +++ b/tex/context/base/verb-ini.tex @@ -446,6 +446,7 @@ \edef\endofverbatimcommand{\csname\verbatimname\endcsname}% \edef\endofverbatimcommand{\meaning\endofverbatimcommand}% \verbatimfont \spaceskip=.5em \xspaceskip=\spaceskip + \global\linepartrue % needed for paragraph numbering \setupcopyverbatim \initializeverbatimline \copyverbatimline} @@ -664,11 +665,11 @@ \iflinepar\else\EveryPar{}\fi \leavevmode \xdef\dokeepverbatimlinedata% - {\parindent=\the\parindent + {\parindent =\the\parindent \hangindent=\the\hangindent - \hangafter=\the\hangafter - \leftskip =\the\leftskip - \rightskip=\the\rightskip}% + \hangafter =\the\hangafter + \leftskip =\the\leftskip + \rightskip =\the\rightskip}% \egroup \dokeepverbatimlinedata \doopenupverbatimline @@ -827,7 +828,7 @@ \obeypages \obeycharacters \ignoreeofs - \openin\verbatiminput=#1 + \openin\verbatiminput=#1\relax \skipfirstverbatimlinefalse \initializeverbatimline \def\readline% @@ -1709,6 +1710,7 @@ \expandafter\convertargument\csname\verbatimname\endcsname \to\endofverbatimcommand \verbatimfont \spaceskip=.5em \xspaceskip=\spaceskip + \global\linepartrue % needed for paragraph numbering \setupcopyverbatim \initializeverbatimline \copyverbatimline} diff --git a/tex/context/config/cont-cz.ini b/tex/context/config/cont-cz.ini new file mode 100644 index 000000000..2317e4266 --- /dev/null +++ b/tex/context/config/cont-cz.ini @@ -0,0 +1,2 @@ +\input cont-cz.tex +\endinput \ No newline at end of file diff --git a/tex/context/config/cont-de.ini b/tex/context/config/cont-de.ini new file mode 100644 index 000000000..f4ec36007 --- /dev/null +++ b/tex/context/config/cont-de.ini @@ -0,0 +1,2 @@ +\input cont-de.tex +\endinput \ No newline at end of file diff --git a/tex/context/config/cont-en.ini b/tex/context/config/cont-en.ini new file mode 100644 index 000000000..de2df5ef5 --- /dev/null +++ b/tex/context/config/cont-en.ini @@ -0,0 +1,2 @@ +\input cont-en.tex +\endinput \ No newline at end of file diff --git a/tex/context/config/cont-nl.ini b/tex/context/config/cont-nl.ini new file mode 100644 index 000000000..1bd2bd47f --- /dev/null +++ b/tex/context/config/cont-nl.ini @@ -0,0 +1,2 @@ +\input cont-nl.tex +\endinput \ No newline at end of file diff --git a/tex/context/config/cont-uk.ini b/tex/context/config/cont-uk.ini new file mode 100644 index 000000000..467026bd2 --- /dev/null +++ b/tex/context/config/cont-uk.ini @@ -0,0 +1,2 @@ +\input cont-uk.tex +\endinput \ No newline at end of file diff --git a/tex/context/config/cont-usr.tex b/tex/context/config/cont-usr.tex index db2526542..161c076c0 100644 --- a/tex/context/config/cont-usr.tex +++ b/tex/context/config/cont-usr.tex @@ -32,6 +32,7 @@ \definefilesynonym [lang-en.pat] [ushyph1.tex] \definefilesynonym [lang-fi.pat] [fihyph.tex] \definefilesynonym [lang-fr.pat] [frhyph.tex] +\definefilesynonym [lang-hr.pat] [hrhyph.tex] \definefilesynonym [lang-it.pat] [ithyph.tex] \definefilesynonym [lang-la.pat] [lahyph7.tex] \definefilesynonym [lang-nl.pat] [nehyph.tex] @@ -41,7 +42,6 @@ \definefilesynonym [lang-sk.pat] [skhyph.tex] \definefilesynonym [lang-sp.pat] [sphyph.tex] \definefilesynonym [lang-sv.pat] [sehyph.tex] -\definefilesynonym [lang-hr.pat] [hrhyph.tex] \definefilesynonym [lang-tr.pat] [trhyph.tex] \definefilesynonym [lang-uk.pat] [ukhyphen.tex] \definefilesynonym [lang-us.pat] [ushyph1.tex] @@ -51,9 +51,9 @@ %D moment) we specify encodings here. \installlanguage [\s!cz] [\s!mapping=il2,\s!encoding=il2] -\installlanguage [\s!sk] [\s!mapping=il2,\s!encoding=il2] +\installlanguage [\s!hr] [\s!mapping=il2,\s!encoding=il2] \installlanguage [\s!pl] [\s!mapping=pl0,\s!encoding=pl0] -\installlanguage [\s!hr] [\s!mapping=il2,\s!encoding=il2] % ans ? +\installlanguage [\s!sk] [\s!mapping=il2,\s!encoding=il2] %D Sometimes these are not wanted: @@ -66,24 +66,26 @@ %D first. Normally you don't have to change a byte. % \installlanguage [\s!af] [\c!status=\v!start] % afrikaans +% \installlanguage [\s!cz] [\c!status=\v!start] % czech % \installlanguage [\s!da] [\c!status=\v!start] % danish % \installlanguage [\s!de] [\c!status=\v!start] % german % \installlanguage [\s!en] [\c!status=\v!start] % english us % \installlanguage [\s!fi] [\c!status=\v!start] % finnish % \installlanguage [\s!fr] [\c!status=\v!start] % french +% \installlanguage [\s!hr] [\c!status=\v!start] % croatian % \installlanguage [\s!it] [\c!status=\v!start] % italian % \installlanguage [\s!la] [\c!status=\v!start] % latin % \installlanguage [\s!nl] [\c!status=\v!start] % dutch % \installlanguage [\s!no] [\c!status=\v!start] % norwegian % \installlanguage [\s!pl] [\c!status=\v!start] % polish % \installlanguage [\s!pt] [\c!status=\v!start] % portuguese +% \installlanguage [\s!sk] [\c!status=\v!start] % slovak % \installlanguage [\s!sp] [\c!status=\v!start] % spanish % \installlanguage [\s!sv] [\c!status=\v!start] % swedish % \installlanguage [\s!tr] [\c!status=\v!start] % turkish % \installlanguage [\s!uk] [\c!status=\v!start] % english uk -% \installlanguage [\s!hr] [\c!status=\v!start] % croatian -\installlanguage [deo] [\c!status=\v!start] % old german +% \installlanguage [deo] [\c!status=\v!start] % old german % \installlanguage [nlx] [\c!status=\v!start] % dutch 8 bit %D The next lines can be used for setting the language to be @@ -96,6 +98,7 @@ % \setupcurrentlanguage[\s!en] % \setupcurrentlanguage[\s!fi] % \setupcurrentlanguage[\s!fr] +% \setupcurrentlanguage[\s!hr] % \setupcurrentlanguage[\s!it] % \setupcurrentlanguage[\s!la] % \setupcurrentlanguage[\s!nl] @@ -106,7 +109,6 @@ % \setupcurrentlanguage[\s!sp] % \setupcurrentlanguage[\s!sv] % \setupcurrentlanguage[\s!tr] -% \setupcurrentlanguage[\s!hr] %D Local font settings can go here. Normally suitable %D defaults are already preloaded, almost certainly the @@ -114,9 +116,9 @@ %D next line is only meant as sample, take a look at the %D format related files first. -% \definefilesynonym [font-cmr] [font-csr] -% \definefilesynonym [font-cmr] [font-plr] +% \definefilesynonym [font-cmr] [font-csr] % czech & slovak +% \definefilesynonym [font-cmr] [font-plr] % polish %D Don't remove the next few lines. -\protect +\protect \endinput diff --git a/tex/context/config/context.ini b/tex/context/config/context.ini new file mode 100644 index 000000000..403a3063f --- /dev/null +++ b/tex/context/config/context.ini @@ -0,0 +1,2 @@ +\input context.tex +\endinput \ No newline at end of file diff --git a/tex/generic/context/m-ch-de.tex b/tex/generic/context/m-ch-de.tex deleted file mode 100644 index 467cdc670..000000000 --- a/tex/generic/context/m-ch-de.tex +++ /dev/null @@ -1,10 +0,0 @@ -% name : PPCHTEX / german interface -% version : 1997.03.05 -% author : J. Hagen -% copyright : J. Hagen, A.F. Otten - -\chardef\interfacenumber=2 - -\input ppchtex.noc - -\endinput diff --git a/tex/generic/context/m-ch-en.tex b/tex/generic/context/m-ch-en.tex deleted file mode 100644 index 8c55a5669..000000000 --- a/tex/generic/context/m-ch-en.tex +++ /dev/null @@ -1,10 +0,0 @@ -% name : PPCHTEX / english interface -% version : 1997.03.05 -% author : J. Hagen -% copyright : J. Hagen, A.F. Otten - -\chardef\interfacenumber=0 - -\input ppchtex.noc - -\endinput diff --git a/tex/generic/context/m-ch-nl.tex b/tex/generic/context/m-ch-nl.tex deleted file mode 100644 index c9d77733a..000000000 --- a/tex/generic/context/m-ch-nl.tex +++ /dev/null @@ -1,10 +0,0 @@ -% name : PPCHTEX / english interface -% version : 1997.03.05 -% author : J. Hagen -% copyright : J. Hagen, A.F. Otten - -\chardef\interfacenumber=1 - -\input ppchtex.noc - -\endinput diff --git a/tex/generic/context/m-metapo.tex b/tex/generic/context/m-metapo.tex deleted file mode 100644 index 6c2fa6fee..000000000 --- a/tex/generic/context/m-metapo.tex +++ /dev/null @@ -1,89 +0,0 @@ -%D \module -%D [ file=m-metapo, -%D version=1999.03.26, -%D title=\LATEX\ Modules, -%D subtitle=\METAPOST\ Inclusion, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] -%C -%C This module is part of the \CONTEXT\ distribution and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D We quit when \CONTEXT\ is found and use some deep down -%D macro to trigger this: - -\ifx\undefined\dodoplaceexternalfigure \else \expandafter \endinput \fi - -%D \macros -%D {includeMPgraphics} -%D -%D This rather small \LATEX\ module is dedicated to David -%D Arnold. It takes care of including the fonts used in -%D \METAPOST\ graphics in the file. This hack is needed when -%D one uses another \DVI\ driver than \DVIPS. This module -%D falls back on the generic \CONTEXT\ support module: - -\ifx\undefined\includeMPfonts \input supp-mps.tex \relax \fi - -%D Instead of using \type {\includegraphics}, one should use its -%D little brother \type {\includeMPgraphics}. This macro takes -%D the same arguments. - -\def\includeMPgraphics#1#% - {\leavevmode\vbox\bgroup\hbox\bgroup - \def\includeMPgraphics##1% - {\includeMPfonts{##1}% - \includegraphics#1{##1}% - \egroup\egroup}% - \includeMPgraphics} - -%D An example of using this module is given below: -%D -%D \starttypen -%D \documentclass[10pt]{article} -%D -%D \usepackage{graphicx} -%D \usepackage{m-metapo} -%D -%D \begin{document} -%D \includeMPgraphics{somefile.1} -%D \includeMPgraphics[angle=90]{somefile.2} -%D \end{document} -%D \stoptypen -%D -%D This module needs \type {supp-mps} and \type {supp-mis}, -%D that both are present in the \CONTEXT\ path. -%D -%D Pleas do not forget to say \type {prologues:=2} at the -%D top of the metapost file! -%D -%D For non \LATEX\ (and \CONTEXT) users we provide an -%D alternative inclusion macro. This one has no optional -%D arguments. - -\ifx\includegraphics\undefined - - \ifx\undefined\dogetEPSboundingbox \input supp-eps.tex \relax \fi - - \def\includeMPgraphics#1% - {\hbox\bgroup - \includeMPfonts{#1}% - \dogetEPSboundingbox{#1}{\dimen2}{\dimen4}{\dimen6}{\dimen8}% - \vbox to \dimen8 - {\forgetall - \hsize\dimen6 - \vfill - \hbox to \hsize - {\special - {PSfile="#1"\space - llx=\EPSllx\space - lly=\EPSlly\space - urx=\EPSurx\space - ury=\EPSury\space}}}% - \egroup} - -\fi - -\endinput diff --git a/tex/generic/context/ppchtex.noc b/tex/generic/context/ppchtex.noc deleted file mode 100644 index 7e47e1563..000000000 --- a/tex/generic/context/ppchtex.noc +++ /dev/null @@ -1,205 +0,0 @@ -%D \module -%D [ file=ppchtex (m-chemie), -%D version=1997.03.19, -%D title=\CONTEXT\ Extra Modules, -%D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX), -%D author=Hans Hagen, -%D date=\huidigedatum, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}, -%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See licen-en.pdf for -%C details. - -%D This module facilitates the use of \PPCHTEX\ in macro -%D packages other than \CONTEXT. One of the features of -%D \CONTEXT\ is that the user interface can be in any -%D language. This language is defined at loading time. -%D -%D This module is indeed a surrogate one and is only a poor -%D man's alternative to the more extensive \type{mult-***} -%D modules of \CONTEXT. The extra overhead in terms of macros -%D and functionality that these modules offer is only useful -%D in \CONTEXT. -%D -%D Two interfaces are supported here, but others can easily be -%D defined. This module expects the general system macros to be -%D loaded as wel as a interface switch \type{\ifalternativeinterface} -%D to be set. - -%D First we load some auxiliary macro's: - -\input supp-mis.tex \let\writestatus\undefined -\input syst-gen.tex - -%D after which we can go on with: - -\unprotect - -%D 0 = english -%D 1 = dutch -%D 2 = german - -\ifx\interfacenumber\undefined - \chardef\interfacenumber=0 -\fi - -\def\definesystemvariable #1 % - {\setvalue{??#1}{@@#1}} - -\def\definesystemconstant #1 % - {\setvalue{s!#1}{#1}} - -\def\definevariable #1 #2 #3 % - {\ifcase\interfacenumber - \setvalue{v!#2}{#1} - \or - \setvalue{v!#2}{#2} - \or - \setvalue{v!#2}{#3} - \fi} - -\def\defineconstant #1 #2 #3 % - {\ifcase\interfacenumber - \setvalue{c!#2}{#2} - \setvalue{c!#1}{#2} - \or - \setvalue{c!#2}{#2} - \or - \setvalue{c!#2}{#2} - \setvalue{c!#3}{#2} - \fi} - -\def\definecommand #1 #2 #3 % - {\ifcase\interfacenumber - % core commands are english - \or - \doifnot{#1}{#2}{\setvalue{#2}{\getvalue{#1}}} - \or - \doifnot{#1}{#3}{\setvalue{#3}{\getvalue{#1}}} - \fi} - -\long\def\startcommands#1\stopcommands% - {} - -\def\dosetvalue#1#2#3% - {\p!doifundefined{\c!prefix!#2}% - \let\donottest=\doprocesstest - \@EA\def\csname#1#2\endcsname{#3}% - \else - \let\donottest=\doprocesstest - \@EA\def\csname#1\csname\c!prefix!#2\endcsname\endcsname{#3}% - \fi} - -\def\dosetevalue#1#2#3% - {\p!doifundefined{\c!prefix!#2}% - \let\donottest=\doprocesstest - \@EA\edef\csname#1#2\endcsname{#3}% - \else - \let\donottest=\doprocesstest - \@EA\edef\csname#1\csname\c!prefix!#2\endcsname\endcsname{#3}% - \fi} - -\def\docopyvalue#1#2#3% - {\p!doifundefined{\c!prefix!#3}% - \let\donottest=\doprocesstest - \@EA\def\csname#1#3\endcsname% - {\csname#2#3\endcsname}% - \else - \let\donottest=\doprocesstest - \@EA\def\csname#1\csname\c!prefix!#3\endcsname\endcsname% - {\csname#2\csname\c!prefix!#3\endcsname\endcsname}% - \fi} - -\def\doresetvalue#1#2% - {\dosetvalue{#1}{#2}{}} - -\def\dogetvalue#1#2% - {\csname#1\csname\c!prefix!#2\endcsname\endcsname} - -\defineconstant axis assenstelsel achsen -\defineconstant top boven oben -\defineconstant width breedte breite -\defineconstant size formaat groesse -\defineconstant number getal nummer -\defineconstant height hoogte hoehe -\defineconstant frame kader rahmen -\defineconstant bodyfont korps fliesstext -\defineconstant style letter schriftstil -\defineconstant left links links -\defineconstant offset offset offset -\defineconstant bottom onder unten -\defineconstant option optie option -\defineconstant location plaats platz -\defineconstant right rechts rechts -\defineconstant resolution resolutie aufloesung -\defineconstant scale schaal format -\defineconstant status status status -\defineconstant text tekst text -\defineconstant textsize tekstformaat textgroesse -\defineconstant alternative variant alternative -\defineconstant x x x -\defineconstant y y y - -\definevariable on aan an -\definevariable big groot gross -\definevariable intext intekst imtext -\definevariable small klein klein -\definevariable medium middel mittel -\definevariable fit passend passend -\definevariable start start start -\definevariable stop stop stop -\definevariable test test test -\definevariable off uit aus - -\definecommand definechemical definieerchemie definierechemie -\definecommand setupchemical stelchemiein stellechemieein -\definecommand chemical chemie chemie -\definecommand tochemical naarchemie zurchemie -\definecommand startchemical startchemie startchemie -\definecommand stopchemical stopchemie stopchemie -\definecommand toptext boventekst textueber -\definecommand bottext ondertekst textunter -\definecommand midtext middentekst textmitte - -\protect - -%D After those definitions we actually load \PPCHTEX: - -\input ppchtex.tex - -%D We also change some setup values. Let's hope that the next -%D setups forever suits \LATEX. - -\unprotect - -\ifx\bodyfontsize\undefined - \ifx\f@size\undefined - \ifx\@ptsize\undefined - \setupchemical[\c!korps=11pt] - \else - \setupchemical[\c!korps=1\@ptsize pt] - \fi - \else - \setupchemical[\c!korps=\f@size pt] - \fi -\else - \setupchemical[\c!korps=\bodyfontsize] -\fi - -\ifx\mathrm\undefined - \setupchemical[\c!letter=\rm] -\else - \setupchemical[\c!letter=\mathrm] -\fi - -\ifx\outputresolution\undefined - \setupchemical[\c!resolutie=300] -\else - \setupchemical[\c!resolutie=\outputresolution] -\fi - -\protect - -\endinput diff --git a/tex/latex/context/m-ch-de.sty b/tex/latex/context/m-ch-de.sty deleted file mode 100644 index d52078728..000000000 --- a/tex/latex/context/m-ch-de.sty +++ /dev/null @@ -1 +0,0 @@ -\input m-ch-de.tex \relax \endinput diff --git a/tex/latex/context/m-ch-en.sty b/tex/latex/context/m-ch-en.sty deleted file mode 100644 index ba5a5e16c..000000000 --- a/tex/latex/context/m-ch-en.sty +++ /dev/null @@ -1 +0,0 @@ -\input m-ch-en.tex \relax \endinput diff --git a/tex/latex/context/m-ch-nl.sty b/tex/latex/context/m-ch-nl.sty deleted file mode 100644 index 492f5efd3..000000000 --- a/tex/latex/context/m-ch-nl.sty +++ /dev/null @@ -1 +0,0 @@ -\input m-ch-nl.tex \relax \endinput diff --git a/tex/latex/context/m-metapo.sty b/tex/latex/context/m-metapo.sty deleted file mode 100644 index 1df781eae..000000000 --- a/tex/latex/context/m-metapo.sty +++ /dev/null @@ -1 +0,0 @@ -\input m-metapo.tex \relax \endinput diff --git a/tex/latex/context/m-pictex.sty b/tex/latex/context/m-pictex.sty deleted file mode 100644 index da9c18ed7..000000000 --- a/tex/latex/context/m-pictex.sty +++ /dev/null @@ -1 +0,0 @@ -\input m-pictex.tex \relax \endinput -- cgit v1.2.3