summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/colo-ini.tex10
-rw-r--r--tex/context/base/cont-it.tex2
-rw-r--r--tex/context/base/cont-new.tex625
-rw-r--r--tex/context/base/cont-sys.ori1
-rw-r--r--tex/context/base/cont-sys.tex4
-rw-r--r--tex/context/base/cont-usr.ori3
-rw-r--r--tex/context/base/context.tex2
-rw-r--r--tex/context/base/core-des.tex55
-rw-r--r--tex/context/base/core-fig.tex16
-rw-r--r--tex/context/base/core-fld.tex4
-rw-r--r--tex/context/base/core-grd.tex325
-rw-r--r--tex/context/base/core-int.tex16
-rw-r--r--tex/context/base/core-itm.tex2
-rw-r--r--tex/context/base/core-job.tex14
-rw-r--r--tex/context/base/core-mar.tex30
-rw-r--r--tex/context/base/core-mis.tex8
-rw-r--r--tex/context/base/core-pos.tex6
-rw-r--r--tex/context/base/core-rul.tex103
-rw-r--r--tex/context/base/core-sec.tex26
-rw-r--r--tex/context/base/core-spa.tex20
-rw-r--r--tex/context/base/core-tbl.tex19
-rw-r--r--tex/context/base/core-uti.tex56
-rw-r--r--tex/context/base/core-ver.tex4
-rw-r--r--tex/context/base/enco-pol.tex58
-rw-r--r--tex/context/base/font-ini.tex9
-rw-r--r--tex/context/base/hand-ini.tex74
-rw-r--r--tex/context/base/lang-ini.tex10
-rw-r--r--tex/context/base/m-units.tex178
-rw-r--r--tex/context/base/meta-fig.tex2
-rw-r--r--tex/context/base/meta-ini.tex4
-rw-r--r--tex/context/base/mult-con.tex7
-rw-r--r--tex/context/base/mult-sys.tex1
-rw-r--r--tex/context/base/page-flt.tex5
-rw-r--r--tex/context/base/page-imp.tex8
-rw-r--r--tex/context/base/page-ini.tex31
-rw-r--r--tex/context/base/page-lay.tex8
-rw-r--r--tex/context/base/page-lyr.tex125
-rw-r--r--tex/context/base/page-mak.tex11
-rw-r--r--tex/context/base/page-mar.tex17
-rw-r--r--tex/context/base/page-mul.tex3
-rw-r--r--tex/context/base/page-num.tex6
-rw-r--r--tex/context/base/page-one.tex3
-rw-r--r--tex/context/base/page-set.tex89
-rw-r--r--tex/context/base/page-txt.tex216
-rw-r--r--tex/context/base/s-pre-07.tex4
-rw-r--r--tex/context/base/setupb.tex26
-rw-r--r--tex/context/base/spec-def.tex7
-rw-r--r--tex/context/base/spec-dvi.tex2
-rw-r--r--tex/context/base/spec-fdf.tex56
-rw-r--r--tex/context/base/spec-ini.tex19
-rw-r--r--tex/context/base/spec-ps.tex6
-rw-r--r--tex/context/base/supp-fun.tex4
-rw-r--r--tex/context/base/supp-mis.tex4
-rw-r--r--tex/context/base/supp-mpe.tex148
-rw-r--r--tex/context/base/supp-mps.tex27
-rw-r--r--tex/context/base/supp-mrk.tex111
-rw-r--r--tex/context/base/symb-nav.tex13
-rw-r--r--tex/context/base/syst-ext.tex67
-rw-r--r--tex/context/base/syst-new.tex10
-rw-r--r--tex/context/base/syst-pln.tex5
-rw-r--r--tex/context/base/type-buy.tex76
-rw-r--r--tex/context/base/type-ini.tex11
-rw-r--r--tex/context/base/verb-js.tex171
-rw-r--r--tex/context/base/verb-jv.tex203
-rw-r--r--tex/context/base/verb-pl.tex157
-rw-r--r--tex/context/base/xtag-ini.tex20
-rw-r--r--tex/context/base/xtag-run.tex4
-rw-r--r--tex/context/config/cont-usr.tex3
-rw-r--r--tex/context/sample/dawkins.tex20
-rw-r--r--tex/context/user/cont-sys.rme1
70 files changed, 2593 insertions, 798 deletions
diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex
index ae7934699..269f17318 100644
--- a/tex/context/base/colo-ini.tex
+++ b/tex/context/base/colo-ini.tex
@@ -657,10 +657,12 @@
%D in three digits precision.
\def\realcolorvalue#1%
- {\ifnum#1<10 0.00\the#1\else
- \ifnum#1<100 0.0\the#1\else
- \ifnum#1<1000 0.\the#1\else
- 1\fi\fi\fi}
+ {\ifnum#1>0 % important, first encountered in --modu supp-mpe
+ \ifnum#1<10 0.00\the#1\else
+ \ifnum#1<100 0.0\the#1\else
+ \ifnum#1<1000 0.\the#1\else
+ 1\fi\fi\fi
+ \else 0\fi}
\def\doconvertCMYKtoRGB#1\k#2\to#3%
{\ifdim#2\s!pt<#1\s!pt
diff --git a/tex/context/base/cont-it.tex b/tex/context/base/cont-it.tex
index b689a31d4..21d6418c7 100644
--- a/tex/context/base/cont-it.tex
+++ b/tex/context/base/cont-it.tex
@@ -22,7 +22,7 @@
\loaduserspecifications
\installlanguage [\s!en] [\c!status=\v!start]
-%\installlanguage [\s!uk] [\c!status=\v!start]
+\installlanguage [\s!uk] [\c!status=\v!start]
\installlanguage [\s!de] [\c!status=\v!start]
\installlanguage [\s!fr] [\c!status=\v!start]
\installlanguage [\s!es] [\c!status=\v!start]
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index 578cbfda1..5e771da8b 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -17,48 +17,557 @@
%D excellent place for hacks and new features.
\unprotect
-
+
\writestatus{\m!systems}{beware: some patches loaded from cont-new.tex!}
-% \layered[layer id][layer settings][framed setting]{data}
-% \layered[layer id][combined settings]{data}
+% \def\@@itemcounter {\s!itemcount} -> non nested continue
+%
+% todo : option to merge itemgroup [ig-one a b c] [ig-two d e f]
+
+\def\@@itemcounter {\s!itemcount\currentitemgroup}
+
+\def\OTRSETgotocell#1#2% not that robust
+ {\endgraf
+ \gdef\gotocellcounter{0}%
+ \doloop
+ {\ifnum\mofcolumns<#1\relax
+ \doglobal\increment\gotocellcounter\relax
+ \ifnum\gotocellcounter>#1\relax
+ \line{\strut}\crlf
+ \line{\strut}\crlf
+ \column
+ \writestatus{columnset}{quitting goto cell}%
+ \exitloop
+ \else
+ \column
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ \ifnum\mofcolumns=#1\relax
+ \ifnum#2>1
+ \scratchcounter=0
+ \currenthcell\mofcolumns
+ \currentvcell#2\advance\currentvcell -1
+ \dorecurse\currentvcell
+ {\OTRSETdoifcellelse\mofcolumns\recurselevel\donothing
+ {\advance\scratchcounter1\relax}}
+ \getnoflines\pagetotal
+ \advance\scratchcounter-\noflines
+ \ifnum\scratchcounter>0
+ \dorecurse\scratchcounter{\line{\strut}}%
+ \fi
+ \fi
+ \fi
+ \OTRSETsetvsize}
+
+\def\setsidefloat% nilling everypar saves time and redudant pos's
+ {% removed here dec 2001
+ %{\everypar\emptytoks\forgetall\vbox{\strut}\vskip-\lineheight}%
+ %
+ \kern\sidefloattopskip
+ \edef\presidefloatdepth{\the\prevdepth}%
+ \nointerlineskip
+ \bgroup
+ \everypar\emptytoks
+ \parskip\zeropoint
+ \logsidefloat
+ \ifrightfloat
+ \hfill
+ \ifmarginfloat
+% \rlap{\hskip\rechtermargeafstand\hskip\rightskip\unhbox\floatbox}%
+\rlap{\tbox{\hskip\rechtermargeafstand\hskip\rightskip\unhbox\floatbox}}%
+ \else
+ \unhbox\floatbox
+ \fi
+ \else
+ \noindent
+ \ifmarginfloat
+% \llap{\unhbox\floatbox\hskip\leftskip\hskip\linkermargeafstand}%
+\llap{\tbox{\unhbox\floatbox\hskip\leftskip\hskip\linkermargeafstand}}%
+ \else
+ \unhbox\floatbox
+ \fi
+ \hfill
+ \fi
+ \egroup
+ \par
+ \kern-\sidefloatheight
+ \penalty10001 % oeps, this will change
+ \normalbaselines
+ \prevdepth=\presidefloatdepth
+ %\noindent
+ \resetsidefloatparagraph
+ \ignorespaces}
+
+
+
+\def\setlocalfloatdimensions#1#2% experimental ! ! ! !
+ {\doifvaluesomething{\??fl#1\c!maxbreedte}
+ {\scratchdimen=\getvalue{\??fl#1\c!maxbreedte}\relax
+ \ifdim\wd\nextbox>\scratchdimen
+ \setbox\nextbox=\hbox to \scratchdimen
+ {\doifcommonelse{\v!rechts,\v!inrechter,\v!links,\v!inlinker}{#2}
+ {\doifnotcommon{\v!rechts,\v!inrechter}{#2}\hss
+ \box\nextbox
+ \doifnotcommon{\v!links ,\v!inlinker }{#2}\hss}%
+ {\doifvalue{\??fl#1\c!plaats}\v!rechts\hss
+ \box\nextbox
+ \doifvalue{\??fl#1\c!plaats}\v!links \hss}}%
+ \fi}}
+
+\def\phantombox[#1]%
+ {\hbox\bgroup
+ \getparameters
+ [\??ol]
+ [\c!breedte=\zeropoint,\c!hoogte=\zeropoint,\c!diepte=\zeropoint,#1]%
+ \setbox\scratchbox\null
+ \wd\scratchbox\@@olbreedte
+ \ht\scratchbox\@@olhoogte
+ \dp\scratchbox\@@oldiepte
+ \box\scratchbox
+ \egroup}
+
+\long\@EA\def\csname\e!start\e!instellingen\endcsname#1 %
+ {\bgroup
+ \catcode`\^^M=\@@ignore
+ \xdostartsetups{#1}}
+
+\expanded
+ {\long\noexpand\def\noexpand\xdostartsetups##1##2\csname\e!stop\e!instellingen\endcsname%
+ {\egroup
+ \long\noexpand\setvalue{\??su##1}{##2}}}
+
+\def\startsetups#1 % for international purposes
+ {\bgroup
+ \catcode`\^^M=\@@ignore
+ \dostartsetups{#1}}
+
+\long\def\dostartsetups#1#2\stopsetups
+ {\egroup
+ \long\setvalue{\??su#1}{#2}}
+
+\def\definefont
+ {\dotripleempty\dodefinefont}
+
+\def\dodefinefont[#1][#2][#3]% [name][spec][1.6 | line=10pt | setup_id]
+ {\doifinstringelse{ }{#2}
+ {\ifthirdargument
+ \unexpanded\setvalue{#1}{\redodefinefont{#1}{#2}{#3}}%
+ \else
+ \unexpanded\setvalue{#1}{\dododefinefont{#1}{#2}}%
+ \fi}
+ {\definefont[#1][#2 sa 1][#3]}}
+
+\def\redodefinefont#1#2#3%
+ {\dododefinefont{#1}{#2}%
+ \doifnumberelse{#3}
+ {\stelinterliniein[#3]\stelspatieringin}
+ {\doifassignmentelse{#3}
+ {\stelinterliniein[#3]\stelspatieringin}
+ {\setups[#3]}}}
+
+% todo, but now more easy to do:\definepage
+
+\def\docomplexpagina[#1]%
+ {\flushfootnotes
+ \bgroup
+ \def\dodocomplexpagina##1%
+ {\csname
+ @@\v!pagina\ifundefined{@@\v!pagina##1}\s!unknown\else##1\fi
+ \endcsname}%
+ \processcommalist[#1]\dodocomplexpagina
+ \egroup}
+
+\def\installpagehandler#1#2%
+ {\setvalue{@@\v!pagina#1}{#2}}
+
+\installpagehandler \s!unknown
+ {\let\@@pagespecification\commalistelement
+ \doifinstringelse{+}\@@pagespecification
+ {\ejectinsert\ejectpage
+ \dorecurse\@@pagespecification\ejectdummypage}
+ {\doifnumberelse\@@pagespecification
+ {\ejectinsert\ejectpage
+ \doloop
+ {\ifnum\userpageno<\@@pagespecification\relax
+ \ejectdummypage
+ \else
+ \exitloop
+ \fi}}
+ {}}}
+
+\installpagehandler \s!default
+ {} % do nothing if empty
+
+\installpagehandler \v!reset
+ {\global\paginageblokkeerdfalse}
+
+\installpagehandler \v!blokkeer
+ {\global\paginageblokkeerdtrue}
+
+\installpagehandler \v!ja
+ {\ifpaginageblokkeerd\else
+ \ejectinsert
+ \ejectpage
+ \ifbinnenkolommen
+ \ejectpage % anders soms geen overgang
+ \fi
+ \fi}
+
+\installpagehandler \v!opmaak
+ {\ifpaginageblokkeerd\else
+ \eject
+ \fi}
+
+\installpagehandler \v!blanko
+ {\pagebodyornamentsfalse}
+
+\installpagehandler \v!nee
+ {\ifpaginageblokkeerd\else
+ \dosomebreak\nobreak
+ \fi}
+
+\installpagehandler \v!voorkeur
+ {\ifpaginageblokkeerd\else
+ \ifbinnenkolommen
+ \dosomebreak\goodbreak
+ \else
+ \testpagina[3][\!!zeropoint]%
+ \fi
+ \fi}
+
+\installpagehandler \v!grotevoorkeur
+ {\ifpaginageblokkeerd\else
+ \ifbinnenkolommen
+ \dosomebreak\goodbreak
+ \else
+ \testpagina[5][\!!zeropoint]%
+ \fi
+ \fi}
+
+\installpagehandler \v!leeg
+ {\ejectinsert
+ \ejectpage
+ \doifnotvalue{\??tk\v!hoofd\c!status}{\v!stop}
+ {\setupheader[\c!status=\v!leeg]}%
+ \doifnotvalue{\??tk\v!voet\c!status}{\v!stop}
+ {\setupfooter[\c!status=\v!leeg]}%
+ \ejectdummypage}
+
+\installpagehandler \v!links
+ {\ejectinsert
+ \superejectpage
+ \doifbothsidesoverruled
+ \orsideone
+ \resetcurrentsectionmarks
+ \ejectdummypage
+ \orsidetwo
+ \od}
+
+\installpagehandler \v!rechts
+ {\ejectinsert
+ \superejectpage
+ \doifbothsidesoverruled
+ \orsideone
+ \orsidetwo
+ \resetcurrentsectionmarks
+ \ejectdummypage
+ \od}
+
+\installpagehandler \v!even
+ {\pagina
+ \doifonevenpaginaelse
+ {\resetcurrentsectionmarks\ejectdummypage}{}}
+
+\installpagehandler \v!oneven
+ {\pagina
+ \doifonevenpaginaelse
+ {}{\resetcurrentsectionmarks\ejectdummypage}}
+
+\installpagehandler \v!viertal
+ {\ifdubbelzijdig
+ \!!counta=\realpageno
+ \!!countb=\realpageno
+ \divide\!!counta 4
+ \divide\!!countb 2
+ \ifnum\!!counta=\!!countb
+ \else
+ \pagina
+ \pagina[\v!leeg]%
+ \pagina[\v!leeg]%
+ \fi
+ \fi}
+
+\installpagehandler \v!laatste
+ {\ejectinsert
+ \superejectpage\relax
+ \doifbothsidesoverruled
+ \naastpagina
+ \orsideone
+ \orsidetwo
+ %\ifodd\realpageno \else % kan weer weg
+ \noheaderandfooterlines
+ \ejectdummypage
+ %\fi
+ \od
+ \filluparrangedpages}
+
+% \setlayerframed[layer id][layer settings][framed setting]{data}
+% \setlayerframed[layer id][combined settings]{data}
-\def\layered
- {\dotripleempty\dolayered}
+\def\setlayerframed
+ {\dotripleempty\dosetlayerframed}
-\def\dolayered
+\def\dosetlayerframed
{\ifthirdargument
- \expandafter\dolayeredT
+ \expandafter\dosetlayerframedT
\else
- \expandafter\dolayeredS
- \fi}
+ \expandafter\dosetlayerframedS
+ \fi}
-\def\dolayeredT[#1][#2][#3]%
+\def\dosetlayerframedT[#1][#2][#3]%
{\dowithnextbox{\setlayer[#1][#2]{\box\nextbox}}%
- \hbox\framed[#3]}
+ \hbox\framed[#3]}
-\def\dolayeredS[#1][#2][#3]%
+\def\dosetlayerframedS[#1][#2][#3]%
{\dowithnextbox
{\setlayer
[#1]
[\c!breedte=\wd\nextbox,\c!hoogte=\ht\nextbox,
\c!offset=\!!zeropoint,#2]
{\box\nextbox}}%
- \hbox\framed[\c!plaats=\v!normaal,#2]}
+ \hbox\framed[\c!plaats=\v!normaal,#2]}
+
+\beginETEX
+
+\definepapersize
+ [oversized]
+ [\c!breedte=\dimexpr(\papierbreedte+1.5cm),
+ \c!hoogte=\dimexpr(\papierhoogte+1.5cm)]
+
+\definepapersize
+ [doublesized]
+ [\c!breedte=\dimexpr(\papierbreedte),
+ \c!hoogte=\dimexpr(2\papierhoogte)]
+
+\definepapersize
+ [doubleoversized]
+ [\c!breedte=\dimexpr(\papierhoogte+1.5cm),
+ \c!hoogte=\dimexpr(2\papierbreedte+1.5cm)]
+
+\endETEX
+
+\def\dofield[#1][#2][#3]%
+ {\iffirstargument
+ \bgroup
+ \getfield{#2}%
+ \ifsecondargument
+ \def\@@FieldLabel{#3}%
+ \else
+ \let\@@FieldLabel\@@FieldName
+ \fi
+ \ifx\@@FieldType\empty
+ \writestatus{\m!fields}{unknown field #2}%
+ \else\ifcase\@@FieldFree\relax
+ \doifdefinedelse{\strippedcsname\setupfield\@@FieldGroup}
+ {\let\dosetupfield=#1\getvalue{\strippedcsname\setupfield\@@FieldGroup}}
+ {#1[\@@FieldName][\v!label,\v!kader,\v!horizontaal][][][]}%
+\iftrialtypesetting\else
+ \def\@@FieldFree{1}%
+ \changefield{#2}%
+\fi
+ \else\ifcase\@@FieldAuto\relax
+ % \writestatus{\m!fields}{field #2 already typeset}%
+ \else
+ % \writestatus{\m!fields}{field #2 automatically copied}%
+ \nextsystemfield
+ \copyfield[\@@FieldName][\currentsystemfield]%
+ \dotripleempty\dofield[#1][\currentsystemfield][#3]% get the if's right
+ \fi\fi\fi
+ \egroup
+ \fi}
+
+\def\typesetfield%
+ {\useJSscripts[fld]%
+ \ifx\@@FieldRoot\empty \else
+ \let\@@SavedFieldName\@@FieldName
+ \getfield\@@FieldRoot
+ \ifcase\@@FieldFree\relax
+ \dosetfieldstatus\@@FieldMode\@@FieldParent\@@FieldKids\@@FieldRoot
+ \dopresetrecord
+\iftrialtypesetting\else
+ \def\@@FieldFree{1}%
+ \changefield\@@FieldName
+\fi
+ \fi
+ \getfield\@@SavedFieldName
+ \fi
+ \ifx\@@FieldKids\empty
+ \donefalse
+ \else
+ \donetrue
+ \fi
+ \ifdone
+ \let\@@FieldParent\@@FieldName
+ %\addtocommalist\@@FieldParent\@@FieldKids
+ \appendtocommalist\@@FieldParent\@@FieldKids
+ \dosetfieldstatus\@@FieldMode\@@FieldParent\@@FieldKids\@@FieldRoot
+ \dopresetfield
+ \let\@@FieldMode\fieldchildmode
+ \fi
+ \dosetfieldstatus\@@FieldMode\@@FieldParent\@@FieldKids\@@FieldRoot
+ \dopresetfield}
+
+\def\dopresetfield
+ {\iftrialtypesetting\else\iflocation\getvalue{preset\@@FieldType field}\fi\fi}
+
+\def\dopresetrecord
+ {\iftrialtypesetting\else\iflocation\getvalue{preset\@@FieldType record}\fi\fi}
+
+\def\doclonefield[#1][#2][#3][#4]% parent children setupgroup values
+ {\ifsecondargument
+ \getfield{#1}%
+\iftrialtypesetting\else
+ \ifx\@@FieldType\empty
+ \writestatus{\m!fields}{unknown field #1}%
+ \else
+ \let\@@FieldMode=\fieldparentmode
+ %\def\docommando##1{\addtocommalist{##1}\@@FieldKids}%
+ \def\docommando##1{\appendtocommalist{##1}\@@FieldKids}%
+ \processcommalist[#2]\docommando
+ \changefield{#1}%
+ \let\@@FieldAutoParent=\@@FieldAuto
+ \def\@@FieldParent{#1}%
+ \let\@@FieldKids=\empty
+ \let\@@FieldRoot=\empty
+ \let\@@FieldMode=\fieldchildmode
+ \def\@@FieldFree{0}%
+ \def\@@FieldAuto{0}%
+ \doifsomething{#3}{\edef\@@FieldGroup{#3}}%
+ \doifsomething{#4}{\edef\@@FieldValues{#4}}%
+ \def\docommando##1%
+ {\ifcase\@@FieldAutoParent\else
+ \setmainfieldkid{\@@FieldParent}{##1}%
+ \fi
+ \changefield{##1}}%
+ \processcommalist[#2]\docommando
+ \fi
+\fi
+ \else
+ \writestatus{\m!fields}{pass parent field and clones}%
+ \fi}
+
+\def\docopyfield[#1][#2]% parent children
+ {\ifsecondargument
+ \getfield{#1}%
+\iftrialtypesetting\else
+ \ifx\@@FieldType\empty
+ \writestatus{\m!fields}{unknown field #1}%
+ \else
+ \let\@@FieldMode=\fieldparentmode
+ %\def\docommando##1{\addtocommalist{##1}\@@FieldKids}%
+ \def\docommando##1{\appendtocommalist{##1}\@@FieldKids}%
+ \processcommalist[#2]\docommando
+ \changefield{#1}%
+ \let\@@FieldAutoParent=\@@FieldAuto
+ \def\@@FieldParent{#1}%
+ \let\@@FieldKids=\empty
+ \let\@@FieldRoot=\empty
+ \let\@@FieldMode=\fieldcopymode
+ \def\@@FieldFree{0}%
+ \def\@@FieldAuto{0}%
+ \def\docommando##1%
+ {\ifcase\@@FieldAutoParent\else
+ \setmainfieldkid{\@@FieldParent}{##1}%
+ \fi
+ \changefield{##1}}%
+ \processcommalist[#2]\docommando
+ \fi
+\fi
+ \else
+ \writestatus{\m!fields}{pass parent field and copies}%
+ \fi}
+
+
+
+\newtoks\everyfirstparagraphintro
+\newtoks\everynextparagraphintro
+
+\chardef\everyparagraphintro=0
+
+\def\setupparagraphintro
+ {\dodoubleempty\dosetupparagraphintro}
+
+\def\dosetupparagraphintro[#1][#2]%
+ {\processallactionsinset
+ [#1]
+ [ \v!reset=>\global\chardef\everyparagraphintro=0
+ \global\everyfirstparagraphintro\emptytoks
+ \global\everynextparagraphintro \emptytoks,
+ \v!eerste=>\global\chardef\everyparagraphintro=1
+ \doglobal\appendtoks#2\to\everyfirstparagraphintro,
+ \v!volgende=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro=2\fi
+ \doglobal\appendtoks#2\to\everynextparagraphintro,
+ \v!elk=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro=2\fi
+ \doglobal\appendtoks#2\to\everyfirstparagraphintro
+ \doglobal\appendtoks#2\to\everynextparagraphintro]}
+
+\def\doinsertparagraphintro
+ {\ifcase\everyparagraphintro\relax
+ % no data
+ \or
+ % first data
+ \global\chardef\everyparagraphintro=2
+ \scratchtoks\everyfirstparagraphintro
+ \global\everyfirstparagraphintro\emptytoks
+ \or
+ % next data
+ \scratchtoks\everynextparagraphintro
+ \fi
+ \the\scratchtoks}
+
+\def\insertparagraphintro
+ {\ifcase\everyparagraphintro\else\@EA\doinsertparagraphintro\fi}
+
+\appendtoks\insertparagraphintro\to\everypar
+
+%D \starttext
+%D
+%D \setupparagraphintro[first][\hbox to 3.5em{\tt FIRST \hss}]
+%D \setupparagraphintro[first][\hbox to 3.5em{\tt TSRIF \hss}]
+%D \setupparagraphintro[next] [\hbox to 3.5em{\tt NEXT \hss}]
+%D \setupparagraphintro[next] [\hbox to 3.5em{\tt TXEN \hss}]
+%D \setupparagraphintro[each] [\hbox to 3.0em{\tt EACH \hss}]
+%D \setupparagraphintro[each] [\hbox to 3.0em{\tt HCEA \hss}]
+%D
+%D some paragraph \par
+%D some paragraph \par
+%D some paragraph \par
+%D
+%D \definelabel[parnumber]
+%D
+%D \setupparagraphintro[reset,each][\inleft{\slxx\parnumber}]
+%D
+%D some paragraph \par
+%D some paragraph \par
+%D some paragraph \par
+%D
+%D \stoptext
\def\@@themaintextcolor{themaintextcolor}
-\def\starttextcolor[#1]%
+\def\starttextcolor[#1]%
{\doifsomething{#1}
{\bgroup
- \def\stoptextcolor % also goes ok with \page after
- {\let\maintextcolor\empty % this one because the top of
- \stopregistercolor % page sets the color right (side
- \egroup}% % effect)
+ \def\stoptextcolor % also goes ok with \page after
+ {\let\maintextcolor\empty % this one because the top of
+ \stopregistercolor % page sets the color right (side
+ \egroup}% % effect)
\def\starttextcolor[##1]%
{\bgroup
\definecolor[\@@themaintextcolor][##1]%
- \let\stoptextcolor\relax\egroup}%
+ \let\stoptextcolor\egroup}%
\startregistercolor[\@@themaintextcolor]%
\definecolor[\@@themaintextcolor][#1]%
\let\maintextcolor\@@themaintextcolor}}
@@ -71,7 +580,7 @@
\doinitializemaintextcolor}}
\def\doinitializemaintextcolor
- {\appendtoks\starttextcolor[\@@themaintextcolor]\to\everystarttext
+ {\appendtoks\starttextcolor[\@@themaintextcolor]\to\everystarttext
\appendtoks\stoptextcolor \to\everystoptext
\let\doinitializemaintextcolor\relax}
@@ -256,11 +765,80 @@
{\def\currentvariableclass{#1}%
\getparameters[vars:#1:][#2]}
-\def\getvariable#1#2%
- {\ifundefined{vars:#1:#2}\else\getvalue{vars:#1:#2}\fi}
+% \def\getvariable#1#2%
+% {\ifundefined{vars:#1:#2}\else\getvalue{vars:#1:#2}\fi}
+
+\def\getvariable#1#2% to be sped up
+ {\csname\ifundefined{vars:#1:#2}empty\else vars:#1:#2\fi\endcsname}
\let\currentvariableclass\empty
+% Let's see how fast Mr Bigfoot aka GB tracks down this new
+% feature -)
+
+\def\defineTABLEdivisions
+ {\global\TABLEdivisionfalse % in start
+ \let\DL\TableDL
+ \let\DC\TableDC
+ \let\DV\TableDV
+ \let\DR\TableDR}
+
+\def\defineTABLErules
+ {\let\VL\TableVL
+ \let\VC\TableVC
+ \let\HL\TableHL
+ \let\HC\TableHC
+ \let\VS\TableVS
+ \let\VD\TableVD
+ \let\VT\TableVT}
+
+\def\TableVS{\gdef\@VLn{1}\VL}
+\def\TableVD{\gdef\@VLn{2}\VL}
+\def\TableVT{\gdef\@VLn{3}\VL}
+
+\def\@VLn{1}
+\def\@VLd{.125em}
+
+\def\do!ttInsertVrule % will be merged in 2005
+ {\vrule \!thWidth
+ \ifnum\!tgCode=1
+ \ifx\!tgValue\empty
+ \LineThicknessFactor
+ \else
+ \!tgValue
+ \fi
+ \LineThicknessUnit
+ \else
+ \!tgValue
+ \fi
+ \hskip\@VLd}
+
+\def\!ttInsertVrule%
+ {\hfil
+ \TABLEbeforebar % added
+ \startglobalTABLEcolor % added
+ % we could do without this speedup, some day merge 'm
+ \ifcase\@VLn\or
+ \do!ttInsertVrule
+ \unskip
+ \else
+ \dorecurse\@VLn\do!ttInsertVrule
+ \gdef\@VLn{1}%
+ \unskip
+ \fi
+ \stopglobalTABLEcolor % added
+ \TABLEafterbar % added
+ \hfil
+ &}
+
+%D \starttable[|||]
+%D \HL
+%D \VL test \VS test \VL \FR
+%D \VL test \VD test \VL \MR
+%D \VL test \VT test \VL \LR
+%D \HL
+%D \stoptable
+
%D To be documented, \type {\includemenu[menu]}.
%D To be documented, \type {\emphbf} cum suis.
@@ -331,6 +909,8 @@
% already taken care of: \definesystemvariable{ks}
+% is buggy now and does not work any longer
+
\def\setupcolumnspan[#1]%
{\getparameters[\??ks][#1]}
@@ -384,6 +964,7 @@
\else
\snaptogrid\vbox{\box\columnspanbox}
\fi
+ \endgraf
\prevdepth\dp\strutbox
\egroup}
\vbox\bgroup
diff --git a/tex/context/base/cont-sys.ori b/tex/context/base/cont-sys.ori
index a571c8c60..7ea324ae3 100644
--- a/tex/context/base/cont-sys.ori
+++ b/tex/context/base/cont-sys.ori
@@ -94,6 +94,7 @@
% \runMPgraphicstrue
% \runMPTEXgraphicstrue
+
% \recycleMPslotstrue
% This saves some runtime, but needs a format, which you can
diff --git a/tex/context/base/cont-sys.tex b/tex/context/base/cont-sys.tex
index 7eb75f86d..c39daf8b6 100644
--- a/tex/context/base/cont-sys.tex
+++ b/tex/context/base/cont-sys.tex
@@ -22,7 +22,7 @@
%
% You can let \CONTEXT\ load the map files for \PDFTEX.
%
-\autoloadmapfilestrue
+% \autoloadmapfilestrue
%
% If you use the more verbose naming scheme, uncomment this:
%
@@ -94,6 +94,7 @@
\runMPgraphicstrue
\runMPTEXgraphicstrue
+
\recycleMPslotstrue
% This saves some runtime, but needs a format, which you can
@@ -120,4 +121,3 @@
% So far.
\protect \endinput
-
diff --git a/tex/context/base/cont-usr.ori b/tex/context/base/cont-usr.ori
index 38dbab706..f70072c9a 100644
--- a/tex/context/base/cont-usr.ori
+++ b/tex/context/base/cont-usr.ori
@@ -70,7 +70,8 @@
\installlanguage [\s!cz] [\s!mapping={il2,ec},\s!encoding={il2,ec}]
\installlanguage [\s!hr] [\s!mapping={il2,ec},\s!encoding={il2,ec}]
-\installlanguage [\s!pl] [\s!mapping=pl0,\s!encoding=pl0]
+%installlanguage [\s!pl] [\s!mapping=pl0,\s!encoding=pl0]
+\installlanguage [\s!pl] [\s!mapping={pl0,ec},\s!encoding={pl0,ec}]
\installlanguage [\s!sk] [\s!mapping={il2,ec},\s!encoding={il2,ec}]
%D Sometimes these are not wanted:
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index cbf62363b..c8bba2123 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -15,7 +15,7 @@
\catcode`\{=1 \catcode`\}=2
-\def\contextversion{2002.1.24}
+\def\contextversion{2002.3.4}
%D Welcome to the main module. When this module is ran through
%D \type{initex} or \type{tex -i} or \type{whatevertex} using
diff --git a/tex/context/base/core-des.tex b/tex/context/base/core-des.tex
index 1d4ef327a..064c13144 100644
--- a/tex/context/base/core-des.tex
+++ b/tex/context/base/core-des.tex
@@ -713,22 +713,57 @@
\def\doorspringen%
{\dodoubleargumentwithset\dodoorspringen}
+% \def\dodoorlabel[#1][#2]%
+% {\getvalue{\s!number#1\c!voor}%
+% \bgroup
+% \doifvalue{\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}
+
\def\dodoorlabel[#1][#2]%
- {\getvalue{\s!number#1\c!voor}%
- \bgroup
- \doifvalue{\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}}%
+ {\getvalue{\??lb#1\c!voor}%
+ \getvalue{\??lb#1\c!commando}%
+ {\doattributes{\??lb#1}\c!kopletter\c!kopkleur
+ {\dotextprefix{\getvalue{\??lb#1\c!tekst}}%
+ \getvalue{\e!volgende#1}[#2]}}%
+ \getvalue{\??lb#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]%
+ {\getparameters
+ [\??lb#1]
+ [\c!wijze=\@@nrwijze,\c!commando=,\c!plaats=,#2]%
+ % downward compatible
+ \processaction
+ [\getvalue{\??lb#1\c!plaats}]
+ [ \v!inmarge=>\setvalue{\??lb#1\c!commando}{\inmarge },
+ \v!inlinker=>\setvalue{\??lb#1\c!commando}{\inlinker },
+ \v!inrechter=>\setvalue{\??lb#1\c!commando}{\inrechter},
+ \v!marge=>\setvalue{\??lb#1\c!commando}{\inmarge }]%
+ % inefficient, we need to redesign this command
+ \definieernummer
+ [#1][\c!wijze=\@@nrwijze]% \getvalue{\??lb#1\c!wijze}]%
+ % generated commands
\setvalue {#1}{\dodoubleempty\dodoorlabel[#1]}%
\setvalue{\s!reset #1}{\resetnummer[#1]}%
\setvalue{\e!verhoog #1}{\verhoognummer[#1]}%
diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex
index fa6db84d8..2316691cd 100644
--- a/tex/context/base/core-fig.tex
+++ b/tex/context/base/core-fig.tex
@@ -1763,20 +1763,26 @@
%D Todo: like external figures, also search on path,
%D although, they need to be present ar viewing time, so ...
-\def\useexternalsoundtrack%
+\def\useexternalsoundtrack
{\dodoubleargument\douseexternalsoundtrack}
\def\douseexternalsoundtrack[#1][#2]%
- {\setgvalue{\??sd#1}{#2}}
+ {\setgvalue{\??sd:#1}{#2}}
\def\checksoundtrack#1%
{\iflocation
- \doifdefined{\??sd#1}{\doifvaluesomething{\??sd#1}
- {\doinsertsoundtrack{\getvalue{\??sd#1}}{#1}{}%
- \setgvalue{\??sd#1}{}}}%
+ \doifdefined{\??sd:#1}{\doifvaluesomething{\??sd:#1}
+ {\doinsertsoundtrack{\getvalue{\??sd:#1}}{#1}\@@sdoptie
+ \setgvalue{\??sd:#1}{}}}%
\fi}
\setexecutecommandcheck {startsound} \checksoundtrack
+
+\def\setupexternalsoundtracks
+ {\dodoubleargument\getparameters[\??sd]}
+
+\setupexternalsoundtracks
+ [\c!optie=]
\appendtoks \setupexternalfigures[\c!optie=\v!leeg] \to \everyfastmode
\appendtoks \runMPgraphicsfalse \to \everyfastmode
diff --git a/tex/context/base/core-fld.tex b/tex/context/base/core-fld.tex
index 806f6af44..93fa01d61 100644
--- a/tex/context/base/core-fld.tex
+++ b/tex/context/base/core-fld.tex
@@ -607,9 +607,9 @@
\def\@@FieldFree{1}%
\changefield{#2}%
\else\ifcase\@@FieldAuto\relax
- \writestatus{\m!fields}{field #2 already typeset}%
+ % \writestatus{\m!fields}{field #2 already typeset}%
\else
- \writestatus{\m!fields}{field #2 automatically copied}%
+ % \writestatus{\m!fields}{field #2 automatically copied}%
\nextsystemfield
\copyfield[\@@FieldName][\currentsystemfield]%
\dotripleempty\dofield[#1][\currentsystemfield][#3]% get the if's right
diff --git a/tex/context/base/core-grd.tex b/tex/context/base/core-grd.tex
index 0d179ed7a..22a392bc2 100644
--- a/tex/context/base/core-grd.tex
+++ b/tex/context/base/core-grd.tex
@@ -268,7 +268,11 @@
\newif\iftracegridsnapping
\newif\ifshowfuzzyskips
-\chardef\@@alignsnap=0
+\chardef\@@alignsnap =0
+\chardef\@@alignsnapbox=0
+
+\let\presnapskip \!!zeropoint \def\presnap {--}
+\let\postsnapskip\!!zeropoint \let\postsnap\presnap
\def\tracesnapping%
{\iftracegridsnapping
@@ -291,103 +295,226 @@
\def\dosnaptogrid[#1]%
{\ifgridsnapping
- \iffirstargument\verplaatsopgrid[#1]\fi\expandafter\dodosnaptogrid
+ \iffirstargument\doifsomething{#1}{\verplaatsopgrid[#1]}\fi
+ \expandafter\dodosnaptogrid
\fi}
-\def\dodosnaptogrid%
+% \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
+% \setbox\nextbox=\hbox{\box\nextbox}% don't ask
+% \fi
+% \scratchskip=\lastskip
+% \edef\presnapskip{\the\lastskip}%
+% % mixing single/double columns sometimes goes wrong,
+% % check 'som' document
+% \ifbinnenkolommen
+% \forcepresnaptrue
+% \fi
+% \ifforcepresnap
+% \vbox{\hsize\zeropoint\strut}\nobreak\vskip-\openlineheight
+% \fi
+% %
+% \ifdim\ht\nextbox>\ht\strutbox
+% \scratchdimen=\ht\nextbox
+% \ifcase\@@presnap
+% \ifdim\scratchskip>\zeropoint\relax
+% \scratchcounter=\scratchskip
+% \advance\scratchcounter by -\openlineheight
+% \ifnum\scratchcounter<0
+% \scratchcounter=-\scratchcounter
+% \fi
+% \ifnum\scratchcounter<10 % \lastkip is about \openlineheight
+% \advance\scratchdimen by -\openstrutdepth
+% \edef\presnapskip{*\presnapskip}%
+% \else\ifdim\scratchskip>\openlineheight
+% %<\openlineheight \else
+% \advance\scratchdimen by -\openstrutdepth
+% \edef\presnapskip{*\presnapskip}%
+% \fi\fi
+% \fi
+% \fi
+% \getnoflines\scratchdimen
+% \advance\noflines by -1
+% \ifnum\noflines>0
+% \scratchdimen=\noflines\lineheight
+% \else
+% \scratchdimen=\zeropoint
+% \fi
+% \else
+% \scratchdimen=\zeropoint
+% \fi
+% \ifnum\@@extrasnap=1 \advance\scratchdimen by \extrasnapsign\lineheight \fi
+% \ifnum\@@extrasnap=2 \advance\scratchdimen by \extrasnapsign.5\lineheight \fi
+% \edef\presnap{\the\scratchdimen}%
+% \ifstrutsnapping
+% \ifdim\scratchdimen=\zeropoint\else\vskip\scratchdimen\fi
+% \fi
+% \ifdim\dp\nextbox>\dp\strutbox
+% \getnoflines{\dp\nextbox}%
+% \advance\noflines by -1
+% \ifnum\noflines>0
+% \scratchdimen=\noflines\lineheight
+% \else
+% \scratchdimen=\zeropoint
+% \fi
+% \else
+% \scratchdimen=\zeropoint
+% \fi
+% \ifnum\@@extrasnap=2 \advance\scratchdimen by \extrasnapsign.5\lineheight \fi
+% \ifnum\@@extrasnap=3 \advance\scratchdimen by \extrasnapsign\lineheight \fi
+% \edef\postsnap{\the\scratchdimen}%
+% \ifstrutsnapping
+% \ht\nextbox=\ht\strutbox
+% \dp\nextbox=\dp\strutbox
+% \else
+% \scratchdimen=\presnap
+% \advance\scratchdimen by \ht\strutbox
+% \ht\nextbox=\scratchdimen
+% \scratchdimen=\postsnap
+% \advance\scratchdimen by \dp\strutbox
+% \dp\nextbox=\scratchdimen
+% \fi
+% \hbox{\tracesnapping\box\nextbox}%
+% \ifstrutsnapping
+% \ifdim\scratchdimen=\zeropoint\else\vskip\scratchdimen\fi
+% \fi
+% \extrasnapreset
+% \enablepresnapcorrection
+% \global\chardef\@@alignsnap0
+% \egroup}}
+
+\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
- \setbox\nextbox=\hbox{\box\nextbox}% don't ask
- \fi
- \scratchskip=\lastskip
- \edef\presnapskip{\the\lastskip}%
- % mixing single/double columns sometimes goes wrong,
- % check 'som' document
- \ifbinnenkolommen
- \forcepresnaptrue
- \fi
- \ifforcepresnap
- \vbox{\hsize\zeropoint\strut}\nobreak\vskip-\openlineheight
- \fi
- %
- \ifdim\ht\nextbox>\ht\strutbox
- \scratchdimen=\ht\nextbox
- \ifcase\@@presnap
- \ifdim\scratchskip>\zeropoint\relax
- \scratchcounter=\scratchskip
- \advance\scratchcounter by -\openlineheight
- \ifnum\scratchcounter<0
- \scratchcounter=-\scratchcounter
+ \ifcase\@@alignsnapbox\relax
+ \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
+ \setbox\nextbox\hbox{\box\nextbox}% don't ask
+ \fi
+ \scratchskip\lastskip
+ \edef\presnapskip{\the\lastskip}%
+ % mixing single/double columns sometimes goes wrong,
+ % check 'som' document
+ \ifbinnenkolommen
+ \forcepresnaptrue
+ \fi
+ \ifforcepresnap
+ \vbox{\hsize\zeropoint\strut}\nobreak\vskip-\openlineheight
+ \fi
+ %
+ \ifdim\ht\nextbox>\ht\strutbox
+ \scratchdimen\ht\nextbox
+ \ifcase\@@presnap
+ \ifdim\scratchskip>\zeropoint\relax
+ \scratchcounter\scratchskip
+ \advance\scratchcounter -\openlineheight
+ \ifnum\scratchcounter<0
+ \scratchcounter-\scratchcounter
+ \fi
+ \ifnum\scratchcounter<10 % \lastkip is about \openlineheight
+ \advance\scratchdimen -\openstrutdepth
+ \edef\presnapskip{*\presnapskip}%
+ \else\ifdim\scratchskip>\openlineheight
+ %<\openlineheight \else
+ \advance\scratchdimen -\openstrutdepth
+ \edef\presnapskip{*\presnapskip}%
+ \fi\fi
\fi
- \ifnum\scratchcounter<10 % \lastkip is about \openlineheight
- \advance\scratchdimen by -\openstrutdepth
- \edef\presnapskip{*\presnapskip}%
- \else\ifdim\scratchskip>\openlineheight
- %<\openlineheight \else
- \advance\scratchdimen by -\openstrutdepth
- \edef\presnapskip{*\presnapskip}%
- \fi\fi
\fi
+ \getnoflines\scratchdimen
+ \advance\noflines -1
+ \ifnum\noflines>0
+ \scratchdimen\noflines\lineheight
+ \else
+ \scratchdimen\zeropoint
+ \fi
+ \else
+ \scratchdimen\zeropoint
\fi
- \getnoflines\scratchdimen
- \advance\noflines by -1
- \ifnum\noflines>0
- \scratchdimen=\noflines\lineheight
+ \ifnum\@@extrasnap=1 \advance\scratchdimen \extrasnapsign\lineheight \fi
+ \ifnum\@@extrasnap=2 \advance\scratchdimen \extrasnapsign.5\lineheight \fi
+ \edef\presnap{\the\scratchdimen}%
+ \ifstrutsnapping
+ \ifdim\scratchdimen=\zeropoint\else\vskip\scratchdimen\fi
+ \fi
+ \ifdim\dp\nextbox>\dp\strutbox
+ \getnoflines{\dp\nextbox}%
+ \advance\noflines -1
+ \ifnum\noflines>0
+ \scratchdimen\noflines\lineheight
+ \else
+ \scratchdimen\zeropoint
+ \fi
\else
- \scratchdimen=\zeropoint
+ \scratchdimen\zeropoint
\fi
- \else
- \scratchdimen=\zeropoint
- \fi
- \ifnum\@@extrasnap=1 \advance\scratchdimen by \extrasnapsign\lineheight \fi
- \ifnum\@@extrasnap=2 \advance\scratchdimen by \extrasnapsign.5\lineheight \fi
- \edef\presnap{\the\scratchdimen}%
- \ifstrutsnapping
- \ifdim\scratchdimen=\zeropoint\else\vskip\scratchdimen\fi
- \fi
- \ifdim\dp\nextbox>\dp\strutbox
- \getnoflines{\dp\nextbox}%
- \advance\noflines by -1
- \ifnum\noflines>0
- \scratchdimen=\noflines\lineheight
+ \ifnum\@@extrasnap=2 \advance\scratchdimen \extrasnapsign.5\lineheight \fi
+ \ifnum\@@extrasnap=3 \advance\scratchdimen \extrasnapsign\lineheight \fi
+ \edef\postsnap{\the\scratchdimen}%
+ \ifstrutsnapping
+ \ht\nextbox\ht\strutbox
+ \dp\nextbox\dp\strutbox
\else
- \scratchdimen=\zeropoint
+ \scratchdimen\presnap
+ \advance\scratchdimen \ht\strutbox
+ \ht\nextbox\scratchdimen
+ \scratchdimen\postsnap
+ \advance\scratchdimen \dp\strutbox
+ \dp\nextbox\scratchdimen
+ \fi
+ \hbox{\tracesnapping\box\nextbox}%
+ \ifstrutsnapping
+ \ifdim\scratchdimen=\zeropoint\else\vskip\scratchdimen\fi
\fi
\else
- \scratchdimen=\zeropoint
- \fi
- \ifnum\@@extrasnap=2 \advance\scratchdimen by \extrasnapsign.5\lineheight \fi
- \ifnum\@@extrasnap=3 \advance\scratchdimen by \extrasnapsign\lineheight \fi
- \edef\postsnap{\the\scratchdimen}%
- \ifstrutsnapping
- \ht\nextbox=\ht\strutbox
- \dp\nextbox=\dp\strutbox
- \else
- \scratchdimen=\presnap
- \advance\scratchdimen by \ht\strutbox
- \ht\nextbox=\scratchdimen
- \scratchdimen=\postsnap
- \advance\scratchdimen by \dp\strutbox
- \dp\nextbox=\scratchdimen
- \fi
- \hbox{\tracesnapping\box\nextbox}%
- \ifstrutsnapping
- \ifdim\scratchdimen=\zeropoint\else\vskip\scratchdimen\fi
+ \scratchdimen\ht\nextbox
+ %\advance\scratchdimen\dp\nextbox % add dp as option
+ \ifcase\@@alignsnapbox\or
+ \getrawnoflines\scratchdimen
+ \else
+ \getnoflines \scratchdimen
+ \fi
+ \scratchdimen\noflines\lineheight\relax
+ \ifnum\pagetotal>\zeropoint\else % disable this as option
+ \advance\scratchdimen-\strutheight
+ \advance\scratchdimen+\topskip
+ \fi
+ \setbox\nextbox\vbox to \scratchdimen
+ {\ifnum\@@alignsnapbox>2 \vfill\fi % 3 4
+ \box\nextbox
+ \ifnum\@@alignsnapbox<4 \vfill\fi % 2 3
+ \kern\zeropoint}%
+ \ifnum\@@alignsnapbox>2 \def\presnap {++}\fi
+ \ifnum\@@alignsnapbox<4 \def\postsnap{++}\fi
+ \setbox\nextbox\hbox{\tracesnapping\box\nextbox}%
+ \dp\nextbox\zeropoint
+ \box\nextbox
\fi
\extrasnapreset
\enablepresnapcorrection
\global\chardef\@@alignsnap0
+ \global\chardef\@@alignsnapbox0
\egroup}}
\def\snaptomathgrid% probably not working ok
@@ -480,11 +607,32 @@
\def\gridwarning#1{\message{[beware of #1 extra snap]}}
-\def\doverplaatsopgrid[#1]%
+% \def\doverplaatsopgrid[#1]%
+% {\ifgridsnapping
+% \global\chardef\@@alignsnap0
+% \processaction
+% [#1]
+% [ \v!boven=>\gridwarning+\positiveextrasnap\extrasnapbefore,
+% \v!onder=>\gridwarning+\positiveextrasnap\extrasnapafter,
+% \v!beide=>\positiveextrasnap\extrasnaparound,
+% -\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}
+
+\def\doverplaatsopgrid[#1]% some day : speed up
{\ifgridsnapping
- \global\chardef\@@alignsnap0
- \processaction
- [#1]
+ \global\chardef\@@alignsnap0
+ \global\chardef\@@alignsnapbox0
+ \donefalse
+ \ExpandFirstAfter\processallactionsinset[#1]
[ \v!boven=>\gridwarning+\positiveextrasnap\extrasnapbefore,
\v!onder=>\gridwarning+\positiveextrasnap\extrasnapafter,
\v!beide=>\positiveextrasnap\extrasnaparound,
@@ -495,7 +643,12 @@
\v!hoog=>\global\chardef\@@alignsnap2,
\v!midden=>\global\chardef\@@alignsnap3,
\v!laag=>\global\chardef\@@alignsnap4,
+ \v!passend=>\global\chardef\@@alignsnapbox1, % new
+ \v!ruim=>\global\chardef\@@alignsnapbox2, % new
\v!reset=>\positiveextrasnap\extrasnapreset,
+ \v!geen=>\global\chardef\@@alignsnap0
+ \global\chardef\@@alignsnapbox0,
+ \v!standaard=>\positiveextrasnap\extrasnaparound,
\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 eeb0a44b2..e030b612d 100644
--- a/tex/context/base/core-int.tex
+++ b/tex/context/base/core-int.tex
@@ -2527,17 +2527,21 @@
\def\plaatsboventekstblok
{\vbox to \bovenhoogte
{\vsize\bovenhoogte
- \getvalue{\??tk\v!boven\v!tekst\c!voor}
+% \getvalue{\??tk\v!boven\v!tekst\c!voor}
+ \getvalue{\??tk\v!boven\c!voor}
\interactiemenus[\v!boven]
- \getvalue{\??tk\v!boven\v!tekst\c!na}
+% \getvalue{\??tk\v!boven\v!tekst\c!na}
+ \getvalue{\??tk\v!boven\c!na}
\kern\zeropoint}}
\def\plaatsondertekstblok
{\vbox to \onderhoogte
{\vsize\onderhoogte
- \getvalue{\??tk\v!onder\v!tekst\c!voor}
+% \getvalue{\??tk\v!onder\v!tekst\c!voor}
+ \getvalue{\??tk\v!onder\c!voor}
\interactiemenus[\v!onder]
- \getvalue{\??tk\v!onder\v!tekst\c!na}
+% \getvalue{\??tk\v!onder\v!tekst\c!na}
+ \getvalue{\??tk\v!onder\c!na}
\kern\zeropoint}}
\ifx\leftedgetextcontent\undefined \else
@@ -2588,7 +2592,9 @@
\c!kader=\v!aan,
\c!achtergrond=,
\c!achtergrondraster=\@@rsraster,
- \c!achtergrondkleur=]
+ \c!achtergrondkleur=,
+ \c!zelfdepagina=\v!ja,
+ \c!onbekendeverwijzing=\v!ja]
\stelsynchronisatiebalkin
[\c!variant=\v!pagina,
diff --git a/tex/context/base/core-itm.tex b/tex/context/base/core-itm.tex
index 6eb40f6c5..059ef7d33 100644
--- a/tex/context/base/core-itm.tex
+++ b/tex/context/base/core-itm.tex
@@ -70,7 +70,7 @@
\let\currentitemgroup\empty
-\def\itemreferences{0}
+\def\unknownitemreference{0} \let\itemreferences\unknownitemreference
% #1=level #2=parameter
diff --git a/tex/context/base/core-job.tex b/tex/context/base/core-job.tex
index 0e0b13532..443cdf12b 100644
--- a/tex/context/base/core-job.tex
+++ b/tex/context/base/core-job.tex
@@ -166,7 +166,7 @@
%appendtoks \checkutilityfile \to \everyjob % obsolete
\appendtoks \openutilities \to \everyjob
\appendtoks \loadoptionfile \to \everyjob
-\appendtoks \loadtwopassdata \to \everyjob
+%appendtoks \loadtwopassdata \to \everyjob
\appendtoks \setupfootnotes \to \everyjob % depends on bodyfont
\appendtoks \initializeMPgraphics \to \everyjob % after loading system files
@@ -181,7 +181,9 @@
\appendtoks \stopcopyingblocks \to \everygoodbye
\appendtoks \closespecialfile \to \everygoodbye
-\appendtoks \checkreferences \to \everystarttext % nieuw 4-12-1999
+\prependtoks \resetutilities \to \everystarttext % moved 28-02-2002
+\prependtoks \loadtwopassdata \to \everystarttext % moved 28-02-2002
+\appendtoks \checkreferences \to \everystarttext % new 04-12-1999
\def\doateverystarttext%
{\the\everystarttext
@@ -237,9 +239,12 @@
{\def\startomgeving ##1 {}%
\let\stopomgeving\relax
\startreadingfile
- \processfile{#1}% \readlocfile{#1}{}{}%
+ \processfile{#1}% was : \readlocfile{#1}{}{}
\stopreadingfile}
+\def\onderdeel #1 % at outermost level only
+ {\processfile{#1}}
+
\def\environment{\omgeving} % for the moment, no \let !
\newcounter\filelevel
@@ -349,9 +354,6 @@
% Het <pagina>-karakter (FormFeed), wordt omgezet in \par
-\edef\oldlinefeed{\the\catcode`\^^L}
-
-\catcode`\^^L=\oldlinefeed
\catcode`\^^L=\@@endofline
% NOT TOEVOEGEN: \the\everytrace
diff --git a/tex/context/base/core-mar.tex b/tex/context/base/core-mar.tex
index ab1207c42..4768caefe 100644
--- a/tex/context/base/core-mar.tex
+++ b/tex/context/base/core-mar.tex
@@ -77,10 +77,12 @@
\def\stelmarkeringin%
{\dodoubleargument\dostelmarkeringin}
-\letvalue{\??mk \v!vorige}\gettopmark
-\letvalue{\??mk \v!eerste}\getfirstmark
-\letvalue{\??mk\v!laatste}\getbotmark
-\letvalue{\??mk\v!huidige}\getcurrentmark
+% betere protectie
+
+\letvalue{\??mk\??mk \v!vorige}\gettopmark
+\letvalue{\??mk\??mk \v!eerste}\getfirstmark
+\letvalue{\??mk\??mk\v!laatste}\getbotmark
+\letvalue{\??mk\??mk\v!huidige}\getcurrentmark
\def\dododefinieermarkering[#1][#2]%
{\stelmarkeringin[#1]
@@ -102,25 +104,15 @@
\let\geenmarkering=\relax
-%\def\fetchmark[#1][#2]% geen \def, anders problemen in \doif...
-% {\def\dofetchmark{\csname\??mk#2\endcsname}%
-% \expandafter\dofetchmark\csname\??mk\hoofdmarkering{#1}\endcsname}
-
-%\def\dofetchmark#1#2% needed because we need to expand
-% {\csname\??mk#2\endcsname#1}
-%
-%\def\fetchmark[#1][#2]% never \unexpanded
-% {\expandafter\dofetchmark\csname\??mk\hoofdmarkering{#1}\endcsname{#2}}
-
\def\fetchmark[#1][#2]% never \unexpanded
- {\@EA\@EA\csname\??mk#2\endcsname
+ {\@EA\@EA\csname\??mk\??mk#2\endcsname
\csname\??mk\hoofdmarkering{#1}\endcsname}
\beginTEX
\def\fetchmark[#1][#2]% never \unexpanded
{\@EA\ifx\csname\??mk#1\c!koppeling\endcsname\else
- \@EA\@EA\csname\??mk#2\endcsname
+ \@EA\@EA\csname\??mk\??mk#2\endcsname
\csname\??mk\csname\??mk#1\c!koppeling\endcsname\endcsname
\fi}
@@ -130,7 +122,7 @@
\def\fetchmark[#1][#2]% never \unexpanded
{\ifcsname\??mk#1\c!koppeling\endcsname
- \@EA\@EA\csname\??mk#2\endcsname
+ \@EA\@EA\csname\??mk\??mk#2\endcsname
\csname\??mk\csname\??mk#1\c!koppeling\endcsname\endcsname
\fi}
@@ -159,8 +151,8 @@
[#2]
[ \v!beide=>{\fetchtwomarks[#1]},
\v!alles=>{\fetchallmarks[#1]},
- \s!default=>{\fetchmark[#1][\v!eerste]},
- \s!unknown=>{\fetchmark[#1][#2]}]%
+ \s!default=>{\fetchmark [#1][\v!eerste]},
+ \s!unknown=>{\fetchmark [#1][#2]}]%
\egroup}}
\def\nohaalmarkering[#1][#2]%
diff --git a/tex/context/base/core-mis.tex b/tex/context/base/core-mis.tex
index 3b27f592c..b35bad64d 100644
--- a/tex/context/base/core-mis.tex
+++ b/tex/context/base/core-mis.tex
@@ -510,10 +510,12 @@
\def\breuk#1#2%
{\mathematics{#1\over#2}}
-%\def\bedrag#1%
-% {\mathematics{f~}\hbox{#1}}
+% \def\bedrag#1%
+% {\mathematics{f~}\hbox{#1}}
-\def\bedragprefix{\mathematics{f\normalfixedspace}}
+% \def\bedragprefix{\mathematics{f\normalfixedspace}}
+
+\def\bedragprefix{\euro\normalfixedspace}
\def\bedragsuffix{}
\def\bedrag#1%
diff --git a/tex/context/base/core-pos.tex b/tex/context/base/core-pos.tex
index 65773bcf4..f833a09ed 100644
--- a/tex/context/base/core-pos.tex
+++ b/tex/context/base/core-pos.tex
@@ -1497,10 +1497,10 @@
% so far
\setbox#1=\hbox
{\setposition{\s!margin:\currentmarginpos}\raise\scratchdimen\box#1}%
- \dp#1=\!!zeropoint
- \ht#1=\!!zeropoint
+ \dp#1=\zeropoint
+ \ht#1=\zeropoint
\fi
- \vadjust{\box#1}%
+ \graphicvadjust{\box#1}%
\egroup}
%D For a right menu, a sequence of calls to \type
diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex
index d04f34c8d..f84808242 100644
--- a/tex/context/base/core-rul.tex
+++ b/tex/context/base/core-rul.tex
@@ -640,8 +640,9 @@
{\copyparameters[#1][#3]%
[\c!breedte,\c!hoogte,\c!offset,\c!leeg,\c!lijndikte,%
\c!straal,\c!hoek,\c!diepte,\c!kader,\c!kaderkleur,%
+ \c!voorgrondletter,\c!voorgrondkleur,%
\c!bovenkader,\c!onderkader,\c!linkerkader,\c!rechterkader,%
- \c!lijndikte,\c!kaderoffset,\c!voorgrondkleur,\c!achtergrond,%
+ \c!lijndikte,\c!kaderoffset,\c!achtergrond,%
\c!achtergrondoffset,\c!achtergrondraster,\c!achtergrondkleur,%
\c!uitlijnen,\c!onder,\c!boven,\c!strut,\c!plaats]%
\copyparameters[#1\c!achtergrond][#1]%
@@ -705,6 +706,9 @@
\ifsecondargument % faster
\getparameters[\@@framed][#2]% here !
\fi
+ % to get the right spacing
+ \doifvaluesomething{\@@framed\c!voorgrondletter}
+ {\@EA\doconvertfont\csname\@@framed\c!voorgrondletter\endcsname\empty}%
% beware, both the frame and background offset can be overruled
\edef\localoffset{\getvalue{\@@framed\c!offset}}%
\edef\localwidth{\getvalue{\@@framed\c!breedte}}%
@@ -2313,6 +2317,7 @@
\c!straal=.5\bodyfontsize,
\c!hoek=\v!recht,
\c!voorgrondkleur=,
+ \c!voorgrondletter=,
\c!achtergrond=,
\c!achtergrondkleur=,
\c!achtergrondraster=\@@rsraster,
@@ -2381,52 +2386,111 @@
\ifx\checkframedtext\undefined \let\checkframedtext\relax \fi
+% \def\dododostartframedtext[#1][#2][#3]%
+% {\processaction
+% [#2]
+% [ \v!links=>\letvalue{\??kd#1\c!links }=\relax
+% \letvalue{\??kd#1\c!rechts}=\hfill,
+% \v!rechts=>\letvalue{\??kd#1\c!links }=\hfill
+% \letvalue{\??kd#1\c!rechts}=\relax,
+% \v!midden=>\letvalue{\??kd#1\c!links }=\hfill
+% \letvalue{\??kd#1\c!rechts}=\hfill,
+% \v!geen=>\letvalue{\??kd#1\c!links }=\relax % new
+% \letvalue{\??kd#1\c!rechts}=\relax]% new
+% % % removed 06/2001
+% % \forgetparindent
+% % added 06/2001 [see demo-bbv]
+% \localhsize\hsize \checkframedtext
+% % so far
+% \setbox\framebox=\vbox
+% \bgroup
+% \hsize\localhsize
+% % \insidefloattrue % ?
+% \expanded{\switchtobodyfont[\getvalue{\??kd#1\c!korps}]}%
+% \localframed[\??kd#1][\c!strut=\v!nee,#3]%
+% \bgroup
+% \blanko[\v!blokkeer]%
+% \let\\=\endgraf
+% % \getvalue{\??kd#1\c!binnen}%
+% \dostartattributes{\??kd#1}\c!letter\c!kleur{}%
+% \def\dostopframedtext{\dodostopframedtext{#1}{#2}}}
+
\def\dododostartframedtext[#1][#2][#3]%
{\processaction
[#2]
- [ \v!links=>\letvalue{\??kd#1\c!links }=\relax
- \letvalue{\??kd#1\c!rechts}=\hfill,
- \v!rechts=>\letvalue{\??kd#1\c!links }=\hfill
- \letvalue{\??kd#1\c!rechts}=\relax,
- \v!midden=>\letvalue{\??kd#1\c!links }=\hfill
- \letvalue{\??kd#1\c!rechts}=\hfill,
- \v!geen=>\letvalue{\??kd#1\c!links }=\relax % new
- \letvalue{\??kd#1\c!rechts}=\relax]% new
+ [ \v!links=>\letvalue{\??kd#1\c!links }\relax
+ \letvalue{\??kd#1\c!rechts}\hfill,
+ \v!rechts=>\letvalue{\??kd#1\c!links }\hfill
+ \letvalue{\??kd#1\c!rechts}\relax,
+ \v!midden=>\letvalue{\??kd#1\c!links }\hfill
+ \letvalue{\??kd#1\c!rechts}\hfill,
+ \v!geen=>\letvalue{\??kd#1\c!links }\relax % new
+ \letvalue{\??kd#1\c!rechts}\relax]% new
% removed 06/2001
% \forgetparindent
% added 06/2001 [see demo-bbv]
\localhsize\hsize \checkframedtext
% so far
\setbox\framebox=\vbox
- \bgroup
+ \startboxedcontent
\hsize\localhsize
- % \insidefloattrue % ?
+ % \insidefloattrue % ? better
\expanded{\switchtobodyfont[\getvalue{\??kd#1\c!korps}]}%
+ \startcolor[\getvalue{\??kd#1\c!kleur}]%
\localframed[\??kd#1][\c!strut=\v!nee,#3]%
\bgroup
- \blanko[\v!blokkeer]%
\let\\=\endgraf
\getvalue{\??kd#1\c!binnen}%
- \dostartattributes{\??kd#1}\c!letter\c!kleur{}%
+ \doifvalue{\??kd#1\c!dieptecorrectie}{\v!aan} % new, inside box
+ {\bgroup
+ \vbox{\strut}
+ \vskip-\lineheight}%
+ \blanko[\v!blokkeer]% plaatst signal
+ \doconvertfont{\getvalue{\??kd#1\c!letter}}{}%
\def\dostopframedtext{\dodostopframedtext{#1}{#2}}}
%D The \type {none} option is handy for nested usage, as
%D in the presentation styles, where we don't want
%D interference.
-\def\dodostopframedtext#1#2%
+% \def\dodostopframedtext#1#2%
+% {\endgraf
+% \removelastskip
+% \dostopattributes
+% \doifvalue{\??kd#1\c!dieptecorrectie}{\v!aan} % new, inside box
+% {\baselinecorrection}%
+% \egroup
+% \egroup
+% \doif{#2}{\v!geen}{\insidefloattrue}% new
+% \ifinsidefloat
+% \box\framebox
+% \else
+% \doplaats[\??kd#1][]{\box\framebox}%
+% \fi
+% \egroup}
+
+\def\dodostopframedtext#1#2% % no \baselinecorrection, see faq docs
{\endgraf
\removelastskip
- \dostopattributes
- \doifvalue{\??kd#1\c!dieptecorrectie}{\v!aan} % new, inside box
- {\baselinecorrection}%
- \egroup
+ \doifvalue{\??kd#1\c!dieptecorrectie}{\v!aan} % local and global
+ {\forgetall
+ \vskip-\lineheight
+ \vbox{\strut}
+ \egroup
+ \forgetall
+ \vskip-\lineheight
+% will be an option
+\setbaselinecorrections
+\donegbotbaselinecorrection
+ \vbox{\strut}}
+ \stopboxedcontent
+ \stopcolor
\egroup
\doif{#2}{\v!geen}{\insidefloattrue}% new
\ifinsidefloat
\box\framebox
\else
- \doplaats[\??kd#1][]{\box\framebox}%
+ \doplaats[\??kd#1][\c!dieptecorrectie=\v!uit]{\box\framebox}%
\fi
\egroup}
@@ -2959,6 +3023,7 @@
\c!hoek=\v!recht,
\c!diepte=\!!zeropoint,
\c!voorgrondkleur=,
+ \c!voorgrondletter=,
\c!achtergrond=,
\c!achtergrondraster=\@@rsraster,
\c!achtergrondkleur=,
diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex
index e144f68db..73347fb25 100644
--- a/tex/context/base/core-sec.tex
+++ b/tex/context/base/core-sec.tex
@@ -190,10 +190,13 @@
{\maakhetnummer[#1]%
\hetnummer}
-\def\huidigenummer[#1]%
- {%\getvalue{\getvalue{\@@thenumber{#1}\c!zetwijze}}%
- \getvalue{\getvalue{\@@thenumber{#1}\c!plaats}}%
- {\dotextprefix{\getvalue{\@@thenumber{#1}\c!tekst}}\lossenummer[#1]}}
+%\def\huidigenummer[#1]%
+% {%\getvalue{\getvalue{\@@thenumber{#1}\c!zetwijze}}%
+% \getvalue{\getvalue{\@@thenumber{#1}\c!plaats}}%
+% {\dotextprefix{\getvalue{\@@thenumber{#1}\c!tekst}}\lossenummer[#1]}}
+
+\def\huidigenummer[#1]% kan tekst hier weg ?
+ {\dotextprefix{\getvalue{\@@thenumber{#1}\c!tekst}}\lossenummer[#1]}
\def\volgendenummer[#1][#2][#3]%
{\verhoognummer[#1]%
@@ -886,7 +889,8 @@
\xdef\@@koniveau{\getvalue{\??se\@@sectie\c!niveau}}}
\def\dohandelpaginaafBB#1#2#3%
- {\doifinset{\getvalue{\??tk#2\v!tekst\c!status}}{\v!normaal,\v!start}
+% {\doifinset{\getvalue{\??tk#2\v!tekst\c!status}}{\v!normaal,\v!start}
+ {\doifinset{\getvalue{\??tk#2\c!status}}{\v!normaal,\v!start}
{\doifvaluesomething{\??ko#1#3}
{\setuplayouttext[#2][\c!status=\getvalue{\??ko#1#3}]}}}
@@ -1418,7 +1422,7 @@
% \let\unknownreference\gobbleoneargument
\ifdisplaysectionhead
\let\headlastlinewidth\!!zeropoint
- \snaptogrid\hbox
+ \snaptogrid[\getvalue{\??ko#1\c!grid}]\hbox
{\iflocation
\ifautocrossdocument
\doifreferencefoundelse{\getvalue{\??ko#1\c!file}::#1}
@@ -1622,6 +1626,7 @@
\c!tolerantie=,
\c!file=,
\c!expansie=,
+ \c!grid=,
#2]%
\ConvertToConstant\doifnot{#1}{\getvalue{\??ko#1\c!default}}
{\doifsomething{\getvalue{\??ko#1\c!default}}
@@ -1633,10 +1638,12 @@
\c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein,
%\c!nummerletter,\c!tekstletter,
%\c!expansie, % why njet ?
- \c!uitlijnen,\c!tolerantie,\c!nummercommando,\c!tekstcommando]}}%
+ \c!uitlijnen,\c!tolerantie,\c!grid,
+ \c!nummercommando,\c!tekstcommando]}}%
\getparameters[\??ko#1][#2]%
\doifsomething{\getvalue{\??ko#1\c!sectie}}
- {\doifundefined{\??mk#1}
+ {\doifelsemarking{#1}% \doifundefined{\??mk#1}
+ {}% marking #1 already defined
{\definieermarkering[#1]%
\koppelmarkering[#1][\getvalue{\??ko#1\c!sectie}]%
\definieermarkering[#1\v!nummer]%
@@ -1654,7 +1661,8 @@
\c!letter,\c!kleur,\c!afstand,\c!variant,\c!springvolgendein,
%\c!nummerletter,\c!tekstletter,
%\c!expansie, % why njet ?
- \c!uitlijnen,\c!tolerantie,\c!nummercommando,\c!tekstcommando]%
+ \c!uitlijnen,\c!tolerantie,\c!grid,
+ \c!nummercommando,\c!tekstcommando]%
\getparameters[\??ko#1][\c!expansie=]% iig een value, rather fuzzy
\definieermarkering[#1][#2]%
\definieermarkering[#1\v!nummer][#2\v!nummer]%
diff --git a/tex/context/base/core-spa.tex b/tex/context/base/core-spa.tex
index 471fe1a17..88079adf1 100644
--- a/tex/context/base/core-spa.tex
+++ b/tex/context/base/core-spa.tex
@@ -2512,6 +2512,26 @@
\definehspace [\v!normaal] [1\spaceamount]
\definehspace [\v!default] [\v!groot]
+% Very nasty but needed for margin stuff inside colored
+% paragraphs.
+
+\let\normalvadjust\vadjust
+
+\def\graphicvadjust % bad, those low level color calls here
+ {\dowithnextbox
+ {\normalvadjust
+ {\dostartgraphicgroup
+ \ifx\maintextcolor\empty
+ \stopcolormode
+ \unvbox\nextbox
+ \else
+ \startcolormode\maintextcolor
+ \unvbox\nextbox
+ \stopcolormode
+ \fi
+ \dostopgraphicgroup}}%
+ \vbox}
+
\stelwitruimtein
[\v!geen]
diff --git a/tex/context/base/core-tbl.tex b/tex/context/base/core-tbl.tex
index 2baf2bcda..fbba941f5 100644
--- a/tex/context/base/core-tbl.tex
+++ b/tex/context/base/core-tbl.tex
@@ -494,11 +494,11 @@
\doifundefined{\??tt#1::\c!eenheid}
{\copyparameters
[\??tt#1::][\??tt\e!tabulate::]%
- [\c!afstand,\c!eenheid,\c!voor,\c!na,\c!binnen,\c!inspringen,
+ [\c!afstand,\c!eenheid,\c!voor,\c!korps,\c!na,\c!binnen,\c!inspringen,
\c!uitlijnen,\c!lijnkleur,\c!lijndikte,EQ]}%
\copyparameters
[\??tt#1::#2][\??tt#1::]%
- [\c!eenheid,\c!afstand,\c!voor,\c!na,\c!binnen,\c!inspringen,
+ [\c!eenheid,\c!afstand,\c!voor,\c!korps,\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]}%
@@ -592,7 +592,12 @@
\getvalue{\??tt\currenttabulate\c!voor}%
\fi
\bgroup
-\postponefootnotes % new, to be tested
+ % todo: spacing around tabulate when bodyfont is set
+ % expansion en test needed ?
+ \doifvaluesomething{\??tt\currenttabulate\c!korps}
+ {\expanded{\switchtobodyfont
+ [\getvalue{\??tt\currenttabulate\c!korps}]}}%
+ \postponefootnotes % new, to be tested
\chardef\tabulatepass=1
\widowpenalty=0 % otherwise lines are not broken
\clubpenalty =0 % but overlap in funny ways
@@ -672,6 +677,7 @@
\v!middel=>\def\factor{.5},
\v!groot=>,
\v!geen=>\scratchskip=\zeropoint\def\factor{0},
+ \v!grid=>\scratchskip=\zeropoint\def\factor{0},
\s!unknown=>\scratchskip=\commalistelement]%
\scratchdimen=\factor\scratchskip
\ifconditional\tabulatesomeamble\kern\else\vskip\fi\scratchdimen % new
@@ -681,7 +687,9 @@
{\color
[\getvalue{\??tt\currenttabulate\c!lijnkleur}]
{\scratchdimen=\getvalue{\??tt\currenttabulate\c!lijndikte}%
- \hrule\!!height.5\scratchdimen\!!depth.5\scratchdimen}}
+ \hrule\!!height.5\scratchdimen\!!depth.5\scratchdimen\relax
+ \doifvalue{\??tt\currenttabulate\c!afstand}{\v!grid}
+ {\kern-\scratchdimen}}} % experimental tm-prikkels
%D When set to true, no (less) break optimization is done.
@@ -881,6 +889,8 @@
\chardef\tabulatepass=2
\@EA\halign\@EA{\the\!!toksa\cr\fulltabulatecontent\crcr}%
\prevdepth\dp\strutbox % nog eens beter, temporary hack
+ \doifvalue{\??tt\currenttabulate\c!afstand}{\v!grid}
+ {\vskip-\dp\strutbox}% experimental tm-prikkels
\egroup
\ifinsidefloat \else
\getvalue{\??tt\currenttabulate\c!na}%
@@ -902,6 +912,7 @@
\setuptabulate
[\c!eenheid=1em,
EQ={:},
+ \c!korps=,
\c!lijnkleur=,
\c!lijndikte=\linewidth,
\c!binnen=,
diff --git a/tex/context/base/core-uti.tex b/tex/context/base/core-uti.tex
index c9d2e3269..39d084d87 100644
--- a/tex/context/base/core-uti.tex
+++ b/tex/context/base/core-uti.tex
@@ -186,6 +186,7 @@
\long\def\doutilities#1#2#3#4#5% % introduceren in utility file
{\restorecatcodes
\resetutilities
+ %\message{#1}%
\def\docommando##1% % more than one utility thing
{\csname\s!set##1\endcsname}% % can be handled in one pass,
\processcommacommand[#1]\docommando % for instance lists
@@ -432,4 +433,59 @@
\def\plaatsvolledig#1#2#3#4% kop, ref, tit, do
{#1[#2]{#3}#4\pagina[\v!ja]}
+% Experiment
+%
+%\installprogram{Hello World}
+
+\def\installprogram#1%
+ {\immediatewriteutility{e p {#1}}}
+
+% \writeplugindata{texutil}{{alpha}}
+% \writeplugindata{texutil}{{beta}}
+% \writeplugindata{texutil}{{gamma}}
+% \writeplugindata{texutil}{{delta}}
+%
+% \loadplugindata {plugintest}
+
+\def\immediatewriteplugindata#1#2%
+ {\immediatewriteutility{p u {#1} #2}}
+
+\def\writeplugindata#1#2%
+ {\writeutility{p u {#1} #2}}
+
+\def\loadplugindata#1%
+ {\doutilities{#1}{\jobname}{}{}{}{}}
+
+% \plugincommand{\command{}{}{}}
+%
+% this way we can catch undefined commands
+
+\long\def\plugincommand#1%
+ {\doplugincommand#1\relax}
+
+\long\def\doplugincommand#1%
+ {\ifx#1\undefined
+ \expandafter\noplugincommand
+ \else
+ \expandafter#1%
+ \fi}
+
+\long\def\noplugincommand#1\relax
+ {}
+
+% \addutilityreset{plugintest}
+%
+% \def\resetplugintest{\let\plugintest\gobbletwoarguments}
+% \def\setplugintest {\let\plugintest\writestatus}
+%
+% \installplugin
+% {plugintest}
+% {\let\plugintest\gobbletwoarguments}
+% {\let\plugintest\writestatus}
+
+\long\def\installplugin#1#2#3%
+ {\addutilityreset {#1}%
+ \long\setvalue{\s!reset#1}{#2}%
+ \long\setvalue{\s!set #1}{#3}}
+
\protect \endinput
diff --git a/tex/context/base/core-ver.tex b/tex/context/base/core-ver.tex
index 55eba3397..c9d5a4093 100644
--- a/tex/context/base/core-ver.tex
+++ b/tex/context/base/core-ver.tex
@@ -101,9 +101,9 @@
\installprettytype [MP] [MP]
\installprettytype [MF] [MP]
-\installprettytype [JAVASCRIPT] [JV]
+\installprettytype [JAVASCRIPT] [JS]
\installprettytype [JAVA] [JV]
-\installprettytype [JS] [JV]
+\installprettytype [JS] [JS]
\installprettytype [JV] [JV]
\installprettytype [SQL] [SQL]
diff --git a/tex/context/base/enco-pol.tex b/tex/context/base/enco-pol.tex
index e64540392..588c5e673 100644
--- a/tex/context/base/enco-pol.tex
+++ b/tex/context/base/enco-pol.tex
@@ -15,25 +15,45 @@
\startmapping[pl0]
-\definecasemap 161 185 165 % a ogonek
-\definecasemap 162 230 198 % c acute
-\definecasemap 166 234 202 % e ogonek
-\definecasemap 170 179 163 % l crossed
-\definecasemap 171 241 209 % n acute
-\definecasemap 243 243 211 % o acute
-\definecasemap 177 156 140 % s acute
-\definecasemap 185 159 143 % z acute
-\definecasemap 187 191 175 % z dot
-
-\definecasemap 129 165 185 % A ogonek
-\definecasemap 130 198 230 % C accute
-\definecasemap 134 202 234 % E ogonek
-\definecasemap 138 163 179 % L crossed
-\definecasemap 139 209 241 % N accute
-\definecasemap 211 211 243 % O acute
-\definecasemap 145 140 156 % S acute
-\definecasemap 153 143 159 % Z acute
-\definecasemap 155 175 191 % Z dot
+%\definecasemap 161 185 165 % a ogonek
+%\definecasemap 162 230 198 % c acute
+%\definecasemap 166 234 202 % e ogonek
+%\definecasemap 170 179 163 % l crossed
+%\definecasemap 171 241 209 % n acute
+%\definecasemap 243 243 211 % o acute
+%\definecasemap 177 156 140 % s acute
+%\definecasemap 185 159 143 % z acute
+%\definecasemap 187 191 175 % z dot
+
+%\definecasemap 129 165 185 % A ogonek
+%\definecasemap 130 198 230 % C accute
+%\definecasemap 134 202 234 % E ogonek
+%\definecasemap 138 163 179 % L crossed
+%\definecasemap 139 209 241 % N accute
+%\definecasemap 211 211 243 % O acute
+%\definecasemap 145 140 156 % S acute
+%\definecasemap 153 143 159 % Z acute
+%\definecasemap 155 175 191 % Z dot
+
+\definecasemap 161 161 129 % a ogonek
+\definecasemap 162 162 130 % c acute
+\definecasemap 166 166 134 % e ogonek
+\definecasemap 170 170 138 % l crossed
+\definecasemap 171 171 139 % n acute
+\definecasemap 243 243 211 % o acute
+\definecasemap 177 177 145 % s acute
+\definecasemap 185 185 153 % z acute
+\definecasemap 187 187 155 % z dot
+
+\definecasemap 129 161 129 % A ogonek
+\definecasemap 130 162 130 % C accute
+\definecasemap 134 166 134 % E ogonek
+\definecasemap 138 170 138 % L crossed
+\definecasemap 139 171 139 % N accute
+\definecasemap 211 243 211 % O acute
+\definecasemap 145 177 145 % S acute
+\definecasemap 153 185 153 % Z acute
+\definecasemap 155 187 155 % Z dot
\stopmapping
diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex
index 01d879eaa..c0dd478d9 100644
--- a/tex/context/base/font-ini.tex
+++ b/tex/context/base/font-ini.tex
@@ -57,11 +57,14 @@
% new
+\newtoks \everydefinedfont \relax
+
\def\dodefinedfont[#1]%
{\iffirstargument\definefont[\string\definedfont][#1]\fi
- \csname\string\definedfont\endcsname}
+ \csname\string\definedfont\endcsname
+ \the\everydefinedfont}
-\def\definedfont%
+\unexpanded\def\definedfont%
{\dosingleempty\dodefinedfont}
%%% message 14 added
@@ -1305,6 +1308,8 @@
\fi
\fi}
+\let\definefontfile\definefontsynonym % dedicated to Taco Hoekwater
+
\def\setupfontsynonym%
{\dodoubleempty\dosetupfontsynonym}
diff --git a/tex/context/base/hand-ini.tex b/tex/context/base/hand-ini.tex
index 9a209bfe7..fbbeabeaa 100644
--- a/tex/context/base/hand-ini.tex
+++ b/tex/context/base/hand-ini.tex
@@ -178,7 +178,8 @@
\def\startfonthandling[#1]%
{\def\fonthandling{#1}%
\doifundefined{\@fha@\fonthandling}
- {\expanded{\newtoks\csname\@fha@\fonthandling\endcsname}}}
+ {\getparameters[\@fha@\@fha@#1][\c!links=1,\c!rechts=1]% new
+ \expanded{\newtoks\csname\@fha@\fonthandling\endcsname}}}
\def\stopfonthandling%
{\let\fonthandling\empty}
@@ -202,61 +203,13 @@
\def\enablehandling%
{\dodoubleempty\doenablehandling}
-%\def\doenablehandling[#1][#2]% handling / symbolic fontname
-% {\doifdefinedelse{\@fha@\@fha@#1}%
-% {\setprotrudingfactor
-% {\getvalue{\@fha@\@fha@#1\c!links}}
-% {\getvalue{\@fha@\@fha@#1\c!rechts}}%
-% \edef\fonthandling{\getvalue{\@fha@\@fha@#1}}%
-% \checkfonthandling{#2}%
-% \@EA\rawprocesscommalist\@EA[\fonthandling]\dodoenablehandling
-% \registerfonthandling{#2}}
-% {\edef\fonthandling{#1}% new
-% \dodoenablehandling{#1}}}
-%
-%\def\dodoenablehandling#1% weg met die @EA
-% {\doifdefined{\@fha@#1}{\@EA\the\csname\@fha@#1\endcsname}}
-%
-%\def\checkfonthandling#1%
-% {\doifelsevalue{#1\s!handling\c!file}{\purefontname\font}
-% \skipprotrudingdeftrue\skipprotrudingdeffalse}
-%
-%\def\registerfonthandling#1%
-% {%\ifskipprotrudingdef\else\message{#1->#2->\purefontname\font}\wait\fi
-% \setxvalue{#1\s!handling\c!file}{\purefontname\font}}
-%
-%\def\registerfonthandling#1%
-% {%\ifskipprotrudingdef\else\message{#1->#2->\purefontname\font}\wait\fi
-% \setxvalue{#1\s!handling\c!file}{\purefontname\font}}
-
\def\doenablehandling[#1][#2]% handling / symbolic fontname
{\fastenablehandling{#1}{#2}} % for the moment the same as:
-% fast one for font switch:
-
-% \def\fastenablehandling#1#2%
-% {\@EA\ifx\csname\@fha@\@fha@#1\endcsname\relax
-% \edef\fonthandling{#1}% new
-% \dodoenablehandling{#1}%
-% \else
-% \setprotrudingfactor
-% {\csname\@fha@\@fha@#1\c!links\endcsname}
-% {\csname\@fha@\@fha@#1\c!rechts\endcsname}%
-% \edef\fonthandling{\csname\@fha@\@fha@#1\endcsname}%
-% \checkfonthandling{#2}%
-% \@EA\rawprocesscommalist\@EA[\fonthandling]\dodoenablehandling
-% \registerfonthandling{#2}%
-% \fi}
-%
-% \def\dodoenablehandling#1%
-% {\@EA\ifx\csname\@fha@#1\endcsname\relax\else
-% \the\csname\@fha@#1\endcsname
-% \fi}
-
\beginTEX
\def\fastenablehandling#1%
- {\def\askedfonthandling{#1}%
+ {\edef\askedfonthandling{#1}%
\@EA\ifx\csname\@fha@\@fha@\askedfonthandling\endcsname\relax
\expandafter\nofastenablehandling
\else
@@ -268,7 +221,7 @@
\beginETEX \ifcsname
\def\fastenablehandling#1% also gets #2 passed
- {\def\askedfonthandling{#1}%
+ {\edef\askedfonthandling{#1}%
\ifcsname\@fha@\@fha@\askedfonthandling\endcsname
\expandafter\dofastenablehandling
\else
@@ -287,7 +240,10 @@
\registerfonthandling{#1}}
\def\nofastenablehandling#1%
- {\let\fonthandling\askedfonthandling
+ {\setprotrudingfactor
+ {\csname\@fha@\@fha@\askedfonthandling\c!links \endcsname}
+ {\csname\@fha@\@fha@\askedfonthandling\c!rechts\endcsname}%
+ \let\fonthandling\askedfonthandling
\dodoenablehandling\fonthandling}
\beginTEX
@@ -308,13 +264,15 @@
\endETEX
-\def\checkfonthandling#1% we need a fast compare
- {\doifelsevalue{#1\s!handling\c!file}{\purefontname\font}
- \skipprotrudingdeftrue\skipprotrudingdeffalse}
+%D We must not use \type {\purefontname} here (was a bug)!
+
+\def\checkfonthandling#1% we need a fast compare
+ {\doifelsevalue{#1\s!handling\c!file}{\fontname\font}
+ \skipprotrudingdeftrue\skipprotrudingdeffalse}
\def\registerfonthandling#1%
- {%\ifskipprotrudingdef\else\message{#1->#2->\purefontname\font}\wait\fi
- \@EA\xdef\csname#1\s!handling\c!file\endcsname{\purefontname\font}}
+ {%\ifskipprotrudingdef\else\message{#1->#2->\fontname\font}\wait\fi
+ \@EA\xdef\csname#1\s!handling\c!file\endcsname{\fontname\font}}
%D \macros
%D {usehandling}
@@ -339,6 +297,8 @@
%D Let's now see if this macro works:
+\setupfonthandling[\s!default][\c!links=1,\c!rechts=1]
+
\usehandling [def]
\protect \endinput
diff --git a/tex/context/base/lang-ini.tex b/tex/context/base/lang-ini.tex
index 0aee0de61..0f7442576 100644
--- a/tex/context/base/lang-ini.tex
+++ b/tex/context/base/lang-ini.tex
@@ -11,6 +11,8 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+%D Todo : --language=pl,en,nl : nl incs number of language
+
%D This module implements the (for the moment still simple)
%D multi||language support of \CONTEXT, which should not be
%D confused with the multi||lingual interface. This support
@@ -318,8 +320,8 @@
\let\normalpatterns\patterns
-\def\dodoloadpatterns#1#2#3#4%
- {\normallanguage\loadedlanguage
+\def\dodoloadpatterns#1#2#3#4% beware, loaded language also incr
+ {\normallanguage\loadedlanguage % when not really needed
% \letvalue{\??la\??la#2}\loadedlanguage
\bgroup
\scratchtoks\everyjob % we don't want additional junk put there
@@ -334,7 +336,9 @@
%\def\patterns##1{\message{#1/#2/#3/#4/##1}\normalpatterns{##1}}%
\readsysfile{\truefilename{\f!languageprefix#2.\f!patternsextension}}
{\setxvalue{\??la#1\s!patterns}{#2}%
- \xdef\preloadedpatterns{\preloadedpatterns\showpatterns{#2}}%
+ \xdef\preloadedpatterns
+ {\preloadedpatterns
+ \number\normallanguage:\showpatterns{#2}}%
\showmessage{\m!linguals}{1}{#2,#1,\loadedlanguage}}
{\readsysfile{\f!languageprefix#2.\f!patternsextension}
{\setxvalue{\??la#1\s!patterns}{#2}%
diff --git a/tex/context/base/m-units.tex b/tex/context/base/m-units.tex
index f775ad7bc..423ca5e70 100644
--- a/tex/context/base/m-units.tex
+++ b/tex/context/base/m-units.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 Scientific units can be typeset in math mode pretty well,
%D but occasionally one has to take care of spacing.
@@ -22,8 +22,8 @@
%D \stoptypen
%D
%D This example shows that we use the order in which we say
-%D things, instead of typeset things. There is a separate
-%D manual for this module.
+%D things, instead of typeset things. There is a separate
+%D manual for this module.
%D Message number~1 deals with overruling the \type {\Degrees}
%D macro defined in the core modules. Let's say that this is
@@ -89,8 +89,8 @@
%D
%D We have to use the command \type {\unitmeaning} instead
%D of \type {\meaning}, simply because the latter is a \TEX\
-%D primitive we don't want to loose. We use the label text
-%D mechanism for translations.
+%D primitive we don't want to loose. We use the label text
+%D mechanism for translations.
%D \macros
%D {dimension}
@@ -131,8 +131,8 @@
\def\mathematicstypeface{\rm}
\def\dimensiontypeface {\tf}
-\def\dimensionhalfspace {\,}
-\def\dimensionbackspace {\!}
+\def\dimensionhalfspace {\ifmmode\,\else\hskip+.1em\relax\fi}
+\def\dimensionbackspace {\ifmmode\!\else\hskip-.1em\relax\fi}
%D \macros
%D {smashdimensionpower}
@@ -154,18 +154,60 @@
\let\thedimensionpower = \empty
%D \macros
-%D {spaceddimensions}
-%D
+%D {spaceddimensions,textdimensions}
+%D
%D The actual definition of \type {\dimension} overruled the
-%D one in the core modules. The boolean can be used to
-%D force spacing between units. Vergelijk {\Newton \Meter}
-%D eens met {\spaceddimensionstrue \Newton \Meter}. The
-%D rather ugly test prevents problems with nested dimensions.
+%D one in the core modules. The boolean can be used to
+%D force spacing between units. Vergelijk {\Newton \Meter}
+%D eens met {\spaceddimensionstrue \Newton \Meter}. The
+%D rather ugly test prevents problems with nested dimensions.
\newif\ifspaceddimensions \spaceddimensionsfalse % user switch
+\newif\iftextdimensions \textdimensionsfalse % user switch
+
+%D You can see the consequence of forcing text dimensions
+%D when you compare the following code:
+%D
+%D \starttyping
+%D {\rm test \Square \Meter \Per \Second\ ziezo\Degrees} \par
+%D {\ss test \Square \Meter \Per \Second\ ziezo} \par
+%D {\tt test \Square \Meter \Per \Second\ ziezo}
+%D
+%D \textdimensionstrue
+%D
+%D {\rm test \Square \Meter \Per \Second\ ziezo} \par
+%D {\ss test \Square \Meter \Per \Second\ ziezo} \par
+%D {\tt test \Square \Meter \Per \Second\ ziezo}
+%D \stoptyping
+
\newif\ifnesteddimension \nesteddimensionfalse % local switch
-\unexpanded\def\dimension#1%
+\def\dodimensionpower#1%
+ {\iftextdimensions\expandafter\high\else\expandafter^\fi{#1}}
+
+\def\ustartmathmode {\iftextdimensions\else\startmathmode \fi}
+\def\ustopmathmode {\iftextdimensions\else\stopmathmode \fi}
+\def\umathematicstypeface{\iftextdimensions\else\mathematicstypeface\fi}
+
+%D In forced text mode, we ignore spacing in monospaced fonts.
+
+\def\udimensionhalfspace {\dodimensionspace\dimensionhalfspace}
+\def\udimensionbackspace {\dodimensionspace\dimensionbackspace}
+
+\def\dodimensionspace
+ {\iftextdimensions
+ \begingroup
+ \setbox0=\hbox{i}%
+ \setbox2=\hbox{m}%
+ \ifdim\wd0=\wd2
+ \endgroup
+ \@EAEAEA\gobbleoneargument
+ \else
+ \endgroup
+ \fi
+ \fi}
+
+\unexpanded\def\dimension#1%
{\begingroup
\global\let\savedthedimensionprefix\thedimensionprefix
\global\let\savedthedimensionpower\thedimensionpower
@@ -173,11 +215,11 @@
\let\dimensionprefix\dimension
\let\dimensionmidfix\dimension
\let\dimensionsuffix\dimension
- \let\dimensionpower\dimension
+ \let\dimensionpower \dimension
\global\nesteddimensionfalse
- \setbox0=\hbox{\startmathmode#1\stopmathmode}%
+ \setbox0=\hbox{\ustartmathmode#1\ustopmathmode}%
\global\let\thedimensionprefix\savedthedimensionprefix
- \global\let\thedimensionpower\savedthedimensionpower
+ \global\let\thedimensionpower \savedthedimensionpower
\endgroup
\ifnesteddimension#1\else\dodimension{#1}\fi}
@@ -185,29 +227,34 @@
{\dontbreakdimension
\ifdim\scratchdimen=\zeropoint\relax
\ifmmode
- \dimensionhalfspace
- \dimensionhalfspace
+ \udimensionhalfspace
+ \udimensionhalfspace
\fi
- \startmathmode\dimensiontypeface
+ \ustartmathmode\dimensiontypeface
\else
- \startmathmode\dimensiontypeface
+ \ustartmathmode\dimensiontypeface
\ifdim\scratchdimen=\dimensionsignal\relax
- \ifspaceddimensions\dimensionhalfspace\fi
+ \ifspaceddimensions\udimensionhalfspace\fi
\fi
\fi
- \mathematicstypeface\thedimensionprefix#1%
+ \umathematicstypeface\thedimensionprefix#1%
\ifx\thedimensionpower\empty
\else\ifsmashdimensionpower
- \setbox\scratchbox=\hbox{$\scriptstyle\thedimensionpower$}%
+ \setbox\scratchbox=\hbox
+ {\iftextdimensions
+ \tx\thedimensionpower
+ \else
+ $\scriptstyle\thedimensionpower$%
+ \fi}%
\ht\scratchbox=\zeropoint
- ^{\box\scratchbox}%
+ \dodimensionpower{\box\scratchbox}%
\else
- ^{\thedimensionpower}%
+ \dodimensionpower{\thedimensionpower}%
\fi\fi
- \stopmathmode
+ \ustopmathmode
% otherwise nobreak before space in 2 \Milli \Meter\ blabla
- \doifnotmode{atpragma}{\nobreak}% this was always \nobreak
- % only test this at pragma
+ \doifnotmode{atpragma}{\nobreak}% this was always \nobreak
+ % only test this at pragma
\ifx\thedimensionpower\empty
\hskip\dimensionsignal
\else
@@ -236,35 +283,36 @@
\def\dimensionaddfix#1%
{\unskip
- \mathematics{\mathematicstypeface#1}%
+ %\mathematics{\umathematicstypeface#1}%
+ \ustartmathmode\umathematicstypeface#1\ustopmathmode
\nobreak
\hskip\dimensionaddfixsignal}
\def\dimensionnopfix#1%
{\dontbreakdimension
\ifdim\scratchdimen=\dimensionpowersignal\relax
- \startmathmode
+ \ustartmathmode
\else
- \startmathmode
- \dimensionhalfspace
+ \ustartmathmode
+ \udimensionhalfspace
\nobreak
\fi
- \mathematicstypeface#1%
- \stopmathmode
+ \umathematicstypeface#1%
+ \ustopmathmode
\nobreak
\hskip\dimensionsignal}
\def\dimensionmidfix#1%
{\dontbreakdimension
\ifdim\scratchdimen=\dimensionpowersignal\relax
- \startmathmode
- \dimensionbackspace
+ \ustartmathmode
+ \udimensionbackspace
\nobreak
\else
- \startmathmode
+ \ustartmathmode
\fi
- \mathematicstypeface#1%
- \stopmathmode
+ \umathematicstypeface#1%
+ \ustopmathmode
\nobreak
\hskip\dimensionmidfixsignal}
@@ -286,15 +334,15 @@
%D
%D We can fake the degrees symbol with:
-\def\Degrees{\dimensionaddfix{^\circ}}
+\def\Degrees{\dimensionaddfix{\mathematics{^\circ}}}
%D \macro
%D {Unit, NoUnit}
%D
%D When a dimension has no leading number, we can use \type
-%D {\Unit}, and when no unit is appended, \type {\NoUnit} is
-%D to be used, just to prevent the prefix migrating to the
-%D next occasion.
+%D {\Unit}, and when no unit is appended, \type {\NoUnit} is
+%D to be used, just to prevent the prefix migrating to the
+%D next occasion.
\def\Unit {\hskip\dimensionsignal}
\def\NoUnit {\dimension{}}
@@ -306,7 +354,7 @@
\def\Femto {\dimensionprefix{f}}
\def\Pico {\dimensionprefix{p}}
\def\Nano {\dimensionprefix{n}}
-\def\Micro {\dimensionprefix{\mu}}
+\def\Micro {\dimensionprefix{\iftextunits u\else\mu\fi}}
\def\Milli {\dimensionprefix{m}}
\def\Centi {\dimensionprefix{c}}
\def\Deci {\dimensionprefix{d}}
@@ -314,13 +362,13 @@
\def\Kilo {\dimensionprefix{k}}
\def\Mega {\dimensionprefix{M}}
\def\Giga {\dimensionprefix{G}}
-\def\Terra {\dimensionprefix{T}}
-\def\Peta {\dimensionprefix{P}}
-\def\Exa {\dimensionprefix{E}}
-
+\def\Terra {\dimensionprefix{T}}
+\def\Peta {\dimensionprefix{P}}
+\def\Exa {\dimensionprefix{E}}
+
%D and operators:
-\def\Times {\dimensionnopfix{\cdot}}
+\def\Times {\dimensionnopfix{\iftextunits.\else\cdot\fi}}
\def\Solidus {\dimensionmidfix{/}}
\def\Per {\dimensionmidfix{/}}
\def\OutOf {\dimensionnopfix{:}}
@@ -350,7 +398,11 @@
\getvalue{\v!eenheid} [hMeter] {\Hecto \Meter} {hectometer}
\getvalue{\v!eenheid} [kMeter] {\Kilo \Meter} {kilometer}
-\getvalue{\v!eenheid} [Liter] {L} {liter}
+%D After some discussion on the \CONTEXT\ mailing list in
+%D february 2002 it was decided to go from L to l for liters
+%D (Karel Wesselings alternative: \mathematics{\ell}).
+
+\getvalue{\v!eenheid} [Liter] {l} {liter}
\getvalue{\v!eenheid} [mLiter] {\Milli \Liter} {milliliter}
\getvalue{\v!eenheid} [cLiter] {\Centi \Liter} {centiliter}
\getvalue{\v!eenheid} [dLiter] {\Deci \Liter} {deciliter}
@@ -432,8 +484,8 @@
%D Then we define some angles.
-\getvalue{\v!eenheid} [Rad] {rad} {\labeltext{u:rad}}
-\getvalue{\v!eenheid} [Deg] {{^\circ}} {\labeltext{u:deg}}
+\getvalue{\v!eenheid} [Rad] {rad} {\labeltext{u:rad}}
+\getvalue{\v!eenheid} [Deg] {{\mathematics{^\circ}}} {\labeltext{u:deg}}
\setuplabeltext
[\s!nl]
@@ -538,7 +590,7 @@
\getvalue{\v!eenheid} [Celsius] {C} {Celsius}
\getvalue{\v!eenheid} [Kelvin] {K} {Kelvin}
-\getvalue{\v!eenheid} [Fahrenheit] {F} {Fahrenheit}
+\getvalue{\v!eenheid} [Fahrenheit] {F} {Fahrenheit}
%D Some chemic related units are:
@@ -618,7 +670,7 @@
\getvalue{\v!eenheid} [Sievert] {Sv} {Sievert}
\getvalue{\v!eenheid} [mSievert] {\Milli \Sievert} {milli Sievert}
-%D Light:
+%D Light:
\getvalue{\v!eenheid} [Candela] {cd} {Candela}
@@ -645,15 +697,15 @@
\def\xPercent {\dimensionaddfix{\percent }}
\def\xPromille{\dimensionaddfix{\promille}}
-\getvalue{\v!eenheid} [Percent] {\xPercent } {percent}
-\getvalue{\v!eenheid} [Permille] {\xPromille} {promille}
-\getvalue{\v!eenheid} [Promille] {\xPromille} {promille}
+\getvalue{\v!eenheid} [Percent] {\xPercent } {percent}
+\getvalue{\v!eenheid} [Permille] {\xPromille} {promille}
+\getvalue{\v!eenheid} [Promille] {\xPromille} {promille}
-%D Some more, thanks to Tobias:
+%D Some more, thanks to Tobias:
-\getvalue{\v!eenheid} [Gray] {Gr} {Gray}
-\getvalue{\v!eenheid} [Weber] {Wb} {Weber}
-\getvalue{\v!eenheid} [Henry] {H} {Henry}
+\getvalue{\v!eenheid} [Gray] {Gr} {Gray}
+\getvalue{\v!eenheid} [Weber] {Wb} {Weber}
+\getvalue{\v!eenheid} [Henry] {H} {Henry}
\getvalue{\v!eenheid} [Sterant] {sr} {Sterant}
\getvalue{\v!eenheid} [Angstrom] {\AA} {\AA ngstr\"om}
\getvalue{\v!eenheid} [Gauss] {G} {Gauss}
diff --git a/tex/context/base/meta-fig.tex b/tex/context/base/meta-fig.tex
index efbd48f0e..8a0e41ce6 100644
--- a/tex/context/base/meta-fig.tex
+++ b/tex/context/base/meta-fig.tex
@@ -68,7 +68,7 @@
\c!snijwit=\!!zeropoint,\c!bodemwit=\!!zeropoint,
\c!hoofd=\!!zeropoint,\c!voet=\!!zeropoint]%
\stoplocal % which saves us the trouble of push/pop
- \startmakeup[\v!standaard][\c!dubbelzijdig=\v!nee,\c!pagina=]%
+ \startmakeup[\v!standaard][\c!tekststatus=\v!leeg,\c!dubbelzijdig=\v!nee,\c!pagina=]%
\centerbox{\box\scratchbox}%
\stopmakeup
\egroup}
diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex
index f7c337645..dd90344c2 100644
--- a/tex/context/base/meta-ini.tex
+++ b/tex/context/base/meta-ini.tex
@@ -749,6 +749,10 @@
\def\doifelseMPgraphic#1{\doifdefinedelse{\@@MPG#1}}
+%D New:
+
+% \appendtoks \closeMPgraphicfiles \to \everystoptext
+
\protect \endinput
% also:
diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex
index b7f1ee84a..791438739 100644
--- a/tex/context/base/mult-con.tex
+++ b/tex/context/base/mult-con.tex
@@ -390,7 +390,10 @@
voorgrondkleur: voorgrondkleur foregroundcolor
foregroundcolor foregroundcolor
coloreprimopiano foregroundcolor
- achtergrondoffset: achtergrondoffset backgroundoffset
+ voorgrondletter: voorgrondletter foregroundstyle
+ foregroundstyle foregroundstyle
+ foregroundstyle foregroundstyle
+ achtergrondoffset: achtergrondoffset backgroundoffset
hintergrundoffset offsetpozadi
offsetsfondo offsetfundal
achtergrondraster: achtergrondraster backgroundscreen
@@ -2261,7 +2264,7 @@
correntelocale localcurent
in: in -
ein -
- in in
+ - -
instellingen: instellingen setups
impostazioni einstellungen
nastaveni setari
diff --git a/tex/context/base/mult-sys.tex b/tex/context/base/mult-sys.tex
index fdd5e9155..02600c603 100644
--- a/tex/context/base/mult-sys.tex
+++ b/tex/context/base/mult-sys.tex
@@ -406,6 +406,7 @@
\definesystemvariable {kt} % KonTakten
\definesystemvariable {kw} % KontaktWaarde
\definesystemvariable {la} % LAnguage
+\definesystemvariable {lb} % LaBels
\definesystemvariable {ld} % LegenDa
\definesystemvariable {lg} % taal (LanGuage)
\definesystemvariable {li} % LIjst
diff --git a/tex/context/base/page-flt.tex b/tex/context/base/page-flt.tex
index a768f972c..43d11babe 100644
--- a/tex/context/base/page-flt.tex
+++ b/tex/context/base/page-flt.tex
@@ -263,6 +263,8 @@
\docompletefloat{#1}{#2}{#3}{#4}{#5}{#6}{\box\nextbox}%
\fi}
+% pas op, maxbreedte niet instellen als plaats=links/rechts
+
\def\setlocalfloatdimensions#1#2% experimental ! ! ! !
{\doifvaluesomething{\??fl#1\c!maxbreedte}
{\scratchdimen=\getvalue{\??fl#1\c!maxbreedte}\relax
@@ -1248,8 +1250,7 @@
\par
\doifcommonelse
{#1}
- {\v!links,\v!rechts,\v!inlinker,\v!inrechter,%
- \v!inmarge}
+ {\v!links,\v!rechts,\v!inlinker,\v!inrechter,\v!inmarge}
{\global\parfloattrue}
{\global\parfloatfalse}%
\ifbinnenkolommen
diff --git a/tex/context/base/page-imp.tex b/tex/context/base/page-imp.tex
index fb4684f4c..6cc0c2bd8 100644
--- a/tex/context/base/page-imp.tex
+++ b/tex/context/base/page-imp.tex
@@ -62,8 +62,8 @@
\else
\donetrue
\fi
- \else % testen, aangepast
- \expandbothargsafter\doifinsetelse{\the\shippedoutpages}{\pagestoshipout}
+ \else % testen, aangepast / expanded nodig ?
+ \expanded{\doifinsetelse{\the\shippedoutpages}{\pagestoshipout}}%
\donetrue\donefalse
\fi
\ifdone
@@ -231,7 +231,7 @@
\multiply\scratchcounter \arrangedpageT
\advance\scratchcounter \realpageno
\advance\scratchcounter -1
- \dorecurse\scratchcounter{\noheaderandfooterlines\ejectdummypage}
+ \dorecurse\scratchcounter{\noheaderandfooterlines\ejectdummypage}%
\fi}
\def\handlearrangedpageXY#1#2#3#4#5%
@@ -781,7 +781,7 @@
\c!kader=\@@ipkader]%
\fi}}%
\stopbaselinecorrection
- \ifnum\combinedpagescounter<\@@ipn
+ \ifnum\combinedpagescounter<\@@ipn\relax
\@@iptussen
\else
\exitloop
diff --git a/tex/context/base/page-ini.tex b/tex/context/base/page-ini.tex
index 528102b18..a18882f4d 100644
--- a/tex/context/base/page-ini.tex
+++ b/tex/context/base/page-ini.tex
@@ -629,6 +629,8 @@
\def\nextcolumn {\OTRcommand\nextcolumn}
+\def\flushsavedfloats {\OTRcommand\flushsavedfloats}
+
% beter een \installotr#1 met #1 = macro en auto test
\newif\iftraceotr
@@ -869,7 +871,7 @@
\dosupereject
\fi
\inpagebodytrue % needed for enabling \blanko !
- \dosetbothinserts % to be reconsidered !!!!!!!!!!!!!!
+ \flushsavedfloats % was \dosetbothinserts; only otr one !
\setvsize % this is needed for interacting components, like floats and multicolumns
\adaptfuzzypagegoal} % watch this hack!
@@ -877,7 +879,8 @@
{\beforefinaloutput
\the\everybeforeshipout
\ifspecialbasedsettings
- \myshipout{\hbox{\hbox to \zeropoint{\the\pageboundsettings}\hbox{\dopagebody#1#2\setpagecounters}}}%
+ \myshipout{\hbox{\hbox to \zeropoint{\the\pageboundsettings}%
+ \hbox{\dopagebody#1#2\setpagecounters}}}%
\else
\the\pageboundsettings
\myshipout{\hbox{\dopagebody#1#2\setpagecounters}}%
@@ -904,17 +907,17 @@
{\checkpageversion
\ifverwerken
\ifgeselecteerd
- \dofinaloutput#1#2%
+ \@EAEAEA\dofinaloutput
\else
- \donofinaloutput#1#2%
+ \@EAEAEA\donofinaloutput
\fi
\else
\ifgeselecteerd
- \donofinaloutput#1#2%
+ \@EAEAEA\donofinaloutput
\else
- \dofinaloutput#1#2%
+ \@EAEAEA\dofinaloutput
\fi
- \fi
+ \fi#1#2%
\resetselectiepagina
\verhoogpaginanummer
\checkpagedimensions
@@ -1172,9 +1175,11 @@
% \getbackgroundbox
% \getlogobox
\bgroup % else footnotes get inconsistent font/baseline
- \doconvertfont{\@@lyletter}{}% layoutparameter ?
- \offinterlineskip
- \gettextboxes
+ % \doconvertfont\@@lyletter\empty
+ \dostartattributes\??ly\c!letter\c!kleur\empty
+ \offinterlineskip
+ \gettextboxes
+ \dostopattributes
\egroup
\fi
\getmainbox#1#2}% including footnotes
@@ -1317,9 +1322,11 @@
\fi},
\v!leeg=>{\ejectinsert
\ejectpage
- \doifnotvalue{\??tk\v!hoofd\v!tekst\c!status}{\v!stop}
+% \doifnotvalue{\??tk\v!hoofd\v!tekst\c!status}{\v!stop}
+ \doifnotvalue{\??tk\v!hoofd\c!status}{\v!stop}
{\setupheader[\c!status=\v!leeg]}%
- \doifnotvalue{\??tk\v!voet\v!tekst\c!status}{\v!stop}
+% \doifnotvalue{\??tk\v!voet\v!tekst\c!status}{\v!stop}
+ \doifnotvalue{\??tk\v!voet\c!status}{\v!stop}
{\setupfooter[\c!status=\v!leeg]}%
\ejectdummypage},
\v!links=>{\ejectinsert
diff --git a/tex/context/base/page-lay.tex b/tex/context/base/page-lay.tex
index e0b19cc8f..bd3a7d2f9 100644
--- a/tex/context/base/page-lay.tex
+++ b/tex/context/base/page-lay.tex
@@ -763,12 +763,9 @@
\newif\ifdubbelzijdig \dubbelzijdigfalse
\newif\ifenkelzijdig \enkelzijdigtrue
-%\def\doifsometextlineelse#1#2#3% ! omgekeerd !
-% {\doifinsetelse{\getvalue{\??tk#1\v!tekst\c!status}}{\v!geen,\v!hoog}
-% {#3}{#2}}
-
\def\doifsometextlineelse#1%
- {\edef\!!stringa{\csname\??tk#1\v!tekst\c!status\endcsname}%
+% {\edef\!!stringa{\csname\??tk#1\v!tekst\c!status\endcsname}%
+ {\edef\!!stringa{\csname\??tk#1\c!status\endcsname}%
\ifx\!!stringa\v!geen
\@EA\secondoftwoarguments
\else\ifx\!!stringa\v!hoog
@@ -975,6 +972,7 @@
\c!rugoffset=\!!zeropoint,
\c!tekstbreedte=, % dangerous option
\c!letter=,
+ \c!kleur=,
\c!markering=\v!uit,
\c!plaats=, % \v!enkelzijdig, but empty is signal
\c!schaal=1,
diff --git a/tex/context/base/page-lyr.tex b/tex/context/base/page-lyr.tex
index a9bc11ac7..2796ba228 100644
--- a/tex/context/base/page-lyr.tex
+++ b/tex/context/base/page-lyr.tex
@@ -110,6 +110,8 @@
%D \setlayer [identifier] [optional parameters] {data}
%D \stoptypen
+\def\currentlayerdata{0}
+
\def\setlayer%
{\dodoubleargument\dosetlayer}
@@ -193,6 +195,98 @@
\newdimen\@@layerxsiz \newdimen\@@layerxoff \newdimen\@@layerxpos
\newdimen\@@layerysiz \newdimen\@@layeryoff \newdimen\@@layerypos
+\let\lastlayerxpos\!!zeropoint
+\let\lastlayerypos\!!zeropoint
+
+% \def\dododosetlayer[#1][#2]% will be sped up
+% {\getparameters[\??ll#1][#2]%
+% \doifvalue{\??ll#1\c!positie}\v!overlay % slow
+% {\getparameters[\??ll#1]
+% [\c!breedte=\!!zeropoint,
+% \c!hoogte=\!!zeropoint,
+% \c!positie=\v!ja]}%
+% \@@layerxsiz\getvalue{\??ll#1\c!breedte}%
+% \@@layerysiz\getvalue{\??ll#1\c!hoogte }%
+% \@@layerxpos\getvalue{\??ll#1\c!x}%
+% \@@layerypos\getvalue{\??ll#1\c!y}%
+% \doifelsevalue{\??ll#1\c!hoffset}\v!max
+% {\@@layerxoff\@@layerxsiz}
+% {\@@layerxoff\getvalue{\??ll#1\c!hoffset}}%
+% \doifelsevalue{\??ll#1\c!voffset}\v!max
+% {\@@layeryoff\@@layerysiz}
+% {\@@layeryoff\getvalue{\??ll#1\c!voffset}}%
+% \advance\@@layerxoff \getvalue{\??ll#1\c!offset}%
+% \advance\@@layeryoff \getvalue{\??ll#1\c!offset}%
+% \@@layerxpos\getvalue{\??ll#1\c!sx}\@@layerxpos
+% \@@layerypos\getvalue{\??ll#1\c!sy}\@@layerypos
+% \@@layerxoff\getvalue{\??ll#1\c!sx}\@@layerxoff
+% \@@layeryoff\getvalue{\??ll#1\c!sy}\@@layeryoff
+% \doifelsevalue{\??ll#1\c!positie}{\v!ja} % combine ^
+% {\edef\layerpage{\MPp{lyr:\currentlayerdata}}%
+% \scratchdimen\MPx{lyr:#1:\layerpage}%
+% \scratchdimen-\scratchdimen
+% \advance\scratchdimen\MPx{lyr:\currentlayerdata}%
+% \xdef\lastlayerxpos{\the\scratchdimen}%
+% \@@layerxpos\scratchdimen
+% \scratchdimen\MPy{lyr:#1:\layerpage}%
+% \advance\scratchdimen-\MPy{lyr:\currentlayerdata}%
+% \@@layerypos\scratchdimen
+% \xdef\lastlayerypos{\the\scratchdimen}%
+% \setxvalue{\??ll#1\layerpage\c!positie}{\v!ja}%
+% \setxvalue{\??ll#1\c!status}{\v!start}% needed ?
+% \setbox\layerbox\vbox to \@@layerysiz
+% {\hbox to \@@layerxsiz{\xypos{lyr:\currentlayerdata}\hss}\vss}}
+% {\setbox\layerbox=\emptybox
+% \global\let\lastlayerxpos\!!zeropoint
+% \global\let\lastlayerypos\!!zeropoint
+% \doifvalue{\??ll#1\c!hoek}{\v!onder}
+% {\ifdim\@@layerysiz>\zeropoint
+% \advance\@@layerypos-\@@layerysiz
+% \@@layerypos-\@@layerypos
+% \@@layeryoff-\@@layeryoff
+% \fi}%
+% \edef\layerpage{\getvalue{\??ll#1\c!pagina}}}%
+% \doifsomething{\layerpage}
+% {\edef\layerpage{:\layerpage}%
+% \doifundefined{\@@layerbox#1\layerpage}
+% {\global\expandafter\newbox\csname\@@layerbox#1\layerpage\endcsname}}%
+% \global\setbox\csname\@@layerbox#1\layerpage\endcsname=\vbox
+% {\offinterlineskip
+% \ifvoid\csname\@@layerbox#1\layerpage\endcsname\else
+% \ht\csname\@@layerbox#1\layerpage\endcsname\zeropoint
+% \dp\csname\@@layerbox#1\layerpage\endcsname\zeropoint
+% \wd\csname\@@layerbox#1\layerpage\endcsname\zeropoint
+% \doifnotvalue{\??ll#1\c!richting}{\v!omgekeerd}
+% {\box\csname\@@layerbox#1\layerpage\endcsname}%
+% \fi
+% \setbox\nextbox=\hbox
+% {\alignedbox[\getvalue{\??ll#1\c!plaats}]\vbox{\box\nextbox}}%
+% \smashbox\nextbox
+% \vskip\@@layerypos
+% \vskip\@@layeryoff
+% \hskip\@@layerxpos
+% \hskip\@@layerxoff
+% \box\nextbox
+% \ifvoid\csname\@@layerbox#1\layerpage\endcsname
+% % already flushed
+% \else
+% % the reverse case % check !
+% \vskip-\@@layerypos
+% \vskip-\@@layeryoff
+% \box\csname\@@layerbox#1\layerpage\endcsname
+% \fi}%
+% \ifvoid\layerbox\else\box\layerbox\fi}
+
+\def\setlastlayerpos#1%
+ {\edef\layerpage{\MPp{lyr:\currentlayerdata}}%
+ \scratchdimen\MPx{lyr:#1:\layerpage}%
+ \scratchdimen-\scratchdimen
+ \advance\scratchdimen\MPx{lyr:\currentlayerdata}%
+ \xdef\lastlayerxpos{\the\scratchdimen}%
+ \scratchdimen\MPy{lyr:#1:\layerpage}%
+ \advance\scratchdimen-\MPy{lyr:\currentlayerdata}%
+ \xdef\lastlayerypos{\the\scratchdimen}}
+
\def\dododosetlayer[#1][#2]% will be sped up
{\getparameters[\??ll#1][#2]%
\doifvalue{\??ll#1\c!positie}\v!overlay % slow
@@ -204,8 +298,12 @@
\@@layerysiz\getvalue{\??ll#1\c!hoogte }%
\@@layerxpos\getvalue{\??ll#1\c!x}%
\@@layerypos\getvalue{\??ll#1\c!y}%
- \@@layerxoff\getvalue{\??ll#1\c!hoffset}%
- \@@layeryoff\getvalue{\??ll#1\c!voffset}%
+ \doifelsevalue{\??ll#1\c!hoffset}\v!max
+ {\@@layerxoff\@@layerxsiz}
+ {\@@layerxoff\getvalue{\??ll#1\c!hoffset}}%
+ \doifelsevalue{\??ll#1\c!voffset}\v!max
+ {\@@layeryoff\@@layerysiz}
+ {\@@layeryoff\getvalue{\??ll#1\c!voffset}}%
\advance\@@layerxoff \getvalue{\??ll#1\c!offset}%
\advance\@@layeryoff \getvalue{\??ll#1\c!offset}%
\@@layerxpos\getvalue{\??ll#1\c!sx}\@@layerxpos
@@ -213,19 +311,26 @@
\@@layerxoff\getvalue{\??ll#1\c!sx}\@@layerxoff
\@@layeryoff\getvalue{\??ll#1\c!sy}\@@layeryoff
\doifelsevalue{\??ll#1\c!positie}{\v!ja} % combine ^
- {\edef\layerpage{\MPp{lyr:\currentlayerdata}}%
- \scratchdimen\MPx{lyr:#1:\layerpage}%
- \scratchdimen-\scratchdimen
- \advance\scratchdimen\MPx{lyr:\currentlayerdata}%
- \@@layerxpos\scratchdimen
- \scratchdimen\MPy{lyr:#1:\layerpage}%
- \advance\scratchdimen-\MPy{lyr:\currentlayerdata}%
- \@@layerypos\scratchdimen
+ {%\edef\layerpage{\MPp{lyr:\currentlayerdata}}%
+ %\scratchdimen\MPx{lyr:#1:\layerpage}%
+ %\scratchdimen-\scratchdimen
+ %\advance\scratchdimen\MPx{lyr:\currentlayerdata}%
+ %\xdef\lastlayerxpos{\the\scratchdimen}%
+ %\@@layerxpos\scratchdimen
+ %\scratchdimen\MPy{lyr:#1:\layerpage}%
+ %\advance\scratchdimen-\MPy{lyr:\currentlayerdata}%
+ %\@@layerypos\scratchdimen
+ %\xdef\lastlayerypos{\the\scratchdimen}%
+\setlastlayerpos{#1}%
+\@@layerxpos\lastlayerxpos
+\@@layerypos\lastlayerypos
\setxvalue{\??ll#1\layerpage\c!positie}{\v!ja}%
\setxvalue{\??ll#1\c!status}{\v!start}% needed ?
\setbox\layerbox\vbox to \@@layerysiz
{\hbox to \@@layerxsiz{\xypos{lyr:\currentlayerdata}\hss}\vss}}
{\setbox\layerbox=\emptybox
+ \global\let\lastlayerxpos\!!zeropoint
+ \global\let\lastlayerypos\!!zeropoint
\doifvalue{\??ll#1\c!hoek}{\v!onder}
{\ifdim\@@layerysiz>\zeropoint
\advance\@@layerypos-\@@layerysiz
diff --git a/tex/context/base/page-mak.tex b/tex/context/base/page-mak.tex
index 7578020ef..b10562679 100644
--- a/tex/context/base/page-mak.tex
+++ b/tex/context/base/page-mak.tex
@@ -58,6 +58,7 @@
\c!voetstatus=\v!stop,
\c!paginastatus=\v!stop,
\c!kleur=,
+ \c!uitlijnen=,
#2]%
\setvalue{\e!start#1\e!opmaak}{\startmakeup[#1]}%
\setvalue{\e!stop #1\e!opmaak}{\stopmakeup}}
@@ -87,8 +88,8 @@
\def\dostartmakeup[#1][#2]%
{\bgroup
- \the\everymakeup
\edef\currentmakeup{#1}%
+ \the\everymakeup
\iffirstargument
\setupmakeup[\currentmakeup][#2]%
\let\stopmakeup\dodostopmakeup
@@ -104,7 +105,7 @@
{\pagina
\setupheader[\c!status=\v!leeg]%
\setupfooter[\c!status=\v!leeg]%
- \vbox to \teksthoogte\bgroup}
+ \vbox to \teksthoogte\bgroup\hsize\tekstbreedte}
\def\donostopmakeup%
{\egroup
@@ -126,7 +127,9 @@
\global\setbox\makeupbox=\vbox to \makeupparameter\c!hoogte
\bgroup
\forgetall
- \hsize=\makeupparameter\c!breedte
+ \hsize\makeupparameter\c!breedte
+ \doifsomething{\makeupparameter\c!uitlijnen}
+ {\expanded{\steluitlijnenin[\makeupparameter\c!uitlijnen]}}%
\makeupparameter\c!boven}
\def\dodostopmakeup%
@@ -134,7 +137,7 @@
\makeupparameter\c!onder
\egroup
\flushmarks % new, here, else empty pages
- \stopregistercolor
+\stopregistercolor
\doflushmakeup
\egroup
\calculatehsizes
diff --git a/tex/context/base/page-mar.tex b/tex/context/base/page-mar.tex
index 6dbd27198..d1f7bf7ab 100644
--- a/tex/context/base/page-mar.tex
+++ b/tex/context/base/page-mar.tex
@@ -137,15 +137,24 @@
\ht0=\!!zeropoint
\dp0=\!!zeropoint
\gdef\margestrutheight{\the\ht\strutbox}%
- %\vadjust{\box0}} % fails in high math lines, let it be
+ %\graphicvadjust{\box0}} % fails in high math lines, let it be
%\hbox{\lower\dp\strutbox\box0}} % alas, wrong lapping, therefore useless
\dopositionmarginbox0}
%D This approach permits us to implement a better mechanism
-%D later.
+%D later. We need the \type {\graphicvadjust} in order to
+%D handle:
+%D
+%D \starttypen
+%D \inlinker{test} {\red \dorecurse{40}{test }\par}
+%D {\red \inlinker{test} \dorecurse{40}{test }\par}
+%D \stoptypen
+%D
+%D The outer margin color is either black or color set as
+%D main text color.
\ifx\dopositionmarginbox\undefined
- \def\dopositionmarginbox#1{\vadjust{\box#1}}
+ \def\dopositionmarginbox#1{\graphicvadjust{\box#1}}
\fi
\def\doinlinker#1%
@@ -375,7 +384,7 @@
\def\oplinker#1%
{\strut
- \vadjust
+ \graphicvadjust
{\mindermeldingen
\setbox0=\vtop{\forgetall\strut#1}%
\getboxheight\dimen0\of\box0
diff --git a/tex/context/base/page-mul.tex b/tex/context/base/page-mul.tex
index b07f0358e..6ab5bebfd 100644
--- a/tex/context/base/page-mul.tex
+++ b/tex/context/base/page-mul.tex
@@ -36,7 +36,8 @@
\let\OTRMULdotopinsertions \relax
\let\OTRMULdobotinsertions \relax
\let\OTRMULdosetbothinserts \relax
-
+\let\OTRMULflushsavedfloats \relax
+
\newtoks \OTRMULoutput
% check \count<insert> multiplications
diff --git a/tex/context/base/page-num.tex b/tex/context/base/page-num.tex
index b14ffab1a..815029aef 100644
--- a/tex/context/base/page-num.tex
+++ b/tex/context/base/page-num.tex
@@ -267,7 +267,7 @@
{\setuserpageno{\ruwenummer[\s!page]}%
\doifelse\@@snstatus\v!stop
{\global\subpageno\zerocount}
- {\global\subpageno\ruwenummer[\s!subpage]}}
+ {\global\subpageno\ruwenummer[\s!subpage]}\relax}
% Standaard is \count0 in Plain TeX de paginateller. Omwille
% van de afhandeling van lokaal nummeren, definieren we
@@ -320,7 +320,7 @@
\newcounter \nofpagesets
-\definetwopasslist{\s!page}
+\definetwopasslist\s!page
\def\dopagesetreference%
{\doglobal\increment\nofpagesets\relax
@@ -334,7 +334,7 @@
\def\getpagestatus% hierboven gebruiken
{\ifdubbelzijdig
- \gettwopassdata{\s!page}%
+ \gettwopassdata\s!page
\iftwopassdatafound \else
\let\twopassdata=\realpageno
\fi
diff --git a/tex/context/base/page-one.tex b/tex/context/base/page-one.tex
index 9bf96232b..9d0286b16 100644
--- a/tex/context/base/page-one.tex
+++ b/tex/context/base/page-one.tex
@@ -335,6 +335,9 @@
\fi
\fi}
+\def\OTRONEflushsavedfloats
+ {\dosetbothinserts}
+
\def\OTRONEsomeherefloat[#1]% spacing between two successive must be better
{\baselinecorrection
\doplacefloatbox
diff --git a/tex/context/base/page-set.tex b/tex/context/base/page-set.tex
index 1b7bee5f8..7deece704 100644
--- a/tex/context/base/page-set.tex
+++ b/tex/context/base/page-set.tex
@@ -67,7 +67,7 @@
\columnspreadfalse
\fi
\ifcolumnspread
- \dorecurse{\nofcolumns}
+ \dorecurse\nofcolumns
{\let\!!stringa\recurselevel
\scratchcounter=\recurselevel \advance\scratchcounter\lofcolumns
\edef\!!stringb{\the\scratchcounter}%
@@ -91,7 +91,7 @@
\fi
\fi}}%
\else
- \dorecurse{\tofcolumns}
+ \dorecurse\tofcolumns
{\let\!!stringa\recurselevel
\dostepwiserecurse{0}{\columnmaxcells}{1}
{\ifcsname\@otr@:\!!stringa:\recurselevel\endcsname
@@ -100,7 +100,7 @@
\expandafter\newbox\csname\@otr@:\!!stringa:\recurselevel\endcsname
\fi}}%
\fi
- \dorecurse{\tofcolumns}
+ \dorecurse\tofcolumns
{\global\setbox\csname\@otr@:\recurselevel:\columnmaxcells\endcsname\copy\placeholderboxa}%
\global\columnfirstcell=0
\global\columnlastcell=\columnfirstcell
@@ -118,7 +118,7 @@
\columnspreadfalse
\fi
\ifcolumnspread
- \dorecurse{\nofcolumns}
+ \dorecurse\nofcolumns
{\let\!!stringa\recurselevel
\scratchcounter=\recurselevel \advance\scratchcounter\lofcolumns
\edef\!!stringb{\the\scratchcounter}%
@@ -142,7 +142,7 @@
\fi
\fi}}%
\else
- \dorecurse{\tofcolumns}
+ \dorecurse\tofcolumns
{\let\!!stringa\recurselevel
\dostepwiserecurse{0}{\columnmaxcells}{1}
{\expandafter\ifx\csname\@otr@:\!!stringa:\recurselevel\endcsname\relax
@@ -151,7 +151,7 @@
\global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\voidb@x
\fi}}%
\fi
- \dorecurse{\tofcolumns}
+ \dorecurse\tofcolumns
{\global\setbox\csname\@otr@:\recurselevel:\columnmaxcells\endcsname\copy\placeholderboxa}%
\global\columnfirstcell=0
\global\columnlastcell=\columnfirstcell
@@ -187,7 +187,7 @@
%\message{no cells a}%
\else
\doloop
- {\ifnum\columnfirstcell>\columnmaxcells
+ {\ifnum\columnfirstcell>\columnmaxcells\relax
\exitloop
\else
\OTRSETdoifcellelse{#1}\columnfirstcell
@@ -196,7 +196,7 @@
\fi}%
\global\columnlastcell=\columnfirstcell
\doloop
- {\ifnum\columnlastcell>\columnmaxcells
+ {\ifnum\columnlastcell>\columnmaxcells\relax
\exitloop
\else
\OTRSETdoifcellelse{#1}\columnlastcell
@@ -423,6 +423,8 @@
\immediatewriteutilitycommand
{\twopassentry{\s!colset}{\the\scratchcounter}{##1}}}%
\processcommacommand[\OTRSETbalancinglist]\docommando}
+
+\let\OTRSETflushsavedfloats\relax
\definesystemvariable {mc}
\definesystemvariable {mt}
@@ -480,7 +482,7 @@
\par
\egroup
\fi
- \page\relax
+ \page\relax % hack. \page should be page
\OTRSETsethsize}
\newtoks\OTRSETeverystartofcolumn
@@ -902,6 +904,7 @@
\OTRSETsetfreecells\mofcolumns\columnfirstcell
\ifsomefreecolumncells
\getnoflines{\ht\OTRSETsavedfootnotes}% \footins
+\relax
\ifnum\columnfreecells<\noflines
\global\somefreecolumncellsfalse
\else
@@ -940,11 +943,18 @@
\setbox#2=\vbox spread \columnslotspacing\lineheight
{\vss\box#2\vss}%
\fi
-%\dp#2=\zeropoint
+ %\dp#2=\zeropoint
\doifdefinedelse{\strippedcsname\OTRSETstoreincolumnslot#1}
{\getvalue{\strippedcsname\OTRSETstoreincolumnslot#1}{#2}}
{\copy#2}}
+\def\OTRSETdocheckiffloatfits % eigenlijk moet else float anders
+ {\ifnofloatpermitted
+ \global\roomforfloatfalse
+ \else
+ \global\roomforfloattrue
+ \fi}
+
%\def\OTRSETsavebox#1%
% {\setbox\floatbox=\box#1\dosavefloat}
@@ -988,10 +998,31 @@
\newif\ifcentergridcells \centergridcellstrue
+\newif\ifcentergridcellonly \centergridcellonlyfalse
+\newif\ifautocentergridcellonly \autocentergridcellonlytrue
+
\def\OTRSETcentergridcells%
{\ifcentergridcells
- \dorecurse{\nofcolumns}
+ \dorecurse{\nofcolumns}
{\currenthcell=\recurselevel
+\ifautocentergridcellonly
+ % we prevent centering when the next column is empty
+ % to be checked ! ! ! !
+ \advance\currenthcell 1
+ \centergridcellonlytrue
+ \ifnum\currenthcell>\nofcolumns
+ % ok already
+ \else
+ % only span if there is a next column with content
+ \dorecurse{\columnmaxcells}
+ {\ifdim\ht\OTRSETgridcell\currenthcell\currentvcell>\zeropoint
+ \centergridcellonlyfalse
+ \else\ifdim\dp\OTRSETgridcell\currenthcell\currentvcell>\zeropoint
+ \centergridcellonlyfalse
+ \fi\fi}%
+ \fi
+\fi
+ \currenthcell=\recurselevel
\dorecurse{\columnmaxcells}
{\currentvcell=\recurselevel\relax
\ifdim\ht\OTRSETgridcell\currenthcell\currentvcell>\zeropoint
@@ -1006,6 +1037,7 @@
\!!countb=\currenthcell
\!!countc=\currenthcell \advance\!!countc 1
\!!donebtrue
+\ifcentergridcellonly \!!countc=\maxdimen \fi
\dostepwiserecurse{\!!countc}{\nofcolumns}{1}
{\if!!doneb
\let\xrecurselevel\recurselevel
@@ -1307,6 +1339,7 @@
\OTRSEToutput
{\OTRSETnaturalflush
% \OTRSETgotonextpage
+\OTRSETdoflushfloats % zou eigenlijk in \flushsavedfloats moeten (gaat fout)
\OTRSETcheckfreelines
\OTRSETchecksidefloat}
@@ -1329,18 +1362,22 @@
\fi}
\def\OTRSEThandlepreposttext%
- {\getnoflines{\ht\precolumnbox}%
- \doOTRSETsetgridcells
- {\copy\placeholderboxe}
- 11\nofcolumns\noflines
- {\box\precolumnbox}%
- \getnoflines{\ht\postcolumnbox}%
- \advance\columnfreecells -\noflines
- \advance\columnfreecells 1
- \doOTRSETsetgridcells
- {\copy\placeholderboxe}
- 1\columnfreecells\nofcolumns\noflines
- {\box\postcolumnbox}}
+ {\ifdim\ht\precolumnbox>\zeropoint % new
+ \getnoflines{\ht\precolumnbox}%
+ \doOTRSETsetgridcells
+ {\copy\placeholderboxe}
+ 11\nofcolumns\noflines
+ {\box\precolumnbox}%
+ \fi
+ \ifdim\ht\postcolumnbox>\zeropoint % new, otherwise empty bottom line
+ \getnoflines{\ht\postcolumnbox}%
+ \advance\columnfreecells -\noflines
+ \advance\columnfreecells 1
+ \doOTRSETsetgridcells
+ {\copy\placeholderboxe}
+ 1\columnfreecells\nofcolumns\noflines
+ {\box\postcolumnbox}%
+ \fi}
\def\OTRSETchecksidefloat%
{} % {\sidefloatoutput}
@@ -1485,7 +1522,7 @@
\def\OTRSETsometopfloat {\def\floatmethod{TOPS}\OTRSETsomeslotfloat} % check
\def\OTRSETsomebottomfloat{\def\floatmethod{BOTS}\OTRSETsomeslotfloat} % check
-\def\OTRONEsomeslotfloat {\let\floatmethod\v!hier\OTRONEsomeelsefloat}
+% \def\OTRSETsomeslotfloat {\let\floatmethod\v!hier\OTRONEsomeelsefloat}
\def\OTRSETflushfloatbox% nog verder doorvoeren en meer info in marge
{\iftestfloatbox\ruledhbox\fi{\box\floatbox}}
@@ -1738,6 +1775,8 @@
\def\startcolumnsetspan%
{\dotripleempty\dostartcolumnsetspan}
+%%%%%%%%%%%%%%%% TODO
+
\def\dostartcolumnsetspan[#1][#2][#3]% [#3] gobbles space
{\bgroup
\!!countc\getvalue{\??kd cs:#1\c!n} % \framedtextparameter{cs:\c!n}%
@@ -1746,7 +1785,7 @@
\setcolumnsetspanhsize\mofcolumns\!!countc % a/b used
\hsize\columnsetspanhsize
\setupframedtexts[cs:#1][\c!breedte=\columnsetspanhsize,#2]
- \setbox\scratchbox\ruledhbox \bgroup
+ \setbox\scratchbox\hbox \bgroup
\dostartframedtext[cs:#1][\v!geen]
\vskip-\lineheight\par\strut\par}
diff --git a/tex/context/base/page-txt.tex b/tex/context/base/page-txt.tex
index cafc15ed4..383c2a389 100644
--- a/tex/context/base/page-txt.tex
+++ b/tex/context/base/page-txt.tex
@@ -67,11 +67,20 @@
\def\setuplayouttext%
{\dotripleempty\dosetuplayouttext}
+% \def\dosetuplayouttext[#1][#2][#3]%
+% {\ifthirdargument
+% \getparameters[\??tk#1#2][#3]%
+% \else
+% \getparameters[\??tk#1\v!tekst][#2]%
+% \fi
+% \calculatevsizes}
+
\def\dosetuplayouttext[#1][#2][#3]%
{\ifthirdargument
\getparameters[\??tk#1#2][#3]%
\else
- \getparameters[\??tk#1\v!tekst][#2]%
+ %\getparameters[\??tk#1\v!tekst][#2]%
+ \getparameters[\??tk#1][#2]%
\fi
\calculatevsizes}
@@ -182,12 +191,18 @@
%D The next macro will be cleaned up amd made less messy and
%D dependent.
+%\def\placetextlinestrut#1%
+% {\doifvalue{#1\v!tekst\c!strut}{\v!ja}{\setstrut\strut}}
+
+\def\placetextlinestrut#1%
+ {\doifvalue{#1\c!strut}{\v!ja}{\setstrut\strut}}
+
\def\dosingletexts#1#2#3#4#5#6%
{\bgroup
\convertargument#6\to\ascii
\doifsomething{\ascii}
{\doattributes{#1#2}#3#4%
- {\doifvalue{#1\v!tekst\c!strut}{\v!ja}{\setstrut\strut}% here!
+ {\placetextlinestrut{#1}% here !
%\doifdefinedelse{\??mk\ascii\c!koppeling} % brrr
\doifelsemarking\ascii
{\dolimitatetexts{#1#2#5}{\haalmarkering[\ascii][\v!eerste]}}
@@ -231,20 +246,32 @@
%D Instead we will map the values of status onto macro
%D expansions.
+%\def\settextlinestatus#1%
+% {\edef\textlinestatus{\csname\??tk#1\v!tekst\c!status\endcsname}}
+
+\def\settextlinestatus#1%
+ {\edef\textlinestatus{\csname\??tk#1\c!status\endcsname}}
+
+%\def\resettextlinestatus#1%
+% {\global\letvalue{\??tk#1\v!tekst\c!status}\v!normaal}
+
+\def\resettextlinestatus#1%
+ {\global\letvalue{\??tk#1\c!status}\v!normaal}
+
%\def\placelayouttextline#1#2% % handelt o.b.v. tekst
-% {\edef\textlinestatus{\getvalue{\??tk#1\v!tekst\c!status}}%
+% {\settextlinestatus{#1}%
% \doifdefinedelse{\string\placelayouttextline\textlinestatus}
% {\getvalue{\string\placelayouttextline\textlinestatus}{#1}{#2}}
% {\getvalue{\string\placelayouttextline\s!unknown}{#1}{#2}}}
%
%\def\placelayouttextline#1% #2
-% {\edef\textlinestatus{\getvalue{\??tk#1\v!tekst\c!status}}%
+% {\settextlinestatus{#1}%
% \doifundefined{\string\placelayouttextline\textlinestatus}
% {\let\textlinestatus\s!unknown}%
% \getvalue{\string\placelayouttextline\textlinestatus}{#1}} % {#2}
\def\placelayouttextline#1% #2
- {\edef\textlinestatus{\csname\??tk#1\v!tekst\c!status\endcsname}%
+ {\settextlinestatus{#1}%
\ifundefined{\string\placelayouttextline\textlinestatus}%
\let\textlinestatus\s!unknown
\fi
@@ -256,26 +283,25 @@
\letvalue{\string\placelayouttextline\v!hoog }\gobbletwoarguments
\setvalue{\string\placelayouttextline\v!leeg}#1#2%
- {\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
- }% oeps, bug: \vskip#2\relax}
+ {\resettextlinestatus{#1}}
\setvalue{\string\placelayouttextline\v!start}#1#2%
- {\setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
+ {\resettextlinestatus{#1}%
\doplacelayouttextline{#1}{#2}}
\setvalue{\string\placelayouttextline\v!stop}#1#2%
- {}% oeps, bug:\vskip#2\relax}
+ {}
\setvalue{\string\placelayouttextline\v!geenmarkering}#1#2%
{\bgroup
- \setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
+ \resettextlinestatus{#1}%
\let\dohaalmarkering=\nohaalmarkering
\doplacelayouttextline{#1}{#2}%
\egroup}
\setvalue{\string\placelayouttextline\s!unknown}#1#2%
{\bgroup % new
- \setgvalue{\??tk#1\v!tekst\c!status}{\v!normaal}%
+ \resettextlinestatus{#1}%
%\setlocallayoutline{#1\textlinestatus}%
%\setlocallayoutline{#1\v!tekst\textlinestatus}%
%\setlocallayoutline{#1\v!marge\textlinestatus}%
@@ -293,9 +319,14 @@
%D The following macro has to be called after a page
%D is flushed.
+%\def\resetlayoutline#1% beware: global assignment
+% {\doifvalue{\??tk#1\v!tekst\c!status}\v!hoog
+% {\resettextlinestatus{#1}%
+% \donetrue}}
+
\def\resetlayoutline#1% beware: global assignment
- {\doifvalue{\??tk#1\v!tekst\c!status}\v!hoog
- {\global\letvalue{\??tk#1\v!tekst\c!status}\v!normaal
+ {\doifvalue{\??tk#1\c!status}\v!hoog
+ {\resettextlinestatus{#1}%
\donetrue}}
\def\resetlayoutlines%
@@ -433,6 +464,83 @@
\def\ignoredlinebreak{\unskip\space\ignorespaces}
+% \def\doplacelayouttextline#1#2%
+% {\ifdim#2>\zeropoint\relax % prevents pagenumbers when zero height
+% \goleftonpage
+% \hbox
+% {\setbox\scratchpagebox=\vbox to #2
+% {%\forgetall
+% \vsize#2\relax
+% \normalbaselines
+% \let\\\ignoredlinebreak
+% \let\crlf\ignoredlinebreak
+% \getvalue{\??tk#1\v!tekst\c!voor}%
+% \doifbothsidesoverruled
+% \dodoplacelayouttextline#1\c!linkertekst\c!middentekst\c!rechtertekst
+% \gobbleoneargument\getvalue
+% \orsideone
+% \dodoplacelayouttextline#1\c!linkertekst\c!middentekst\c!rechtertekst
+% \gobbleoneargument\getvalue
+% \orsidetwo
+% \dodoplacelayouttextline#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!
+% \dp\scratchpagebox=\zeropoint
+% \box\scratchpagebox}%
+% \vskip-#2\relax
+% \fi}
+%
+% \def\dodoplacelayouttextline#1#2#3#4#5#6% \hsize toegevoegd
+% {\hbox % \hss's niet meer wijzigen
+% {\ifdim\linkerrandbreedte>\zeropoint
+% \hbox to \linkerrandbreedte
+% {\hsize\linkerrandbreedte
+% \hss\getvalue{\??tk#1\v!rand#2}}%
+% \hskip\linkerrandafstand
+% \fi
+% \ifdim\linkermargebreedte>\zeropoint
+% \hbox to \linkermargebreedte
+% {\hsize\linkermargebreedte
+% \hbox to \linkermargebreedte
+% {\hss\getvalue{\??tk#1\v!marge#2}}%
+% \hskip-\linkermargebreedte
+% \hbox to \linkermargebreedte
+% {\hss#5{\??tk#1\v!marge\c!margetekst}}}%
+% \hskip\linkermargeafstand
+% \fi
+% \ifdim\zetbreedte>\zeropoint
+% \hbox to \zetbreedte
+% {\hsize\zetbreedte
+% \hbox to \zetbreedte
+% {\@@nmpre{#5{\??tk#1\v!tekst\c!kantlijntekst}}%
+% \getvalue{\??tk#1\v!tekst#2}\hss}%
+% \hskip-\zetbreedte
+% \hbox to \zetbreedte
+% {\hss\getvalue{\??tk#1\v!tekst#3}\hss}%
+% \hskip-\zetbreedte
+% \hbox to \zetbreedte
+% {\hss\getvalue{\??tk#1\v!tekst#4}%
+% \@@nmpos{#6{\??tk#1\v!tekst\c!kantlijntekst}}}}%
+% \fi
+% \ifdim\rechtermargebreedte>\zeropoint
+% \hskip\rechtermargeafstand
+% \hbox to \rechtermargebreedte
+% {\hsize\rechtermargebreedte
+% \hbox to \rechtermargebreedte
+% {\getvalue{\??tk#1\v!marge#4}\hss}%
+% \hskip-\rechtermargebreedte
+% \hbox to \rechtermargebreedte
+% {#6{\??tk#1\v!marge\c!margetekst}\hss}}%
+% \fi
+% \ifdim\rechterrandbreedte>\zeropoint
+% \hskip\rechterrandafstand
+% \hbox to \rechterrandbreedte
+% {\hsize\rechterrandbreedte
+% \getvalue{\??tk#1\v!rand#4}\hss}%
+% \fi}}
+
\def\doplacelayouttextline#1#2%
{\ifdim#2>\zeropoint\relax % prevents pagenumbers when zero height
\goleftonpage
@@ -443,7 +551,8 @@
\normalbaselines
\let\\\ignoredlinebreak
\let\crlf\ignoredlinebreak
- \getvalue{\??tk#1\v!tekst\c!voor}%
+ %\getvalue{\??tk#1\v!tekst\c!voor}%
+ \getvalue{\??tk#1\c!voor}%
\doifbothsidesoverruled
\dodoplacelayouttextline#1\c!linkertekst\c!middentekst\c!rechtertekst
\gobbleoneargument\getvalue
@@ -454,25 +563,24 @@
\dodoplacelayouttextline#1\c!rechtertekst\c!middentekst\c!linkertekst
\getvalue\gobbleoneargument
\od
- \getvalue{\??tk#1\v!tekst\c!na}%
+ %\getvalue{\??tk#1\v!tekst\c!na}%
+ \getvalue{\??tk#1\c!na}%
\kern\zeropoint}% keep the \dp, beware of \vtops, never change this!
\dp\scratchpagebox=\zeropoint
\box\scratchpagebox}%
\vskip-#2\relax
\fi}
-\def\dodoplacelayouttextline#1#2#3#4#5#6% \hsize toegevoegd
- {\hbox % \hss's niet meer wijzigen
+\def\dodoplacelayouttextline#1#2#3#4#5#6% \hsize toegevoegd, \hss's niet meer wijzigen
+ {\hbox
{\ifdim\linkerrandbreedte>\zeropoint
- \hbox to \linkerrandbreedte
- {\hsize\linkerrandbreedte
- \hss\getvalue{\??tk#1\v!rand#2}}%
+ \dododoplacelayouttextline\linkerrandbreedte{#1}\v!rand
+ {\hss\getvalue{\??tk#1\v!rand#2}}%
\hskip\linkerrandafstand
\fi
\ifdim\linkermargebreedte>\zeropoint
- \hbox to \linkermargebreedte
- {\hsize\linkermargebreedte
- \hbox to \linkermargebreedte
+ \dododoplacelayouttextline\linkermargebreedte{#1}\v!marge
+ {\hbox to \linkermargebreedte
{\hss\getvalue{\??tk#1\v!marge#2}}%
\hskip-\linkermargebreedte
\hbox to \linkermargebreedte
@@ -480,9 +588,8 @@
\hskip\linkermargeafstand
\fi
\ifdim\zetbreedte>\zeropoint
- \hbox to \zetbreedte
- {\hsize\zetbreedte
- \hbox to \zetbreedte
+ \dododoplacelayouttextline\zetbreedte{#1}\v!tekst
+ {\hbox to \zetbreedte
{\@@nmpre{#5{\??tk#1\v!tekst\c!kantlijntekst}}%
\getvalue{\??tk#1\v!tekst#2}\hss}%
\hskip-\zetbreedte
@@ -495,9 +602,8 @@
\fi
\ifdim\rechtermargebreedte>\zeropoint
\hskip\rechtermargeafstand
- \hbox to \rechtermargebreedte
- {\hsize\rechtermargebreedte
- \hbox to \rechtermargebreedte
+ \dododoplacelayouttextline\rechtermargebreedte{#1}\v!marge
+ {\hbox to \rechtermargebreedte
{\getvalue{\??tk#1\v!marge#4}\hss}%
\hskip-\rechtermargebreedte
\hbox to \rechtermargebreedte
@@ -505,11 +611,39 @@
\fi
\ifdim\rechterrandbreedte>\zeropoint
\hskip\rechterrandafstand
- \hbox to \rechterrandbreedte
- {\hsize\rechterrandbreedte
- \getvalue{\??tk#1\v!rand#4}\hss}%
+ \dododoplacelayouttextline\rechterrandbreedte{#1}\v!rand
+ {\getvalue{\??tk#1\v!rand#4}\hss}%
\fi}}
+% \def\dododoplacelayouttextline#1#2#3#4%
+% {\hbox to #1{\hsize#1\relax#4}}
+
+\def\dododoplacelayouttextline#1#2#3#4%
+ {\vbox % to \vsize
+ {\hsize#1\relax
+ %\executeifdefined{\??tk#2#3\c!voor}\relax
+ \getvalue{\??tk#2#3\c!voor}\relax
+ \hbox to #1{#4}%
+ %\executeifdefined{\??tk#2#3\c!na}\relax}}
+ \getvalue{\??tk#2#3\c!na}\relax}}
+
+%D Although it is far better to use backgrounds for this
+%D purpose, one can add a rule in the following way. This
+%D method makes the rules disappear in case of an empty text
+%D line. Consider this a feature.
+%D
+%D \starttypen
+%D \setupheadertexts[left][right]
+%D
+%D \setupheader[text][after=\hrule,style=bold]
+%D
+%D \starttext
+%D \input tufte \page
+%D \setupheader[state=empty]
+%D \input tufte \page
+%D \stoptext
+%D \stoptypen
+
%D The next twosome will be done differently (using an
%D existing auxiliary macro).
@@ -620,7 +754,7 @@
\def\dodocommando[#1][#2]%
{\getparameters
[\??tk#1#2]
- [\c!status=\v!normaal,
+ [%\c!status=\v!normaal, % moved, kan tzt weg
\c!voor=,
\c!na=,
\c!strut=,
@@ -656,10 +790,16 @@
%D While the header and footer lines are moved away from the
%D main text, the top and bottom lines are centered.
-\setuptop [\c!voor=\vss, \c!na=\vss, \c!strut=]
-\setupheader [\c!voor=, \c!na=\vss, \c!strut=\v!ja]
-\setuptext [\c!voor=\vss, \c!na=\vss, \c!strut=]
-\setupfooter [\c!voor=\vss, \c!na=, \c!strut=\v!ja]
-\setupbottom [\c!voor=\vss, \c!na=\vss, \c!strut=]
+%\setuptop [\c!voor=\vss, \c!na=\vss, \c!strut=]
+%\setupheader [\c!voor=, \c!na=\vss, \c!strut=\v!ja]
+%\setuptext [\c!voor=\vss, \c!na=\vss, \c!strut=]
+%\setupfooter [\c!voor=\vss, \c!na=, \c!strut=\v!ja]
+%\setupbottom [\c!voor=\vss, \c!na=\vss, \c!strut=]
+
+\setuptop [\c!status=\v!normaal,\c!voor=\vss,\c!na=\vss,\c!strut=]
+\setupheader[\c!status=\v!normaal,\c!voor=, \c!na=\vss,\c!strut=\v!ja]
+\setuptext [\c!status=\v!normaal,\c!voor=\vss,\c!na=\vss,\c!strut=]
+\setupfooter[\c!status=\v!normaal,\c!voor=\vss,\c!na=, \c!strut=\v!ja]
+\setupbottom[\c!status=\v!normaal,\c!voor=\vss,\c!na=\vss,\c!strut=]
\protect \endinput
diff --git a/tex/context/base/s-pre-07.tex b/tex/context/base/s-pre-07.tex
index 8afa22bef..3f4c51087 100644
--- a/tex/context/base/s-pre-07.tex
+++ b/tex/context/base/s-pre-07.tex
@@ -12,7 +12,7 @@
%C details.
%D This style was made for the \NTS\ presentation at
-%D \EUROTEX\ 1999. It's a to programming in a webbed way.
+%D \EUROTEX\ 1999. It's a wink to programming in a webbed way.
%D This is just one way of implementing such a style. Today
%D we have more \METAPOST\ interfacing available, and
%D thereby moore tools and alternative ways to reach such a
@@ -20,8 +20,6 @@
%D the other hand, the presentation can look quite structured.
%D
%D \starttypen
-%D \TitlePage{...\\...\\...}
-%D
%D \Topics{...}
%D
%D \StartIdeas
diff --git a/tex/context/base/setupb.tex b/tex/context/base/setupb.tex
index dc54da3c2..79a63d122 100644
--- a/tex/context/base/setupb.tex
+++ b/tex/context/base/setupb.tex
@@ -1424,6 +1424,10 @@
[\c!voorgrondkleur]
[\c!identifier!]
[]
+ \variable
+ [\c!voorgrondletter]
+ [\c!identifier!]
+ []
\value
[\c!text!]
[]
@@ -3217,6 +3221,10 @@
[\v!normaal,\v!vet,\v!schuin,\v!vet\v!schuin,\v!type,\v!kap,\v!klein...,\c!command!]
[\v!normaal]
\variable
+ [\c!kleur]
+ [\c!identifier!]
+ []
+ \variable
[\c!markering]
[\v!aan,\v!uit,\v!kleur]
[\v!uit]
@@ -3304,8 +3312,10 @@
\type
[\c!opt!\c!val!]
\value
- [\v!boven,\v!beide,\v!onder]
- [\v!beide]
+ [\v!boven,\v!beide,\v!onder,-\v!boven,-\v!beide,-\v!onder,
+ \v!hoog,\v!midden,\v!laag,\v!pagina,\v!standaard,\v!geen,
+ \v!ruim,\v!passend]
+ [\v!standaard]
\stopsetup
\startsetup
@@ -3550,7 +3560,7 @@
[\v!onder]
\variable
[\c!breedte]
- [\v!passend,\v!max,\c!dimension!]
+ [\v!passend,\v!ruim,\v!max,\c!dimension!]
[\v!passend]
\variable
[\c!kopletter]
@@ -6794,8 +6804,12 @@
[\lijndikte]
\variable
[\c!afstand]
- [\v!blanko,\v!diepte,\c!dimension!,\v!klein,\v!middel,\v!groot,\v!geen]
+ [\v!blanko,\v!grid,\v!diepte,\c!dimension!,\v!klein,\v!middel,\v!groot,\v!geen]
[\v!diepte,\v!middel]
+ \variable
+ [\c!korps]
+ [5pt,...,12pt,\v!klein,\v!groot]
+ []
\stopsetup
\startsetup
@@ -6859,6 +6873,10 @@
[\c!achtergrondkleur]
[\c!identifier!]
[]
+ \variable
+ [\c!korps]
+ [5pt,...,12pt,\v!klein,\v!groot]
+ []
\stopsetup
\startsetup
diff --git a/tex/context/base/spec-def.tex b/tex/context/base/spec-def.tex
index ea1fdd192..09c7f27ff 100644
--- a/tex/context/base/spec-def.tex
+++ b/tex/context/base/spec-def.tex
@@ -282,6 +282,13 @@
\installspecial [\dostartnegative] [or] [0]
\installspecial [\dostopnegative] [or] [0]
+
+%D The following two specials are used in for instance \type
+%D {\vadjust}'d margin material inside colored paragraphs.
+
+\installspecial [\dostartgraphicgroup] [or] [0]
+\installspecial [\dostopgraphicgroup ] [or] [0]
+
%D \macros
%D {doselectfirstpaperbin,
%D doselectsecondpaperbin}
diff --git a/tex/context/base/spec-dvi.tex b/tex/context/base/spec-dvi.tex
index be8fdd73c..2e08c7a8b 100644
--- a/tex/context/base/spec-dvi.tex
+++ b/tex/context/base/spec-dvi.tex
@@ -54,7 +54,7 @@
\advance\dimen0 -\!!onepoint
\setbox2=\vsplit0 to \dimen0
\ifdim\ht0>\!!onepoint
- \setbox0=\vsplit0 \!!onepoint
+ \setbox0=\vsplit0 to \!!onepoint
\fi
\unvbox0\setbox0=\lastbox\unhbox0
\egroup}
diff --git a/tex/context/base/spec-fdf.tex b/tex/context/base/spec-fdf.tex
index 1c8913957..3b688f097 100644
--- a/tex/context/base/spec-fdf.tex
+++ b/tex/context/base/spec-fdf.tex
@@ -725,11 +725,16 @@
\def\doPDFinsertsoundtrack#1#2#3%
{\bgroup
\xdef\currentsound{#2}%
+ \let\pdf@@actions\empty
+ \@EA\processallactionsinset\@EA
+ [#3]
+ [\v!herhaal=>\edef\pdf@@actions{\pdf@@actions /Mode /Repeat }]%
\flushatshipout % since it can be buried in a chained box
{\doPDFannotation width 0pt height 0pt data
{/Subtype /Movie
/T (sound \currentsound)
- /Movie <</F (#1)>>}}%
+ /Movie <</F (#1)>>%
+ \ifx\pdf@@actions\empty\else/A << \pdf@@actions >>\fi}}%
\egroup}
%D \macros
@@ -1595,16 +1600,48 @@
\def\savesecondaryPDFreference % #1 == \action
{\global\@EA\let\csname PDF-SR:\the\nofsecondaryreferences\endcsname}
+%\def\getsecondaryPDFreferences%
+% {\ifcase\nofsecondaryreferences\else
+% %\doifdefined{PDF-SR:\the\nofsecondaryreferences}
+% \xdef\secondaryPDFreferences%
+% {/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
+% \secondaryPDFreferences >>}%
+% \global\advance\nofsecondaryreferences \minusone
+% \expandafter\getsecondaryPDFreferences
+% \fi}
+
+% test should happen in core-ref
+
+\beginETEX \ifcsname
+
\def\getsecondaryPDFreferences%
{\ifcase\nofsecondaryreferences\else
- %\doifdefined{PDF-SR:\the\nofsecondaryreferences}
- \xdef\secondaryPDFreferences%
- {/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
- \secondaryPDFreferences >>}%
+ \ifcsname PDF-SR:\the\nofsecondaryreferences\endcsname
+ \xdef\secondaryPDFreferences%
+ {/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
+ \secondaryPDFreferences >>}%
+ \fi
\global\advance\nofsecondaryreferences \minusone
\expandafter\getsecondaryPDFreferences
\fi}
+\endETEX
+
+\beginTEX
+
+\def\getsecondaryPDFreferences%
+ {\ifcase\nofsecondaryreferences\else
+ \@EA\ifx\csname PDF-SR:\the\nofsecondaryreferences\endcsname\relax\else
+ \xdef\secondaryPDFreferences%
+ {/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
+ \secondaryPDFreferences >>}%
+ \fi
+ \global\advance\nofsecondaryreferences \minusone
+ \expandafter\getsecondaryPDFreferences
+ \fi}
+
+\endTEX
+
%D \macros
%D {loadFDFfields, showFDFfields,
%D getFDFfield, setFDFfield}
@@ -1857,12 +1894,12 @@
\def\doPDFovalbox#1#2#3#4#5#6#7% todo: \scratchdimen/\scatchbox
{\bgroup
\dimen0=#4\divide\dimen0 by 2
- \doPDFovalcalc{0}{+\dimen0}\xmin
+ \doPDFovalcalc{0pt}{+\dimen0}\xmin
\doPDFovalcalc{#1}{-\dimen0}\xmax
\doPDFovalcalc{#2}{-\dimen0}\ymax
\doPDFovalcalc{-#3}{+\dimen0}\ymin
\advance\dimen0 by #5%
- \doPDFovalcalc{0}{+\dimen0}\xxmin
+ \doPDFovalcalc{0pt}{+\dimen0}\xxmin
\doPDFovalcalc{#1}{-\dimen0}\xxmax
\doPDFovalcalc{#2}{-\dimen0}\yymax
\doPDFovalcalc{-#3}{+\dimen0}\yymin
@@ -2027,6 +2064,11 @@
\let\presetPDFtransparency \gobbletwoarguments
\let\initializetransparency\relax
+%D New trickery:
+
+\definespecial\dostartgraphicgroup{\pdfliteral{q}}
+\definespecial\dostopgraphicgroup {\pdfliteral{Q}}
+
%D And that was all.
\stopspecials
diff --git a/tex/context/base/spec-ini.tex b/tex/context/base/spec-ini.tex
index db56152e6..3b07bec4b 100644
--- a/tex/context/base/spec-ini.tex
+++ b/tex/context/base/spec-ini.tex
@@ -13,6 +13,13 @@
\newif\ifsimplifyspecials \simplifyspecialstrue % see later
+%D We will forbid loading specials after the first page is
+%D shipped out.
+
+\ifx\realpageno\undefined
+ \countdef\realpageno=0 \realpageno=1
+\fi
+
%D Specials are \TEX's channel to the outside world. They make
%D \TEX\ even more platform independant and permit easy
%D adaption to new developments. One major drawback of specials
@@ -400,9 +407,11 @@
\showmessage\m!specials1\preloadedspecials}}
\def\usespecials[#1]%
- {\doifelsenothing{\currentspecial}
- {\processcommalist[#1]\dousespecials}
- {\showmessage\m!specials6\empty}}
+ {\ifnum\realpageno<2
+ \doifelsenothing{\currentspecial}
+ {\processcommalist[#1]\dousespecials}
+ {\showmessage\m!specials6\empty}%
+ \fi}
%D \macros
%D {executespecials}
@@ -642,6 +651,8 @@
{\showmessage{\m!specials}{7}{#1}}}}
\def\setupoutput[#1]%
- {\resetspecials\processcommacommand[#1]\dosetupoutput}
+ {\ifnum\realpageno<2 % new
+ \resetspecials\processcommacommand[#1]\dosetupoutput
+ \fi}
\protect \endinput
diff --git a/tex/context/base/spec-ps.tex b/tex/context/base/spec-ps.tex
index b31a4e4c0..409c77e62 100644
--- a/tex/context/base/spec-ps.tex
+++ b/tex/context/base/spec-ps.tex
@@ -113,6 +113,12 @@
{\@@insertpostscriptliteral
grestore}}
+\definespecial\dostartgraphicgroup
+ {\special{\@@insertpostscriptliteral gsave}}
+
+\definespecial\dostopgraphicgroup
+ {\special{\@@insertpostscriptliteral grestore}}
+
%D \macros
%D {doovalbox}
%D
diff --git a/tex/context/base/supp-fun.tex b/tex/context/base/supp-fun.tex
index fd95d6691..6856a21ed 100644
--- a/tex/context/base/supp-fun.tex
+++ b/tex/context/base/supp-fun.tex
@@ -552,8 +552,8 @@
%D Extra:
-\def\WidthSpanningText #1#2#3% text width font
- {\hbox{\NormalizeFontWidth \temp{#1}{#2}{#3}\temp#1}}
+\def\WidthSpanningText#1#2#3% text width font
+ {\hbox{\NormalizeFontWidth\temp{#1}{#2}{#3}\temp\the\everydefinedfont#1}}
%D Consider for instance:
%D
diff --git a/tex/context/base/supp-mis.tex b/tex/context/base/supp-mis.tex
index 053497f47..3f2b803f7 100644
--- a/tex/context/base/supp-mis.tex
+++ b/tex/context/base/supp-mis.tex
@@ -624,6 +624,10 @@
\immediate\closein\scratchread
\next}
+%D New.
+
+\let\donothing\empty
+
%D That's it. Please forget this junk and take a look at how
%D it should be done.
diff --git a/tex/context/base/supp-mpe.tex b/tex/context/base/supp-mpe.tex
index 6d8a8a18c..222a1947e 100644
--- a/tex/context/base/supp-mpe.tex
+++ b/tex/context/base/supp-mpe.tex
@@ -284,20 +284,6 @@
\def\@@MPSK{@MPSK@}
-% \def\interceptMPcmykcolor
-% {\ifMPcmyk
-% \ifnum\MPrgbnumber\lastMPgvalue=1 % cmyk color spec
-% \doifdefined{\@@MPSK\number\MPrgbnumber\lastMPbvalue}
-% {\getvalue{\@@MPSK\number\MPrgbnumber\lastMPbvalue}%
-% \resetMPcolor\normalhandleMPcmykcolor}%
-% \fi
-% \fi}
-
-%\def\interceptMPcmykcolor % can be used often, so sped up
-% {\ifcase\MPrgbnumber\lastMPgvalue \or % 1 == cmyk color spec
-% \expandafter\dointerceptMPcmykcolor
-% \fi}
-
\def\interceptMPcmykcolor % todo : \ifMPcmyk
{\ifcase\MPrgbnumber\lastMPgvalue
% cannot happen
@@ -312,16 +298,10 @@
\ifMPcmyk \invokeMPtransparencyspecial \fi
\fi}
-%\def\dointerceptMPcmykcolor % can be used often, so sped up
-% {\@EA\ifx\csname\@@MPSK\number\MPrgbnumber\lastMPbvalue\endcsname\relax\else
-% \csname\@@MPSK\number\MPrgbnumber\lastMPbvalue\endcsname
-% \resetMPcolor\normalhandleMPcmykcolor
-% \fi}
-
\def\dointerceptMPcmykcolor % can be used often, so sped up
{\revokeMPtransparencyspecial
\@EA\ifx\csname\@@MPSK\number\MPrgbnumber\lastMPbvalue\endcsname\relax\else
- \csname\@@MPSK\number\MPrgbnumber\lastMPbvalue\endcsname
+ \@EA\@EA\@EA\setMPcmyk\csname\@@MPSK\number\MPrgbnumber\lastMPbvalue\endcsname
\normalhandleMPcmykcolor
\fi}
@@ -559,17 +539,81 @@
\appendtoks \invokeMPshadespecial \to \invokeMPspecials
+%D We need to convert the \CMYK\ specials into colors, because
+%D we have to do it twice, we define a macro.
+
+\def\checkMPshadingcolor#1#2#3#4#5%
+ {\edef\tempMPrvalue{\csname\@@MP0#1\endcsname}%
+ \edef\tempMPgvalue{\csname\@@MP0#2\endcsname}%
+ \edef\tempMPbvalue{\csname\@@MP0#3\endcsname}%
+ \edef#5%
+ {\ifx\tempMPrvalue\tempMPgvalue
+ \ifx\tempMPrvalue\tempMPbvalue
+ \ifx\tempMPgvalue\tempMPbvalue
+ \tempMPbvalue
+ \fi
+ \fi
+ \fi}%
+ \edef#4%
+ {\ifnum\MPrgbnumber\tempMPrvalue=\MPspecialsignal\space
+ \ifMPcmyk\getvalue{\@@MPSK\number\MPrgbnumber\tempMPbvalue}\fi
+ \fi}}
+
+%D We also need to make sure that we have two \RGB\ or
+%D \CMYK colors, since we have to set the colorspace.
+
+\def\setMPshadingcolors#1#2#3#4#5#6%
+ {\checkMPshadingcolor{#1}{#2}{#3}\MPshadeA\MPshadeAA
+ \checkMPshadingcolor{#4}{#5}{#6}\MPshadeB\MPshadeBB
+ \ifx\MPshadeA\empty
+ \ifx\MPshadeB\empty
+ \edef\MPshadeA{\gMPs{#1} \gMPs{#2} \gMPs{#3}}%
+ \edef\MPshadeB{\gMPs{#4} \gMPs{#5} \gMPs{#6}}%
+ \def \MPshadeC{RGB}%
+ \else
+ \ifx\MPshadeAA\empty
+ \let\MPshadeA\MPcmykWhite
+ \let\MPshadeB\MPcmykBlack
+ \else
+ \scratchdimen=1pt\advance\scratchdimen -\MPshadeAA pt
+ \edef\MPshadeA{0 0 0 \withoutpt\the\scratchdimen}%
+ \fi
+ \def\MPshadeC{CMYK}%
+ \fi
+ \else
+ \ifx\MPshadeB\empty
+ \ifx\MPshadeBB\empty
+ \let\MPshadeA\MPcmykWhite
+ \let\MPshadeB\MPcmykBlack
+ \else
+ \scratchdimen=1pt\advance\scratchdimen -\MPshadeBB pt
+ \edef\MPshadeB{0 0 0 \withoutpt\the\scratchdimen}%
+ \fi
+ \fi
+ \def\MPshadeC{CMYK}%
+ \fi}
+
+%D The reason why this macro is a bit complicates is that we
+%D handle black and white situations (otherwise we would have
+%D to use \CMYK\ b/w in case of a \CMYK\ shade).
+
+\def\MPcmykBlack{0 0 0 0}
+\def\MPcmykWhite{0 0 0 1}
+
+%D Here are the special handlers:
+
\defineMPspecial{30}
{\startMPshading{14}% type 2
+ \setMPshadingcolors{4}{5}{6}{9}{10}{11}%
\immediate\pdfobj
{<</FunctionType 2
/Domain [\gMPs1 \gMPs2]
- /C0 [\gMPs4 \gMPs5 \gMPs6]
- /C1 [\gMPs9 \gMPs{10} \gMPs{11}]
+ /C0 [\MPshadeA]
+ /C1 [\MPshadeB]
/N \gMPs3>>}%
\immediate\pdfobj
{<</ShadingType 2
- /ColorSpace /DeviceRGB
+ /ColorSpace /Device\MPshadeC\space
/Function \the\pdflastobj\space 0 R
/Coords [\gMPs7 \gMPs8 \gMPs{12} \gMPs{13}]
/Extend [true true]>>}%
@@ -577,15 +621,16 @@
\defineMPspecial{31}
{\startMPshading{16}% type 3
+ \setMPshadingcolors{4}{5}{6}{10}{11}{12}%
\immediate\pdfobj
{<</FunctionType 2
/Domain [\gMPs1 \gMPs2]
- /C0 [\gMPs4 \gMPs5 \gMPs6]
- /C1 [\gMPs{10} \gMPs{11} \gMPs{12}]
+ /C0 [\MPshadeA]
+ /C1 [\MPshadeB]
/N \gMPs3>>}%
\immediate\pdfobj
{<</ShadingType 3
- /ColorSpace /DeviceRGB
+ /ColorSpace /Device\MPshadeC\space
/Function \the\pdflastobj\space 0 R
/Coords [\gMPs7 \gMPs8 \gMPs9 \gMPs{13} \gMPs{14} \gMPs{15}]
/Extend [true true]>>}%
@@ -707,12 +752,12 @@
%D {\CMYK\ support disabled,
%D conversion to \RGB.}
%D {\setupcolors[cmyk=nee,status=start]\haalbuffer[cmyk]}
-%D
+%D
%D \plaatsfiguur
%D {\CMYK\ support enabled,
%D no support in \METAPOST.}
%D {\setupcolors[cmyk=ja,mpcmyk=nee,status=start]\haalbuffer[cmyk]}
-%D
+%D
%D \plaatsfiguur
%D {\CMYK\ support enabled,
%D no conversion to \RGB,
@@ -721,9 +766,9 @@
\defineMPspecial{1}
{\ifMPcmyk
- \setxvalue{\@@MPSK\gMPs1}{\noexpand\setMPcmyk\gMPs2 \gMPs3 \gMPs4 \gMPs5 }%
+ \setxvalue{\@@MPSK\gMPs1}{\gMPs2 \gMPs3 \gMPs4 \gMPs5 }%
\fi}
-
+
\def\setMPcmyk#1 #2 #3 #4 %
{\setvalue{\@@MP01}{#1}%
\setvalue{\@@MP02}{#2}%
@@ -763,16 +808,16 @@
%D imagine situations where tex has to work with values
%D calculated by \METAPOST.
%D
-%D \startlinecorrection
+%D \startregelcorrectie
%D \getbuffer
-%D \stoplinecorrection
+%D \stopregelcorrectie
%D
%D Later we will implement a more convenient macro:
%D
-%D \starttyping
+%D \starttypen
%D \setMPlayer [test] [somepos-1] {Whatever we want here!}
%D \setMPlayer [test] [somepos-2] {Whatever we need there!}
-%D \stoptyping
+%D \stoptypen
\ifx\dosavepositionwhd\undefined
\let\dosavepositionwhd\gobblesevenarguments
@@ -799,10 +844,6 @@
%D \startbuffer
%D u := 2cm ; path p ; p := fullcircle scaled u shifted (u/4,0);
%D
-%D color cyan ; cyan := cmyk(1,0,0,0) ;
-%D color magenta ; magenta := cmyk(0,1,0,0) ;
-%D color yellow ; yellow := cmyk(0,0,1,0) ;
-%D
%D fill p rotated 90 withcolor transparent(1,.5,yellow) ;
%D fill p rotated 210 withcolor transparent(1,.5,green) ;
%D fill p rotated 330 withcolor transparent(1,.5,blue) ;
@@ -810,7 +851,7 @@
%D
%D \typebuffer
%D
-%D \startlinecorrection \processMPbuffer \stoplinecorrection
+%D \startregelcorrectie \processMPbuffer \stopregelcorrectie
%D
%D One can also communicate colors between \CONTEXT\ and
%D \METAPOST:
@@ -831,7 +872,7 @@
%D fill p rotated 330 withcolor \MPcolor{tyellow} ;
%D \stopbuffer
%D
-%D \startlinecorrection \processMPbuffer \stoplinecorrection
+%D \startregelcorrectie \processMPbuffer \stopregelcorrectie
%D
%D We save all the three components needed in one macro,
%D just to save hash space.
@@ -846,7 +887,7 @@
\defineMPspecial{2}
{\edef\currentMPspecial{\gMPs6}%
\presetPDFtransparency{\gMPs1}{\gMPs2}%
- \setxvalue{\@@MPST\currentMPspecial}%
+ \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug !
{\noexpand\assignMPStransparency
{\PDFtransparencyidentifier}%
{\PDFtransparencyreference}%
@@ -855,7 +896,7 @@
\defineMPspecial{3}
{\edef\currentMPspecial{\gMPs7}%
\presetPDFtransparency{\gMPs1}{\gMPs2}%
- \setxvalue{\@@MPST\currentMPspecial}%
+ \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug !
{\noexpand\assignMPStransparency
{\PDFtransparencyidentifier}%
{\PDFtransparencyreference}%
@@ -907,6 +948,10 @@
\let\revokeMPtransparencyspecial\relax
+\appendtoks
+ \revokeMPtransparencyspecial
+\to \MPstopresources
+
\def\dorevokeMPtransparencyspecial % only called if state is set
{\ifx\PDFtransparencyresetidentifier\empty\else
\doifinstringelse\PDFtransparencyresetidentifier\currentMPtransparencies
@@ -961,22 +1006,31 @@
\let\PDFtransparencyreference \empty
\def\initializePDFtransparency
- {\presetPDFtransparency{1}{1}%
+ {\global\let\initializePDFtransparency\relax
+ \presetPDFtransparency{1}{1}%
\xdef\PDFtransparencyresetidentifier{/Tr0}%
- \xdef\PDFtransparencyresetreference{\the\pdflastobj\space 0 R}%
- \global\initializePDFtransparency\relax}
+ \xdef\PDFtransparencyresetreference{\the\pdflastobj\space 0 R}}
\def\presetPDFtransparency#1#2%
{\initializePDFtransparency
\@EA\ifx\csname\@@MPSTO#1:#2\endcsname\relax
\global\advance\PDFcurrenttransparency 1
- \immediate\pdfobj{\PDFtransparancydictionary{#1}{#2}{}}%
+ \immediate\pdfobj{\PDFtransparencydictionary{#1}{#2}{}}%
\setxvalue{\@@MPSTN#1:#2}{\the\PDFcurrenttransparency}%
\setxvalue{\@@MPSTO#1:#2}{\the\pdflastobj}%
\fi
\edef\PDFtransparencyidentifier{/Tr\getvalue{\@@MPSTN#1:#2}}%
\edef\PDFtransparencyreference{\getvalue{\@@MPSTO#1:#2} 0 R}}
+ \def\PDFtransparencydictionary#1#2#3% type fraction extras
+ {<</Type /ExtGState
+ /ca #2 /CA #2
+ /BM /\ifcase#1 Normal\or Normal\or Multiply\or Screen\or
+ Overlay\or SoftLight\or HardLight\or ColorDodge\or
+ ColorBurn\or Darken\or Lighten\or Difference\or
+ Exclusion\else Compatible\fi
+ #3>>}
+
\fi
\appendtoks
diff --git a/tex/context/base/supp-mps.tex b/tex/context/base/supp-mps.tex
index 7f9ad6b7b..97be8f30a 100644
--- a/tex/context/base/supp-mps.tex
+++ b/tex/context/base/supp-mps.tex
@@ -426,9 +426,11 @@
\immediate\write\MPwrite{let mprunend = end ;}%
\immediate\write\MPwrite{beginfig(\the\currentMPgraphic);}%
\fi
- \global\let\flushMPgraphics\dodostopwritingMPgraphic
+ \global\let\flushMPgraphics\closeMPgraphicfiles % \dodostopwritingMPgraphic
\global\let\stopwritingMPgraphic=\dostopwritingMPgraphic}
+\let\MPgraphicfiles\empty
+
\def\openMPgraphicfile#1#2% #1=alwaysopen #2=message
{%\doifundefinedelse{\@@MPG\@@MPG\MPgraphicfile}
% {\donetrue
@@ -436,6 +438,7 @@
% {\ifcase#1\donefalse\else\donetrue\fi}%
\@EA\ifx\csname\@@MPG\@@MPG\MPgraphicfile\endcsname\relax
\donetrue \@EA\newwrite\csname\@@MPG\@@MPG\MPgraphicfile\endcsname
+ \doglobal\addtocommalist\MPgraphicfile\MPgraphicfiles
\else
\ifcase#1\relax\donefalse\else\donetrue\fi
\fi
@@ -466,12 +469,24 @@
\donefalse
\fi\fi
\ifdone
- \immediate\write\MPwrite{end.}%
- \immediate\closeout\MPwrite
+ \finishwritingMPgraphics
\runMPgraphic\MPgraphicfile
\fi
\global\let\flushMPgraphics\relax}
+\def\finishwritingMPgraphics
+ {\immediate\write\MPwrite{end.}%
+ \immediate\closeout\MPwrite}
+
+\def\closeMPgraphicfiles
+ {\ifrunMPgraphics \else \ifx\MPgraphicsfiles\empty\else
+ \def\docommando##1%
+ {\message{[flush and process ##1.mp afterwards]}%
+ \@EA\let\@EA\MPwrite\csname\@@MPG\@@MPG##1\endcsname
+ \finishwritingMPgraphics}%
+ \processcommacommand[\MPgraphicfiles]\docommando
+ \fi \fi}
+
\let\stopwritingMPgraphic\relax
\let\flushMPgraphics \relax
@@ -713,7 +728,7 @@
{\ifrunMPgraphics
\executeMETAPOST{#1}%
\else
- \message{[flush and process \MPgraphicfile.mp afterwards]}%
+ % \message{[flush and process \MPgraphicfile.mp afterwards]}%
\fi}
%D \macros
@@ -1175,6 +1190,9 @@
\def\dodohandleMPcolor#1 #2 #3setrgbcolor#4setrgbcolor*\\%
{\bgroup
+\ifdim\MPspecialsignal=.123pt % color spec / hardcoded hack
+ \immediate\write\scratchwrite{#1 #2 #3 setrgbcolor}%
+\else
\ifforcegrayMPcolors
\convertRGBtoGRAY{#1}{#2}{#3}%
\immediate\write\scratchwrite
@@ -1199,6 +1217,7 @@
\withoutpt{\the\dimen4} \space
\withoutpt{\the\dimen6} \space setcmykcolor #4}%
\fi
+\fi
\egroup
\donetrue} % needed for message
diff --git a/tex/context/base/supp-mrk.tex b/tex/context/base/supp-mrk.tex
index 8be8dd18f..85c11f428 100644
--- a/tex/context/base/supp-mrk.tex
+++ b/tex/context/base/supp-mrk.tex
@@ -377,108 +377,7 @@
\endTEX
-% %D Here starts the \ETEX\ alternative.
-%
-% \beginETEX \marks cum suis
-%
-% \newtoks \listofmarks
-%
-% \def\@@mrk{mrk:}
-% \def\@@trk{trk:}
-% \def\@@crk{crk:}
-%
-% \def\getcurrentmark {\getsomemark\thecurrentmarks}
-% \def\gettopmark {\getsomemark\checkedtopmarks}
-% \def\getbottommark {\getsomemark\normalbotmarks}
-% \def\getfirstmark {\getsomemark\normalfirstmarks}
-% \def\getsplitbottommark{\getsomemark\normalsplitbotmarks}
-% \def\getsplitfirstmark {\getsomemark\normalsplitfirstmarks}
-%
-% \def\getbotmark {\getsomemark\normalbotmarks}
-% \def\getsplitbotmark {\getsomemark\normalsplitbotmarks}
-% \def\getsplittopmark {\getsomemark\normalsplitfirstmarks}
-%
-% %D \starttypen
-% %D \def\getsomemark#1#2%
-% %D {\ifnum\getvalue{\@@mrk\string#2}=0\else % still reset
-% %D \expandafter\gobbletwoarguments
-% %D \fi#1#2}
-% %D \stoptypen
-% %D
-% %D We need a fully expandable (in \type {\edef}) version of
-% %D this one ...
-%
-% \letvalue{@@0}\empty
-% \letvalue{@@1}\gobbletwoarguments
-%
-% \def\getsomemark#1#2% (0,min(1,savedpage))
-% {\csname
-% @@\ifcase\csname\@@mrk\string#2\endcsname\space0\else1\fi
-% \endcsname#1#2}
-%
-% %D ... and so we have another ugly but useful hack.
-% %D
-% %D We will use two state variables per mark, one to signal
-% %D that a new mark value is set, and one to trigger (on the
-% %D next page) the setting of the top mark.
-%
-% \def\checkedtopmarks#1{\csname\@@trk\string#1\endcsname}
-% \def\thecurrentmarks#1{\csname\@@crk\string#1\endcsname}
-%
-% \long\def\setmark#1%
-% {\global\@EA\let\csname\@@mrk\string#1\endcsname\zerocountervalue
-% \ifexpandmarks
-% \expandafter\setexpandedmark
-% \else
-% \expandafter\setnormalmark
-% \fi#1}
-%
-% \def\setexpandedmark#1#2% % marks expand anyway
-% {\@EA\xdef\csname\@@crk\string#1\endcsname{#2}%
-% \normalmarks#1{#2}}
-%
-% \def\setnormalmark#1#2% using a tok prevents unwanted expansion in mark
-% {\scratchtoks{#2}%
-% \@EA\xdef\csname\@@crk\string#1\endcsname{\the\scratchtoks}%
-% \normalmarks#1{\the\scratchtoks}} % one level expansion
-%
-% \def\checktopmark#1% is called often, so its minimized
-% {\ifcase\csname\@@mrk\string#1\endcsname\else
-% \@EA\dochecktopmark\@EA#1%
-% \fi}
-%
-% \def\dochecktopmark#1%
-% {\ifnum\realpageno>\csname\@@mrk\string#1\endcsname\relax
-% \@EA\xdef\csname\@@trk\string#1\endcsname{\normalbotmarks#1}%
-% \fi}
-%
-% \def\resetmark#1% we cannot use \normalmarks#1{}}
-% {\@EA\xdef\csname\@@mrk\string#1\endcsname{\realfolio}%
-% \global\@EA\let\csname\@@trk\string#1\endcsname\empty}
-%
-% \def\definenewmark#1%
-% {\ifcsname\@@mrk\string#1\endcsname\else % this is etex -)
-% \newmarks#1%
-% \appendtoks\checktopmark#1\to\listofmarks
-% \fi
-% \global\@EA\let\csname\@@crk\string#1\endcsname\empty
-% \global\@EA\let\csname\@@mrk\string#1\endcsname\zerocountervalue
-% \@EA\gdef\csname\@@trk\string#1\endcsname{\normaltopmarks#1}}%
-%
-% \let \newmark \definenewmark
-% \let \newpersistentmark \definenewmark
-% \let \normalsetmark \setmark
-%
-% \def\setallmarks{\the\listofmarks}
-%
-% %D In \type {page-ini} or \type {core-mar} we should say:
-% %D
-% %D \starttypen
-% %D \appendtoks \getallmarks \to \everybeforepagebody
-% %D \appendtoks \setallmarks \to \everyafterpagebody
-% %D \stoptypen
-%
-% \endETEX
+%D The \ETEX\ way of doing things \unknown
\beginETEX \marks cum suis
@@ -513,12 +412,12 @@
\def\dochecktopmark#1%
{\ifnum\realpageno>\csname\@@mrk\string#1\endcsname\relax
- \global\@EA\let\csname\@@trk\string#1\endcsname\normalbotmarks
+ \@EA\gdef\csname\@@trk\string#1\endcsname{\normalbotmarks#1}%
\fi}
\def\resetmark#1% we cannot use \normalmarks#1{}}
{\@EA\mathchardef\csname\@@mrk\string#1\endcsname\realfolio
- \global\@EA\let\csname\@@trk\string#1\endcsname\gobbleoneargument}
+ \global\@EA\let\csname\@@trk\string#1\endcsname\empty}
\def\definenewmark#1%
{\ifcsname\@@mrk\string#1\endcsname\else % this is etex -)
@@ -526,7 +425,7 @@
\fi
\global\@EA\let\csname\@@crk\string#1\endcsname\empty
\global\@EA\mathchardef\csname\@@mrk\string#1\endcsname\zerocount
- \global\@EA\let\csname\@@trk\string#1\endcsname\normaltopmarks}
+ \@EA\gdef\csname\@@trk\string#1\endcsname{\normaltopmarks#1}}
\let \newmark \definenewmark
\let \newpersistentmark \definenewmark
@@ -643,6 +542,4 @@
%D can slow down considerably. This drawback is removed in
%D \ETEX\ mode.
-\readfile{supp-nmk}{}{}
-
\protect \endinput
diff --git a/tex/context/base/symb-nav.tex b/tex/context/base/symb-nav.tex
index 60b77ad1d..34c4bbd81 100644
--- a/tex/context/base/symb-nav.tex
+++ b/tex/context/base/symb-nav.tex
@@ -37,6 +37,11 @@
\definesymbol [\v!eerstesubpagina] [\ContextNavigationGlyph{3}]
\definesymbol [\v!laatstesubpagina] [\ContextNavigationGlyph{4}]
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{8}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{7}]
+
+
\stopsymbolset
\startsymbolset [navigation 2]
@@ -54,6 +59,10 @@
\definesymbol [\v!volgendesubpagina] [\ContextNavigationGlyph{102}]
\definesymbol [\v!eerstesubpagina] [\ContextNavigationGlyph{103}]
\definesymbol [\v!laatstesubpagina] [\ContextNavigationGlyph{104}]
+
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{108}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{107}]
\stopsymbolset
@@ -73,6 +82,10 @@
\definesymbol [\v!eerstesubpagina] [\ContextNavigationGlyph{203}]
\definesymbol [\v!laatstesubpagina] [\ContextNavigationGlyph{204}]
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{208}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{207}]
+
\stopsymbolset
%D \showsymbolset[navigation 1]
diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex
index ed2240c83..f46a0b017 100644
--- a/tex/context/base/syst-ext.tex
+++ b/tex/context/base/syst-ext.tex
@@ -688,7 +688,7 @@
{\global\advance\outerrecurse \plusone
\long\global\@EA\def\csname\@@arecurse\recursedepth\endcsname{#2}%
\global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
- \@EA\dodorecurse\@EA1{\number#1}}
+ \@EA\dodorecurse\@EA1\@EA{\number#1}}
\long\def\ydorecurse#1#2%
{\global\advance\outerrecurse \plusone
@@ -2408,35 +2408,44 @@
%D
%D Significantly faster (especially for longer lists):
-\def\cleanedupcommalist#1,,#2\relax{#1}
-
-\def\xsplitstring#1#2% \cs {item}
- {\def\dosplitstring##1#2,##2#2,##3\\%
- {\edef\!!stringa{\cleanedupcommalist##1,,\relax}%
- \edef\!!stringb{\cleanedupcommalist##2,,\relax}}%
- \@EA\dosplitstring#1,#2,#2,\\}
-
\def\addtocommalist#1#2% {item} \cs
- {\expanded{\xsplitstring\noexpand#2{#1}}%
- \dodoglobal\edef#2%
- {\ifx\!!stringa\empty\else\!!stringa,\fi
- \ifx\!!stringb\empty\else\!!stringb,\fi#1}}
-
-\def\pretocommalist#1#2%
- {\expanded{\xsplitstring\noexpand#2{#1}}%
- \dodoglobal\edef#2%
- {#1%
- \ifx\!!stringa\empty\else,\!!stringa\fi
- \ifx\!!stringb\empty\else,\!!stringb\fi}}
+ {\rawdoifinsetelse{#1}#2\resetglobal
+ {\dodoglobal\edef#2{\ifx#2\empty\else#2,\fi#1}}}
+
+\def\pretocommalist#1#2% {item} \cs
+ {\rawdoifinsetelse{#1}#2\resetglobal
+ {\dodoglobal\edef#2{#1\ifx#2\empty\else,#2\fi}}}
+
+\def\xsplitstring#1#2% \cs {str}
+ {\def\dosplitstring##1,#2,##2,#2,##3\\%
+ {\edef\!!stringa{\bcleanedupcommalist##1\empty\empty\relax}%
+ \edef\!!stringb{\acleanedupcommalist##2,,\relax}}%
+ \@EA\dosplitstring\@EA,#1,,#2,,#2,\\}
+
+\def\bcleanedupcommalist#1#2#3\relax{\if#1,\else#1\fi\if#2,\else#2\fi#3}
+\def\bcleanedupcommalist#1#2\relax{\if#1,\else#1\fi#2}
+\def\acleanedupcommalist#1,,#2\relax{#1}
+
+% \def\removefromcommalist#1#2%
+% {\expanded{\xsplitstring\noexpand#2{#1}}%
+% \dodoglobal\edef#2%
+% {\ifx\!!stringa\empty
+% \!!stringb
+% \else
+% \@EA\acleanedupcommalist\!!stringa,,\relax
+% \ifx\!!stringb\empty\else,\!!stringb\fi
+% \fi}}
\def\removefromcommalist#1#2%
- {\expanded{\xsplitstring\noexpand#2{#1}}%
- \dodoglobal\edef#2%
- {\ifx\!!stringa\empty
- \!!stringb
- \else
- \!!stringa\ifx\!!stringb\empty\else,\!!stringb\fi
- \fi}}
+ {\rawdoifinsetelse{#1}#2%
+ {\expanded{\xsplitstring\noexpand#2{#1}}%
+ \dodoglobal\edef#2%
+ {\ifx\!!stringa\empty
+ \!!stringb
+ \else
+ \!!stringa\ifx\!!stringb\empty\else,\!!stringb\fi
+ \fi}}
+ \resetglobal}
%D A not so useful macro:
@@ -2975,7 +2984,7 @@
\def\@@doifallcommonelse#1#2#3#4% slow
{\def\p!docommoncheck##1%
{\doifnotinset{##1}{#4}\donefalse
- \ifdone\else\quitcommalist\fi}%
+ \ifdone\else\expandafter\quitcommalist\fi}%
\donetrue
\processcommalist[#3]\p!docommoncheck
\ifdone\expandafter#1\else\expandafter#2\fi}
@@ -3910,7 +3919,7 @@
\else % old element larger
\@EA\def\@EA\newcommalistelement\@EA{\!!tempa,#1}%
\replaceincommalist\sortedcommalist\scratchcounter
- \quitcommalist
+ \expandafter\quitcommalist
\fi}%
\advance\scratchcounter \minusone}
diff --git a/tex/context/base/syst-new.tex b/tex/context/base/syst-new.tex
index eec5d6f6c..d10273e20 100644
--- a/tex/context/base/syst-new.tex
+++ b/tex/context/base/syst-new.tex
@@ -504,4 +504,14 @@
\def\grabstringsingle'#1'{\scratchtoks{#1}}
\def\grabstringspaced #1 {\scratchtoks{#1}}
+% \def\doifdimensionelse#1%
+% {\afterassignment\dodoifdimensionelse\scratchdimen=#1pt\relax\empty\empty\empty\empty}
+%
+% \def\dodoifdimensionelse#1#2#3#4%
+% {\ifx#3\relax
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+
\protect \endinput
diff --git a/tex/context/base/syst-pln.tex b/tex/context/base/syst-pln.tex
index dd777854d..d6e1a481b 100644
--- a/tex/context/base/syst-pln.tex
+++ b/tex/context/base/syst-pln.tex
@@ -628,6 +628,11 @@
\def\rightline #1{\line{\hss#1}}
\def\centerline#1{\line{\hss#1\hss}}
+%D These are used by TaBlE:
+
+\newif\ifh@
+\newif\ifv@
+
%D Let's end in the plain way:
\def\fmtname {ConTeXt Minimized Plain TeX}
diff --git a/tex/context/base/type-buy.tex b/tex/context/base/type-buy.tex
index a7d98b056..334601299 100644
--- a/tex/context/base/type-buy.tex
+++ b/tex/context/base/type-buy.tex
@@ -1,5 +1,7 @@
% fallback
+% todo \typescriptthree
+
\starttypescript [serif] [fallback]
\definefontsynonym [SerifBold] [Serif]
@@ -7,6 +9,7 @@
\definefontsynonym [SerifSlanted] [SerifItalic]
\definefontsynonym [SerifBoldItalic] [SerifBold]
\definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
+ \definefontsynonym [SerifCaps] [Serif]
\stoptypescript
@@ -17,6 +20,7 @@
\definefontsynonym [SansSlanted] [SansItalic]
\definefontsynonym [SansBoldItalic] [SansBold]
\definefontsynonym [SansBoldSlanted] [SansBoldItalic]
+ \definefontsynonym [SansCaps] [Sans]
\stoptypescript
@@ -27,6 +31,7 @@
\definefontsynonym [MonoSlanted] [MonoItalic]
\definefontsynonym [MonoBoldItalic] [MonoBold]
\definefontsynonym [MonoBoldSlanted] [MonoBoldItalic]
+ \definefontsynonym [MonoCaps] [Mono]
\stoptypescript
@@ -206,7 +211,7 @@
%D Linotype Univers
-\starttypescript [map] [texnansi]
+\starttypescript [map] [all] % [texnansi]
\loadmapfile[texnansi-linotype-univers.map]
\stoptypescript
@@ -237,17 +242,78 @@
\starttypescript [sans] [univers,univers-black,univers-light] [texnansi,ec,8r]
+ \definefontsynonym [Univers-Light] [\typefaceencoding-LT50136] [encoding=\typefaceencoding]
+ \definefontsynonym [Univers-LightOblique] [\typefaceencoding-LT50137] [encoding=\typefaceencoding]
+
\definefontsynonym [Univers] [\typefaceencoding-LT50138] [encoding=\typefaceencoding]
- \definefontsynonym [Univers-Bold] [\typefaceencoding-LT50140] [encoding=\typefaceencoding]
\definefontsynonym [Univers-Oblique] [\typefaceencoding-LT50139] [encoding=\typefaceencoding]
+ \definefontsynonym [Univers-Bold] [\typefaceencoding-LT50140] [encoding=\typefaceencoding]
\definefontsynonym [Univers-BoldOblique] [\typefaceencoding-LT50141] [encoding=\typefaceencoding]
- \definefontsynonym [Univers-Light] [\typefaceencoding-LT50136] [encoding=\typefaceencoding]
- \definefontsynonym [Univers-LightOblique] [\typefaceencoding-LT50137] [encoding=\typefaceencoding]
-
\definefontsynonym [Univers-Black] [\typefaceencoding-LT50142] [encoding=\typefaceencoding]
\definefontsynonym [Univers-BlackOblique] [\typefaceencoding-LT50143] [encoding=\typefaceencoding]
\stoptypescript
+% mendoza
+
+\starttypescript [all]
+ \loadmapfile[texnansi-itc-mendoza.map]
+\stoptypescript
+
+\starttypescript [serif] [mendoza] [name]
+
+ \definefontsynonym [Serif] [MendozaRoman-Book]
+ \definefontsynonym [SerifCaps] [MendozaRoman-Book]
+ \definefontsynonym [SerifSlanted] [MendozaRoman-BookItalic]
+ \definefontsynonym [SerifItalic] [MendozaRoman-BookItalic]
+ \definefontsynonym [SerifBold] [MendozaRoman-Bold]
+ \definefontsynonym [SerifBoldSlanted] [MendozaRoman-BoldItalic]
+ \definefontsynonym [SerifBoldItalic] [MendozaRoman-BoldItalic]
+
+\stoptypescript
+
+\starttypescript [serif] [mendoza] [texnansi]
+
+ \definefontsynonym[MendozaRoman-Bold] [texnansi-zab] [encoding=texnansi]
+ \definefontsynonym[MendozaRoman-BoldItalic] [texnansi-zabi][encoding=texnansi]
+ \definefontsynonym[MendozaRoman-Medium] [texnansi-zam] [encoding=texnansi]
+ \definefontsynonym[MendozaRoman-MediumItalic][texnansi-zami][encoding=texnansi]
+ \definefontsynonym[MendozaRoman-Book] [texnansi-zaw] [encoding=texnansi]
+ \definefontsynonym[MendozaRoman-BookItalic] [texnansi-zawi][encoding=texnansi]
+
+\stoptypescript
+
+% frutiger
+
+\starttypescript [all]
+ \loadmapfile[texnansi-adobe-frutiger.map]
+\stoptypescript
+
+\starttypescript [sans] [frutiger] [name]
+
+ \definefontsynonym [Sans] [Frutiger-Roman]
+ \definefontsynonym [SansCaps] [Frutiger-Roman]
+ \definefontsynonym [SansItalic] [Frutiger-Italic]
+ \definefontsynonym [SansSlanted] [Frutiger-Italic]
+ \definefontsynonym [SansBold] [Frutiger-Bold]
+ \definefontsynonym [SansBoldItalic] [Frutiger-BoldItalic]
+ \definefontsynonym [SansBoldSlanted] [Frutiger-BoldItalic]
+
+\stoptypescript
+
+\starttypescript [sans] [frutiger] [texnansi]
+
+ \definefontsynonym[Frutiger-Bold] [texnansi-ftb] [encoding=texnansi]
+ \definefontsynonym[Frutiger-BoldItalic] [texnansi-ftbi] [encoding=texnansi]
+ \definefontsynonym[Frutiger-Black] [texnansi-ftbl] [encoding=texnansi]
+ \definefontsynonym[Frutiger-BlackItalic][texnansi-ftbli][encoding=texnansi]
+ \definefontsynonym[Frutiger-Italic] [texnansi-fti] [encoding=texnansi]
+ \definefontsynonym[Frutiger-Light] [texnansi-ftl] [encoding=texnansi]
+ \definefontsynonym[Frutiger-LightItalic][texnansi-ftli] [encoding=texnansi]
+ \definefontsynonym[Frutiger-Roman] [texnansi-ftr] [encoding=texnansi]
+ \definefontsynonym[Frutiger-UltraBlack] [texnansi-ftubl][encoding=texnansi]
+
+\stoptypescript
+
\endinput
diff --git a/tex/context/base/type-ini.tex b/tex/context/base/type-ini.tex
index eab99156b..5fba1c9c5 100644
--- a/tex/context/base/type-ini.tex
+++ b/tex/context/base/type-ini.tex
@@ -20,7 +20,7 @@
\let\typescriptfiles\empty
-\def\usetypescriptfile[#1]%
+\unexpanded\def\usetypescriptfile[#1]%
{\addtocommalist{#1}\typescriptfiles}
\usetypescriptfile[\f!typeprefix syn] % font file synonyms
@@ -41,7 +41,7 @@
\let\@@typescripttwo \empty \let\typescripttwo \empty
\let\@@typescriptthree\empty \let\typescriptthree\empty
-\def\usetypescript%
+\unexpanded\def\usetypescript%
{\dotripleempty\dousetypescript}
\def\dousetypescript[#1][#2][#3]%
@@ -295,7 +295,8 @@
\setxvalue{#1 \c!status}{2}}}
\def\loadallfontmapfiles
- {\ifx\allfontmapsfiles\empty \else
+ {%\message{[\allfontmapsfiles]}%
+ \ifx\allfontmapsfiles\empty \else
\ifautoloadmapfiles
\ifcase\pdfoutput \else \ifx\pdfmapfile\undefined \else
\processcommacommand[\allfontmapsfiles]\doloadfontmapfile
@@ -368,12 +369,12 @@
\def\dododefinetypeface[#1][#2]% saveguard against redefinition
{\doifundefined{\??tf#1\s!default}{\setgvalue{\??tf#1\s!default}{#2}}%
- \doifundefined{#1}{\setgvalue{#1}{\switchtotypeface[#1][#2]}}}
+ \doifundefined{#1}{\unexpanded\setgvalue{#1}{\switchtotypeface[#1][#2]}}}
\def\setuptypeface% [class] [settings]
{\doquadrupleempty\doswitchtotypeface[\setupbodyfont][\fontclass]}
-\def\switchtotypeface% [class] [settings]
+\unexpanded\def\switchtotypeface% [class] [settings]
{\doquadrupleempty\doswitchtotypeface[\switchtobodyfont][\globalfontclass]}
\def\doswitchtotypeface[#1][#2][#3][#4]%
diff --git a/tex/context/base/verb-js.tex b/tex/context/base/verb-js.tex
new file mode 100644
index 000000000..78184c94f
--- /dev/null
+++ b/tex/context/base/verb-js.tex
@@ -0,0 +1,171 @@
+%D \module
+%D [ file=verb-js,
+%D version=1998.02.7,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \JAVASCRIPT\ Verbatim,
+%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 Support Macros / Pretty JavaScript Verbatim}
+
+%D In \CONTEXT\ we support \JAVASCRIPT\ inclusion in \PDF\
+%D documents and thereby enter the field of authoring. Of
+%D course we also want to pretty print such scripts, that look
+%D like:
+%D
+%D \startJS
+%D alfa = beta*2 ; // both alfa and beta are numbers // indeed
+%D if (odd(alfa))
+%D { do_something() }
+%D else
+%D { do_nothing() } /* As we can see /* in this example */ there
+%D how_about(alfa) ; is no fi needed. Also no semicolons are
+%D or_about(beta) ; needed after a right brace. */
+%D \stopJS
+%D
+%D Because \JAVASCRIPT\ looks much like \PERL, we will use
+%D a slightly adapted \PERL\ visualization. First we load the
+%D \PERL\ module:
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+%D The main difference between the \JAVASCRIPT\ and \PERL\
+%D interpreters concern comments. Where \TEX, \METAPOST\ and
+%D \PERL\ have one comment symbol (\type{%}, \type{%} and
+%D \type{#}), \JAVA\ has the one line comment sequence
+%D \type{//} and the multi line comment delimiters \type{/*}
+%D and \type{*/}.
+%D
+%D We need a counter to keep track of multi line comment
+%D nesting.
+
+\newcount\JScommentlevel
+
+%D We handle both \type{%} and \type{#} a bit different:
+
+\gdef\JSsetspecials%
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\%=41
+ \setpretty`\/=43
+ \setpretty`\*=44 }
+
+%D We also need a few more handlers: one for \type{//} and
+%D \type{/*} and one for \type{*/}.
+
+\gdef\JSsethandlers%
+ {\PLsethandlers
+ \installprettyhandler 43 \JStypefourthree
+ \installprettyhandler 44 \JStypefourfour }
+
+%D We can inherit most of the settings:
+
+\gdef\JSsetcontrols%
+ {\PLsetcontrols
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \ifcase\JScommentlevel \inPLcommentfalse \fi
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\JSsetvariables
+ {\PLsetvariables
+ \global\JScommentlevel=0 }
+
+\gdef\setupprettyJStype%
+ {\def\prettyidentifier{JS}%
+ \let\PLidentifiers=\JSidentifiers
+ \let\PLvariables=\JSvariables
+ \JSsetvariables
+ \JSsetcontrols
+ \JSsethandlers
+ \JSsetspecials
+ \PLsetdiagnostics}
+
+%D The main complication is that we have to look upto four
+%D characters ahead. Such macros are hard to understand but
+%D they do work!
+
+\gdef\JStypefourthree%
+ {\handlenextnextpretty\doJStypefourthree\PLtypefourtwo}
+
+\gdef\doJStypefourthree#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \let\next=\dodoJStypefourthree
+ \else\ifnum\prettytype=44
+ \global\advance\JScommentlevel by 1
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \let\next=\JStogglecomment
+ \else
+ \let\next=\PLtypefourtwo
+ \fi\fi
+ \next{#1}#2}
+
+\gdef\JStogglecomment#1#2%
+ {\ifnum\JScommentlevel=1
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+ \else
+ \getpretties{#1}{#2}%
+ \fi}
+
+\gdef\dodoJStypefourthree% #1%
+ {\endPLtypesix
+ \handlenextnextpretty\dododoJStypefourthree\dodododoPLtypefourthree}
+
+\gdef\dododoJStypefourthree%
+ {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoJStypefourthree}
+
+\gdef\dodododoJStypefourthree#1#2%
+ {\ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \ifnaturaltextext
+ \let\next\naturaltextext
+ \else
+ \def\next{\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}%
+ \fi
+ \expandafter\next
+ \fi}
+
+\gdef\JStypefourfour%
+ {\handlenextnextpretty\doJStypefourfour\PLtypefourtwo}
+
+\gdef\doJStypefourfour#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \JStogglecomment{#1}#2%
+ \global\advance\JScommentlevel by -1
+ \ifcase\JScommentlevel \global\inPLcommentfalse \fi
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi}
+
+%D We need different (less) reserved words. This list replaces
+%D the \PERL\ one.
+
+\useprettyidentifiers \JSidentifiers \JSsetspecials
+ abstract boolean break byte case catch char class const
+ continue default delete do double else extends false final
+ finally float for function goto if implements import in
+ instanceof int interface long native new null package
+ private protected public return short static super switch
+ synchronized this throw throws transient true try var void
+ while with
+
+\useprettyidentifiers \JSvariables \JSsetspecials
+ not-yet-defined
+
+\protect \endinput
diff --git a/tex/context/base/verb-jv.tex b/tex/context/base/verb-jv.tex
index 4de1a92b3..a7bad3c43 100644
--- a/tex/context/base/verb-jv.tex
+++ b/tex/context/base/verb-jv.tex
@@ -1,8 +1,8 @@
%D \module
-%D [ file=verb-pl,
-%D version=1998.02.7,
+%D [ file=verb-jv,
+%D version=2002.2.27,
%D title=\CONTEXT\ Verbatim Macros,
-%D subtitle=Pretty \JAVASCRIPT\ Verbatim,
+%D subtitle=Pretty \JAVA\ Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
@@ -11,65 +11,40 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\writestatus{loading}{Context Support Macros / Pretty JavaScript Verbatim}
+\writestatus{loading}{Context Support Macros / Pretty Java Verbatim}
-%D In \CONTEXT\ we support \JAVASCRIPT\ inclusion in \PDF\
-%D documents and thereby enter the field of authoring. Of
-%D course we also want to pretty print such scripts, that look
-%D like:
-%D
-%D \startJS
-%D alfa = beta*2 ; // both alfa and beta are numbers // indeed
-%D if (odd(alfa))
-%D { do_something() }
-%D else
-%D { do_nothing() } /* As we can see /* in this example */ there
-%D how_about(alfa) ; is no fi needed. Also no semicolons are
-%D or_about(beta) ; needed after a right brace. */
-%D \stopJS
-%D
-%D Because \JAVASCRIPT\ looks much like \PERL, we will use
-%D a slightly adapted \PERL\ visualization. First we load the
-%D \PERL\ module:
+%D This module differs from the \JAVASCRIPT\ driver in its
+%D handling of comments. We also need a few more handlers: one
+%D for \type {//} and \type {/*} and one for \type {*/} as
+%D well as the \JAVA doc trigger \type {/**}.
+
+%D We build this driver on top of the \PERL\ one. Since this
+%D driver looks much like the \JAVASCRIPT\ one, we don't
+%D comment it extensively.
\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
\unprotect
-%D The main difference between the \JAVASCRIPT\ and \PERL\
-%D interpreters concern comments. Where \TEX, \METAPOST\ and
-%D \PERL\ have one comment symbol (\type{%}, \type{%} and
-%D \type{#}), \JAVA\ has the one line comment sequence
-%D \type{//} and the multi line comment delimiters \type{/*}
-%D and \type{*/}.
-%D
-%D We need a counter to keep track of multi line comment
-%D nesting.
-
\newcount\JVcommentlevel
-%D We handle both \type{%} and \type{#} a bit different:
-
-\gdef\JVsetspecials%
+\gdef\JVsetspecials
{\PLsetspecials
\setpretty`\#=32
\setpretty`\%=41
+ \setpretty`\-=45
\setpretty`\/=43
\setpretty`\*=44 }
-%D We also need a few more handlers: one for \type{//} and
-%D \type{/*} and one for \type{*/}.
-
-\gdef\JVsethandlers%
+\gdef\JVsethandlers
{\PLsethandlers
\installprettyhandler 43 \JVtypefourthree
- \installprettyhandler 44 \JVtypefourfour }
+ \installprettyhandler 44 \JVtypefourfour
+ \installprettyhandler 45 \JVtypefourfive }
-%D We can inherit most of the settings:
-
-\gdef\JVsetcontrols%
+\gdef\JVsetcontrols
{\PLsetcontrols
- \def\flushrestofverbatimline%
+ \def\flushrestofverbatimline
{\endPLtypesix
\ifcase\JVcommentlevel \inPLcommentfalse \fi
\PLverbosefalse
@@ -79,36 +54,36 @@
{\PLsetvariables
\global\JVcommentlevel=0 }
-\gdef\setupprettyJVtype%
+\gdef\setupprettyJVtype
{\def\prettyidentifier{JV}%
- \let\PLidentifiers=\JVidentifiers
- \let\PLvariables=\JVvariables
+ \let\PLidentifiers\JVidentifiers
+ \let\PLvariables\JVvariables
\JVsetvariables
\JVsetcontrols
\JVsethandlers
\JVsetspecials
\PLsetdiagnostics}
-%D The main complication is that we have to look upto four
-%D characters ahead. Such macros are hard to understand but
-%D they do work!
-
-\gdef\JVtypefourthree%
+\gdef\JVtypefourthree
{\handlenextnextpretty\doJVtypefourthree\PLtypefourtwo}
-\gdef\doJVtypefourthree#1#2%
+\gdef\doJVtypefourthree#1#2#3%
{\getprettydata{#2}%
\ifnum\prettytype=43
- \let\next=\dodoJVtypefourthree
+ \let\next\dodoJVtypefourthree
\else\ifnum\prettytype=44
- \global\advance\JVcommentlevel by 1
+ \global\advance\JVcommentlevel 1
\global\inPLcommenttrue
\PLverbosecorrection
- \let\next=\JVtogglecomment
+ \getprettydata{#3}%
+ \ifnum\prettytype=44
+ \inPLdoctrue
+ \fi
+ \let\next\JVtogglecomment
\else
- \let\next=\PLtypefourtwo
+ \let\next\PLtypefourtwo
\fi\fi
- \next{#1}#2}
+ \next{#1}#2#3}
\gdef\JVtogglecomment#1#2%
{\ifnum\JVcommentlevel=1
@@ -117,11 +92,11 @@
\getpretties{#1}{#2}%
\fi}
-\gdef\dodoJVtypefourthree% #1%
+\gdef\dodoJVtypefourthree
{\endPLtypesix
\handlenextnextpretty\dododoJVtypefourthree\dodododoPLtypefourthree}
-\gdef\dododoJVtypefourthree%
+\gdef\dododoJVtypefourthree
{\ifnewpretty\expandafter\handlenewpretty\fi\dodododoJVtypefourthree}
\gdef\dodododoJVtypefourthree#1#2%
@@ -138,14 +113,36 @@
\expandafter\next
\fi}
-\gdef\JVtypefourfour%
- {\handlenextnextpretty\doJVtypefourfour\PLtypefourtwo}
+\gdef\JVtypefourfour
+ {\ifinPLdoc
+ \@EA\noJVtypefourfour
+ \else
+ \@EA\handlenextnextpretty\@EA\doJVtypefourfour\@EA\PLtypefourtwo
+ \fi}
+
+\gdef\noJVtypefourfour#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \JVtogglecomment{#1}#2%
+ \inPLdocfalse
+ \global\advance\JVcommentlevel -1
+ \ifcase\JVcommentlevel \global\inPLcommentfalse \fi
+ \else
+ \ifPLdocdone
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \PLdocdonetrue
+ \fi
+ \expandafter#2%
+ \fi}
\gdef\doJVtypefourfour#1#2%
{\getprettydata{#2}%
\ifnum\prettytype=43
\JVtogglecomment{#1}#2%
- \global\advance\JVcommentlevel by -1
+ \inPLdocfalse
+ \global\advance\JVcommentlevel -1
\ifcase\JVcommentlevel \global\inPLcommentfalse \fi
\else
\endPLtypesix
@@ -153,21 +150,73 @@
\expandafter#2%
\fi}
-%D We need different (less) reserved words. This list replaces
-%D the \PERL\ one.
+\gdef\JVtypefourfive % permit - in javadoc @tags
+ {\ifinPLdoc
+ \@EA\PLtypesixtwo
+ \else
+ \@EA\PLtypefourone
+ \fi}
\useprettyidentifiers \JVidentifiers \JVsetspecials
- abstract boolean break byte case catch char class const
- continue default delete do double else extends false final
- finally float for function goto if implements import in
- instanceof int interface long native new null package
- private protected public return short static super switch
- synchronized this throw throws transient true try var void
- while with
-
+ abstract assert boolean break byte case catch char class const
+ continue default do double else extends false final
+ finally float for goto if implements import instanceof
+ int interface long native new null package private protected
+ public return short static strictfp super switch synchronized
+ this throw throws transient true try void volatile while
+
\useprettyidentifiers \JVvariables \JVsetspecials
- not-yet-defined
+ @author @docRoot @deprecated @exception @inheritDoc @link
+ @linkplain @param @return @see @serial @serialData @serialField
+ @since @throws @value @version
-\protect
-
-\endinput
+%D The \JAVA doc feature was requested by Robert F.~Beeger,
+%D who also provided this test class:
+%D
+%D \startJV
+%D package de.jwamalpha.handling.web.rbdipl;
+%D
+%D import java.io.IOException;
+%D import java.io.PrintWriter;
+%D import javax.servlet.http.HttpServlet;
+%D import javax.servlet.http.HttpServletRequest;
+%D import javax.servlet.http.HttpServletResponse;
+%D import javax.servlet.ServletException;
+%D
+%D /**
+%D * The simple login servlet
+%D *
+%D * @author Robert F. Beeger
+%D * @version 1.0
+%D */
+%D
+%D public class LoginServlet extends HttpServlet
+%D {
+%D //
+%D // public interface
+%D //
+%D /**
+%D * Process the get-request.
+%D *
+%D * @param request the request
+%D * @param response the response.
+%D */
+%D protected void doGet (HttpServletRequest request, HttpServletResponse response)
+%D throws ServletException, IOException
+%D {
+%D response.setContentType("text/html");
+%D PrintWriter writer = response.getWriter();
+%D writer.println("<html>");
+%D writer.println(" <head>");
+%D writer.println(" <title>Login</title>");
+%D writer.println(" </head>");
+%D writer.println(" <body>");
+%D writer.println(" Hallo, Benutzer " + request.getParameter("username") + "!");
+%D writer.println(" </body>");
+%D writer.println("</html>");
+%D writer.flush();
+%D }
+%D }
+%D \stopJV
+
+\protect \endinput
diff --git a/tex/context/base/verb-pl.tex b/tex/context/base/verb-pl.tex
index 4495be13e..cbe82d49f 100644
--- a/tex/context/base/verb-pl.tex
+++ b/tex/context/base/verb-pl.tex
@@ -46,6 +46,8 @@
\doglobal\newif\ifinPLsingle
\doglobal\newif\ifinPLdouble
\doglobal\newif\ifinPLcomment
+\doglobal\newif\ifinPLdoc % only used in java filter
+\doglobal\newif\ifPLdocdone % only used in java filter
\doglobal\newif\ifPLverbose
\newcount\PLverboseskipped
@@ -53,7 +55,7 @@
\gdef\PLverbosecorrection%
{\ifnum\PLverboseskipped>0
\obeyedspace
- \advance\PLverboseskipped by -1
+ \advance\PLverboseskipped -1
\@EA\PLverbosecorrection
\fi}
@@ -62,7 +64,7 @@
\def\obeyedspace%
{\endPLtypesix
\ifPLverbose
- \advance\PLverboseskipped by 1
+ \advance\PLverboseskipped 1
\else
\oldobeyedspace
\fi}%
@@ -72,6 +74,7 @@
\def\obeyedline%
{\PLverbosefalse
\PLverboseskipped=0
+ \PLdocdonefalse
\oldobeyedline}%
\let\obeytabs=\ignoretabs}
@@ -168,10 +171,29 @@
\fi\fi
\fi}
-\gdef\PLtypetwo#1%
+% \gdef\PLtypetwo#1%
+% {\endPLtypesix
+% \xdef\PLprefix{\getpretty{#1}}%
+% \ifinPLcomment
+% \getpretty{#1}%
+% \else\ifinPLsingle
+% \getpretty{#1}%
+% \else\ifinPLdouble
+% \getprettydata{#1}%
+% \ifnum\prettytype=21
+% \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+% \else
+% \getpretty{#1}%
+% \fi
+% \else
+% \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+% \fi\fi\fi}
+
+\gdef\PLtypetwo#1%
{\endPLtypesix
- \xdef\PLprefix{\getpretty{#1}}%
- \ifinPLcomment
+ \ifinPLdoc
+ \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+ \else\ifinPLcomment
\getpretty{#1}%
\else\ifinPLsingle
\getpretty{#1}%
@@ -184,7 +206,7 @@
\fi
\else
\beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
- \fi\fi\fi}
+ \fi\fi\fi\fi}
\gdef\PLtypethree#1%
{\endPLtypesix
@@ -266,9 +288,51 @@
\expandafter\handlenextnextpretty\expandafter\doPLtypefiveA\expandafter\doPLtypefiveB
\fi}
-\gdef\endPLtypesix%
+% \gdef\endPLtypesix%
+% {\ifx\PLsequence\empty\else
+% \ifinPLcomment
+% \PLsequence
+% \else\ifinPLsingle
+% \PLsequence
+% \else\ifinPLdouble
+% \PLsequence
+% \else\ifPLverbose
+% \beginofpretty[\!!prettytwo]\PLsequence\endofpretty
+% \PLverbosefalse
+% \else\ifx\PLprefix\empty
+% \doifprettyidentifierelse{\PLsequence}{\PLverboses}
+% {\PLverbosetrue\PLverboseskipped=3 }
+% {\doifprettyidentifierelse{\PLsequence}{\PLidentifiers}
+% {\beginofpretty[\!!prettytwo]%
+% {\prettyidentifierfont\PLsequence}%
+% \endofpretty}
+% {\ifprettyPLvariables
+% \doifprettyidentifierelse{\PLsequence}{\PLvariables}
+% {\beginofpretty[\!!prettytwo]%
+% {\prettyvariablefont\PLsequence}%
+% \endofpretty}
+% {\PLsequence}%
+% \else
+% \PLsequence
+% \fi}}%
+% \else\ifprettyPLvariables
+% \doifprettyidentifierelse{\PLprefix\PLsequence}{\PLvariables}
+% {\beginofpretty[\!!prettytwo]%
+% {\prettyvariablefont\PLsequence}%
+% \endofpretty}
+% {\PLsequence}%
+% \else
+% \PLsequence
+% \fi\fi\fi\fi\fi\fi
+% \global\let\PLsequence=\empty
+% \global\let\PLprefix=\empty
+% \fi}
+
+\gdef\endPLtypesix
{\ifx\PLsequence\empty\else
- \ifinPLcomment
+ \ifinPLdoc
+ \doendPLtypesixvar\!!prettythree
+ \else\ifinPLcomment
\PLsequence
\else\ifinPLsingle
\PLsequence
@@ -278,43 +342,66 @@
\beginofpretty[\!!prettytwo]\PLsequence\endofpretty
\PLverbosefalse
\else\ifx\PLprefix\empty
- \doifprettyidentifierelse{\PLsequence}{\PLverboses}
- {\PLverbosetrue\PLverboseskipped=3 }
- {\doifprettyidentifierelse{\PLsequence}{\PLidentifiers}
- {\beginofpretty[\!!prettytwo]%
- {\prettyidentifierfont\PLsequence}%
- \endofpretty}
- {\ifprettyPLvariables
- \doifprettyidentifierelse{\PLsequence}{\PLvariables}
- {\beginofpretty[\!!prettytwo]%
- {\prettyvariablefont\PLsequence}%
- \endofpretty}
- {\PLsequence}%
- \else
- \PLsequence
- \fi}}%
+ \doendPLtypesix\!!prettytwo
\else\ifprettyPLvariables
- \doifprettyidentifierelse{\PLprefix\PLsequence}{\PLvariables}
- {\beginofpretty[\!!prettytwo]%
- {\prettyvariablefont\PLsequence}%
- \endofpretty}
- {\PLsequence}%
+ \doendPLtypesixvar\!!prettytwo
\else
\PLsequence
- \fi\fi\fi\fi\fi\fi
- \global\let\PLsequence=\empty
- \global\let\PLprefix=\empty
+ \fi\fi\fi\fi\fi\fi\fi
+ \global\let\PLsequence\empty
+ \global\let\PLprefix\empty
\fi}
-\gdef\PLtypesixone%
+\gdef\doendPLtypesix#1%
+ {\doifprettyidentifierelse{\PLsequence}{\PLverboses}
+ {\PLverbosetrue\PLverboseskipped=3 }
+ {\doifprettyidentifierelse{\PLsequence}{\PLidentifiers}
+ {\beginofpretty[#1]%
+ {\prettyidentifierfont\PLsequence}%
+ \endofpretty}
+ {\ifprettyPLvariables
+ \doifprettyidentifierelse{\PLsequence}{\PLvariables}
+ {\beginofpretty[#1]%
+ {\prettyvariablefont\PLsequence}%
+ \endofpretty}
+ {\PLsequence}%
+ \else
+ \PLsequence
+ \fi}}}
+
+\gdef\doendPLtypesixvar#1%
+ {\doifprettyidentifierelse{\PLprefix\PLsequence}{\PLvariables}
+ {\beginofpretty[#1]%
+ {\prettyvariablefont\PLsequence}%
+ \endofpretty}
+ {\PLsequence}}
+
+\gdef\PLtypesixone
{\ifx\PLsequence\empty
\expandafter\getpretty
\else
\expandafter\PLtypesixtwo
\fi}
-\gdef\PLtypesixtwo#1%
- {\ifinPLcomment
+% \gdef\PLtypesixtwo#1%
+% {\ifinPLcomment
+% \getpretty{#1}%
+% \else\ifinPLsingle
+% \getpretty{#1}%
+% \else\ifinPLdouble
+% \ifx\PLprefix\empty
+% \getpretty{#1}%
+% \else
+% \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+% \fi
+% \else
+% \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+% \fi\fi\fi}
+
+\gdef\PLtypesixtwo#1%
+ {\ifinPLdoc
+ \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+ \else\ifinPLcomment
\getpretty{#1}%
\else\ifinPLsingle
\getpretty{#1}%
@@ -326,7 +413,7 @@
\fi
\else
\xdef\PLsequence{\PLsequence\getpretty{#1}}%
- \fi\fi\fi}
+ \fi\fi\fi\fi}
\gdef\PLtypesevenone#1%
{\endPLtypesix
diff --git a/tex/context/base/xtag-ini.tex b/tex/context/base/xtag-ini.tex
index 97853ed45..8f018bfd2 100644
--- a/tex/context/base/xtag-ini.tex
+++ b/tex/context/base/xtag-ini.tex
@@ -864,10 +864,10 @@
{\fastenableencoding\simpleXMLencoding
\XMLsimpleentitiestrue}
-\gdef\defineXMLentity%
+\def\defineXMLentity%
{\dodoubleempty\dodefineXMLentity}
-\gdef\dodefineXMLentity[#1][#2]#3%
+\def\dodefineXMLentity[#1][#2]#3%
{\ifsecondargument
\defineXMLentities[#1]{#2}{#3}%
\else
@@ -877,14 +877,14 @@
\def\defineXMLentities[#1]#2#3%
{\dododefineXMLentity{#1}{\ifXMLsimpleentities#2\else#3\fi}}
-\gdef\dododefineXMLentity#1#2%
+\def\dododefineXMLentity#1#2%
{\unspaceargument#1\to\ascii % #1 can be {[} or so
\long\setvalue{\@@XMLentity:\@EA\firstofoneargument\ascii}{#2}}
%D May this wile become dodo (more in tune with rest);
%D beware: also remapped in xtag-map.
-\gdef\doXMLentity#1#2;% interesting: # is now ##
+\def\doXMLentity#1#2;% interesting: # is now ##
{\if\string#1\letterhash
\@EA\parseXMLcharacter
\else\ifXMLrawentities
@@ -1027,7 +1027,7 @@
\unexpanded\def\getXMLentity{\expandedXMLentity}
-\gdef\doifXMLentityelse#1#2#3%
+\def\doifXMLentityelse#1#2#3%
{\ifcsname\@@XMLentity:#1\endcsname#2\else#3\fi}
% see \defineXML... commands:
@@ -1318,6 +1318,16 @@
{\long\@EA\def\csname\@@XMLdata:#1\endcsname{##1}}%
\next}
+\long\gdef\dododefineXMLgsave#1%
+ {\letvalue{\@@XMLdata:#1}\longempty
+ \long\setvalue{\@@XMLelement:#1/}{\long\setgvalue{\@@XMLdata:#1}{}}%
+ \long\setvalue{\@@XMLelement:#1}{\redoXMLgsave{#1}}}
+
+\gdef\redoXMLgsave#1%
+ {\long\@EA\def\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>%
+ {\long\@EA\gdef\csname\@@XMLdata:#1\endcsname{##1}}%
+ \next}
+
%\long\gdef\dododefineXMLenvironmentsave#1#2#3%
% {\letvalue{\@@XMLdata:#1}\longempty
% \long\setvalue{\@@XMLelement:#1/}{#2\long\setvalue{\@@XMLdata:#1}{}#3}%
diff --git a/tex/context/base/xtag-run.tex b/tex/context/base/xtag-run.tex
index 7a919d31f..ebfee9e80 100644
--- a/tex/context/base/xtag-run.tex
+++ b/tex/context/base/xtag-run.tex
@@ -101,7 +101,7 @@
\advance\XMLlevel -1
\DoMod\XMLlevel by\XMLprettycycle to\scratchcounter
\advance\scratchcounter 1
- \startcolor[xtag:\number\scratchcounter]%
+ \startcolor[xtag:\ifnum\scratchcounter<0 0\else\number\scratchcounter\fi]%
\string<%
\ifnum\kindofXMLelement=2\string/\fi
\currentXMLelement
@@ -110,7 +110,7 @@
\cleanupXMLarguments
\startcolor[xtag:0]\hbox{\space}\showXMLarguments\unskip\stopcolor
\fi\fi
- \startcolor[xtag:\number\scratchcounter]%
+ \startcolor[xtag:\ifnum\scratchcounter<0 0\else\number\scratchcounter\fi]%
\ifnum\kindofXMLelement=3\string/\fi
\string>%
\stopcolor
diff --git a/tex/context/config/cont-usr.tex b/tex/context/config/cont-usr.tex
index 38dbab706..f70072c9a 100644
--- a/tex/context/config/cont-usr.tex
+++ b/tex/context/config/cont-usr.tex
@@ -70,7 +70,8 @@
\installlanguage [\s!cz] [\s!mapping={il2,ec},\s!encoding={il2,ec}]
\installlanguage [\s!hr] [\s!mapping={il2,ec},\s!encoding={il2,ec}]
-\installlanguage [\s!pl] [\s!mapping=pl0,\s!encoding=pl0]
+%installlanguage [\s!pl] [\s!mapping=pl0,\s!encoding=pl0]
+\installlanguage [\s!pl] [\s!mapping={pl0,ec},\s!encoding={pl0,ec}]
\installlanguage [\s!sk] [\s!mapping={il2,ec},\s!encoding={il2,ec}]
%D Sometimes these are not wanted:
diff --git a/tex/context/sample/dawkins.tex b/tex/context/sample/dawkins.tex
new file mode 100644
index 000000000..acb47b967
--- /dev/null
+++ b/tex/context/sample/dawkins.tex
@@ -0,0 +1,20 @@
+I used a similar illustration in one of my Royal
+Institution Christmas Lectures in 1991. I said I had reason
+to believe that among my audience was a psychic,
+clairvoyant individual, capable of influencing events
+purely by power of thought. I would try to flush this
+individual out. \quotation {Let's first establish,} I said,
+\quotation {whether the psychic is in the left half or the
+right half of the lecture hall.} I invited everybody to
+stand up while my assistant tossed a coin. Everybody on the
+left of the hall was asked to \quote {will} the coin to
+come down head. Everybody on the right had to will it to be
+tails. Obviously one side had to lose, and they were asked
+to sit down. Then those who remained were divided into two,
+with half \quote {willing} heads and the other half tails.
+Again the losers sat down. And so on by successive halvings
+until, inevitably. after seven or eight tosses, one
+individual was left standing. \quotation {A big round of
+applause for our psychic.} He must be psychic, mustn't he,
+because he successfully influenced the coin eight times in
+a row?
diff --git a/tex/context/user/cont-sys.rme b/tex/context/user/cont-sys.rme
index a571c8c60..7ea324ae3 100644
--- a/tex/context/user/cont-sys.rme
+++ b/tex/context/user/cont-sys.rme
@@ -94,6 +94,7 @@
% \runMPgraphicstrue
% \runMPTEXgraphicstrue
+
% \recycleMPslotstrue
% This saves some runtime, but needs a format, which you can