summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2004-03-09 00:00:00 +0100
committerHans Hagen <pragma@wxs.nl>2004-03-09 00:00:00 +0100
commitb3e51f52d2070a709e3089ada6054cd2080590ca (patch)
treeb14c8903849be35210f217cfa559862a750a87fd /tex
parentaff54a32fba80a11d2349133324c2c90064b938b (diff)
downloadcontext-b3e51f52d2070a709e3089ada6054cd2080590ca.tar.gz
stable 2004.03.09
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/colo-ini.tex19
-rw-r--r--tex/context/base/cont-fil.tex2
-rw-r--r--tex/context/base/cont-new.tex581
-rw-r--r--tex/context/base/context.tex14
-rw-r--r--tex/context/base/core-buf.tex82
-rw-r--r--tex/context/base/core-des.tex47
-rw-r--r--tex/context/base/core-fig.tex47
-rw-r--r--tex/context/base/core-fil.tex28
-rw-r--r--tex/context/base/core-fld.tex487
-rw-r--r--tex/context/base/core-grd.tex2
-rw-r--r--tex/context/base/core-int.tex43
-rw-r--r--tex/context/base/core-job.tex21
-rw-r--r--tex/context/base/core-ltb.tex45
-rw-r--r--tex/context/base/core-mis.tex42
-rw-r--r--tex/context/base/core-nav.tex6
-rw-r--r--tex/context/base/core-new.tex60
-rw-r--r--tex/context/base/core-not.tex45
-rw-r--r--tex/context/base/core-ntb.tex197
-rw-r--r--tex/context/base/core-obj.tex30
-rw-r--r--tex/context/base/core-pos.tex227
-rw-r--r--tex/context/base/core-ref.tex178
-rw-r--r--tex/context/base/core-rul.tex22
-rw-r--r--tex/context/base/core-sec.tex224
-rw-r--r--tex/context/base/core-snc.tex132
-rw-r--r--tex/context/base/core-spa.tex2
-rw-r--r--tex/context/base/core-tab.tex8
-rw-r--r--tex/context/base/core-tbl.tex163
-rw-r--r--tex/context/base/core-var.tex49
-rw-r--r--tex/context/base/docs-ini.tex40
-rw-r--r--tex/context/base/enco-mis.tex72
-rw-r--r--tex/context/base/font-ini.tex16
-rw-r--r--tex/context/base/font-run.tex4
-rw-r--r--tex/context/base/java-fld.tex16
-rw-r--r--tex/context/base/java-ini.tex279
-rw-r--r--tex/context/base/lang-frq.tex17
-rw-r--r--tex/context/base/list-ini.tex39
-rw-r--r--tex/context/base/m-chart.tex134
-rw-r--r--tex/context/base/m-layout.tex10
-rw-r--r--tex/context/base/m-quest.tex94
-rw-r--r--tex/context/base/meta-clp.tex56
-rw-r--r--tex/context/base/meta-ini.tex116
-rw-r--r--tex/context/base/mult-com.tex7
-rw-r--r--tex/context/base/mult-con.tex8
-rw-r--r--tex/context/base/mult-sys.tex5
-rw-r--r--tex/context/base/page-bck.tex16
-rw-r--r--tex/context/base/page-flt.tex155
-rw-r--r--tex/context/base/page-imp.tex6
-rw-r--r--tex/context/base/page-ini.tex27
-rw-r--r--tex/context/base/page-lay.tex126
-rw-r--r--tex/context/base/page-lyr.tex333
-rw-r--r--tex/context/base/page-mar.tex42
-rw-r--r--tex/context/base/page-new.tex124
-rw-r--r--tex/context/base/page-run.tex20
-rw-r--r--tex/context/base/page-set.tex503
-rw-r--r--tex/context/base/page-txt.tex18
-rw-r--r--tex/context/base/prop-ini.tex119
-rw-r--r--tex/context/base/prop-lay.tex78
-rw-r--r--tex/context/base/s-mag-01.tex82
-rw-r--r--tex/context/base/setupb.tex6
-rw-r--r--tex/context/base/spec-def.tex331
-rw-r--r--tex/context/base/spec-fdf.tex464
-rw-r--r--tex/context/base/spec-ini.tex163
-rw-r--r--tex/context/base/spec-tpd.tex16
-rw-r--r--tex/context/base/supp-box.tex73
-rw-r--r--tex/context/base/supp-emp.tex180
-rw-r--r--tex/context/base/supp-lan.tex117
-rw-r--r--tex/context/base/supp-mis.tex50
-rw-r--r--tex/context/base/supp-mpe.tex3
-rw-r--r--tex/context/base/supp-mps.tex14
-rw-r--r--tex/context/base/supp-pdf.tex78
-rw-r--r--tex/context/base/symb-nav.tex134
-rw-r--r--tex/context/base/syst-con.tex104
-rw-r--r--tex/context/base/syst-ext.tex42
-rw-r--r--tex/context/base/syst-gen.tex25
-rw-r--r--tex/context/base/syst-new.tex4
-rw-r--r--tex/context/base/thrd-ran.tex56
-rw-r--r--tex/context/base/thrd-trg.tex10
-rw-r--r--tex/context/base/type-enc.tex2
-rw-r--r--tex/context/base/type-ghz.tex14
-rw-r--r--tex/context/base/type-ini.tex2
-rw-r--r--tex/context/base/type-map.tex6
-rw-r--r--tex/context/base/x-res-01.tex6
-rw-r--r--tex/context/base/x-res-02.tex22
-rw-r--r--tex/context/base/x-res-50.tex415
-rw-r--r--tex/context/base/xtag-xsl.tex94
-rw-r--r--tex/context/sample/tufte.tex26
-rw-r--r--tex/context/sample/ward.tex2
87 files changed, 5112 insertions, 2712 deletions
diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex
index 3dc2bb141..dab205860 100644
--- a/tex/context/base/colo-ini.tex
+++ b/tex/context/base/colo-ini.tex
@@ -649,12 +649,12 @@
\else\ifCMYKsupported
\registercolorchannel\c!c
\convertRGBtoCMYK\@@cl@@r\@@cl@@g\@@cl@@b
-\normalizeCMYK
+ \normalizeCMYK
\doexeccolorcmyk
\else
\registercolorchannel\c!s
\convertRGBtoGRAY\@@cl@@r\@@cl@@g\@@cl@@b
-\normalizeGRAY
+ \normalizeGRAY
\doexeccolorgray
\fi\fi\fi
\exectransparency}
@@ -674,21 +674,18 @@
\registercolorchannel\c!c
\ifreduceCMYK
\convertCMYKtoCMY\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k
-% \else
-% \normalizeCMYK
-% \fi
-\fi
-\normalizeCMYK
+ \fi
+ \normalizeCMYK
\doexeccolorcmyk
\else\ifRGBsupported
\registercolorchannel\c!r
\convertCMYKtoRGB\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k
-\normalizeRGB
+ \normalizeRGB
\doexeccolorrgb
\else
\registercolorchannel\c!s
\convertCMYKtoGRAY\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k
-\normalizeGRAY
+ \normalizeGRAY
\doexeccolorgray
\fi\fi\fi
\exectransparency}
@@ -713,7 +710,7 @@
\factorizecolortrue % using counter and array
\dowithcolor\execcolorRCSP\@@cl@@n
\factorizecolorfalse
-\let\spotcolorfactor\@@cl@@o
+ \let\spotcolorfactor\@@cl@@o
\doingspotcolorfalse
\fi
\exectransparency}
@@ -2260,7 +2257,7 @@
\def\negatecolorcomponent#1% #1 = \macro
{\scratchdimen\onepoint\advance\scratchdimen-#1\onepoint
\ifdim\scratchdimen<\zeropoint\scratchdimen\zeropoint\fi
- \edef#1{\@EA\withoutpt\the\scratchdimen}}
+ \edef#1{\withoutpt\the\scratchdimen}}
\def\negatecolorbox#1%
{\setbox#1\hbox
diff --git a/tex/context/base/cont-fil.tex b/tex/context/base/cont-fil.tex
index 71d6352d3..d47256be0 100644
--- a/tex/context/base/cont-fil.tex
+++ b/tex/context/base/cont-fil.tex
@@ -40,6 +40,8 @@
\definefilesynonym [res-trace] [res-08]
\definefilesynonym [res-log] [res-09]
+\definefilesynonym [med-show] [res-50]
+
\definefilesynonym [pre-general] [pre-00]
\definefilesynonym [pre-original] [pre-01]
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index 9cefe1cda..a78d0e4dc 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -22,50 +22,295 @@
% todo : test low level translation (nl->en) and optimize script
-% \readfile{cont-exp}\donothing\donothing % speed up (5-20%)
-
-\def\doiffontcharelse#1#2%
+% todo : share symbols
+
+% \definecolor[rollover:n][red]
+% \definecolor[rollover:r][green]
+% \definecolor[rollover:d][blue]
+
+\definepalet
+ [rollover]
+ [n=red,
+ r=green,
+ d=blue]
+
+% \newcounter\nofrollovers
+%
+% \def\dorollbutton[#1][#2]#3[#4]%
+% {\dontleavehmode
+% \bgroup
+% \doglobal\increment\nofrollovers
+% \unexpanded\def\dosetlocationbox[##1]##2[##3]%
+% {\getparameters[##1][##3]%
+% \definecolor[rollover][rollover:##2]%
+% \let\next\hbox
+% \doif{##2}{n}
+% {\doifvalue{##1\c!variant}\v!verborgen{\let\next\phantom}}%
+% \next
+% {\localframed[##1]
+% [\c!kaderkleur=rollover,\c!achtergrondkleur=rollover,\c!kleur=rollover]%
+% {\dolocationattributes{##1}\c!letter\c!kleur{#3}}}}%
+% \iffirstargument
+% \ifsecondargument
+% \def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[#2]}%
+% \else
+% \doifassignmentelse{#1}
+% {\def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[#1]}}
+% {\def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[]}}%
+% \fi
+% \else
+% \def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[]}%
+% \fi
+% % todo: share symbols
+% \definesymbol[rsym:\nofrollovers:n][\setlocationbox n]%
+% \definesymbol[rsym:\nofrollovers:r][\setlocationbox r]%
+% \definesymbol[rsym:\nofrollovers:d][\setlocationbox d]%
+% \nextsystemfield
+% \setupfield
+% [rollbutton]
+% [\c!kader=\v!uit,\c!offset=\v!overlay,\c!klikuit={#4}]%
+% \definefield
+% [\currentsystemfield][push][rollbutton]
+% [rsym:\nofrollovers:n,%
+% rsym:\nofrollovers:r,%
+% rsym:\nofrollovers:d]%
+% \fitfield[\currentsystemfield]%
+% \egroup}
+
+\newcounter\nofrollovers
+\newcounter\nofrollbuttons
+
+\def\dorollbutton[#1][#2]#3[#4]%
+ {\dontleavehmode
+ \bgroup
+ \doglobal\increment\nofrollovers
+ \doglobal\increment\nofrollbuttons
+ \unexpanded\def\dosetlocationbox[##1]##2[##3]%
+ {\getparameters[##1][##3]%
+ \definecolor[rollover][rollover:##2]%
+ \doifelse{##2}{n}{\doifelsevalue{##1\c!variant}\v!verborgen\phantom\hbox}\hbox
+ {\localframed[##1]
+ [\c!kaderkleur=rollover,\c!achtergrondkleur=rollover,\c!kleur=rollover]%
+ {\dolocationattributes{##1}\c!letter\c!kleur{#3}}}}%
+ \iffirstargument
+ \ifsecondargument
+ \def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[#2]}%
+ \else
+ \doifassignmentelse{#1}
+ {\def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[#1]}}
+ {\def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[]}}%
+ \fi
+ \else
+ \def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[]}%
+ \fi
+ % todo: share symbols, tricky since different dimensions
+ \definesymbol[rsym:\nofrollovers:n][\setlocationbox n]%
+ \definesymbol[rsym:\nofrollovers:r][\setlocationbox r]%
+ \definesymbol[rsym:\nofrollovers:d][\setlocationbox d]%
+ \setupfield
+ [rollbutton]
+ [\c!kader=\v!uit,
+ \c!offset=\v!overlay,
+ \c!klikuit={#4}]%
+ \definefield
+ [roll:\nofrollbuttons][push][rollbutton]
+ [rsym:\nofrollovers:n,%
+ rsym:\nofrollovers:r,%
+ rsym:\nofrollovers:d]%
+ \fitfield[roll:\nofrollbuttons]%
+ \egroup}
+
+\unexpanded\def\rollbutton
+ {\dodoubleempty\dorollbutton}
+
+% \def\do@@amrob[#1]#2\\%
+% {\txt\rollbutton[\currentmenu]{\ignorespaces#2\unskip}[#1]\\}%
+
+% \appendtoks \let\rob\do@@amrob \to \everysetmenucommands
+
+\def\menu@rob[#1]#2\\%
+ {\@@amboxcommand\rollbutton[\currentmenu]{\ignorespaces#2\unskip}[#1]\\}%
+
+\appendtoks \let\rob\menu@rob \to \everysetmenucommands
+
+% calls:
+% {..} [JS..]
+% [left] {..} [JS..]
+% [a=b] {..} [JS..]
+% [left] [a=b] {..} [JS..]
+%
+% \setupbuttons[offset=0pt,frame=off] % alternative=hidden
+%
+% \rollbutton {Manuals} [JS(Goto_File{show-man.pdf})]
+% \rollbutton {Articles} [JS(Goto_File{show-art.pdf})]
+% \rollbutton {Papers} [JS(Goto_File{show-pap.pdf})]
+% \rollbutton {Presentations} [JS(Goto_File{show-pre.pdf})]
+% \rollbutton {Resources} [JS(Goto_File{show-res.pdf})]
+%
+% \rob [JS(...)] bla bla \\
+
+\unexpanded\def\overlayrollbutton
+ {\dodoubleargument\dooverlayrollbutton}
+
+\def\dooverlayrollbutton[#1][#2]%
{\bgroup
- \definedfont[#1]%
- \iffontchar\font#2\relax
- \egroup\expandafter\firstoftwoarguments
+ \nextsystemfield
+ \setupfield
+ [overlayrollbutton]
+ [\c!kader=\v!uit,\c!offset=\v!overlay,\c!gebiedin={#1},\c!gebieduit={#2}]%
+ \definesymbol
+ [\currentsystemfield]
+ [{\framed[\c!kader=\v!uit,\c!breedte=\overlaywidth,\c!hoogte=\overlayheight]{}}]%
+ \definefield
+ [\currentsystemfield][push][overlayrollbutton][\currentsystemfield][\currentsystemfield]%
+ \fitfield[\currentsystemfield]%
+ \egroup}
+
+% \defineoverlay
+% [ShowMenu]
+% [{\overlayrollbutton[VideLayer{navigation}][HideLayer{navigation}]}]
+
+\def\dodoflushlayer#1#2#3%
+ {\ifundefined{\@@layerbox#3}%
+ \ifcase#1\else\writestatus{layer}{unknown layer #3}\fi
\else
- \egroup\expandafter\secondoftwoarguments
+ \bgroup
+ \forgetall
+ \offinterlineskip
+ % needed because we need to handle method
+\executeifdefined{\??ll\??ll\getvalue{\??ll#2\c!preset}}\gobbletwoarguments{#2}{}%
+ %
+ \doifvalue{\??ll#2\c!optie}\v!test\tracelayerstrue
+ \iftracelayers\traceboxplacementtrue\fi
+ \!!doneafalse
+ \!!donebfalse
+ \doifvalue{\??ll#2\c!methode}\v!overlay\!!doneatrue
+ \doifvalue{\??ll#2\c!methode}\v!passend\!!donebtrue
+ \!!donectrue
+ \ifcase#1\else
+ \doifnotvalue{\??ll#2\c!positie}\v!ja
+ {\doifvalue{\??ll#2\c!herhaal}\v!ja\!!donecfalse
+ \doifvalue{\??ll#2\c!status}\v!herhaal\!!donecfalse}%
+ \fi
+ \chardef\layerbox\csname\@@layerbox#3\endcsname
+ % we need to copy in order to retain the negative offsets for a next
+ % stage of additions, i.e. llx/lly accumulate in repeat mode and the
+ % compensation may differ each flush depending on added content
+ \setbox\nextbox \if!!doneb
+ \vbox
+ {\scratchdimen\getboxlly\layerbox
+ \vskip-\scratchdimen
+ \scratchdimen\getboxllx\layerbox
+ \hskip-\scratchdimen
+ \advance\scratchdimen-\wd\layerbox
+ \hsize-\scratchdimen
+ \if!!donec\box\else\copy\fi\layerbox}%
+ \else
+ \if!!donec\box\else\copy\fi\layerbox % sorry for the delay due to copying
+ \fi
+ \iftracelayers \ruledvbox \else \vbox \fi \if!!donea to \overlayheight \fi
+ {\hbox \if!!donea to \overlaywidth \fi
+ {% klopt dit? #3 en niet #2 ?
+ \doifvalue{\??ll#3\realfolio\c!positie}\v!ja {\xypos{lyr:#3:\realfolio}}%
+ \doifoverlayelse{#3}
+ {\box\nextbox}
+ {\startlayoutcomponent{l:#3}{layer #3}\box\nextbox\stoplayoutcomponent}%
+ \hss}%
+ \vss}%
+ \if!!donec
+ \gsetboxllx\layerbox\zeropoint
+ \gsetboxlly\layerbox\zeropoint
+ \fi
+ \egroup
\fi}
-\unexpanded\def\asciistr#1{\convertargument#1\to\ascii{\verbatimfont\ascii}}
+\def\tightlayer[#1]%
+ {\hbox
+ {\def\currentlayer{#1}% todo: left/right
+ \setbox\nextbox\emptybox % hoogte/breedte are \wd\nextbox/\ht\nextbox
+ \hsize\layerparameter\c!breedte % \overlaywidth = \hsize
+ \vsize\layerparameter\c!hoogte % \overlaywheight = \vsize
+ \composedlayer{#1}}}
-\def\shapedhbox % lines with non strutted dimensions have
- {\expanded{\dowithnextbox % interlineskip so if we want the original
- {\nextboxht\the\ht\shapebox % spacing, we need to preserve the original
- \nextboxdp\the\dp\shapebox % height and depth which is definitely
- \noexpand\flushnextbox}} % needed if we apply struts to the 'new'
- \normalhbox} % box or do something that changed ist size
-
-\def\inrightmargin#1% new: hsize correction
- {\pushindentation
- \rlap
- {\hskip\tekstbreedte
- %\hskip-\hsize
- %\hskip\hsize
- \hskip-\rightskip
- \hskip\rechtermargeafstand
- \hsize\rechtermargebreedte
- #1}%
- \popindentation
- \ignorespaces}
+\def\inlinedbox
+ {\bgroup
+ \dowithnextbox
+ {\scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \advance\scratchdimen-\lineheight
+ \divide\scratchdimen\plustwo
+ \advance\scratchdimen\strutdepth
+ \setbox\nextbox\hbox{\lower\scratchdimen\flushnextbox}%
+ \nextboxht\strutht
+ \nextboxdp\strutdp
+ \flushnextbox
+ \egroup}%
+ \hbox}
+
+\def\dosetups#1% the grid option will be extended to other main modes
+ {\executeifdefined{\??su\ifgridsnapping\v!grid\fi:#1}{\csname\??su:#1\endcsname}\empty}
-\def\rechtermargetekstblok#1% new: hsize correction
- {\maakmargetekstblok \rightmargintextwidth \v!rechts \v!links
- {\hskip\margetekstafstand\hskip\tekstbreedte\hskip-\hsize }{\rlap{\plaatsmargetekstscheider}}
- {#1}}
+\let\directsetup\dosetups
+
+% \readfile{cont-exp}\donothing\donothing % speed up (5-20%)
-\def\douniqueMPpagegraphic#1#2%
- {\blabelgroup
- \let\overlaystamp\overlaypagestamp
- \setupMPvariables[\MPpageprefix#1][#2]% prefix is new here
- \getvalue{\@@MPG\MPpageprefix#1}{}%
- \elabelgroup}
+\def\dimenratio#1#2% etex only
+ {\withoutpt\the\dimexpr(2\dimexpr(#1)/(\dimexpr(#2)/32768))}
+
+% in page-lyr
+
+\definelayer[OTRTEXT] \setuplayer[OTRTEXT][\c!breedte=\zetbreedte,\c!hoogte=\teksthoogte]
+
+\let\normalsettextpagecontent\settextpagecontent
+
+\def\settextpagecontent#1#2#3% #2 and #3 will disappear
+ {\doifelselayerdata{OTRTEXT}
+ {\setbox#1\hbox to \zetbreedte
+ {\startoverlay
+ {\normalsettextpagecontent{#1}{#2}{#3}\box#1}
+ {\tightlayer[OTRTEXT]}
+ \stopoverlay}%
+ \dp#1\zeropoint}%
+ {\normalsettextpagecontent{#1}{#2}{#3}}}
+
+% in page-set
+
+\def\OTRSETdofinaloutput
+ {\ifdim\ht\OTRfinalpagebox=\teksthoogte
+ \bgroup % \let\OTRSETsetvsize\relax % prevents useless search for gap
+ \ifcase\OTRSETbalancemethod
+ \finaloutput\box\OTRfinalpagebox
+ \else\ifdim\OTRSETbalht>\zeropoint
+ % catch a bordercase
+ \scratchdimen\OTRSETbalht
+ \advance\scratchdimen\lineheight\relax
+ \ifdim\scratchdimen>\teksthoogte
+ % full page
+ \finaloutput\box\OTRfinalpagebox
+ \else
+ % same page
+ \global\setbox\OTRfinalpagebox \iftracecolumnset\ruledvbox\else\vbox\fi to \OTRSETbalht
+ {\box\OTRfinalpagebox\vss}%
+ \setlayer[OTRTEXT]{\box\OTRfinalpagebox}%
+ \snaptogrid\vbox{\vskip\OTRSETbalht}% hack
+ \fi
+ \else
+ \finaloutput\box\OTRfinalpagebox
+ \fi \fi
+ \globallet\OTRSETbalht\zeropoint
+ \egroup
+ \fi}
+
+\def\doxprecurse#1#2%
+ {\ifnum#1=\zerocount % no \ifcase
+ \expandafter\gobblethreearguments
+ \else
+ #2\expandafter\expandafter\expandafter\doxprecurse\expandafter
+ \fi\expandafter{\the\numexpr(#1-1)}{#2}}
+
+\def\buttonframed{\dodoubleempty\localframed[\??bt]} % goodie
+
+\unexpanded\def\asciistr#1{\convertargument#1\to\ascii{\verbatimfont\ascii}}
\prependtoks \setnormalcatcodes \to \everyTEXinputmode
\appendtoks \processingXMLfalse \to \everyTEXinputmode
@@ -78,16 +323,6 @@
\def\enableXML {\setinputmode[XML]}
\def\disableXML{\setinputmode[TEX]}
-\def\checkvariables
- {\dodoubleargument\docheckvariables}
-
-\def\docheckvariables
- {\dogetparameters\docheckrawvalue}
-
-\def\docheckrawvalue#1#2#3%
- {\doifundefined {\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}}
- {\doifvaluenothing{\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}}}}
-
\beginTEX
% else the skip aborts the reshape process
@@ -102,43 +337,46 @@
\endETEX
-\beginETEX \lastnodetype
-
-\def\dodoreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip
- {\ifnum\lastnodetype=\@@gluenode % \ifcase\lastskip % \ifdim\lastskip=\zeropoint\relax
- \shapeskip\lastskip
- \global\setbox\tmpshapebox\normalvbox{#4\unvbox\tmpshapebox}%
- \unskip
- \else\ifnum\lastnodetype=\@@kernnode % \ifcase\lastkern % \ifdim\lastkern=\zeropoint\relax
- \shapekern\lastkern
- \global\setbox\tmpshapebox\normalvbox{#3\unvbox\tmpshapebox}%
- \unkern
- \else\ifnum\lastnodetype=\@@penaltynode % \ifcase\lastpenalty % \ifnum\lastpenalty=\zerocount
- \shapepenalty\lastpenalty
- \global\setbox\tmpshapebox\normalvbox{#2\unvbox\tmpshapebox}%
- \unpenalty
- \else
- \setbox\shapebox\lastbox
- \ifvoid\shapebox
- \unskip\unpenalty\unkern
- \else
- \ifdim\wd\shapebox=\shapesignal\relax
- \exitloop
- \else
- \shapecounter\zerocount
- \global\setbox\tmpshapebox\normalvbox{#1\unvbox\tmpshapebox}%
- \fi
- \fi
- \fi\fi\fi
- \ifnum\shapecounter>100 % can be less
- \message{<<forced exit from shapebox>>}%
- \global\setbox\tmpshapebox\copy\oldshapebox
- \exitloop
- \else
- \advance\shapecounter \plusone
- \fi}
+% Currently there is a bug in \lastnodetype, so we will enable this
+% feature when the bugfix is widespread.
-\endETEX
+% \beginETEX \lastnodetype
+%
+% \def\dodoreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip
+% {\ifnum\lastnodetype=\@@gluenode % \ifcase\lastskip % \ifdim\lastskip=\zeropoint\relax
+% \shapeskip\lastskip
+% \global\setbox\tmpshapebox\normalvbox{#4\unvbox\tmpshapebox}%
+% \unskip
+% \else\ifnum\lastnodetype=\@@kernnode % \ifcase\lastkern % \ifdim\lastkern=\zeropoint\relax
+% \shapekern\lastkern
+% \global\setbox\tmpshapebox\normalvbox{#3\unvbox\tmpshapebox}%
+% \unkern
+% \else\ifnum\lastnodetype=\@@penaltynode % \ifcase\lastpenalty % \ifnum\lastpenalty=\zerocount
+% \shapepenalty\lastpenalty
+% \global\setbox\tmpshapebox\normalvbox{#2\unvbox\tmpshapebox}%
+% \unpenalty
+% \else
+% \setbox\shapebox\lastbox
+% \ifvoid\shapebox
+% \unskip\unpenalty\unkern
+% \else
+% \ifdim\wd\shapebox=\shapesignal\relax
+% \exitloop
+% \else
+% \shapecounter\zerocount
+% \global\setbox\tmpshapebox\normalvbox{#1\unvbox\tmpshapebox}%
+% \fi
+% \fi
+% \fi\fi\fi
+% \ifnum\shapecounter>100 % can be less
+% \message{<<forced exit from shapebox>>}%
+% \global\setbox\tmpshapebox\copy\oldshapebox
+% \exitloop
+% \else
+% \advance\shapecounter \plusone
+% \fi}
+%
+% \endETEX
\let\normaltype\type
@@ -234,14 +472,16 @@
% \headsym{xx} test \par test
% \stopitemize
-\beginETEX \lastnodetype
-
-\def\removeunwantedspaces
- {\ifhmode
- \doloop{\ifnum\lastnodetype=\@@gluenode\unskip\else\exitloop\fi}%
- \fi}
-
-\endETEX
+% wait till bugfix in etex is widespead
+%
+% \beginETEX \lastnodetype
+%
+% \def\removeunwantedspaces
+% {\ifhmode
+% \doloop{\ifnum\lastnodetype=\@@gluenode\unskip\else\exitloop\fi}%
+% \fi}
+%
+% \endETEX
% \def\dodimchoice#1#2#3%
% {\ifx#3\relax
@@ -325,6 +565,144 @@
\vrule\!!width4\scratchdimen\!!height\scratchdimen\!!depth\scratchdimen}%
\fi}
+% It took quite a while to figure this out (using the preliminary 1.5
+% spec). There are still a lot of things to be implemented. This is
+% the third alternative.
+
+% todo: multiple instances, dus indirect
+
+\let\currentrendering\empty
+
+\definereference[StartCurrentRendering] [\v!StartRendering{\currentrendering}]
+\definereference[StopCurrentRendering] [\v!StopRendering {\currentrendering}]
+\definereference[PauseCurrentRendering] [\v!PauseRendering{\currentrendering}]
+\definereference[ResumeCurrentRendering][\v!ResumeRendering{\currentrendering}]
+
+\newcounter\nofexternalrenderings
+
+\def\useexternalrendering{\doquadrupleempty\douseexternalrendering}
+\def\setinternalrendering{\dodoubleempty \dosetinternalrendering}
+
+\def\douseexternalrendering[#1][#2][#3][#4]% tag mime file options
+ {\setgvalue{\??rd:#1}{\plusone{#1}{#2}{#3}{#4}}}
+
+\def\dosetinternalrendering[#1][#2]% tag options {content}
+ {\bgroup
+ \dowithnextbox
+ {\setgvalue{\??rd:#1}{\plustwo{#1}{IRO}{#1}{#2}}%
+ \let\objectoffset\zeropoint
+ \setobject{IRO}{#1}\hbox{\box\nextbox}%
+ \egroup}%
+ \hbox}
+
+\def\checkrendering#1% let's hope that \next is not used
+ {\iflocation
+ \doifsomething{#1}%
+ {\doifdefined{\??rd:#1}%
+ {\expanded{\getvalue{\??rd::\number\renderingtype{#1}}%
+ {\filterfromvalue{\??rd:#1}52}{\filterfromvalue{\??rd:#1}53}%
+ {\filterfromvalue{\??rd:#1}54}{\filterfromvalue{\??rd:#1}55}}}}%
+ \fi}
+
+\setvalue{\??rd::1}{\doinsertrendering}
+\setvalue{\??rd::2}{\doinsertrenderingobject}
+
+\def\renderingtype #1{\filterfromvalue{\??rd:#1}51}
+\def\renderingoptions#1{\filterfromvalue{\??rd:#1}55}
+
+\setexecutecommandcheck {startrendering} \checkrendering
+\setexecutecommandcheck {stoprendering} \checkrendering
+\setexecutecommandcheck {pauserendering} \checkrendering
+\setexecutecommandcheck {resumerendering} \checkrendering
+
+% by using a nice trick (used in other places of context as well) we
+% can easily overload the default size to match the opbject size
+
+\def\renderingwidth {8cm}
+\def\renderingheight{6cm}
+
+\def\definerenderingwindow
+ {\dodoubleempty\dodefinerenderingwindow}
+
+\def\dodefinerenderingwindow[#1][#2]%
+ {\presetlocalframed[\??rw#1]%
+ \getparameters%
+ [\??rw#1]%
+ [\c!openpaginaactie=,\c!sluitpaginaactie=,%
+ \c!breedte=\renderingwidth,\c!hoogte=\renderingheight,%
+ #2]}
+
+\def\setuprenderingwindow
+ {\dodoubleargument\dosetuprenderingwindow}
+
+\def\dosetuprenderingwindow[#1]%
+ {\getparameters[\??rw#1]}
+
+\def\placerenderingwindow
+ {\dodoubleempty\doplacerenderingwindow}
+
+\def\doplacerenderingwindow[#1][#2]%
+ {\bgroup
+ \edef\currentrendering{\ifsecondargument#2\else#1\fi}%
+ \ifcase\renderingtype\currentrendering\or
+ % a file
+ \or
+ % an object
+ \getobjectdimensions{IRO}\currentrendering
+ \scratchdimen\objectheight
+ \advance\scratchdimen\objectdepth
+ \edef\renderingheight{\the\scratchdimen}%
+ \edef\renderingwidth{\objectwidth}%
+ \fi
+ % create fall back if needed
+ \doifdefinedelse{\??rw#1\c!breedte}
+ {\def\currentrenderingwindow{#1}}
+ {\let\currentrenderingwindow\s!default
+ \definerenderingwindow[\currentrenderingwindow]}%
+ \checkrendering\currentrendering
+ \handlereferenceactions{\getvalue{\??rw\currentrenderingwindow\c!openpaginaactie }}\dosetuprenderingopenpageaction
+ \handlereferenceactions{\getvalue{\??rw\currentrenderingwindow\c!sluitpaginaactie}}\dosetuprenderingclosepageaction
+ \localframed
+ [\??rw\currentrenderingwindow][\c!offset=\v!overlay]%
+ {\expanded{\doinsertrenderingwindow
+ \noexpand\currentrendering\hsize\vsize{\renderingoptions\currentrendering}}}%
+ \egroup}
+
+% todo:
+%
+% \setinternalrendering[example-1][options]{}
+
+% test file:
+%
+% \definerenderingwindow
+% [example]
+% [width=320pt,height=150pt,frame=off,
+% background=color,backgroundcolor=gray,
+% openpageaction=StartCurrentRendering,
+% closepageaction=NextPage]% StopCurrentRendering]
+%
+% \useexternalrendering[example-1][audio/mpeg] [eldorado.mp3]
+% \useexternalrendering[example-2][audio/mpeg] [myst-12.mp3]
+% \useexternalrendering[example-3][application/x-shockwave-flash][http://localhost/mb.swf] [auto]
+% \useexternalrendering[example-4][application/x-shockwave-flash][celebration.swf]
+% \useexternalrendering[example-5][video/quicktime] [p1000726.mov]
+% \useexternalrendering[example-6][application/smil] [quadratic_map.smi]
+%
+% \def\renderingmenu[#1]%
+% {\hbox
+% {\setupbuttons[width=2.5em]%
+% \button{\symbol[StartRendering]} [StartRendering{#1}]\enspace
+% \button{\symbol[StopRendering]} [StopRendering{#1}]\enspace
+% \button{\symbol[PauseRendering]} [PauseRendering{#1}]\enspace
+% \button{\symbol[ResumeRendering]}[ResumeRendering{#1}]}}
+%
+% \renderingmenu[example-1]\blank
+% \renderingmenu[example-2]\blank
+% \renderingmenu[example-3]\blank
+% \renderingmenu[example-4] \placefigure{A ShockWave}{\placerenderingwindow[example][example-4]} \page
+% \renderingmenu[example-5] \placefigure{A Movie}{\placerenderingwindow[example][example-5]} \page
+% \renderingmenu[example-6] \placefigure{A Smile}{\placerenderingwindow[example][example-6]}
+
% will be a MyWay
%
% \setuplayout[grid=yes] \setupcaption[figure][inbetween=] \useMPlibrary[dum] \setupcolors[state=start]
@@ -363,6 +741,13 @@
%
% \stoptext
+% funny, as field action with e.g. dissolve ... only the field dissolves, bug?
+
+\setglobalsystemreference\rt!exec{Transition}{transition}
+
+%def\PDFexecutetransition {/Trans /Trans <</Type /Trans \executeifdefined{PDFpage\argumentA}\PDFpagereplace>>}
+\def\PDFexecutetransition {/Trans /Trans <<\executeifdefined{PDFpage\argumentA}\PDFpagereplace>>}
+
% new, continuous blocks, \som \par \startdoorlopendblok ...
% \startitemize
@@ -886,10 +1271,12 @@
\let\figuredescription\empty
+% beware, changing this will break some code (like pos/backgrounds)
+
\newtoks\everyfirstparagraphintro
\newtoks\everynextparagraphintro
-\chardef\everyparagraphintro=0
+\chardef\everyparagraphintro\zerocount
\def\setupparagraphintro
{\dodoubleempty\dosetupparagraphintro}
@@ -897,14 +1284,14 @@
\def\dosetupparagraphintro[#1][#2]%
{\processallactionsinset
[#1]
- [ \v!reset=>\global\chardef\everyparagraphintro0
+ [ \v!reset=>\global\chardef\everyparagraphintro\zerocount
\global\everyfirstparagraphintro\emptytoks
\global\everynextparagraphintro \emptytoks,
- \v!eerste=>\global\chardef\everyparagraphintro1
+ \v!eerste=>\global\chardef\everyparagraphintro\plusone
\doglobal\appendtoks#2\to\everyfirstparagraphintro,
- \v!volgende=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro=2\fi
+ \v!volgende=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro\plusone\fi
\doglobal\appendtoks#2\to\everynextparagraphintro,
- \v!elk=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro=2\fi
+ \v!elk=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro\plustwo\fi
\doglobal\appendtoks#2\to\everyfirstparagraphintro
\doglobal\appendtoks#2\to\everynextparagraphintro]}
@@ -913,7 +1300,7 @@
% no data
\or
% first data
- \global\chardef\everyparagraphintro2
+ \global\chardef\everyparagraphintro\plustwo
\scratchtoks\everyfirstparagraphintro
\global\everyfirstparagraphintro\emptytoks
\or
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 71c4ed43e..bd29572bc 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -15,7 +15,7 @@
\catcode`\{=1 \catcode`\}=2
-\def\contextversion{2004.1.16}
+\def\contextversion{2004.3.9}
%D Welcome to the main module. When this module is ran through
%D \type{initex} or \type{tex -i} or \type{whatevertex} using
@@ -306,12 +306,12 @@
\input meta-xml.tex
-%D The next two modules implement some additional
-%D functionality concenring classes of documents and output.
-%D These modules probably will be replaced some day.
-
-\input docs-ini.tex
-\input list-ini.tex
+% %D The next two modules implement some additional
+% %D functionality concerning classes of documents and output.
+% %D These modules probably will be replaced some day.
+%
+% \input docs-ini.tex
+% \input list-ini.tex
%D \TEX\ related logo's are always typeset in a special way.
%D Here they come:
diff --git a/tex/context/base/core-buf.tex b/tex/context/base/core-buf.tex
index a37249198..37e284ab5 100644
--- a/tex/context/base/core-buf.tex
+++ b/tex/context/base/core-buf.tex
@@ -1,6 +1,6 @@
%D \module
%D [ file=core-buf,
-%D version=2000.01.05,
+%D version=2000.01.05,
%D title=\CONTEXT\ Core Macros,
%D subtitle=Buffers and Blockmoves,
%D author=Hans Hagen,
@@ -8,10 +8,10 @@
%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.
-% investigate etex's \readline and \scantokens
+% investigate etex's \readline and \scantokens
\writestatus{loading}{Context Core Macros / Buffers and Blockmoves}
@@ -127,9 +127,9 @@
12: -- sarit peste
\stopmessages
-\unprotect
+\unprotect
-% more accurate
+% more accurate
%
% \@EA\convertcommand\csname\e!start\v!buffer\endcsname\to\beginofblock % else a space
% \@EA\convertcommand\csname\e!stop\v!buffer \endcsname\to\endofblock
@@ -148,8 +148,8 @@
% \hskip-3em%
% \hbox to 3em{\hss\NOfLines\hskip1em}}
-%D For Willy's nested commented buffers, we need the \type
-%D {\delcharacter} trick.
+%D For Willy's nested commented buffers, we need the \type
+%D {\delcharacter} trick.
%\def\processnextbufferline#1% needs testing ! ! ! !
% {\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run
@@ -157,7 +157,7 @@
% \doifinstringelse{\delcharacter\texcommentsymbol}{\delcharacter\next}
% {\let\next\secondoftwoarguments}
% {\doifincsnameelse\endofblock\next
-% {\ifnum\nestedbufferlevel=\zerocount
+% {\ifnum\nestedbufferlevel=\zerocount
% \let\next\firstoftwoarguments
% \else
% \decrement\nestedbufferlevel\relax
@@ -169,13 +169,13 @@
% {\let\next\secondoftwoarguments}}}%
% \next}
-\long\def\processnextbufferline#1%
+\long\def\processnextbufferline#1%
{\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run
\convertargument#1 \to\next
\doifinstringelse{\delcharacter\texcommentsymbol}{\delcharacter\next}
{\secondoftwoarguments}
{\doifincsnameelse\endofblock\next
- {\ifnum\nestedbufferlevel=\zerocount
+ {\ifnum\nestedbufferlevel=\zerocount
\expandafter\firstoftwoarguments
\else
\decrement\nestedbufferlevel\relax
@@ -191,7 +191,7 @@
\obeylines % nodig, anders gaat 't fout als direct \starttabel (bv)
\doquadrupleempty\dodostartbuffer}
-\def\dodostartbuffer[#1][#2][#3][#4]% upward compatible
+\def\dodostartbuffer[#1][#2][#3][#4]% upward compatible
{\iffourthargument
\def\next{\dododostartbuffer[#1][#2][#3][#4]}%
\else
@@ -203,18 +203,18 @@
{%\showmessage\m!systems{15}{#2}%
\doifelsevalue{\??bu#1\c!alinea}\v!ja
{\segmentatebuffertrue}
- {\doifnumberelse{\getvalue{\??bu#1\c!alinea}}
+ {\doifnumberelse{\getvalue{\??bu#1\c!alinea}}
\segmentatebuffertrue\segmentatebufferfalse}%
\doifelse{#4}{}
{\letbeundefined{\e!stop\v!buffer}% % \let\stopbuffer=\relax % \undefined
\@EA\@EA\@EA\convertargument\@EA\e!start\v!buffer\to\beginofblock % else a space
- \@EA\@EA\@EA\convertargument\@EA\e!stop\v!buffer\to\endofblock
+ \@EA\@EA\@EA\convertargument\@EA\e!stop \v!buffer\to\endofblock
\let\processnextblockline\processnextbufferline}
{\letbeundefined{#4}% \letvalue{#4}=\relax % \undefined
\@EA\convertargument\csname#3\endcsname\to\beginofblock
\@EA\convertargument\csname#4\endcsname\to\endofblock}%
\def\closeblock
- {\ifsegmentatebuffer
+ {\ifsegmentatebuffer
\immediate\write\tmpblocks{\string\stopbufferparagraph}%
\fi
\immediate\closeout\tmpblocks
@@ -225,7 +225,7 @@
\immediate\openout\tmpblocks\TEXbufferfile\jobname}
{\message{<\TEXbufferfile{#2}>}%
\immediate\openout\tmpblocks\TEXbufferfile{#2}}%
- \ifsegmentatebuffer
+ \ifsegmentatebuffer
\immediate\write\tmpblocks{\string\startbufferparagraph}%
\fi
\newcounter\nestedbufferlevel
@@ -270,7 +270,7 @@
\dobuffer{16}[#2]\readjobfile
\getvalue{\??bu#1\c!na}}
-\let\getbuffer \processTEXbuffer % handy
+\let\getbuffer \processTEXbuffer % handy
\let\haalbuffer\processTEXbuffer % will move to mult-com.tex
\def\typebuffer
@@ -323,7 +323,7 @@
{\setbuffer[\iffirstargument#1\else\jobname\fi]#2\endbuffer}
% \long\def\startcrap#1\stopcrap
-% {\usememorybuffers#1\usefilebuffers} % or {{...}}
+% {\usememorybuffers#1\usefilebuffers} % or {{...}}
%
% \startcrap
% \startbuffer
@@ -332,11 +332,11 @@
% \placefigure{crap}{\getbuffer}
% \stopcrap
-% TODO: no grouping due to sidefloats
+% TODO: no grouping due to sidefloats
\expandafter \convertargument \gobbleoneargument @ \to \emptybufferline
-\newif\ifsegmentatebuffer
+\newif\ifsegmentatebuffer
\newif\ifemptybufferline
\def\skippedbufferparagraphs{0}
@@ -349,7 +349,7 @@
\def\getbufferparagraphs
{\dodoubleempty\dogetbufferparagraphs}
-\def\dosetbufferoffset#1%
+\def\dosetbufferoffset#1%
{\doifnumberelse{\getvalue{\??bu#1\c!alinea}}
{\currentbufferparagraph-\getvalue{\??bu#1\c!alinea}}
{\currentbufferparagraph \zerocount}%
@@ -358,14 +358,14 @@
\def\dogetbufferparagraphs[#1][#2]%
{\iffirstargument
\ifsecondargument
- \dosetbufferoffset{#1}%
+ \dosetbufferoffset{#1}%
\doifelse{#2}\v!alles
{\def\startbufferparagraph{\normalbufferparagraph{#1}}}
{\def\startbufferparagraph{\filterbufferparagraph{#1}{#2}}}%
\def\stopbufferparagraph{\dostopbufferparagraph{#1}}%
\def\next{\getparagraphedbuffer[#1]}%
\else
- \dosetbufferoffset\empty
+ \dosetbufferoffset\empty
\def\startbufferparagraph{\filterbufferparagraph{}{#1}}%
\def\stopbufferparagraph{\dostopbufferparagraph{}}%
\def\next{\getparagraphedbuffer[]}%
@@ -400,7 +400,7 @@
\ifnum\currentbufferparagraph>\zerocount
\doifinsetelse{\the\currentbufferparagraph}{#2}
{\let\next\dostartbufferparagraph}
- {\let\next\fakebufferparagraph}%
+ {\let\next\fakebufferparagraph}%
\else
\let\next\gobblebufferparagraph
\fi
@@ -434,7 +434,7 @@
{\expanded{\setvalue{\??se\s!old#2}{\@@filterheadpart[#1]}}%
\doifnot{#2}\lastsection
{\expanded{\dodosetblockcounters[\@@filtertailpart[#1]]}%
- {\getvalue{\??se#2\c!na}}}} % ????
+ {\getvalue{\??se#2\c!na}}}} % ????
\def\dosetblockcounters[#1]%
{\ifblockpermitted
@@ -451,7 +451,7 @@
\@EA\dosetblockcounters\@EA[\blockstatus]%
\fi}
-\def\getblockstatus#1% is this still ok
+\def\getblockstatus#1% is this still ok
{\dosetfilterlevel{\getvalue{\??by\@@bscriterium}}\empty
\expanded{\doifblklevelelse[#1\sectionseparator\sectionseparator0]}
{\global\blockpermittedtrue}
@@ -496,9 +496,9 @@
% {\global\advance\blocklevel by #11
% \ifnum\blocklevel>2\relax\doingblockstrue\else\doingblocksfalse\fi}
%
-% oeps, got bugged
+% oeps, got bugged
-\def\setblocklevel#1% sign
+\def\setblocklevel#1% sign
{\global\advance\blocklevel #11
\ifcase\blocklevel\doingblocksfalse\else\doingblockstrue\fi}
@@ -511,7 +511,7 @@
\def\writetmpblock#1%
{\iftmpblockstarted
- \ifsegmentatebuffer
+ \ifsegmentatebuffer
\ifemptybufferline
\immediate\write\tmpblocks{\string\stopbufferparagraph }%
\immediate\write\tmpblocks{\string\startbufferparagraph}%
@@ -578,14 +578,14 @@
\endrestorecatcodes}
\def\setupcopyblock
- {\makeallother
+ {\makeallother
\obeylines}
\def\writeoutblocks
{\immediate\write\outblocks}
% readable
-%
+%
% \def\processnextblocklineAB#1#2#3%
% {\convertargument#1 \to\next
% \doifinstringelse\endofblockA\next
@@ -595,14 +595,14 @@
% {\def\next{#3}}}%
% \next}
%
-% faster
-%
+% faster
+%
% \def\processnextblocklineAB#1#2#3%
-% {\convertargument#1 \to\next % space is essential
+% {\convertargument#1 \to\next % space is essential
% \doifinstringelse\endofblockA\next
% {#2}{\doifinstringelse\endofblockB\next{#2}{#3}}}
%
-% even more
+% even more
\long\def\processnextblocklineAB#1% #2#3%
{\convertargument#1 \to\next
@@ -637,8 +637,8 @@
% {\def\next{#3}}%
% \fi
% \next}
-%
-% faster
+%
+% faster
\long\def\processnextblockline#1% #2#3%
{\convertargument#1 \to\next
@@ -748,7 +748,7 @@
\def\doverbergblok[#1][#2][#3]%
{\doifassignmentelse{#3}
{\dodoverbergblok[#1][#2][][#3]}
- {\dodoverbergblok[#1][#2][#3][]}}
+ {\dodoverbergblok[#1][#2][#3][]}}
\def\dodoverbergblok[#1][#2][#3][#4]%
{\doifelsenothing{#2}
@@ -808,7 +808,7 @@
\def\doexecuteloadedblock#1#2%
{\blockpermittedtrue % ?
\bgroup % before \c!voor (think of: \c!voor=\startitemize)
- \dosetupblockparameters[#1][#2]% voor 'voor'?
+ \dosetupblockparameters[#1][#2]% voor 'voor'?
\getvalue{\??tb#1\c!voor}%
\dostartattributes{\??tb#1}\c!letter\c!kleur\empty
\visibletrue
@@ -996,7 +996,7 @@
{\def\docommando##1%
{\setvalue{\e!beginvan##1}%
{\setblocklevel+\bgroup
- \obeylines % here, since we look ahead
+ \obeylines % here, since we look ahead
\dodoubleempty\dopasseerblok[##1]}%}%
\setvalue{\e!eindvan##1}%
{}}%
@@ -1023,4 +1023,4 @@
\c!voor=,
\c!na=]
-\protect \endinput
+\protect \endinput
diff --git a/tex/context/base/core-des.tex b/tex/context/base/core-des.tex
index 9a6c8dd3a..f33b11de1 100644
--- a/tex/context/base/core-des.tex
+++ b/tex/context/base/core-des.tex
@@ -167,23 +167,38 @@
\nobreak
\@@dodefinitie{#1}}
-\setvalue{@@definitie\v!inmarge}#1[#2]#3%
- {\@@dostartdefinitie{#1}[#2]{#3}%
- \noindent\ignorespaces
- \inmarge{\ifhbox\@@definitiebox\unhcopy\else\copy\fi\@@definitiebox}%
- \@@dodefinitie{#1}}
-
-\setvalue{@@definitie\v!inlinker}#1[#2]#3%
- {\@@dostartdefinitie{#1}[#2]{#3}%
- \noindent\ignorespaces
- \inlinker{\ifhbox\@@definitiebox\unhcopy\else\copy\fi\@@definitiebox}%
- \@@dodefinitie{#1}}
-
-\setvalue{@@definitie\v!inrechter}#1[#2]#3%
- {\@@dostartdefinitie{#1}[#2]{#3}%
+% \setvalue{@@definitie\v!inmarge}#1[#2]#3%
+% {\@@dostartdefinitie{#1}[#2]{#3}%
+% \noindent\ignorespaces
+% \inmarge{\ifhbox\@@definitiebox\unhcopy\else\copy\fi\@@definitiebox}%
+% \@@dodefinitie{#1}}
+%
+% \setvalue{@@definitie\v!inlinker}#1[#2]#3%
+% {\@@dostartdefinitie{#1}[#2]{#3}%
+% \noindent\ignorespaces
+% \inlinker{\ifhbox\@@definitiebox\unhcopy\else\copy\fi\@@definitiebox}%
+% \@@dodefinitie{#1}}
+%
+% \setvalue{@@definitie\v!inrechter}#1[#2]#3%
+% {\@@dostartdefinitie{#1}[#2]{#3}%
+% \noindent\ignorespaces
+% \inrechter{\ifhbox\@@definitiebox\unhcopy\else\copy\fi\@@definitiebox}%
+% \@@dodefinitie{#1}}
+
+\def\do@@definitie#1#2[#3]#4%
+ {\@@dostartdefinitie{#2}[#3]{#4}%
\noindent\ignorespaces
- \inrechter{\ifhbox\@@definitiebox\unhcopy\else\copy\fi\@@definitiebox}%
- \@@dodefinitie{#1}}
+ #1{\ifhbox\@@definitiebox\unhcopy\else\copy\fi\@@definitiebox}%
+ \@@dodefinitie{#2}}
+
+\setvalue{@@definitie\v!inmarge }{\do@@definitie\inmarge }
+\setvalue{@@definitie\v!inlinker }{\do@@definitie\inlinker }
+\setvalue{@@definitie\v!inrechter }{\do@@definitie\inrechter}
+\setvalue{@@definitie\v!marge }{\do@@definitie\inmarge }
+\setvalue{@@definitie\v!linkermarge }{\do@@definitie\inlinker }
+\setvalue{@@definitie\v!rechtermarge}{\do@@definitie\inrechter}
+\setvalue{@@definitie\v!binnenmarge }{\do@@definitie\inbinnen }
+\setvalue{@@definitie\v!buitenmarge }{\do@@definitie\inbuiten }
\def\@@definitieaanelkaarpassend#1[#2]#3%
{\@@dostartdefinitie{#1}[#2]{#3}%
diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex
index b52bdb334..cb018cbf9 100644
--- a/tex/context/base/core-fig.tex
+++ b/tex/context/base/core-fig.tex
@@ -847,7 +847,7 @@
% \edef#2{\the\scratchdimen}% oeps, \the vergeten
% \scratchdimen#3\points
% \divide\scratchdimen \!!ten
-% \edef#4{\@EA\withoutpt\@EA{\the\scratchdimen}}}
+% \edef#4{\withoutpt\the\scratchdimen}}
%
% more obscure but better:
@@ -870,7 +870,7 @@
\scratchdimen\the\scratchcounter\points
\divide\scratchdimen \!!ten
\fi
- \edef#4{\@EA\withoutpt\@EA{\the\scratchdimen}}}
+ \edef#4{\withoutpt\the\scratchdimen}}
\newbox\foundexternalfigure
@@ -942,6 +942,9 @@
\restorecatcodes % recently added; we presume local use
\def\@@eflabel{#2}%
\global\let\externalfigurelog\empty
+ \iftraceexternalfigures
+ \writestatus\m!figures{including \expandedfigurename}%
+ \fi
\getparameters
[\??ep]
[\c!e=\s!unknown,
@@ -1018,12 +1021,22 @@
{\doifobjectfoundelse{FIG}\@@efobjectname\donetrue\donefalse}
\donefalse}
\donefalse}%
- % redo message, only filename
+ % too strict:
+ % \doifparentfileelse\@@effilename
+ % {\@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes
+ % \let\@@efextension\empty
+ % \showmessage\m!figures9\@@effilename
+ % \donefalse}
+ % \donothing
+ % ok, but catcode problems with jobfilesuffix
+ \doifparentfileelse\@@effilename
+ {\@EA\removefromcommalist\@EA{\jobsuffix }\figuretypes
+ \@EA\removefromcommalist\@EA{\jobfilesuffix}\figuretypes}%
+ \donothing
+ % so we get:
\doifparentfileelse\@@effilename
- {\@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes
- \let\@@efextension\empty
- \showmessage\m!figures9\@@effilename
- \donefalse}
+ {\removefromcommalist{pdf}\figuretypes
+ \removefromcommalist{tex}\figuretypes}%
\donothing
\ifdone
\getobjectdimensions{FIG}\@@efobjectname
@@ -1204,9 +1217,9 @@
\hsize\figwid
\ifdone
\scratchdimen\scax\points\divide\scratchdimen \plushundred
- \edef\scax{\@EA\withoutpt\the\scratchdimen}%
+ \edef\scax{\withoutpt\the\scratchdimen}%
\scratchdimen\scay\points\divide\scratchdimen \plushundred
- \edef\scay{\@EA\withoutpt\the\scratchdimen}%
+ \edef\scay{\withoutpt\the\scratchdimen}%
%\schaal[\c!sx=\scax,\c!sy=\scay]{\dowithfigure{\getobject{FIG}{\@@efobjectname}}}%
\doscalenextbox\scax\scay\figwid\fighei{\dowithfigure{\getobject{FIG}{\@@efobjectname}}}%
\xdef\noffigurepages{\number\getvalue{\@@efobjectname\c!n}}%
@@ -1218,9 +1231,9 @@
\xdef\noffigurepages{\number\nofinsertpages}%
\else
\scratchdimen\scax\points\divide\scratchdimen \plushundred
- \edef\scax{\@EA\withoutpt\the\scratchdimen}%
+ \edef\scax{\withoutpt\the\scratchdimen}%
\scratchdimen\scay\points\divide\scratchdimen \plushundred
- \edef\scay{\@EA\withoutpt\the\scratchdimen}%
+ \edef\scay{\withoutpt\the\scratchdimen}%
%\schaal[\c!sx=\scax,\c!sy=\scay]{\dowithfigure{\box\foundexternalfigure}}%
\doscalenextbox\scax\scay\figwid\fighei{\dowithfigure{\box\foundexternalfigure}}%
\xdef\noffigurepages{\number\nofinsertpages}%
@@ -1762,8 +1775,8 @@
\linewidth\onepoint
\setuppositioning
[\c!eenheid=pt,
- \c!xschaal=\withoutpt{\the\efxsteps},
- \c!yschaal=\withoutpt{\the\efysteps},
+ \c!xschaal=\withoutpt\the\efxsteps,
+ \c!yschaal=\withoutpt\the\efysteps,
\c!factor=1]%
\ignorespaces#4%
\def\referring(##1,##2)##3(##4,##5)##6[##7]%
@@ -1812,9 +1825,9 @@
\position(0,0)
{\basegrid
[\c!nx=\@@exxmax,
- \c!dx=\withoutpt{\the\efxsteps},
+ \c!dx=\withoutpt\the\efxsteps,
\c!ny=\@@exymax,
- \c!dy=\withoutpt{\the\efysteps},
+ \c!dy=\withoutpt\the\efysteps,
\c!xstap=1,
\c!ystap=1,
\c!schaal=1,
@@ -1822,8 +1835,8 @@
\c!eenheid=pt]}%
\setuppositioning
[\c!eenheid=pt,
- \c!xschaal=\withoutpt{\the\efxsteps},
- \c!yschaal=\withoutpt{\the\efysteps},
+ \c!xschaal=\withoutpt\the\efxsteps,
+ \c!yschaal=\withoutpt\the\efysteps,
\c!factor=1]%
\linewidth\onepoint
\ignorespaces#4\relax
diff --git a/tex/context/base/core-fil.tex b/tex/context/base/core-fil.tex
index 8acbd878e..cb8f0ed1d 100644
--- a/tex/context/base/core-fil.tex
+++ b/tex/context/base/core-fil.tex
@@ -217,32 +217,6 @@
\def\MPgraphicfile {\bufferprefix mp\ifMPrun run\else graph\fi}
\def\convertMPcolorfile{\bufferprefix metacmyk.tmp}
-%D The next few macros ar eused for some internal (rather
-%D old already) extensions.
-
-\def\definieerfilegroep
- {\dodoubleargument\dodefinieerfilegroep}
-
-\def\dodefinieerfilegroep[#1][#2]%
- {\getparameters[\??fp#1][\c!file=#1,\c!voor=,\c!na=,#2]%
- \setvalue{\e!start#1}{\dostartfilegroep[#1]}}
-
-\def\dostartfilegroep%
- {\dodoubleargument\dodostartfilegroep}
-
-\def\dodostartfilegroep[#1][#2]%
- {\getvalue{\??fp#1\c!voor}%
- \setvalue{\e!stop#1}{\dostopfilegroep[#1][#2]}%
- \expanded{\dolaadfilegroep[\getvalue{\??fp#1\c!file}-#2]}%
- \getvalue{\e!start#1#2}}
-
-\def\dolaadfilegroep[#1-#2#3#4#5]%
- {\readsysfile{#1-#2#3#4}\donothing\donothing}
-
-\def\dostopfilegroep[#1][#2]%
- {\getvalue{\e!stop#1#2}%
- \getvalue{\??fp#1\c!na}}
-
%D To save memory, we implement some seldomly used commands
%D in a lazy way. Nota bene: such runtime definitions are
%D global.
@@ -281,4 +255,4 @@
%D This module will be perfected / changed / weeded.
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/core-fld.tex b/tex/context/base/core-fld.tex
index a9b1649fc..cf11c889a 100644
--- a/tex/context/base/core-fld.tex
+++ b/tex/context/base/core-fld.tex
@@ -56,119 +56,160 @@
%D The interface to the specials. DEFAULT NOG ANDERS
+\def\preparefieldvariables % evt \def's at the outer level (test) or \edef's here for fast testing
+ {\let\@@DriverFieldNumber \@@fdn
+ \let\@@DriverFieldStyle \@@fdletter
+ \let\@@DriverFieldColor \@@fdkleur
+ \let\@@DriverFieldBackgroundColor\@@fdveldachtergrondkleur
+ \let\@@DriverFieldFrameColor \@@fdveldkaderkleur
+ \let\@@DriverFieldLayer \@@fdveldlaag
+ \let\@@DriverFieldOption \@@fdoptie
+ \let\@@DriverFieldAlign \@@fduitlijnen
+ \let\@@DriverFieldClickIn \@@fdklikin
+ \let\@@DriverFieldClickOut \@@fdklikuit
+ \let\@@DriverFieldRegionIn \@@fdgebiedin
+ \let\@@DriverFieldRegionOut \@@fdgebieduit
+ \let\@@DriverFieldAfterKey \@@fdnatoets
+ \let\@@DriverFieldFormat \@@fdformatteer
+ \let\@@DriverFieldValidate \@@fdvalideer
+ \let\@@DriverFieldCalculate \@@fdbereken
+ \let\@@DriverFieldFocusIn \@@fdfocusin
+ \let\@@DriverFieldFocusOut \@@fdfocusuit}
+
+% todo : remove arguments, consider DriverField a namespace
+
\def\presetlinefield
- {\dopresetlinefield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdn}
- {\@@fdletter,\@@fdkleur,\@@fdveldachtergrondkleur,\@@fdveldkaderkleur}
- {\@@fdoptie}
- {\@@fduitlijnen}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\preparefieldvariables
+ \dopresetlinefield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldNumber}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldAlign}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
\def\presettextfield
- {\dopresettextfield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdn}
- {\@@fdletter,\@@fdkleur,\@@fdveldachtergrondkleur,\@@fdveldkaderkleur}
- {\@@fdoptie}
- {\@@fduitlijnen}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\preparefieldvariables
+ \dopresettextfield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldNumber}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldAlign}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\presetchoicefield
- {\dopresetchoicefield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdletter,\@@fdkleur,\@@fdveldachtergrondkleur,\@@fdveldkaderkleur}
- {\@@fdoptie}
- {\@@FieldValues}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\preparefieldvariables
+ \dopresetchoicefield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\presetpopupfield
- {\dopresetpopupfield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdletter,\@@fdkleur,\@@fdveldachtergrondkleur,\@@fdveldkaderkleur}
- {\@@fdoptie}
- {\@@FieldValues}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\preparefieldvariables
+ \dopresetpopupfield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\presetcombofield
- {\dopresetcombofield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdletter,\@@fdkleur,\@@fdveldachtergrondkleur,\@@fdveldkaderkleur}
- {\@@fdoptie}
- {\@@FieldValues}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\preparefieldvariables
+ \dopresetcombofield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\presetcheckfield
- {\presetfieldsymbols[\@@FieldValues]%
+ {\preparefieldvariables
+ \presetfieldsymbols[\@@DriverFieldValues]%
\dopresetcheckfield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdoptie}
- {\@@FieldValues}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\presetpushfield
- {%\edef\@@FieldValues{{\@@FieldValues}}% makes sure {a,b,c} is passed
- \presetfieldsymbols[\@@FieldValues]%
+ {\preparefieldvariables
+ %\edef\@@DriverFieldValues{{\@@DriverFieldValues}}% makes sure {a,b,c} is passed
+ \presetfieldsymbols[\@@DriverFieldValues]%
\dopresetpushfield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdoptie}
- {\@@FieldValues}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\presetradiofield
- {\presetfieldsymbols[\@@FieldValues]%
+ {\preparefieldvariables
+ \presetfieldsymbols[\@@DriverFieldValues]%
\dopresetradiofield
- {\@@FieldName}
- {\@@FieldWidth}
- {\@@FieldHeight}
- {\@@FieldDefault}
- {\@@fdoptie}
- {\@@FieldRoot}
- {\@@FieldValues}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldRoot}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\presetradiorecord
- {\dopresetradiorecord
- {\@@FieldName}
- {\@@FieldDefault}
- {\@@fdoptie}
- {\@@FieldKids}
- {\@@fdklikin,\@@fdklikuit,\@@fdgebiedin,\@@fdgebieduit,\@@fdnatoets,%
- \@@fdformatteer,\@@fdvalideer,\@@fdbereken,\@@fdfocusin,\@@fdfocusuit}}
+ {\preparefieldvariables
+ \dopresetradiorecord
+ {\@@DriverFieldName}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldKids}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
\def\setfieldmodes#1#2#3%
- {\xdef\@@FieldMode{#1}% % 0 1 2 3
- \xdef\@@FieldFree{#2}% % 0 1
- \xdef\@@FieldAuto{#3}} % 0 1
+ {\xdef\@@DriverFieldMode{#1}% % 0 1 2 3
+ \xdef\@@DriverFieldFree{#2}% % 0 1
+ \xdef\@@DriverFieldAuto{#3}} % 0 1
\newevery\everysetfield\relax
@@ -186,22 +227,22 @@
\egroup}
\def\dosetfield#1#2#3#4#5#6#7#8#9%
- {\xdef\@@FieldName {#1}%
- \xdef\@@FieldType {#2}%
- \xdef\@@FieldRoot {#3}%
- \xdef\@@FieldParent {#4}%
- \xdef\@@FieldKids {#5}%
- \xdef\@@FieldGroup {#6}%
+ {\xdef\@@DriverFieldName {#1}%
+ \xdef\@@DriverFieldType {#2}%
+ \xdef\@@DriverFieldRoot {#3}%
+ \xdef\@@DriverFieldParent {#4}%
+ \xdef\@@DriverFieldKids {#5}%
+ \xdef\@@DriverFieldGroup {#6}%
\setfieldmodes #7%
\bgroup
\def\par{\string\n\string\n}%
- \xdef\@@FieldValues {#8}%
- \xdef\@@FieldDefault{#9}%
+ \xdef\@@DriverFieldValues {#8}%
+ \xdef\@@DriverFieldDefault{#9}%
\egroup}
\def\changefield#1%
- {\setfield{#1}\@@FieldType\@@FieldRoot\@@FieldParent\@@FieldKids\@@FieldGroup
- {\@@FieldMode\@@FieldFree\@@FieldAuto}\@@FieldValues\@@FieldDefault}
+ {\setfield{#1}\@@DriverFieldType\@@DriverFieldRoot\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldGroup
+ {\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}\@@DriverFieldValues\@@DriverFieldDefault}
\def\getfield#1% name
{\doifundefinedelse{fielddata#1}
@@ -247,14 +288,14 @@
\immediate\write\scratchwrite{use \tracefieldstrue}%
\else
\def\normalizedfieldmode##1##2##3%
- {\edef\@@FieldMode
+ {\edef\@@DriverFieldMode
{\ifcase##1 loner \or parent \or clone \or copy \fi
\ifcase##2 \else(done)\fi}}
\def\dosetfield##1##2##3##4##5##6##7##8##9%
{\normalizedfieldmode##7%
\immediate\write\scratchwrite
{N=##1 / T=##2 / R=##3 / P=##4 / K=##5 / G=##6 /
- M=\@@FieldMode\space/ V=##8 / D=##9}}%
+ M=\@@DriverFieldMode\space/ V=##8 / D=##9}}%
\processcommacommand[\collectedfields]\getfield
\fi
\immediate\closeout\scratchwrite
@@ -298,14 +339,14 @@
%D
%D \starttypen
%D \def\getmainfieldkids#1%
-%D {\let\@@FieldKids\empty
+%D {\let\@@DriverFieldKids\empty
%D \ifdefinemainfield
%D \definetwopasslist{fld:#1}% defined by system
%D \doloop
%D {\gettwopassdata{fld:#1}%
%D \iftwopassdatafound
-%D %\addtocommalist\twopassdata\@@FieldKids
-%D \appendtocommalist\twopassdata\@@FieldKids
+%D %\addtocommalist\twopassdata\@@DriverFieldKids
+%D \appendtocommalist\twopassdata\@@DriverFieldKids
%D \else
%D \exitloop
%D \fi}%
@@ -318,10 +359,10 @@
%D
%D \starttypen
%D \def\getmainfieldkids#1%
-%D {\let\@@FieldKids\empty
+%D {\let\@@DriverFieldKids\empty
%D \ifdefinemainfield
%D \definerawpasslist{fld:#1}% runtime defined by system
-%D \moverawpasslist{fld:#1}\@@FieldKids
+%D \moverawpasslist{fld:#1}\@@DriverFieldKids
%D \fi}
%D \stoptypen
%D
@@ -372,10 +413,10 @@
{\checkfieldreferences
\ifdefinemainfield
\doifundefinedelse{\r!widget#1}%
- {\let\@@FieldKids\empty}
- {\@EA\let\@EA\@@FieldKids\csname\r!widget#1\endcsname}%
+ {\let\@@DriverFieldKids\empty}
+ {\@EA\let\@EA\@@DriverFieldKids\csname\r!widget#1\endcsname}%
\else
- \let\@@FieldKids\empty
+ \let\@@DriverFieldKids\empty
\fi}
\resetfieldreferences
@@ -419,36 +460,36 @@
{\doifundefined{fielddata\currentfieldname}
{\getmainfieldkids\currentfieldname
\ifdefinemainfield
- \ifx\@@FieldKids\empty
- \let\@@FieldMode\fieldlonermode
+ \ifx\@@DriverFieldKids\empty
+ \let\@@DriverFieldMode\fieldlonermode
\else
- \let\@@FieldMode\fieldparentmode
+ \let\@@DriverFieldMode\fieldparentmode
\fi
- \def\@@FieldAuto{1}%
+ \def\@@DriverFieldAuto{1}%
\else
- \let\@@FieldMode\fieldlonermode
- \def\@@FieldAuto{0}%
+ \let\@@DriverFieldMode\fieldlonermode
+ \def\@@DriverFieldAuto{0}%
\fi
- \def\@@FieldFree{0}%
+ \def\@@DriverFieldFree{0}%
\getvalue{define#2field}{\currentfieldname}{#2}{#3}{#4}{#5}}}%
\else
\writestatus\m!fields{pass fieldname and fieldtype}%
\fi}
\def\definelinefield#1#2#3#4#5%
- {\setfield{#1}{#2}{}{}{\@@FieldKids}{#3}{\@@FieldMode\@@FieldFree\@@FieldAuto}{}{#4}}
+ {\setfield{#1}{#2}{}{}{\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{#4}}
\let\definetextfield=\definelinefield
\def\definechoicefield#1#2#3#4#5%
{\doifelsenothing{#4}
- {\def\@@FieldValues{yes,no}}
- {\def\@@FieldValues{#4}}%
+ {\def\@@DriverFieldValues{yes,no}}
+ {\def\@@DriverFieldValues{#4}}%
\doifelsenothing{#5}
- {\dogetcommacommandelement2\from\@@FieldValues\to\@@FieldDefault
- \dogetcommacommandelement1\from\@@FieldDefault\to\@@FieldDefault}
- {\def\@@FieldDefault{#5}}%
- \setfield{#1}{#2}{}{}{\@@FieldKids}{#3}{\@@FieldMode\@@FieldFree\@@FieldAuto}{\@@FieldValues}{\@@FieldDefault}}
+ {\dogetcommacommandelement2\from\@@DriverFieldValues\to\@@DriverFieldDefault
+ \dogetcommacommandelement1\from\@@DriverFieldDefault\to\@@DriverFieldDefault}
+ {\def\@@DriverFieldDefault{#5}}%
+ \setfield{#1}{#2}{}{}{\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{\@@DriverFieldValues}{\@@DriverFieldDefault}}
\let\definepopupfield=\definechoicefield
\let\definecombofield=\definechoicefield
@@ -456,13 +497,13 @@
%\def\definecheckfield#1#2#3#4#5%
% {\doifelsenothing{#4}
% {\definedefaultsymbols
-% \def\@@FieldValues{defaultyes}}
-% {\def\@@FieldValues{#4}}%
+% \def\@@DriverFieldValues{defaultyes}}
+% {\def\@@DriverFieldValues{#4}}%
% \doifelsenothing{#5}
-% {\dogetcommacommandelement2\from\@@FieldValues\to\@@FieldDefault
-% \dogetcommacommandelement1\from\@@FieldDefault\to\@@FieldDefault}
-% {\def\@@FieldDefault{#5}}%
-% \setfield{#1}{#2}{}{}{\@@FieldKids}{#3}{\@@FieldMode\@@FieldFree\@@FieldAuto}{\@@FieldValues}{\@@FieldDefault}}
+% {\dogetcommacommandelement2\from\@@DriverFieldValues\to\@@DriverFieldDefault
+% \dogetcommacommandelement1\from\@@DriverFieldDefault\to\@@DriverFieldDefault}
+% {\def\@@DriverFieldDefault{#5}}%
+% \setfield{#1}{#2}{}{}{\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{\@@DriverFieldValues}{\@@DriverFieldDefault}}
%D Since these fields have an on/off state only, we pass 1/0
%D to the driver as default values.
@@ -470,18 +511,18 @@
\def\definecheckfield#1#2#3#4#5%
{\doifelsenothing{#4}
{\definedefaultsymbols
- \def\@@FieldValues{defaultyes}}
- {\def\@@FieldValues{#4}}%
+ \def\@@DriverFieldValues{defaultyes}}
+ {\def\@@DriverFieldValues{#4}}%
\doifelsenothing{#5}
- {\def\@@FieldDefault{2}}
- {\dogetcommacommandelement1\from\@@FieldValues\to\@@FieldDefault
- \doifinstringelse{#5}{\@@FieldDefault}
- {\def\@@FieldDefault{1}}
- {\def\@@FieldDefault{0}}}%
+ {\def\@@DriverFieldDefault{2}}
+ {\dogetcommacommandelement1\from\@@DriverFieldValues\to\@@DriverFieldDefault
+ \doifinstringelse{#5}{\@@DriverFieldDefault}
+ {\def\@@DriverFieldDefault{1}}
+ {\def\@@DriverFieldDefault{0}}}%
\setfield
- {#1}{#2}{}{}{\@@FieldKids}{#3}%
- {\@@FieldMode\@@FieldFree\@@FieldAuto}%
- {\@@FieldValues}{\@@FieldDefault}}
+ {#1}{#2}{}{}{\@@DriverFieldKids}{#3}%
+ {\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}%
+ {\@@DriverFieldValues}{\@@DriverFieldDefault}}
\let\definepushfield=\definecheckfield
@@ -493,24 +534,24 @@
{\def\SavedFieldDefault{#5}}%
% when opt works
% \@EA\beforesplitstring\SavedFieldDefault\at=>\to\SavedFieldDefault
- \ifx\@@FieldKids\empty
- \setfield{#1}{#2}{}{}{#4}{#3}{\@@FieldMode\@@FieldFree\@@FieldAuto}{}{\SavedFieldDefault}%
+ \ifx\@@DriverFieldKids\empty
+ \setfield{#1}{#2}{}{}{#4}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\SavedFieldDefault}%
\else
- \setfield{#1}{#2}{}{}{#4,\@@FieldKids}{#3}{\@@FieldMode\@@FieldFree\@@FieldAuto}{}{\SavedFieldDefault}%
+ \setfield{#1}{#2}{}{}{#4,\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\SavedFieldDefault}%
\fi
%
\def\docommando##1%
{\doifelse{##1}\SavedFieldDefault
- {\def\@@FieldDefault{##1}}%
- {\let\@@FieldDefault\empty}%
- \setfield{##1}{#2}{#1}{}{}{#3}{\@@FieldMode\@@FieldFree\@@FieldAuto}{}{\@@FieldDefault}}%
+ {\def\@@DriverFieldDefault{##1}}%
+ {\let\@@DriverFieldDefault\empty}%
+ \setfield{##1}{#2}{#1}{}{}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\@@DriverFieldDefault}}%
% when opt works
% \def\docommando##1%
% {\@EA\beforesplitstring##1\at=>\to\FieldValue
% \doifelse\FieldValue\SavedFieldDefault
-% {\let\@@FieldDefault\FieldValue}%
-% {\let\@@FieldDefault\empty}%
-% \setfield\FieldValue{#2}{#1}{}{}{#3}{\@@FieldMode\@@FieldFree\@@FieldAuto}{}{\@@FieldDefault}}%
+% {\let\@@DriverFieldDefault\FieldValue}%
+% {\let\@@DriverFieldDefault\empty}%
+% \setfield\FieldValue{#2}{#1}{}{}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\@@DriverFieldDefault}}%
\processcommalist[#4]\docommando
\else
\writestatus\m!fields{pass values too}%
@@ -523,15 +564,15 @@
{\ifsecondargument
\def\docommando##1%
{\getfield{##1}%
- \ifx\@@FieldType\empty
+ \ifx\@@DriverFieldType\empty
\writestatus\m!fields{unknown field ##1}% to do
\else
\doifsomething{#2}
- {\edef\@@FieldGroup{#2}}%
+ {\edef\@@DriverFieldGroup{#2}}%
\doifelsenothing{#3}
{\definedefaultsymbols
- \def\@@FieldValues{defaultyes}}
- {\def\@@FieldValues{#3}}%
+ \def\@@DriverFieldValues{defaultyes}}
+ {\def\@@DriverFieldValues{#3}}%
\changefield{##1}%
\fi}%
\processcommalist[#1]\docommando
@@ -543,26 +584,26 @@
{\ifsecondargument
\getfield{#1}%
\iftrialtypesetting\else
- \ifx\@@FieldType\empty
+ \ifx\@@DriverFieldType\empty
\writestatus\m!fields{unknown field #1}%
\else
- \let\@@FieldMode=\fieldparentmode
- %\def\docommando##1{\addtocommalist{##1}\@@FieldKids}%
- \def\docommando##1{\appendtocommalist{##1}\@@FieldKids}%
+ \let\@@DriverFieldMode=\fieldparentmode
+ %\def\docommando##1{\addtocommalist{##1}\@@DriverFieldKids}%
+ \def\docommando##1{\appendtocommalist{##1}\@@DriverFieldKids}%
\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}}%
+ \let\@@DriverFieldAutoParent\@@DriverFieldAuto
+ \def\@@DriverFieldParent{#1}%
+ \let\@@DriverFieldKids\empty
+ \let\@@DriverFieldRoot\empty
+ \let\@@DriverFieldMode\fieldchildmode
+ \def\@@DriverFieldFree{0}%
+ \def\@@DriverFieldAuto{0}%
+ \doifsomething{#3}{\edef\@@DriverFieldGroup{#3}}%
+ \doifsomething{#4}{\edef\@@DriverFieldValues{#4}}%
\def\docommando##1%
- {\ifcase\@@FieldAutoParent\else
- \setmainfieldkid{\@@FieldParent}{##1}%
+ {\ifcase\@@DriverFieldAutoParent\else
+ \setmainfieldkid{\@@DriverFieldParent}{##1}%
\fi
\changefield{##1}}%
\processcommalist[#2]\docommando
@@ -579,24 +620,24 @@
{\ifsecondargument
\getfield{#1}%
\iftrialtypesetting\else
- \ifx\@@FieldType\empty
+ \ifx\@@DriverFieldType\empty
\writestatus\m!fields{unknown field #1}%
\else
- \let\@@FieldMode\fieldparentmode
- %\def\docommando##1{\addtocommalist{##1}\@@FieldKids}%
- \def\docommando##1{\appendtocommalist{##1}\@@FieldKids}%
+ \let\@@DriverFieldMode\fieldparentmode
+ %\def\docommando##1{\addtocommalist{##1}\@@DriverFieldKids}%
+ \def\docommando##1{\appendtocommalist{##1}\@@DriverFieldKids}%
\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}%
+ \let\@@DriverFieldAutoParent=\@@DriverFieldAuto
+ \def\@@DriverFieldParent{#1}%
+ \let\@@DriverFieldKids\empty
+ \let\@@DriverFieldRoot\empty
+ \let\@@DriverFieldMode\fieldcopymode
+ \def\@@DriverFieldFree{0}%
+ \def\@@DriverFieldAuto{0}%
\def\docommando##1%
- {\ifcase\@@FieldAutoParent\else
- \setmainfieldkid{\@@FieldParent}{##1}%
+ {\ifcase\@@DriverFieldAutoParent\else
+ \setmainfieldkid{\@@DriverFieldParent}{##1}%
\fi
\changefield{##1}}%
\processcommalist[#2]\docommando
@@ -620,26 +661,26 @@
\bgroup
\getfield{#2}%
\ifsecondargument
- \def\@@FieldLabel{#3}%
+ \def\@@DriverFieldLabel{#3}%
\else
- \let\@@FieldLabel\@@FieldName
+ \let\@@DriverFieldLabel\@@DriverFieldName
\fi
- \ifx\@@FieldType\empty
+ \ifx\@@DriverFieldType\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][][][]}%
+ \else\ifcase\@@DriverFieldFree\relax
+ \doifdefinedelse{\strippedcsname\setupfield\@@DriverFieldGroup}
+ {\let\dosetupfield=#1\getvalue{\strippedcsname\setupfield\@@DriverFieldGroup}}
+ {#1[\@@DriverFieldName][\v!label,\v!kader,\v!horizontaal][][][]}%
\iftrialtypesetting\else
- \def\@@FieldFree{1}%
+ \def\@@DriverFieldFree{1}%
\changefield{#2}%
\fi
- \else\ifcase\@@FieldAuto\relax
+ \else\ifcase\@@DriverFieldAuto\relax
% \writestatus\m!fields{field #2 already typeset}%
\else
% \writestatus\m!fields{field #2 automatically copied}%
\nextsystemfield
- \copyfield[\@@FieldName][\currentsystemfield]%
+ \copyfield[\@@DriverFieldName][\currentsystemfield]%
\dotripleempty\dofield[#1][\currentsystemfield][#3]% get the if's right
\fi\fi\fi
\egroup
@@ -647,40 +688,40 @@
\def\typesetfield
{\useJSscripts[fld]%
- \ifx\@@FieldRoot\empty \else
- \let\@@SavedFieldName\@@FieldName
- \getfield\@@FieldRoot
- \ifcase\@@FieldFree\relax
- \dosetfieldstatus\@@FieldMode\@@FieldParent\@@FieldKids\@@FieldRoot
+ \ifx\@@DriverFieldRoot\empty \else
+ \let\@@SavedFieldName\@@DriverFieldName
+ \getfield\@@DriverFieldRoot
+ \ifcase\@@DriverFieldFree\relax
+ \dosetfieldstatus\@@DriverFieldMode\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldRoot
\dopresetrecord
\iftrialtypesetting\else
- \def\@@FieldFree{1}%
- \changefield\@@FieldName
+ \def\@@DriverFieldFree{1}%
+ \changefield\@@DriverFieldName
\fi
\fi
\getfield\@@SavedFieldName
\fi
- \ifx\@@FieldKids\empty
+ \ifx\@@DriverFieldKids\empty
\donefalse
\else
\donetrue
\fi
\ifdone
- \let\@@FieldParent\@@FieldName
- %\addtocommalist\@@FieldParent\@@FieldKids
- \appendtocommalist\@@FieldParent\@@FieldKids
- \dosetfieldstatus\@@FieldMode\@@FieldParent\@@FieldKids\@@FieldRoot
+ \let\@@DriverFieldParent\@@DriverFieldName
+ %\addtocommalist\@@DriverFieldParent\@@DriverFieldKids
+ \appendtocommalist\@@DriverFieldParent\@@DriverFieldKids
+ \dosetfieldstatus\@@DriverFieldMode\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldRoot
\dopresetfield
- \let\@@FieldMode\fieldchildmode
+ \let\@@DriverFieldMode\fieldchildmode
\fi
- \dosetfieldstatus\@@FieldMode\@@FieldParent\@@FieldKids\@@FieldRoot
+ \dosetfieldstatus\@@DriverFieldMode\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldRoot
\dopresetfield}
\def\dopresetfield
- {\iftrialtypesetting\else\iflocation\getvalue{preset\@@FieldType field}\fi\fi}
+ {\iftrialtypesetting\else\iflocation\getvalue{preset\@@DriverFieldType field}\fi\fi}
\def\dopresetrecord
- {\iftrialtypesetting\else\iflocation\getvalue{preset\@@FieldType record}\fi\fi}
+ {\iftrialtypesetting\else\iflocation\getvalue{preset\@@DriverFieldType record}\fi\fi}
\def\dodefinethefieldset[#1][#2]%
{\dodefinefieldset{#1}{#2}}
@@ -789,7 +830,7 @@
{\reshapeframeboxtrue % else wrong dimensions
\framed
[\c!letter=,\c!kleur=,\c!uitlijnen=\c!rechts,#4]
- {\@@FieldLabel}}%
+ {\@@DriverFieldLabel}}%
\fi
\setbox2=\hbox
{\reshapeframeboxtrue % else wrong dimensions
@@ -809,9 +850,9 @@
\c!natoets=,\c!formatteer=,\c!valideer=,\c!bereken=,
\c!focusin=,\c!focusuit=,
\c!veldoffset=\!!zeropoint,\c!veldachtergrondkleur=,
- \c!veldkaderkleur=,#5]%
- \dimen0=\framedwidth \edef\@@FieldWidth {\the\dimen0}%
- \dimen0=\framedheight\edef\@@FieldHeight{\the\dimen0}%
+ \c!veldkaderkleur=,\c!veldlaag=,#5]%
+ \scratchdimen\framedwidth \edef\@@DriverFieldWidth {\the\scratchdimen}%
+ \scratchdimen\framedheight\edef\@@DriverFieldHeight{\the\scratchdimen}%
\vfill
\hbox{\lower\@@fdveldoffset\hbox{\typesetfield}}
\vss}}%
@@ -848,17 +889,17 @@
\c!focusin=,\c!focusuit=,
\c!natoets=,\c!formatteer=,\c!valideer=,\c!bereken=,
\c!veldoffset=\!!zeropoint,\c!veldachtergrondkleur=,
- \c!veldkaderkleur=,#5,\c!uitlijnen=]
- {\dogetcommacommandelement1\from\@@FieldValues\to\@@FieldValue
- \ifx\@@FieldValue\empty
- \let\@@FieldValue\@@FieldDefault
+ \c!veldkaderkleur=,\c!veldlaag=,#5,\c!uitlijnen=]
+ {\dogetcommacommandelement1\from\@@DriverFieldValues\to\@@DriverFieldValue
+ \ifx\@@DriverFieldValue\empty
+ \let\@@DriverFieldValue\@@DriverFieldDefault
\fi
- \dopresetfieldsymbol\@@FieldValue
- \setbox0=\hbox{\dogetfieldsymbol{\@@FieldValue}}%
- \dimen0=\wd0 \edef\@@FieldWidth {\the\dimen0}%
- \dimen0=\ht0 \edef\@@FieldHeight{\the\dimen0}%
- \vbox to \ht0
- {\vfill\hbox to \wd0{\typesetfield\hfill}\vss}}}
+ \dopresetfieldsymbol\@@DriverFieldValue
+ \setbox\scratchbox\hbox{\dogetfieldsymbol\@@DriverFieldValue}%
+ \scratchdimen\wd\scratchbox \edef\@@DriverFieldWidth {\the\scratchdimen}%
+ \scratchdimen\ht\scratchbox \edef\@@DriverFieldHeight{\the\scratchdimen}%
+ \vbox to \ht\scratchbox
+ {\vfill\hbox to \wd\scratchbox{\typesetfield\hfill}\vss}}}
%D Common stuff
@@ -874,7 +915,7 @@
{\dosingleempty\dofillinfield}
\def\dofillinfield[#1]#2%
- {\leavevmode
+ {\dontleavehmode
\hbox
{\forgetall
\setupfields[\v!reset]%
diff --git a/tex/context/base/core-grd.tex b/tex/context/base/core-grd.tex
index 0dcfb4445..539518b49 100644
--- a/tex/context/base/core-grd.tex
+++ b/tex/context/base/core-grd.tex
@@ -468,7 +468,7 @@
\scratchdimen\zeropoint
\fi
\ifnum\@@extrasnap=2 \advance\scratchdimen \extrasnapsign.5\lineheight \fi
- \ifnum\@@extrasnap=3 \advance\scratchdimen \extrasnapsign\lineheight \fi
+ \ifnum\@@extrasnap=3 \advance\scratchdimen \extrasnapsign\lineheight \fi
\edef\postsnap{\the\scratchdimen}%
\ifstrutsnapping
\nextboxht\strutht
diff --git a/tex/context/base/core-int.tex b/tex/context/base/core-int.tex
index b394b15ab..8bdc2f38c 100644
--- a/tex/context/base/core-int.tex
+++ b/tex/context/base/core-int.tex
@@ -399,8 +399,7 @@
% niet waterdicht
\doifnot{\the\!!widtha\the\!!heighta}\@@pcscreendata
{\xdef\@@pcscreendata{\the\!!widtha\the\!!heighta}%
- \showmessage\m!interactions
- 1{\@EA\withoutpt\the\!!widtha,\@EA\withoutpt\the\!!heighta}}%
+ \showmessage\m!interactions1{\withoutpt\the\!!widtha,\withoutpt\the\!!heighta}}%
% needs to be split: dimensions for each page
% and mode per document and only once !
\dosetupscreen \rugoffset\kopoffset\!!widtha\!!heighta{\the\!!counte}%
@@ -684,8 +683,7 @@
{\global\skippedmenuitemfalse
\setbox\locationbox\hbox
{\resetgoto % anders cyclische aanroep !
- \localframed[#1][#2]
- {\dolocationattributes{#1}\c!letter\c!kleur{#3}}}%
+ \localframed[#1][#2]{\dolocationattributes{#1}\c!letter\c!kleur{#3}}}%
\iflocationclick
\hbox{\gotolocation{#4}{\box\locationbox}}%
\else
@@ -774,12 +772,12 @@
\getvalue{\??am#1#3}\relax
\ifextendedmenu
\setamboxcommands{#1}{#4}%
- \def\next%
+ \def\next
{\ignorespaces#2}%
\else
\def\dolocationcommand##1%
{\dosetlocationcommanditem{#1}{#4}{##1}}%
- \def\next%
+ \def\next
{\processcommalist[#2]\dolocationcommand}%
\fi
\next
@@ -855,8 +853,7 @@
\iflocationmenupermitted
\bgroup
\showcomposition
- \def\dolocationcommand##1%
- {\dosetlocationcommanditem{#3}{##1}}%
+ \def\dolocationcommand##1{\dosetlocationcommanditem{#3}{##1}}%
\dimen0=\zetbreedte
\advance\dimen0 \pagebackgroundhoffset
\advance\dimen0 \pagebackgroundhoffset
@@ -913,17 +910,10 @@
\let\do@@ammenuposition\gobbleoneargument % hook for positional thingies
\fi
-\setvalue{\??am\s!do\v!rechts}%
- {\@@amvbox{\dodummypageskip\v!rechts}\rechterrandbreedte}
-
-\setvalue{\??am\s!do\v!links}%
- {\@@amvbox{\dodummypageskip\v!links}\linkerrandbreedte}
-
-\setvalue{\??am\s!do\v!boven}%
- {\@@amhbox{\dodummypageskip\v!boven}\bovenhoogte}
-
-\setvalue{\??am\s!do\v!onder}%
- {\@@amhbox{\dodummypageskip\v!onder}\onderhoogte}
+\setvalue{\??am\s!do\v!rechts}{\@@amvbox{\dodummypageskip\v!rechts}\rechterrandbreedte}
+\setvalue{\??am\s!do\v!links }{\@@amvbox{\dodummypageskip\v!links}\linkerrandbreedte}
+\setvalue{\??am\s!do\v!boven }{\@@amhbox{\dodummypageskip\v!boven}\bovenhoogte}
+\setvalue{\??am\s!do\v!onder }{\@@amhbox{\dodummypageskip\v!onder}\onderhoogte}
\def\dointeractiemenu#1#2%
{\getvalue{\??am\s!do\getvalue{\??am#1\c!plaats}}{#1}{#2}}
@@ -1403,6 +1393,7 @@
\setbox0\hbox{\blackrule[\c!breedte=\!!widtha]}%
\global\setbox\meterbox\hbox to \!!widthb
{\hss
+ % brrr
\for \teller=1 \to \lastpage \step \!!counta \do
{\gotorealpage{}{}{\teller}{\copy0}}%
\hss}%
@@ -1423,19 +1414,21 @@
\!!widtha=1em\relax
\fi
\setupblackrules[\c!breedte=\!!widtha]%
- \ifnum\realpageno>1\relax
- \!!counta=\realpageno
+ \ifnum\realpageno>\plusone
+ \!!counta\realpageno
\advance\!!counta -2\relax
\hskip\zeropoint\!!plus\!!counta \s!sp\relax % cm gives overflow
+ % or just: \hskip\zeropoint\!!plus\!!counta \relax % cm gives overflow
\doganaareenpagina\??ib\blackrule\prevpage
\fi
\color[\@@ibcontrastkleur]{\blackrule[\c!breedte=.5em]}%
\ifnum\realpageno<\lastpage\relax
\doganaareenpagina\??ib\blackrule\nextpage
- \!!counta=\lastpage\relax
+ \!!counta\lastpage
\advance\!!counta -\realpageno
\advance\!!counta \minusone
\hskip\zeropoint\!!plus\!!counta \s!sp\relax % cm gives overflow
+ % or just \hskip\zeropoint\!!plus\!!counta\relax % cm gives overflow
\fi}%
\hss
\doganaareenpagina\??ib\blackrule\lastpage}%
@@ -2141,7 +2134,7 @@
% \next{\hbox{\raise\strutht\box\commentbox}}}
\def\doflushcommentanchors
- {\let\next\relax, % new
+ {\let\next\relax % new
\processaction
[\@@ccplaats]
[% \v!tekst=>\let\next\relax, % new
@@ -2219,13 +2212,13 @@
% \stopcommentaar
%
% \startcommentaar[hallo][kleur=groen,breedte=4cm,hoogte=3cm]
-% hello \leftguillemot\ \'e\'erste \rightguilemot\
+% hello \leftguillemot\ \'e\'erste \rightguillemot\
% beautiful
% world
% \stopcommentaar
%
% \startcommentaar[hallo][kleur=groen,breedte=4cm,hoogte=3cm]
-% hello \leftguillemot\ \'e\'erste \rightguilemot\ test
+% hello \leftguillemot\ \'e\'erste \rightguillemot\ test
%
% beautiful
%
diff --git a/tex/context/base/core-job.tex b/tex/context/base/core-job.tex
index aaf273a5a..13573f50d 100644
--- a/tex/context/base/core-job.tex
+++ b/tex/context/base/core-job.tex
@@ -79,9 +79,7 @@
\else
\let\filepath\empty
\def\docommando##1%
- {\doiffileelse{\pathplusfile{##1}{#1}}
- {\donetrue\def\filepath{##1}}
- {\donefalse}%
+ {\doiffileelse{\pathplusfile{##1}{#1}}{\donetrue\def\filepath{##1}}\donefalse
\ifdone\expandafter\quitcommalist\fi}%
\doifparentfileelse{#1} % new
{\processcommacommand [\allinputpaths]\docommando}
@@ -113,12 +111,13 @@
\processcommacommand[\allinputpaths]\docommando
\fi}
-\def\registreerfileinfo[#1#2]#3% geen \showmessage ?
+\def\registerfileinfo[#1#2]#3% geen \showmessage ?
{\writestatus\m!systems{#1#2 file #3 at line \the\inputlineno}%
+ % \pdfliteral{\letterpercent #1#2 file #3 at line \the\inputlineno}%
\immediatewriteutility{f #1 {#3}}}
-\doifundefined{preloadfonts} {\let\preloadfonts=\relax}
-\doifundefined{preloadspecials} {\let\preloadspecials=\relax}
+\ifx\preloadfonts \undefined \let\preloadfonts \relax \fi
+\ifx\preloadspecials\undefined \let\preloadspecials\relax \fi
% \def\loadsystemfiles
% {\reportprotectionstate
@@ -202,7 +201,7 @@
\appendtoks \pagina[\v!laatste] \pagina \to \everybye
\appendtoks \ifarrangingpages\poparrangedpages\fi \to \everybye
-\appendtoks \registreerfileinfo[end]{\jobname} \to \everybye
+\appendtoks \registerfileinfo[end]\jobname \to \everybye
\appendtoks \savenofpages \to \everybye
\appendtoks \savenofsubpages \to \everybye
@@ -233,7 +232,7 @@
\def\starttekst
{\doateverystarttext
\ifnum\textlevel=\zerocount
- \registreerfileinfo[begin]{\jobname}%
+ \registerfileinfo[begin]\jobname
\expandafter\startcopyingblocks
\fi
\doglobal\increment\textlevel\relax}
@@ -269,11 +268,11 @@
\doexecutefile{#1}}}
\def\doexecutefile#1%
- {\registreerfileinfo[begin]{#1}%
+ {\registerfileinfo[begin]{#1}%
\dostarttextfile{#1}%
\processfile{#1}%
\dostoptextfile
- \registreerfileinfo[end]{#1}}
+ \registerfileinfo[end]{#1}}
\def\donotexecutefile#1%
{}
@@ -404,4 +403,4 @@
\resetutilities
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/core-ltb.tex b/tex/context/base/core-ltb.tex
index bec04c804..b5521cfad 100644
--- a/tex/context/base/core-ltb.tex
+++ b/tex/context/base/core-ltb.tex
@@ -11,6 +11,9 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% todo: als nx>1, dan in geval van rek tussenruimte berekenen en optellen
+% bij breedte, dus: nx nog niet gebruiken in combinatie met rek ! ! ! ! !
+
\beginTEX
\expandafter \endinput
\endTEX
@@ -191,12 +194,17 @@
\xdef\linetablestep{\linetablecparameter\c!nx}%
\ifcase\linetablestep\or
\scratchdimen\linetablecparameter\c!breedte
+ \scratchskip \linetablecparameter\c!afstand
\else
- \scratchdimen\zeropoint
+ \scratchdimen \zeropoint
+ \scratchskip \zeropoint
\scratchcounter\linetablecolumn
\dorecurse\linetablestep
{\advance\scratchdimen\linetablecparameter\c!breedte
- \global\advance\linetablecolumn\plusone}%
+ %\advance\scratchskip \linetablecparameter\c!afstand
+ \global\advance \linetablecolumn\plusone
+ \advance\scratchskip \linetablecparameter\c!afstand
+ }%
\global\linetablecolumn\scratchcounter
\fi
\chardef\linetablemode
@@ -374,18 +382,19 @@
\iflinetablepreroll \else
\box\linetablecell
% the columncounter is one ahead !
- \hskip\linetablecparameter\c!afstand
+% \hskip\linetablecparameter\c!afstand
+ \hskip\scratchskip
\fi
-%%%
+ %%%
\donefalse
\ifcase\linetablerepeat\else
% van te voren berekenen
- \scratchcounter\linetablecolumn\advance\scratchcounter-2
+ \scratchcounter\linetablecolumn\advance\scratchcounter-\plustwo
\ifnum\linetablerepeat=\scratchcounter
\donetrue % collecting repeater
\fi
\fi
-%%%%
+ %%%%
\ifdone
% collecting repeater
\else
@@ -409,21 +418,22 @@
\fi
\else
\donefalse
-\!!doneafalse
+ \!!doneafalse
\ifcase\linetablerepeat\else
% van te voren berekenen
- \scratchcounter\linetablecolumn \advance\scratchcounter-2
+ \scratchcounter\linetablecolumn \advance\scratchcounter-\plustwo
\ifnum\linetablerepeat=\scratchcounter
\donetrue % collecting repeater
\fi
\fi
\ifdone
-\!!doneatrue
+ \!!doneatrue
% collecting repeater
\else\ifdim\linetablewidth>\hsize
\donetrue
\else
- \global\advance\linetablewidth\linetablecparameter\c!afstand\relax
+% \global\advance\linetablewidth\linetablecparameter\c!afstand\relax
+ \global\advance\linetablewidth\scratchskip
\ifdim\linetablewidth>\hsize % ?
\donetrue
\fi
@@ -455,8 +465,10 @@
\iflinetablepreroll \else
\box\linetablecell
% the columncounter is one ahead !
- \hskip\linetablecparameter\c!afstand
- \hfill
+% \hskip\linetablecparameter\c!afstand
+% \hskip\scratchskip
+\dorecurse\linetablestep{\strut\hfil}%
+ \hskip\scratchskip
\fi
\fi}
@@ -612,7 +624,7 @@
\checklinetablepart}
\def\linetableER
- {\stoplinetablecell
+ {% \stoplinetablecell
% no \box\linetablecell, i.e. dummy columnn, last \NC \NR
\stoplinetablepart
\savelinetablepart
@@ -659,10 +671,11 @@
\else
\linetableEC
\fi
- \linetableBC}
+ \linetableBC} % beware, this will result in BR BC EC BC NR
\def\linetableNR
- {\linetableER}
+ {\stoplinetablecell % dummy
+ \linetableER}
\def\startlinetable
{\startlinetablerun}
@@ -772,4 +785,4 @@
{\NC aaa \NC bb \NC c \NC ddddd \NC eeee \NC ff \NC \NR}
\stoplinetable
-\stoptext
+\stoptext \ No newline at end of file
diff --git a/tex/context/base/core-mis.tex b/tex/context/base/core-mis.tex
index b4b84c414..3fef87c44 100644
--- a/tex/context/base/core-mis.tex
+++ b/tex/context/base/core-mis.tex
@@ -1439,6 +1439,9 @@
%D the second one is a vertical box that gets passed the
%D bodyfont and alignment settings.
+%D Today we would implement this using layers .... but for the
+%D moment we keep it this way.
+
% \startbuffer[test]
% \test left \test left,top \test left,bottom \test left,middle
% \test right \test right,top \test right,bottom \test right,middle
@@ -2017,19 +2020,34 @@
\c!na=,
\c!uitlijnen=\v!midden]
+% does not work
+%
+% \def\plaatsondernaastelkaar#1#2%
+% {\bgroup
+% \def\doplaatsondernaastelkaar%
+% {#2\cr\omit\bgroup#2%
+% \aftergroup#2%
+% \aftergroup\cr
+% \aftergroup\egroup
+% \aftergroup\egroup
+% \let\next=}%
+% #1\bgroup##\cr
+% \omit\bgroup#2%
+% \aftergroup\doplaatsondernaastelkaar
+% \let\next=}
+
\def\plaatsondernaastelkaar#1#2%
{\bgroup
- \def\doplaatsondernaastelkaar%
- {#2\cr\omit\bgroup#2%
- \aftergroup#2%
- \aftergroup\cr
- \aftergroup\egroup
- \aftergroup\egroup
- \let\next=}%
- #1\bgroup##\cr
- \omit\bgroup#2%
- \aftergroup\doplaatsondernaastelkaar
- \let\next=}
+ \dowithnextbox
+ {\bgroup
+ \setbox0\box\nextbox
+ \dowithnextbox
+ {\setbox2\box\nextbox
+ #1{#2#########2\cr\box0\cr\box2\cr}
+ \egroup
+ \egroup}
+ \hbox}
+ \hbox}
\def\placeontopofeachother
{\plaatsondernaastelkaar\halign\hss}
@@ -2190,7 +2208,7 @@
\dodostoprotate\nextboxht\relax\vfill\nextboxwd\relax\hfill
\fi}
-%D A couple of examples, demonstrating how the depth ios
+%D A couple of examples, demonstrating how the depth is
%D taken care of:
%D
%D \startbuffer
diff --git a/tex/context/base/core-nav.tex b/tex/context/base/core-nav.tex
index 76e7e20d3..c1c065208 100644
--- a/tex/context/base/core-nav.tex
+++ b/tex/context/base/core-nav.tex
@@ -103,10 +103,10 @@
\appendtoks \dolocationstartup \to \everyshipout
-\def\dolocationpagecheck
+\def\dolocationpagecheck % brr pdf dependent
{\iflocation
- \handlereferenceactions\@@iaopenpaginaactie \doPDFsetupopenpageaction
- \handlereferenceactions\@@iasluitpaginaactie\doPDFsetupclosepageaction
+ \handlereferenceactions\@@iaopenpaginaactie \dosetupopenpageaction
+ \handlereferenceactions\@@iasluitpaginaactie\dosetupclosepageaction
\fi}
\appendtoks \dolocationpagecheck \to \everyshipout
diff --git a/tex/context/base/core-new.tex b/tex/context/base/core-new.tex
index 7f4d07959..908414e72 100644
--- a/tex/context/base/core-new.tex
+++ b/tex/context/base/core-new.tex
@@ -290,7 +290,9 @@
\def\dosetupsC[#1]{\dosetups{#1}} % [..]
\def\dosetups#1% the grid option will be extended to other main modes
- {\executeifdefined{\??su\ifgridsnapping\v!grid\fi:#1}{\csname\??su:#1\endcsname}\relax}
+ {\executeifdefined{\??su\ifgridsnapping\v!grid\fi:#1}{\csname\??su:#1\endcsname}\empty}
+
+\let\directsetup\dosetups
\def\doifsetupselse#1% to be done: grid
{\doifdefinedelse{\??su:#1}}
@@ -475,31 +477,43 @@
%D it seems -a:to work- well
%D \stopregels
-\def\setupenv{\dodoubleargument\rawgetparameters[\??en]}
-
-\def\doifenvelse#1{\doifdefinedelse{\??en#1}} % speed up
-\def\doifenv #1{\doifdefined {\??en#1}} % speed up
-\def\doifnotenv #1{\doifundefined {\??en#1}} % speed up
-
-\def\env#1{\csname\??en#1\endcsname}
-
-\beginTEX
-
-\def\envvar#1#2%
- {\@EA\ifx\csname\??en#1\endcsname\relax
- #2\else\csname\??en#1\endcsname
- \fi}
-
-\endTEX
+% \def\setupenv{\dodoubleargument\rawgetparameters[\??en]}
+%
+% \def\doifenvelse#1{\doifdefinedelse{\??en#1}} % speed up
+% \def\doifenv #1{\doifdefined {\??en#1}} % speed up
+% \def\doifnotenv #1{\doifundefined {\??en#1}} % speed up
+%
+% \def\env#1{\csname\??en#1\endcsname}
+%
+% \beginTEX
+%
+% \def\envvar#1#2%
+% {\@EA\ifx\csname\??en#1\endcsname\relax
+% #2\else\csname\??en#1\endcsname
+% \fi}
+%
+% \endTEX
+%
+% \beginETEX \ifcsname
+%
+% \def\envvar#1#2%
+% {\ifcsname\??en#1\endcsname
+% \csname\??en#1\endcsname\else#2%
+% \fi}
+%
+% \endETEX
-\beginETEX \ifcsname
+% low level change, now also accessible as \getvariable{environment}{...}; the
+% next macros will become obsolete some day in favor of normal variables
-\def\envvar#1#2%
- {\ifcsname\??en#1\endcsname
- \csname\??en#1\endcsname\else#2%
- \fi}
+\def\s!environment{environment}
-\endETEX
+\def\setupenv {\dotripleargument\dosetvariables[\getrawparameters][\s!environment]}
+\def\doifenvelse{\doifelsevariable \s!environment}
+\def\doifenv {\doifvariable \s!environment}
+\def\doifnotenv {\doifnotvariable \s!environment}
+\def\env {\getvariable \s!environment}
+\def\envvar {\getvariabledefault\s!environment}
\bgroup
diff --git a/tex/context/base/core-not.tex b/tex/context/base/core-not.tex
index 243564b92..6e25a89a6 100644
--- a/tex/context/base/core-not.tex
+++ b/tex/context/base/core-not.tex
@@ -200,6 +200,7 @@
\c!tekstcommando=\high,
\c!tekstletter=\tx,
\c!tekstkleur=,
+ \c!interactie=\v!ja,
\c!n=1]%
\definieernummer
[\currentnote]
@@ -585,20 +586,18 @@
\startpushnote
{\ifx\lastnotenumber\empty \else
\preparethenumber{\??vn\currentnote}\lastnotenumber\preparednumber
- \iflocation
- \naarbox{\noteparameter\c!commando % was \c!nummercommando, but compatible
- {\preparednumber\domovednote\v!volgendepagina\v!vorigepagina}}%
- [\s!fnt:f:\internalfootreference]%
- \else
- \noteparameter\c!nummercommando
- {\preparednumber\domovednote\v!volgendepagina\v!vorigepagina}%
- \fi
+ \doifelse{\noteparameter\c!interactie}\v!nee
+ {\noteparameter\c!nummercommando
+ {\preparednumber\domovednote\v!volgendepagina\v!vorigepagina}}%
+ {\naarbox{\noteparameter\c!commando % was \c!nummercommando, but compatible
+ {\preparednumber\domovednote\v!volgendepagina\v!vorigepagina}}%
+ [\s!fnt:f:\internalfootreference]}%
\fi
- \iflocation
- \rawreference\s!fnt{\s!fnt:t:\internalfootreference}{}%
- \else\ifconditional\pagewisenotes
- \rawreference\s!fnt{\s!fnt:t:\internalfootreference}{}%
- \fi\fi}%
+ \doifelse{\noteparameter\c!interactie}\v!nee
+ {\ifconditional\pagewisenotes
+ \rawreference\s!fnt{\s!fnt:t:\internalfootreference}{}%
+ \fi}%
+ {\rawreference\s!fnt{\s!fnt:t:\internalfootreference}{}}}%
\bgroup
\postponenotes
\aftergroup\dostopnote
@@ -637,17 +636,15 @@
\dodonotesymbol{\kern\noteparameter\c!afstand}% gets the font right, hack !
\fi
\nobreak
- \iflocation
- \naarbox
- {\dodonotesymbol{\lastnotenumber\domovednote\v!vorigepagina\v!volgendepagina}}%
- [\s!fnt:t:\internalfootreference]%
- \rawreference\s!fnt{\s!fnt:f:\internalfootreference}{}%
- \else
- \dodonotesymbol{\lastnotenumber\domovednote\v!vorigepagina\v!volgendepagina}%
- \ifconditional\pagewisenotes
- \rawreference\s!fnt{\s!fnt:f:\internalfootreference}{}%
- \fi
- \fi
+ \doifelse{\noteparameter\c!interactie}\v!nee
+ {\dodonotesymbol{\lastnotenumber\domovednote\v!vorigepagina\v!volgendepagina}%
+ \ifconditional\pagewisenotes
+ \rawreference\s!fnt{\s!fnt:f:\internalfootreference}{}%
+ \fi}
+ {\naarbox
+ {\dodonotesymbol{\lastnotenumber\domovednote\v!vorigepagina\v!volgendepagina}}%
+ [\s!fnt:t:\internalfootreference]%
+ \rawreference\s!fnt{\s!fnt:f:\internalfootreference}{}}%
\globallet\lastnotesymbol\relax}
\let\lastnotesymbol\relax
diff --git a/tex/context/base/core-ntb.tex b/tex/context/base/core-ntb.tex
index a8d030137..5b74aa710 100644
--- a/tex/context/base/core-ntb.tex
+++ b/tex/context/base/core-ntb.tex
@@ -551,7 +551,30 @@
\doifnottblcol\row\col{\settblcol\row\col\!!zerocount}%
\doifnottbltag\row\col{\settbltag\row\col\tblnone}}}%
% check and do
- \begTBL
+ \startTBLprocessing
+ \begTBL
+ \dorecurse\maximumrow
+ {\bTBL
+ \let\row\recurselevel
+ \dorecurse\maximumcol
+ {\let\col\recurselevel
+ \expanded{\doTBL{\row}{\col}}}%
+ \eTBL}%
+ \removeunwantedspaces % only if hmode
+ \endTBL
+ \stopTBLprocessing
+ % wrong ! ! ! better to have an auto-offset-overlay
+ % \ifnum\TBLlevel>1
+ % \vskip-\strutdp
+ % \fi
+ \egroup
+ \popTBL}
+
+\let\startTBLprocessing\relax
+\let\stopTBLprocessing \relax
+
+\def\processTBL
+ {\begTBL
\dorecurse\maximumrow
{\bTBL
\let\row\recurselevel
@@ -560,13 +583,7 @@
\expanded{\doTBL{\row}{\col}}}%
\eTBL}%
\removeunwantedspaces % only if hmode
- \endTBL
- % wrong ! ! ! better to have an auto-offset-overlay
- % \ifnum\TBLlevel>1
- % \vskip-\strutdp
- % \fi
- \egroup
- \popTBL}
+ \endTBL}
\def\spanTBL#1#2%
{\scratchcounter\gettblcol{#1}{#2}\relax
@@ -1032,10 +1049,82 @@
\executeifdefined{splittblbox\tbltblsplitsmethode}\splittblboxa{#1}%
\fi}
+% \def\splittblboxa#1% spacing between rows gets lost in split
+% {\ifmultipleTBLheads
+% \setbox\scratchbox\vbox{#1}%
+% \setbox8\vbox{\doifsomething\tbltbltussenwit{\blank[\tbltbltussenwit]}}%
+% \setbox2\vbox{}%
+% \setbox4\vbox{}%
+% \dorecurse\noftblheadlines
+% {\setbox0\vsplit\scratchbox to \lineheight
+% \setbox2\vbox{\unvcopy2\unvcopy0}}%
+% \dorecurse\noftblnextlines
+% {\setbox0\vsplit\scratchbox to \lineheight
+% \setbox4\vbox{\unvcopy4\unvcopy0}}%
+% \ifcase\noftblheadlines\else
+% \ifdim\pagegoal<\maxdimen
+% \dimen0\ht2
+% \advance\dimen0\ht8
+% \advance\dimen0\pagetotal\relax
+% \ifdim\dimen0>\pagegoal
+% \bgroup\pagina\egroup % make sure that local vars are kept
+% \fi
+% \fi
+% \unvcopy2
+% \ifcase\noftblnextlines\else
+% \setbox2\box4
+% \fi
+% \fi
+% \donefalse
+% \!!doneafalse
+% \doloop
+% {\setbox0\vsplit\scratchbox to \lineheight
+% \if!!donea
+% \ifdim\pagegoal<\maxdimen
+% \setbox0\vbox{\unvbox0}%
+% \ifdim\ht0>\zeropoint
+% \dimen0\ht0
+% \advance\dimen0\ht8
+% \advance\dimen0\pagetotal\relax
+% \ifdim\dimen0>\pagegoal
+% \bgroup\pagina\egroup % make sure that local vars are kept
+% \ifcase\noftblheadlines\else\unvcopy2\fi
+% \fi
+% \fi
+% \fi
+% \fi
+% \!!doneatrue
+% \ifdone
+% \doifsomething\tbltbltussenwit{\blank[\tbltbltussenwit]}%
+% \fi
+% \unvbox0
+% %\allowbreak
+% \bgroup
+% % todo: what if tblnextlines ?
+% \scratchcounter\recurselevel
+% \advance\scratchcounter\noftblheadlines
+% \setupTBLcell{\number\scratchcounter}1
+% \ifx\@@tblsplitafter\relax
+% \allowbreak
+% \else
+% \doifelsenothing\@@tblsplitafter
+% \allowbreak
+% {\scratchcounter\realpageno
+% \@@tblsplitafter
+% \ifnum\scratchcounter<\realpageno
+% \ifcase\noftblheadlines\else\unvcopy2\fi
+% \fi}%
+% \fi
+% \egroup
+% \ifvoid\scratchbox \exitloop \else \donetrue \fi}%
+% \else
+% \notsplittblbox{#1}%
+% \fi}
+
\def\splittblboxa#1% spacing between rows gets lost in split
- {\ifmultipleTBLheads
- \setbox\scratchbox\vbox{#1}%
- \setbox8\vbox{\doifsomething\tbltbltussenwit{\blank[\tbltbltussenwit]}}%
+ {\setbox\scratchbox\vbox{#1}%
+ \setbox8\vbox{\doifsomething\tbltbltussenwit{\blank[\tbltbltussenwit]}}%
+ \ifmultipleTBLheads
\setbox2\vbox{}%
\setbox4\vbox{}%
\dorecurse\noftblheadlines
@@ -1058,51 +1147,55 @@
\setbox2\box4
\fi
\fi
- \donefalse
- \!!doneafalse
- \doloop
- {\setbox0\vsplit\scratchbox to \lineheight
- \if!!donea
- \ifdim\pagegoal<\maxdimen
- \setbox0\vbox{\unvbox0}%
- \ifdim\ht0>\zeropoint
- \dimen0\ht0
- \advance\dimen0\ht8
- \advance\dimen0\pagetotal\relax
- \ifdim\dimen0>\pagegoal
- \bgroup\pagina\egroup % make sure that local vars are kept
+ \fi
+ \donefalse
+ \!!doneafalse
+ \doloop
+ {\setbox0\vsplit\scratchbox to \lineheight
+ \if!!donea
+ \ifdim\pagegoal<\maxdimen
+ \setbox0\vbox{\unvbox0}%
+ \ifdim\ht0>\zeropoint
+ \dimen0\ht0
+ \advance\dimen0\ht8
+ \advance\dimen0\pagetotal\relax
+ \ifdim\dimen0>\pagegoal
+ \bgroup\pagina\egroup % make sure that local vars are kept
+ \ifmultipleTBLheads
\ifcase\noftblheadlines\else\unvcopy2\fi
\fi
\fi
\fi
\fi
- \!!doneatrue
- \ifdone
- \doifsomething\tbltbltussenwit{\blank[\tbltbltussenwit]}%
- \fi
- \unvbox0
- %\allowbreak
- \bgroup
- % todo: what if tblnextlines ?
- \scratchcounter\recurselevel
+ \fi
+ \!!doneatrue
+ \ifdone
+ \doifsomething\tbltbltussenwit{\blank[\tbltbltussenwit]}%
+ \fi
+ \unvbox0
+ %\allowbreak
+ \bgroup
+ % todo: what if tblnextlines ?
+ \scratchcounter\recurselevel
+ \ifmultipleTBLheads
\advance\scratchcounter\noftblheadlines
- \setupTBLcell{\number\scratchcounter}1
- \ifx\@@tblsplitafter\relax
- \allowbreak
- \else
- \doifelsenothing\@@tblsplitafter
- \allowbreak
- {\scratchcounter\realpageno
- \@@tblsplitafter
+ \fi
+ \setupTBLcell{\number\scratchcounter}1
+ \ifx\@@tblsplitafter\relax
+ \allowbreak
+ \else
+ \doifelsenothing\@@tblsplitafter
+ \allowbreak
+ {\scratchcounter\realpageno
+ \@@tblsplitafter
+ \ifmultipleTBLheads
\ifnum\scratchcounter<\realpageno
\ifcase\noftblheadlines\else\unvcopy2\fi
- \fi}%
- \fi
- \egroup
- \ifvoid\scratchbox \exitloop \else \donetrue \fi}%
- \else
- \notsplittblbox{#1}%
- \fi}
+ \fi
+ \fi}%
+ \fi
+ \egroup
+ \ifvoid\scratchbox \exitloop \else \donetrue \fi}}
% \def\splittblboxb#1%
% {\setbox\scratchbox\vbox{#1}%
@@ -1212,10 +1305,12 @@
\@@tblsplitafter
\exitloop
\else
- % hack
+ % hack
\scratchdimen\pagegoal
- \advance\scratchdimen \lineheight
- \global\pagegoal\scratchdimen
+ \ifdim\scratchdimen<\maxdimen
+ \advance\scratchdimen \lineheight
+ \global\pagegoal\scratchdimen
+ \fi
% brrr
\beforeTABLEsplitbox
\box\finaltblbox
diff --git a/tex/context/base/core-obj.tex b/tex/context/base/core-obj.tex
index 82428db4f..48e7b11ba 100644
--- a/tex/context/base/core-obj.tex
+++ b/tex/context/base/core-obj.tex
@@ -164,16 +164,16 @@
% \setbox\scratchbox\vbox
% {\doinsertobject{#1}{#2}}%
% \setbox\scratchbox#3%
-% {\vbox to #5\s!sp
-% {\ifdim\ht\scratchbox>#5\s!sp
-% % or \ifdim\wd\scratchbox>#4\s!sp
-% \vss\hbox to #4\s!sp{\hss\box\scratchbox\hss}\vss
+% {\vbox to #5\scaledpoint
+% {\ifdim\ht\scratchbox>#5\scaledpoint
+% % or \ifdim\wd\scratchbox>#4\scaledpoint
+% \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
% \else
% \vss\box\scratchbox
% \fi}}%
-% \wd\scratchbox#4\s!sp
-% \ht\scratchbox#5\s!sp
-% \dp\scratchbox#6\s!sp
+% \wd\scratchbox#4\scaledpoint
+% \ht\scratchbox#5\scaledpoint
+% \dp\scratchbox#6\scaledpoint
% \box\scratchbox
% \elabelgroup}
@@ -184,19 +184,19 @@
\setbox\scratchbox\vbox
{\doinsertobject{#1}{#2}}%
\setbox\scratchbox#3%
- {\vbox to #5\s!sp
- {\ifdim\ht\scratchbox>#5\s!sp
- % or \ifdim\wd\scratchbox>#4\s!sp
- \vss\hbox to #4\s!sp{\hss\box\scratchbox\hss}\vss
+ {\vbox to #5\scaledpoint
+ {\ifdim\ht\scratchbox>#5\scaledpoint
+ % or \ifdim\wd\scratchbox>#4\scaledpoint
+ \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
\else
\vss\box\scratchbox
\fi}}%
- \scratchdimen#7\s!sp
+ \scratchdimen#7\scaledpoint
\setbox\nextbox\hbox
{\hskip-\scratchdimen\lower\scratchdimen\flushnextbox}%
- \wd\scratchbox#4\s!sp
- \ht\scratchbox#5\s!sp
- \dp\scratchbox#6\s!sp
+ \wd\scratchbox#4\scaledpoint
+ \ht\scratchbox#5\scaledpoint
+ \dp\scratchbox#6\scaledpoint
\box\scratchbox
\elabelgroup}
diff --git a/tex/context/base/core-pos.tex b/tex/context/base/core-pos.tex
index a19863251..5724c72ad 100644
--- a/tex/context/base/core-pos.tex
+++ b/tex/context/base/core-pos.tex
@@ -115,33 +115,6 @@
\let\pospxywhd \setpospxywhd
\let\pospxyplus\setpospxyplus}
-% \def\setpospxy#1#2#3#4%
-% {\dosetpositionnm\@@posp{#2}%
-% \dosetpositionpt\@@posx{#3}%
-% \dosetpositionpt\@@posy{#4}%
-% %\setxvalue{\POSprefix#1}{\@@posp,\@@posx,\@@posy}}%
-% \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy}}%
-%
-% \def\setpospxywhd#1#2#3#4#5#6#7%
-% {\dosetpositionnm\@@posp{#2}%
-% \dosetpositionpt\@@posx{#3}%
-% \dosetpositionpt\@@posy{#4}%
-% \dosetpositionpt\@@posw{#5}%
-% \dosetpositionpt\@@posh{#6}%
-% \dosetpositionpt\@@posd{#7}%
-% %\setxvalue{\POSprefix#1}{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}}%
-% \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}}%
-%
-% \def\setpospxyplus#1#2#3#4#5#6#7#8%
-% {\dosetpositionnm\@@posp{#2}%
-% \dosetpositionpt\@@posx{#3}%
-% \dosetpositionpt\@@posy{#4}%
-% \dosetpositionpt\@@posw{#5}%
-% \dosetpositionpt\@@posh{#6}%
-% \dosetpositionpt\@@posd{#7}%
-% %\setxvalue{\POSprefix#1}{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd,#8}}
-% \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd,#8}}
-
%D This is real tricky! The page anchor is applied to the
%D page box and therefore flushed first. So, when present, it
%D is applied to all positions except itself.
@@ -162,19 +135,11 @@
\fi
\fi\fi}
-\def\dosetpositionxy#1#2#3% todo: scaled points
- {\scratchdimen#2\s!sp
- \ifcase\positionanchormode\or
- \advance\scratchdimen-#3\pageanchor
- \fi
- \xdef#1{\@EA\withoutpt\the\scratchdimen}}
-
\def\setpospxy#1#2#3#4%
{\dosetpositionnm\@@posp{#2}%
\dosetpositionxy\@@posx{#3}\MPx
\dosetpositionxy\@@posy{#4}\MPy
- %\setxvalue{\POSprefix#1}{\@@posp,\@@posx,\@@posy}}%
- \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy}}%
+ \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy}}
\def\setpospxywhd#1#2#3#4#5#6#7%
{\dosetpositionnm\@@posp{#2}%
@@ -183,8 +148,7 @@
\dosetpositionpt\@@posw{#5}%
\dosetpositionpt\@@posh{#6}%
\dosetpositionpt\@@posd{#7}%
- %\setxvalue{\POSprefix#1}{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}}%
- \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}}%
+ \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}}
\def\setpospxyplus#1#2#3#4#5#6#7#8%
{\dosetpositionnm\@@posp{#2}%
@@ -193,9 +157,31 @@
\dosetpositionpt\@@posw{#5}%
\dosetpositionpt\@@posh{#6}%
\dosetpositionpt\@@posd{#7}%
- %\setxvalue{\POSprefix#1}{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd,#8}}
\@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd,#8}}
+%D Sometimes we want to trick the position handler a bit:
+
+\def\replacepospxywhd#1#2#3#4#5#6#7%
+ {\begingroup
+ \nosetpositionnm\@@posp{#2}%
+ \nosetpositionpt\@@posx{#3}%
+ \nosetpositionpt\@@posy{#4}%
+ \nosetpositionpt\@@posw{#5}%
+ \nosetpositionpt\@@posh{#6}%
+ \nosetpositionpt\@@posd{#7}%
+ \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}%
+ \endgroup}
+
+% slower, as many tokens, etc:
+%
+% \def\replacepospxywhd#1#2#3#4#5#6#7%
+% {\begingroup
+% \let\dosetpositionnm\nosetpositionnm
+% \let\dosetpositionpt\nosetpositionpt
+% \let\dosetpositionxy\nosetpositionpt
+% \setpospxywhd{#1}{#2}{#3}{#4}{#5}{#6}{#7}%
+% \endgroup}
+
%D We need to initialize.
\resetpositions
@@ -238,12 +224,29 @@
%D \METAPOST\ too.
\def\dosetpositionpt#1#2%
- {\scratchdimen#2\s!sp
- \xdef#1{\@EA\withoutpt\the\scratchdimen}}
+ {\scratchdimen\number#2\scaledpoint
+ \xdef#1{\withoutpt\the\scratchdimen}}
\def\dosetpositionnm#1#2%
{\xdef#1{\number#2}}
+\def\dosetpositionxy#1#2#3% todo: scaled points
+ {\scratchdimen\number#2\scaledpoint
+ \ifcase\positionanchormode\or
+ \advance\scratchdimen-#3\pageanchor
+ \fi
+ \xdef#1{\withoutpt\the\scratchdimen}}
+
+\def\nosetpositionnm#1#2{\xdef#1{\number#2}}
+\def\nosetpositionpt#1#2{\scratchdimen#2\xdef#1{\withoutpt\the\scratchdimen}}
+
+\beginETEX \dimexpr
+
+ \def\dosetpositionpt#1#2{\xdef#1{\withoutpt\the\dimexpr(\number#2\scaledpoint)}}
+ \def\nosetpositionpt#1#2{\xdef#1{\withoutpt\the\dimexpr(#2)}}
+
+\endETEX
+
\def\checkpositions
{\startnointerference
\protectlabels
@@ -850,7 +853,7 @@
%
% \overlappingmargin-2sp % better
-\def\overlappingmargin{-2\s!sp}
+\def\overlappingmargin{-2\scaledpoint}
\def\doifoverlappingelse#1#2%
{\begingroup
@@ -982,11 +985,11 @@
% \dimen6=\MPx\textanchor
% \dimen8=\MPw\textanchor
% \setxvalue{\POSprefix\headanchor}%
-% {\realfolio,\withoutpt{\the\dimen6},\withoutpt{\the\dimen2},%
-% \withoutpt{\the\dimen8},\withoutpt{\the\dimen0},\withoutpt{\the\strutdp}}%
+% {\realfolio,\withoutpt\the\dimen6,\withoutpt\the\dimen2,%
+% \withoutpt\the\dimen8,\withoutpt\the\dimen0,\withoutpt\the\strutdp}%
% \setxvalue{\POSprefix\tailanchor}%
-% {\realfolio,\withoutpt{\the\dimen6},\withoutpt{\the\dimen4},%
-% \withoutpt{\the\dimen8},\withoutpt{\the\strutht},\withoutpt{\the\strutdp}}%
+% {\realfolio,\withoutpt\the\dimen6,\withoutpt\the\dimen4,%
+% \withoutpt\the\dimen8,\withoutpt\the\strutht,\withoutpt\the\strutdp}%
% %\showanchor\textanchor\showanchor\headanchor\showanchor\tailanchor\wait
% \egroup}
@@ -1001,11 +1004,11 @@
\!!dimend\MPx\textanchor
\!!dimene\MPw\textanchor
\setxvalue{\POSprefix\headanchor}%
- {\realfolio,\withoutpt{\the\!!dimend},\withoutpt{\the\!!dimenb},%
- \withoutpt{\the\!!dimene},\withoutpt{\the\!!dimena},\withoutpt{\the\strutdp}}%
+ {\realfolio,\withoutpt\the\!!dimend,\withoutpt\the\!!dimenb,%
+ \withoutpt\the\!!dimene,\withoutpt\the\!!dimena,\withoutpt\the\strutdp}%
\setxvalue{\POSprefix\tailanchor}%
- {\realfolio,\withoutpt{\the\!!dimend},\withoutpt{\the\!!dimenc},%
- \withoutpt{\the\!!dimene},\withoutpt{\the\strutht},\withoutpt{\the\strutdp}}%
+ {\realfolio,\withoutpt\the\!!dimend,\withoutpt\the\!!dimenc,%
+ \withoutpt\the\!!dimene,\withoutpt\the\strutht,\withoutpt\the\strutdp}%
%\showanchor\textanchor\showanchor\headanchor\showanchor\tailanchor\wait
\egroup}
@@ -2170,8 +2173,81 @@
%D margin settings. When set to \type {yes}, this macro comes
%D into action.
+% \def\stackeddown
+% {\dowithnextbox
+% {\doglobal\increment\currentautopos
+% \hpos{\POSstackprefix\currentautopos}
+% {\edef\next
+% {\nextboxht\the\nextboxht
+% \nextboxdp\the\nextboxdp
+% \nextboxwd\the\nextboxwd}%
+% \let\previousautopos\currentautopos
+% \scratchdimen\zeropoint
+% \doloop
+% {\decrement\previousautopos
+% \doifoverlappingelse{\POSstackprefix\currentautopos}{\POSstackprefix\previousautopos}
+% {\advance\scratchdimen\MPh{\POSstackprefix\previousautopos}%
+% \advance\scratchdimen\MPd{\POSstackprefix\previousautopos}}%
+% \exitloop
+% \ifnum\previousautopos<\zerocount\exitloop\fi}%
+% % \ifdim\scratchdimen>\zeropoint
+% \setbox\nextbox\iftracepositions\@EA\ruledhbox\else\@EA\hbox\fi
+% {\lower\scratchdimen\flushnextbox}%
+% \next
+% % \fi
+% \flushnextbox}}}
+
+% Because there can be many stacked items in a line and successive lines, we
+% play dirty and adapt the position and height of the current node so that
+% this becomes visible to a next pass.
+%
+% \startbuffer
+% \inleft {test 1} test 1 \inleft {test 2} test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1} test 1 \inleft {test 2} test 2 \inleft {test 3} test 3 \endgraf
+% \inleft {test 4} test 4
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1} test 1 \endgraf
+% \inleft {test 2} test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1\\test 1} test 1 \inleft {test 2} test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1\\test 1\\test 1\\test 1\\test 1} test 1 \endgraf
+% test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft{test 1} test \inleft{test 2} test \inleft{test 3\\test 3} test
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft{test 1\\test 1\\test 1} test \inleft{test 2\\test 2} test \inleft{test 3\\test 3\\test 3} test \endgraf
+% \inleft{test 1\\test 1\\test 1} test \inleft{test 2\\test 2} test \inleft{test 3\\test 3\\test 3} test
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+
\def\stackeddown
- {\dowithnextbox
+ {\bgroup
+ % this macro assumes a few things and is meant to work for margin notes
+ \dowithnextbox
{\doglobal\increment\currentautopos
\hpos{\POSstackprefix\currentautopos}
{\edef\next
@@ -2180,19 +2256,52 @@
\nextboxwd\the\nextboxwd}%
\let\previousautopos\currentautopos
\scratchdimen\zeropoint
+ \scratchcounter\zerocount
\doloop
- {\decrement\previousautopos
- \doifoverlappingelse{\POSstackprefix\currentautopos}{\POSstackprefix\previousautopos}
- {\advance\scratchdimen\MPh{\POSstackprefix\previousautopos}%
- \advance\scratchdimen\MPd{\POSstackprefix\previousautopos}}%
+ {\decrement\previousautopos\relax
+ \edef\currentposition {\POSstackprefix\currentautopos}%
+ \edef\previousposition{\POSstackprefix\previousautopos}%
+ \ifnum\MPp\currentposition=\MPp\previousposition\relax
+ %\registerstatus{doing \currentautopos/\previousautopos}%
+ \doifoverlappingelse\currentposition\previousposition
+ {\scratchskip \MPy\currentposition
+ \advance\scratchskip-\MPy\previousposition
+ \advance\scratchskip-\MPd\currentposition % untested
+ \advance\scratchskip \MPd\previousposition % untested
+ \advance\scratchskip \MPh\currentposition
+ % todo: also take depth into account
+ \relax
+ \ifdim\scratchskip<\scratchdimen
+ %\registerstatus{no \the\scratchskip}%
+ \else
+ %\registerstatus{yes \the\scratchskip}%
+ \scratchdimen\scratchskip
+ \fi}%
+ \donothing % {\registerstatus{next}}%
+ \ifnum\previousautopos<\zerocount\exitloop\fi
+ \else
\exitloop
- \ifnum\previousautopos<\zerocount\exitloop\fi}%
- % \ifdim\scratchdimen>\zeropoint
+ \fi}%
+ \ifdim\scratchdimen=\zeropoint \else
+ \bgroup
+ \edef\currentposition{\POSstackprefix\currentautopos}%
+ \scratchskip\scratchdimen
+ \advance\scratchskip\MPh\currentposition
+ \scratchdimen-\scratchdimen
+ \advance\scratchdimen\MPy\currentposition
+ %\registerstatus{old \currentautopos: \MPy\currentposition/\MPh\currentposition}%
+ \expanded{\replacepospxywhd
+ {\currentposition}{\MPp\currentposition}{\MPx\currentposition}{\the\scratchdimen}%
+ {\MPw\currentposition}{\the\scratchskip}{\MPd\currentposition}}%
+ %\registerstatus{new \currentautopos: \MPy\currentposition/\MPh\currentposition}%
+ \egroup
\setbox\nextbox\iftracepositions\@EA\ruledhbox\else\@EA\hbox\fi
{\lower\scratchdimen\flushnextbox}%
\next
- % \fi
- \flushnextbox}}}
+ %\registerstatus{\strut}%
+ \fi
+ \flushnextbox}%
+ \egroup}}
%D The next hack make sure that margin texts near faulty
%D strutted lines are handled ok.
diff --git a/tex/context/base/core-ref.tex b/tex/context/base/core-ref.tex
index 67eda416c..f00d5e12b 100644
--- a/tex/context/base/core-ref.tex
+++ b/tex/context/base/core-ref.tex
@@ -36,6 +36,10 @@
% the current implementation permits us to determine
% the page state and is also more efficient
+% the code is rather fuzzy (and will be redone some day); this is
+% due to the chaining (collect secondary and then hook that into
+% the primary etc
+
\unprotect
\startmessages dutch library: references
@@ -416,7 +420,7 @@
%D on the reference mechsnism. An example can be found in the
%D field module.
-\def\checkreferences%
+\def\checkreferences
{\bgroup
\let\fileprefix\empty
\global\let\checkreferences\relax
@@ -645,10 +649,10 @@
%D
%D and split accordingly.
-\def\settextreferences%
+\def\settextreferences
{\futurelet\next\dosettextreferences}
-\def\dosettextreferences%
+\def\dosettextreferences
{\ifx\next\bgroup
\expandafter\dotriplegroupempty\expandafter\dodosettextreferences
\else
@@ -1328,6 +1332,7 @@
\def\doifreferencefoundelse#1#2#3% REF \cs
{\checkreferences
+ % first we collect the secondary ones
\bgroup
\the\everyreference
\let\referenceprefix\empty
@@ -1344,8 +1349,9 @@
\ifenablereferencechains \iflocation
\global\secondaryreferencetrue
\xdef\secondaryreference{\csname REF::2\endcsname}%
+ % test: \global\letcscsname\secondaryreference\csname REF::2\endcsname
\bgroup
-%%\let\doifreferencefoundelse\localdoifreferencefoundelse
+ %%\let\doifreferencefoundelse\localdoifreferencefoundelse
\let\unharmedreferenceprefix\referenceprefix
\dodoifreferencefoundelse\secondaryreference
\ifreferencefound
@@ -1363,8 +1369,9 @@
\scratchcounter\plustwo
\loop
\xdef\secondaryreference{\csname REF::\number\scratchcounter\endcsname}%
+ % test: \global\letcscsname\secondaryreference\csname REF::\number\scratchcounter\endcsname
\bgroup
-%%\let\doifreferencefoundelse\localdoifreferencefoundelse
+ %%\let\doifreferencefoundelse\localdoifreferencefoundelse
\let\unharmedreferenceprefix\referenceprefix
\dodoifreferencefoundelse\secondaryreference
\ifreferencefound
@@ -1381,8 +1388,10 @@
\fi
\global\secondaryreferencefalse
\xdef\primaryreference{\csname REF::1\endcsname}%
+ % test: \global\letcscsname\secondaryreference\csname REF::1\endcsname
\bgroup
-%%\let\doifreferencefoundelse\localdoifreferencefoundelse
+ % now we handle the primary one
+ %%\let\doifreferencefoundelse\localdoifreferencefoundelse
\let\unharmedreferenceprefix\referenceprefix
\dodoifreferencefoundelse\primaryreference
\ifreferencefound#2\else#3\fi
@@ -1396,9 +1405,13 @@
%D to let speed prevail over beauty in resolving chained
%D references with symbolic (defined) references.
-\def\localdoifreferencefoundelse#1#2#3%
+% \def\localdoifreferencefoundelse#1#2#3% beware, this feeds back the (...) ref
+% {\dodoifreferencefoundelse{#1}%
+% \ifreferencefound#2\else#3\fi}
+
+\def\localdoifreferencefoundelse#1%
{\dodoifreferencefoundelse{#1}%
- \ifreferencefound#2\else#3\fi}
+ \ifreferencefound\@EA\firstoftwoarguments\else\@EA\secondoftwoarguments\fi}
%D Somewhere else we will properly define \type {\dostartgoto};
%D the noto alternative takes care of undefined references in
@@ -1563,7 +1576,7 @@
\docheckouterreference
\fi}
-\def\docheckouterreference%
+\def\docheckouterreference
{\let\referenceprefix\empty
\let\unharmedreferenceprefix\empty
\xdef\predefinedreference
@@ -1591,7 +1604,7 @@
\beginETEX \ifcsname
-\def\dodocheckouterreference%
+\def\dodocheckouterreference
{\ifcsname\specialREFidentifier\currentfullreference\endcsname
\@EA\@EA\@EA\splitofffullreference\@EA\@EA\@EA % 1 level
{\csname\specialREFidentifier\currentfullreference\endcsname}%
@@ -1602,7 +1615,7 @@
% already \global\referencefoundtrue % no checking done
\fi\fi}
-\def\docheckouterreference%
+\def\docheckouterreference
{\let\referenceprefix\empty
\let\unharmedreferenceprefix\empty
\xdef\predefinedreference
@@ -1631,10 +1644,10 @@
%D Special references are only tested when some test routine is
%D defined.
-\def\docheckspecialreference%
+\def\docheckspecialreference
{\let\referenceprefix\empty
\let\unharmedreferenceprefix\empty
- \xdef\predefinedreference%
+ \xdef\predefinedreference
{\currentreferencespecial::\currentreferenceoperation}%
\executeifdefined{\s!do:\v!test:\currentreferencespecial}%
{\global\referencefoundtrue\gobbletwoarguments}%
@@ -1656,7 +1669,7 @@
\doboundtext{#2}\scratchdimen{..}->}}%
\fi\fi
\doifpredefinedreferenceelse
- {}
+ \donothing
{\predefinereference
\showmessage\m!references{#1}{[\unharmedreferenceprefix][#2]}}%
\egroup}
@@ -1718,6 +1731,8 @@
%D
%D The second argument can be a comma seperated list.
+% this will be replaced by a more general mechanis
+
% \def\doifreferencepermittedelse#1#2#3#4% ref set found notfound
% {\doifreferencefoundelse{#1}
% {\ifx\currentinnerreference\empty
@@ -1900,7 +1915,7 @@
{\doifsomething{#2}{\thisisdestination{#1:#2}}}
\def\gotosomeinternal#1#2% #3#4
- {\gotodestination{}{}{#1:#2}}
+ {\gotodestination\empty\empty{#1:#2}}
%D An automatic mechanism is provided too:
%D
@@ -1940,9 +1955,9 @@
\def\gotonextinternal#1#2#3#4%
{\ifinternalnamedreferences
- \gotodestination{}{}{\s!aut\iftraceinternalreferences:#1\fi:#2}{#3}{#4}%
+ \gotodestination\empty\empty{\s!aut\iftraceinternalreferences:#1\fi:#2}{#3}{#4}%
\else
- \gotorealpage{}{}{#3}{#4}%
+ \gotorealpage\empty\empty{#3}{#4}%
\fi}
%D We already went through a lot of problems to sort out what
@@ -1950,7 +1965,7 @@
%D supplied cross references (show/goto this or that) as well
%D as user supplied system references (invoke this or that) is
%D already taken care of in the test routine, but we still have
-%D to direct the request to the right routine.
+%D to direct the request to the right (first) routine.
\def\gotolocation% #1#2%
{\ifx\currentreferencespecial\empty
@@ -2112,7 +2127,7 @@
%D shorter reference (\type{close}) and passed to the
%D special driver (using \type{\executecommand}).
-% better: [command(name)] and \definereference[name][command(name)]
+% better: [action(name)] and \definereference[name][action(name)]
\setglobalsystemreference \rt!exec \v!CloseDocument {close}
\setglobalsystemreference \rt!exec \v!ExitViewer {exit}
@@ -2460,7 +2475,7 @@
\removelastskip
\ifx\currentreferencespecial\empty
\ifx\currentouterreference\empty
- \ifnum0\currentrealreference=0
+ \ifnum0\currentrealreference=\zerocount
\ifhmode\strut\high{\symbol[\v!nergens]}\fi
\else\ifnum0\currentrealreference>\realpageno
\dodosymbolreference{#2}{\high{\symbol[\v!volgende]}}%
@@ -2478,7 +2493,7 @@
\egroup}
\def\dodosymbolreference#1#2%
- {#1\hbox{\gotorealpage{}{}{\currentrealreference}
+ {#1\hbox{\gotorealpage\empty\empty\currentrealreference
{\dolocationattributes\??ia\c!letter\c!kleur{#2}}}}
%D The other alternatives just conform their names: only the
@@ -2492,14 +2507,22 @@
% {\doifsomething{#2}{\donaarspace{#2}[#3]~}\donaarfixed{#1}[#3]}
% {\donaarfixed{\dotextprefix{#2}#1}[#3]}}
%
-
% better:
+% \def\docompletereference#1#2[#3]%
+% {\iflocationsplit
+% \doifsomespaceelse{#2}
+% {\donaarspace{\dotextprefix{#2}#1}[#3]}
+% {\donaarfixed{\dotextprefix{#2}#1}[#3]}%
+% \else
+% \donaarfixed{\dotextprefix{#2}#1}[#3]%
+% \fi}
+%
+% more efficient
+
\def\docompletereference#1#2[#3]%
{\iflocationsplit
- \doifsomespaceelse{#2}
- {\donaarspace{\dotextprefix{#2}#1}[#3]}
- {\donaarfixed{\dotextprefix{#2}#1}[#3]}%
+ \doifsomespaceelse{#2}\donaarspace\donaarfixed{\dotextprefix{#2}#1}[#3]%
\else
\donaarfixed{\dotextprefix{#2}#1}[#3]%
\fi}
@@ -2688,7 +2711,7 @@
#1\relax % \relax prevents #1's next macros from gobbling \fi
\fi
\fi
- \global\similarreference=0 }
+ \global\similarreference\zerocount}
\def\donaarfixed#1[#2]%
{{\iflocation
@@ -2761,9 +2784,9 @@
{\dogebruikexterndocument[#1][#2][#2]}
{\doifsomething{#2}
{\setgvalue{\v!file:::#1}{\doexternaldocument[][#2][#3]}% just \do
- \doif{\@@rfstatus}{\v!start}
+ \doif\@@rfstatus\v!start
{\doifparentfileelse{#2}
- {\showmessage{\m!references}{21}{#2}}
+ {\showmessage\m!references{21}{#2}}
{\dodogebruikexterndocument{#1}{#2}}}}}}%
\else
\dodogebruikexterndocument{#1}{#1}%
@@ -2773,10 +2796,10 @@
\def\dodogebruikexterndocument#1#2%
{\bgroup % prevents wrong loading of \jobname
\def\fileprefix{#1::}%
- \let\setglobalcrossreference=\setoutercrossreference
+ \let\setglobalcrossreference\setoutercrossreference
\usereferences[#2]%
\egroup % when called nested
- \showmessage{\m!references}{21}{#2}}
+ \showmessage\m!references{21}{#2}}
%D The \URL\ alternative takes four arguments:
%D
@@ -2849,11 +2872,11 @@
{\bgroup
\processaction
[\@@urvariant]
- [ \v!geen=>\chardef\urlsplitmode=0,
- \v!beide=>\chardef\urlsplitmode=1,
- \v!na=>\chardef\urlsplitmode=2,
- \v!voor=>\chardef\urlsplitmode=3]%
- \doifelse{\@@urspatie}{\v!ja}
+ [ \v!geen=>\chardef\urlsplitmode\zerocount,
+ \v!beide=>\chardef\urlsplitmode\plusone,
+ \v!na=>\chardef\urlsplitmode\plustwo,
+ \v!voor=>\chardef\urlsplitmode\plusthree]%
+ \doifelse\@@urspatie\v!ja
{\setbetweenisolatedwords%
{\scratchskip\currentspaceskip
\hskip\zeropoint\!!plus.2\scratchskip}}
@@ -2989,9 +3012,9 @@
%D
%D The fastest implementation would be:
-\definespecialtest\v!file{\setfalse\forceURLlocation\handlespecialFILEandURL}
-\definespecialtest\v!URL {\settrue \forceURLlocation\handlespecialFILEandURL}
-\definespecialtest\v!url {\settrue \forceURLlocation\handlespecialFILEandURL}
+\definespecialtest\v!file {\setfalse\forceURLlocation\handlespecialFILEandURL}
+\definespecialtest\v!URL {\settrue \forceURLlocation\handlespecialFILEandURL}
+\definespecialtest\v!url {\settrue \forceURLlocation\handlespecialFILEandURL}
\definespeciallocation\v!file{\setfalse\forceURLlocation\handlespecialallocationFILEandURL}
\definespeciallocation\v!URL {\settrue \forceURLlocation\handlespecialallocationFILEandURL}
@@ -3020,8 +3043,12 @@
%D
%D An better alternative, slower but error aware, is
-\definespecialtest\v!actie
- {\localdoifreferencefoundelse\currentreferenceoperation}
+% \definespecialtest\v!actie
+% {\localdoifreferencefoundelse\currentreferenceoperation}
+
+\definespecialtest\v!actie % rather ugly action(whatever{argument})
+ {\expanded{\localdoifreferencefoundelse{\currentreferenceoperation
+ \ifx\currentreferencearguments\empty\else{\currentreferencearguments}\fi}}}
\definespeciallocation\v!actie
{\handleexecreference}
@@ -3163,7 +3190,7 @@
% \doifnonzeropositiveelse{\currentinnerreference}
% {}
% {\edef\currentinnerreference{1}}%
-% \gotorealpage{}{}{\currentinnerreference}{#2}%
+% \gotorealpage\empty\empty\currentinnerreference{#2}%
% \else
% \setouterlocation\currentouterreference
% \doifnonzeropositiveelse{\currentinnerreference}
@@ -3171,7 +3198,7 @@
% {\doifdefinedelse{\v!pagina:::\currentinnerreference}
% {\edef\currentinnerreference{\getvalue{\v!pagina:::\currentinnerreference}}}
% {\edef\currentinnerreference{1}}}%
-% \gotorealpage{\otherURL}{\otherfile}{\currentinnerreference}{#2}%
+% \gotorealpage\otherURL\otherfile\currentinnerreference{#2}%
% \fi
% \else
% {#2}%
@@ -3250,15 +3277,15 @@
\doifreferencefoundelse{#1}
{\ifrealreferencepage
\ifforwardreference
- \donaarfixed{\labeltext{\v!hierboven}}[#1]%
+ \donaarfixed{\labeltext\v!hierboven}[#1]%
\else
- \donaarfixed{\labeltext{\v!hieronder}}[#1]%
+ \donaarfixed{\labeltext\v!hieronder}[#1]%
\fi
\else
- \donaarfixed{\labeltexts{\v!oppagina}{\currentpagereference}}[#1]%
+ \donaarfixed{\labeltexts\v!oppagina\currentpagereference}[#1]%
\fi}
{\unknownreference{#1}%
- \labeltexts{\v!pagina}{\dummyreference}}%
+ \labeltexts\v!pagina\dummyreference}%
\referentieinfo{<}{#1}}
%D We can cross link documents by using:
@@ -3301,7 +3328,7 @@
\dogebruikexterndocument[#1][#2][#4]%
\doglobal\addtocommalist{#1}\crossdocumentreferences
\def\docommando##1%
- {\setxvalue{\??rf##1\c!status}{\v!start}% for fast checking
+ {\globalletvalue{\??rf##1\c!status}\v!start % for fast checking
\doglobal\addtocommalist{##1}\crossdocumentelements}%
\processcommalist[#3]\docommando
\ifutilitydone
@@ -3368,6 +3395,8 @@
\long\def\docomplexbutton#1[#2]#3#4% get rid of possible space before [#4]
{\dodocomplexbutton#1[#2]{#3}#4} % #4 == [
+\def\buttonframed{\dodoubleempty\localframed[\??bt]} % goodie
+
% \def\dodocomplexbutton#1[#2]#3[#4]%
% {\bgroup
% \doifvalue{#1\c!status}{\v!stop}{\locationfalse}%
@@ -3397,10 +3426,10 @@
\long\def\dodocomplexbutton#1[#2]#3[#4]% #3 can contain [] -> {#3} later
{\bgroup
- \doifvalue{#1\c!status}{\v!stop}{\locationfalse}%
+ \doifvalue{#1\c!status}\v!stop\locationfalse
\iflocation
\resetgoto
- \ConvertConstantAfter\doifelse{#3}{\v!geen}{\hphantom}{\hbox}
+ \ConvertConstantAfter\doifelse{#3}\v!geen\hphantom\hbox
{\doifelsenothing{#4}
{\setlocationboxnop#1[#2]{#3}[#4]}
{\doifreferencefoundelse{#4}
@@ -3430,6 +3459,8 @@
%D The symbols are derived from the symbols linked to the
%D entries.
+% does not work well with for instance SomeRef{whatever}
+
\def\interactiebuttons
{\dodoubleempty\dointeractiebuttons}
@@ -3447,7 +3478,7 @@
\stelinteractiebalkin[#1,\c!strut=\v!nee]%
%\setupinteraction[\c!breedte=\!!zeropoint]%
\setinteractionparameter\c!breedte\!!zeropoint
- \!!counta=0 % new, was 1
+ \!!counta\zerocount % new, was 1
\processallactionsinset
[#2]
[ \v!pagina=>\advance\!!counta 4,
@@ -3473,7 +3504,6 @@
\edef\localreference{##1}%
\dodocomplexbutton\??ib
[\c!hoogte=\!!heighta,\c!breedte=\!!widtha]%
-% funny buggy left over: [\c!breedte=\!!widtha]%
{\dontleavehmode\symbol[\localreference]}%
[\localreference]%
\hss}%
@@ -3559,7 +3589,7 @@
\def\dotextprefix#1%
{\bgroup
\global\labeltextdonefalse % this is an ugly dependancy,
- \setbox\scratchbox=\hbox{#1}% to be solved some day
+ \setbox\scratchbox\hbox{#1}% to be solved some day
\ifdim\wd\scratchbox>\zeropoint
\unhbox\scratchbox
\iflabeltextdone\else\@@rfscheider\fi
@@ -3616,4 +3646,46 @@
% \c!zelfdepagina=\v!ja,
% \c!onbekendeverwijzing=\v!ja]
-\protect \endinput
+% under consideration:
+%
+% \setupinteraction[state=start]
+%
+% \unprotect
+%
+% \chardef\rt!extern=5
+%
+% \definesystemreferencehandler \rt!extern \handleexecreference
+%
+% \definespecialtest\v!extern
+% {\expanded{\localdoifreferencefoundelse{\currentreferenceoperation
+% \ifx\currentreferencearguments\empty\else{\currentreferencearguments}\fi}}}
+%
+% \definespeciallocation\v!extern
+% {\handleexecreference}
+%
+% \def\defineexternalreference[#1]%
+% {\setglobalsystemreference\rt!extern{#1}{#1}}
+%
+% \protect
+%
+% \defineexternalreference[NewOne]
+%
+% \def\PDFexecuteNewOne{/SomeNewAction /SomeParameter (\argumentA)}
+%
+% \starttext
+%
+% \goto{test}[AVDP{../../nach-dateipfad.pdf}]
+% \blank
+% \goto{test}[external(AVDP{../../nach-dateipfad.pdf})]
+% \blank
+% \goto{test}[AVDP{../../nach-dateipfad.pdf}]
+% \blank
+% \goto{test}[external(AVDP{../../nach-dateipfad.pdf})]
+% \blank
+% \goto{test}[CloseDocument]
+% \blank
+% \goto{test}[action(CloseDocument)]
+%
+% \stoptext
+
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex
index c50cf9955..7b44270ee 100644
--- a/tex/context/base/core-rul.tex
+++ b/tex/context/base/core-rul.tex
@@ -246,7 +246,7 @@
{\setcolorbox}
%D \macros
-%D {defineoverlay,doifoverlayelse,overlayoffset,
+%D {defineoverlay, doifoverlayelse, overlayoffset,
%D overlaywidth, overlayheight, overlaydepth,
%D overlaycolor, overlaylinecolor, overlaylinewidth}
%D
@@ -638,11 +638,11 @@
{\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!regels,\c!component,%
+ \c!voorgrondletter,\c!voorgrondkleur,\c!regels,%
\c!bovenkader,\c!onderkader,\c!linkerkader,\c!rechterkader,%
\c!lijndikte,\c!kaderoffset,\c!achtergrond,\c!component,%
\c!achtergrondoffset,\c!achtergrondraster,\c!achtergrondkleur,%
- \c!uitlijnen,\c!onder,\c!boven,\c!strut,\c!plaats]%
+ \c!uitlijnen,\c!onder,\c!boven,\c!strut,\c!plaats,\c!setups]%
\copyparameters[#1\c!achtergrond][#1]%
[\c!straal,\c!hoek,\c!diepte]%
\copyparameters[#1\c!kader][#1]%
@@ -716,6 +716,10 @@
{\@EA\doconvertfont\csname\@@framed\c!voorgrondletter\endcsname\empty}%
% beware, both the frame and background offset can be overruled
%
+ \edef\doframedsetups{\framedparameter\c!setups}%
+ \ifx\doframedsetups\empty\else
+ \edef\doframedsetups{\noexpand\setups[\doframedsetups]}%
+ \fi
% the next macros are visible
\edef\localoffset{\framedparameter\c!offset}%
\edef\localwidth {\framedparameter\c!breedte}%
@@ -1385,6 +1389,7 @@
\oninterlineskip
\hsize\!!widtha
\vsize\!!heighta
+ \doframedsetups
\raggedcommand
\dobeforeframedbox
\bgroup
@@ -1402,6 +1407,7 @@
\oninterlineskip
\hsize\!!widtha
\vsize\!!heighta
+ \doframedsetups
\raggedcenter
\vss
\bgroup
@@ -1417,6 +1423,7 @@
\bgroup
\forgetall
\oninterlineskip
+ \doframedsetups
\raggedcommand
\vss
\bgroup
@@ -1433,6 +1440,7 @@
\forgetall
\oninterlineskip
\hsize\!!widtha
+ \doframedsetups
\raggedcommand
\dobeforeframedbox
\bgroup
@@ -1448,6 +1456,7 @@
\bgroup
\forgetall
\vsize\!!heighta
+ \doframedsetups
\vss
\bgroup
\aftergroup\vss
@@ -1463,6 +1472,7 @@
{\hbox to \!!widtha
\bgroup
\forgetall
+ \doframedsetups
\hss
\localstrut
\@@handleoneliner
@@ -1474,10 +1484,13 @@
\def\doformatboxNoSize
{\hbox
\bgroup
+ \doframedsetups
\localstrut
\@@handleoneliner
\let\next=}
+\let\doframedsetups\relax
+
%D On the next page we show some examples of how these macros
%D come into action. The examples show us how
%D \type {\v!passend}, \type {\v!ruim} dimensions influence the
@@ -3272,7 +3285,8 @@
\c!onder=\vss,
\c!boven=,
\c!strut=\v!ja,
- \c!plaats=\v!normaal]
+ \c!plaats=\v!normaal,
+ \c!setups=]
\setupscreens
[\c!factor=1.0,
diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex
index 14af7f030..d628188a0 100644
--- a/tex/context/base/core-sec.tex
+++ b/tex/context/base/core-sec.tex
@@ -11,6 +11,9 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% start-stop per section en dan combineren met sectieblok; in dat geval
+% eenvoudiger per-* acties
+
% nummeren per sectieblok implementeren
% this module needs a clean up, currently some manipulations
@@ -458,20 +461,20 @@
{\doifnot{#1}\lastsection
{\donexttrackcommando{\nextsection{#1}}}}
-\newif\ifalllevels
+\chardef\alltoclevels\zerocount % \newif\ifalllevels
\let\currentlevel\empty
\def\dosetcurrentlevel#1%
- {\global\alllevelsfalse
+ {\global\chardef\alltoclevels\zerocount
\xdef\currentlevel{\getvalue{\lastsection\s!format}}}
\def\dosetpreviouslevel#1%
- {\global\alllevelstrue
+ {\global\chardef\alltoclevels\plusone
\globallet\currentlevel\empty
\def\dobacktrackcommando##1%
{\ifnum\countervalue{\??se##1}>\zerocount
- \global\alllevelsfalse
+ \global\chardef\alltoclevels\zerocount
\xdef\currentlevel{\getvalue{\previoussection{##1}\s!format}}%
\else
\dobacktracklevel{##1}%
@@ -479,7 +482,7 @@
\dobacktrackcommando\lastsection}
\def\dosettextlevel#1%
- {\global\alllevelstrue
+ {\global\chardef\alltoclevels\plusone
\globallet\currentlevel\empty}
\def\dosetotherlevel#1%
@@ -487,16 +490,16 @@
{\edef\@@sectie{\getvalue{\??ko#1\c!sectie}}} % hoofdstuk\c!format
{\edef\@@sectie{#1}}%
\doifdefinedelse{\??se\@@sectie}
- {\global\alllevelsfalse
+ {\global\chardef\alltoclevels\zerocount
\xdef\currentlevel{\getvalue{\@@sectie\s!format}}}
- {\global\alllevelstrue
+ {\global\chardef\alltoclevels\plusone
\globallet\currentlevel\empty
\def\dobacktrackcommando##1%
{\@EA\ifx\csname\??se##1\c!start\endcsname\relax
\dobacktracklevel{##1}%
\else
\ifnum\countervalue{\??se##1}>\zerocount
- \global\alllevelsfalse
+ \global\chardef\alltoclevels\zerocount
\xdef\currentlevel{\getvalue{##1\s!format}}%
\else
\dobacktracklevel{##1}%
@@ -513,9 +516,9 @@
\else\ifx\askedlevel\v!vorige
\dosetpreviouslevel\askedlevel
\else\ifx\askedlevel\v!alles
- \global\alllevelstrue
+ \global\chardef\alltoclevels\plusone
\else\ifx\askedlevel\v!tekst
- \global\alllevelstrue
+ \global\chardef\alltoclevels\plusone
\else
\edef\byaskedlevel{\csname\??by\askedlevel\endcsname}%
\ifx\byaskedlevel\v!tekst
@@ -530,9 +533,14 @@
\fi
\egroup}
-\def\dontsetfilterlevel#1%
+% \def\dontsetfilterlevel#1#2%
+% {\let\currentlevel\somesavedlevel
+% \chardef\alltoclevels\zerocount}
+
+\def\dontsetfilterlevel#1#2%
{\let\currentlevel\somesavedlevel
- \alllevelsfalse}
+ \let\@@sectiontype\@@tocsectiontype
+ \chardef\alltoclevels\zerocount}
\def\honorlocalfilterlevel % local lists will be real local
{\let\dosetfilterlevel\dontsetfilterlevel}
@@ -540,36 +548,36 @@
% cleaner
%
% \def\doifnextlevelelse[#1::#2]#3#4%
-% {\ifalllevels
-% #3%
-% \else
+% {\ifcase\alltoclevels
% \doifelse{\@@sectiontype}{#1}
% {\doifinstringelse{=\currentlevel:}{=:#2:}
% {\doifinstringelse{=\currentlevel:0}{=:#2:}{#4}{#3}}
% {#4}}
% {#4}%
+% \else
+% #3%
% \fi}
%
% \def\doifprevlevelelse[#1::#2]#3#4%
-% {\ifalllevels
-% #3%
-% \else
+% {\ifcase\alltoclevels
% \doifelse{\@@sectiontype}{#1}
% {\doifinstringelse{=\currentlevel:}{=:#2:}{#3}{#4}}
% {#4}%
+% \else
+% #3%
% \fi}
%
% faster
%
% \def\doifnextlevelelse[#1::#2]%
-% {\ifalllevels
-% \donetrue
-% \else
+% {\ifcase\alltoclevels
% \doifelse{\@@sectiontype}{#1}
% {\doifinstringelse{=\currentlevel:}{=:#2:}
% {\doifinstringelse{=\currentlevel:0}{=:#2:}\donefalse\donetrue}
% \donefalse}
% \donefalse
+% \else
+% \donetrue
% \fi
% \ifdone
% \expandafter\firstoftwoarguments
@@ -578,12 +586,12 @@
% \fi}
%
% \def\doifprevlevelelse[#1::#2]%
-% {\ifalllevels
-% \donetrue
-% \else
+% {\ifcase\alltoclevels
% \doifelse{\@@sectiontype}{#1}
% {\doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse}
% \donefalse
+% \else
+% \donetrue
% \fi
% \ifdone
% \expandafter\firstoftwoarguments
@@ -604,14 +612,14 @@
% \def\doifnextlevelelse[#1::#2]%
% {\dosavesomelevel[#2:0:0:0:0]%
-% \ifalllevels
-% \donetrue
-% \else
+% \ifcase\alltoclevels
% \doifelse{\@@sectiontype}{#1}
% {\doifinstringelse{=\currentlevel:}{=:#2:}
% {\doifinstringelse{=\currentlevel:0}{=:#2:}\donefalse\donetrue}
% \donefalse}
% \donefalse
+% \else
+% \donetrue
% \fi
% \ifdone
% \expandafter\firstoftwoarguments
@@ -621,12 +629,12 @@
%
% \def\doifprevlevelelse[#1::#2]%
% {\dosavesomelevel[#2:0:0:0:0]%
-% \ifalllevels
-% \donetrue
-% \else
+% \ifcase\alltoclevels
% \doifelse{\@@sectiontype}{#1}
% {\doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse}
% \donefalse
+% \else
+% \donetrue
% \fi
% \ifdone
% \expandafter\firstoftwoarguments
@@ -638,16 +646,18 @@
% \def\doifnextlevelelse[#1::#2]% beware: this one is \let
% {\dosavesomelevel[#2:0:0:0:0]%
-% \ifalllevels
-% \donetrue
-% \else\ifnum\@@sectiontype=#1
-% \def\levelstring{=:#2:}%
-% \doifincsnameelse{=\currentlevel:}\levelstring
-% {\doifincsnameelse{=\currentlevel:0}\levelstring\donefalse\donetrue}
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=#1
+% \def\levelstring{=:#2:}%
+% \doifincsnameelse{=\currentlevel:}\levelstring
+% {\doifincsnameelse{=\currentlevel:0}\levelstring\donefalse\donetrue}
+% \donefalse
+% \else
% \donefalse
+% \fi
% \else
-% \donefalse
-% \fi\fi
+% \donetrue
+% \fi
% \ifdone
% \expandafter\firstoftwoarguments
% \else
@@ -656,13 +666,15 @@
%
%\def\doifprevlevelelse[#1::#2]% beware: this one is \let
% {\dosavesomelevel[#2:0:0:0:0]%
-% \ifalllevels
-% \donetrue
-% \else\ifnum\@@sectiontype=#1
-% \doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=#1
+% \doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse
+% \else
+% \donefalse
+% \fi
% \else
-% \donefalse
-% \fi\fi
+% \donetrue
+% \fi
% \ifdone
% \expandafter\firstoftwoarguments
% \else
@@ -675,26 +687,73 @@
%
% we want to be able to overload them globally
-% This will be reimplemented
+% This will be reimplemented some day soon
%
% {nn}{xx}{yy}
%
% -> \scan{..}{..}{0} met 0 als sentinel
+% still not perfect
+%
+% \def\doifnextlevelelse[#1]% !! this one is \let / uti seperator --
+% {\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=\@@filterblockpart[#1]\relax
+% \edef\levelstring{=\sectionseparator\@@filternumberpart[#1]\sectionseparator}%
+% \doifincsnameelse{=\currentlevel\sectionseparator}\levelstring
+% {\doifincsnameelse{=\currentlevel\sectionseparator0}\levelstring
+% \donefalse
+% \donetrue}
+% \donefalse
+% \else
+% \donefalse
+% \fi
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \def\doifprevlevelelse[#1]% !! this one is \let / uti seperator --
+% {\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=\@@filterblockpart[#1]\relax
+% \doifinstringelse
+% {=\currentlevel\sectionseparator}
+% {=\sectionseparator\@@filternumberpart[#1]\sectionseparator}
+% \donetrue\donefalse
+% \else
+% \donefalse
+% \fi
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+
\def\doifnextlevelelse[#1]% !! this one is \let / uti seperator --
{\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
- \ifalllevels
- \donetrue
- \else\ifnum\@@sectiontype=\@@filterblockpart[#1]\relax
- \edef\levelstring{=\sectionseparator\@@filternumberpart[#1]\sectionseparator}%
- \doifincsnameelse{=\currentlevel\sectionseparator}\levelstring
- {\doifincsnameelse{=\currentlevel\sectionseparator0}\levelstring
- \donefalse
- \donetrue}
+ \edef\@@tocsectiontype{\@@filterblockpart[#1]}% needed for nested tocs
+ \ifcase\alltoclevels
+ \ifnum\@@sectiontype=\@@tocsectiontype\relax
+ \edef\levelstring{=\sectionseparator\@@filternumberpart[#1]\sectionseparator}%
+ \doifincsnameelse{=\currentlevel\sectionseparator}\levelstring
+ {\doifincsnameelse{=\currentlevel\sectionseparator0}\levelstring
+ \donefalse
+ \donetrue}
+ \donefalse
+ \else
\donefalse
+ \fi
\else
- \donefalse
- \fi\fi
+ \donetrue
+ \fi
\ifdone
\expandafter\firstoftwoarguments
\else
@@ -703,22 +762,43 @@
\def\doifprevlevelelse[#1]% !! this one is \let / uti seperator --
{\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
- \ifalllevels
- \donetrue
- \else\ifnum\@@sectiontype=\@@filterblockpart[#1]\relax
- \doifinstringelse
- {=\currentlevel\sectionseparator}
- {=\sectionseparator\@@filternumberpart[#1]\sectionseparator}
- \donetrue\donefalse
+ \edef\@@tocsectiontype{\@@filterblockpart[#1]}% needed for nested tocs
+ \ifcase\alltoclevels
+ \ifnum\@@sectiontype=\@@tocsectiontype\relax
+ \doifinstringelse
+ {=\currentlevel\sectionseparator}
+ {=\sectionseparator\@@filternumberpart[#1]\sectionseparator}
+ \donetrue\donefalse
+ \else
+ \donefalse
+ \fi
\else
- \donefalse
- \fi\fi
+ \donetrue
+ \fi
\ifdone
\expandafter\firstoftwoarguments
\else
\expandafter\secondoftwoarguments
\fi}
+% we need to cover the special case of nested lists in section blocks
+%
+% \starttext
+%
+% \def\ChapterEntry#1#2#3%
+% {chapter : \hbox to \hsize{\strut\bf#2\hss#3}\endgraf\placelist[section]}
+%
+% \startfrontmatter % optional
+% \placelist[chapter][alternative=command,command=\ChapterEntry,criterium=text] \page
+% \stopfrontmatter % optional
+%
+% \startbodymatter % optional
+% \chapter{first} \section{one} test \section{two} test \page
+% \chapter{second} \section{alpha} test \section{beta} test \page
+% \stopbodymatter % optional
+%
+% \stoptext
+
\def\doiftoclevelelse{\doifnextlevelelse}
\def\doifreglevelelse{\doifprevlevelelse}
\def\doifblklevelelse{\doifprevlevelelse}
@@ -1254,6 +1334,8 @@
[ \v!ja=>\verhoognummertrue,
\v!nee=>\verhoognummerfalse,
\v!lijst=>\verhoognummerfalse
+ % beware, since no numbers are used, no nested lists are
+ % possible here
\naarlijsttrue,
\s!unknown=>{\ifx\currentproduct\empty
\findsectionnumber{#1}\commalistelement{#4}%
@@ -1303,7 +1385,7 @@
\resetsectionmarks\@@sectie
\setlistparameter\@@koppeling\c!expansie{\getvalue{\??ko#1\c!expansie}}%
\let\fullsectionnumber\writtenfullsectionnumber
- \doschrijfnaarlijst{\@@koppeling}{\someheadconversion}{#4}{\v!kop}}%
+ \doschrijfnaarlijst\@@koppeling\someheadconversion{#4}\v!kop}%
{\dohandleheadnumber\someheadconversion}% handle is new
{#4}
{\marking[#1]{#4}%
@@ -1319,7 +1401,7 @@
\rawreference\s!sec{#2}{{#3}{\asciititle}}%
\resetsectionmarks\@@sectie
\setlistparameter\@@koppeling\c!expansie{\getvalue{\??ko#1\c!expansie}}%
- \doschrijfnaarlijst{\@@koppeling}{#3}{#4}{\v!kop}}
+ \doschrijfnaarlijst\@@koppeling{#3}{#4}\v!kop}
{\sectiebloklabel{#1}{\dohandleheadnumber{#3}}}% handle is new
{#4}
{\marking[#1]{#4}%
@@ -1338,7 +1420,7 @@
\rawreference\s!sec{#2}{{#3}{\asciititle}}%
\resetsectionmarks\@@sectie
\setlistparameter\@@koppeling\c!expansie{\getvalue{\??ko#1\c!expansie}}%
- \doschrijfnaarlijst{\@@koppeling}{}{#4}{\v!kop}}
+ \doschrijfnaarlijst\@@koppeling{}{#4}\v!kop}
{#4}
{\marking[#1]{#4}%
\doifelsevalue{\??ko#1\c!eigennummer}\v!ja % brrr
@@ -1390,11 +1472,11 @@
\setlistparameter\@@koppeling\c!expansie{\getvalue{\??ko#1\c!expansie}}%
\ifkopnummer
\rawreference\s!sec{#2}{{#3}{\asciititle}}%
- \doschrijfnaarlijst{\@@koppeling}{#3}{#4}{\v!kop}%
+ \doschrijfnaarlijst\@@koppeling{#3}{#4}\v!kop
\writesection{#1}{#3}{#4}%
\else
\rawreference\s!sec{#2}{{#3}{\asciititle}}%
- \doschrijfnaarlijst{\@@koppeling}{}{#4}{\v!kop}%
+ \doschrijfnaarlijst\@@koppeling{}{#4}\v!kop
\writesection{#1}{-}{#4}%
\fi
\egroup
@@ -1447,7 +1529,7 @@
\bgroup
\stelkopnummerin[#1][+1]% traag, wordt \getvalue{\c!volgende...}
\setlistparameter\@@koppeling\c!expansie{\getvalue{\??ko#1\c!expansie}}%
- \doschrijfnaarlijst{\@@koppeling}{}{#2}{\v!kop}%
+ \doschrijfnaarlijst\@@koppeling{}{#2}\v!kop
\stelkopnummerin[#1][-1]% traag, wordt \getvalue{\c!vorige...}
\egroup
\fi}
@@ -2035,7 +2117,7 @@
\setvalue{#1}%
{\dodoubleempty\dosomekop[#1]}}
-\def\definieerkop%
+\def\definieerkop
{\dodoubleemptywithset\dodefinieerkop}
\def\dosomekop[#1][#2]%
diff --git a/tex/context/base/core-snc.tex b/tex/context/base/core-snc.tex
index 81d310c95..e80fd1613 100644
--- a/tex/context/base/core-snc.tex
+++ b/tex/context/base/core-snc.tex
@@ -15,19 +15,24 @@
\unprotect
+\ifx\s!set \undefined \def\s!set {set} \fi
+\ifx\s!reset \undefined \def\s!reset {reset} \fi
+\ifx\s!preset \undefined \def\s!preset {preset} \fi
+\ifx\s!syncpos\undefined \def\s!syncpos{syncpos} \fi
+
\def\definesyncpositions[#1]%
- {\setcounter{num:syncpos:#1}{0}%
- \doglobal\appendtoksonce\getvalue {reset:sync:#1}\to\resetsyncpositions
- \doglobal\appendtoksonce\getvalue{preset:sync:#1}\to\presetsyncpositions
- \setgvalue{syncpos:#1}{sync_n[#1] := 0 ;}%
- \setgvalue{set:syncpos:#1}{\dosetsyncpositions{#1}}}
+ {\setcounter{\s!num:\s!syncpos:#1}{0}%
+ \doglobal\appendtoksonce\getvalue {\s!reset:\s!syncpos:#1}\to\resetsyncpositions
+ \doglobal\appendtoksonce\getvalue{\s!preset:\s!syncpos:#1}\to\presetsyncpositions
+ \setgvalue{\s!syncpos:#1}{sync_n[#1] := 0 ;}%
+ \setgvalue{\s!set:\s!syncpos:#1}{\dosetsyncpositions{#1}}}
\def\syncposition
{\dodoubleempty\dosyncposition}
\def\dosyncposition[#1][#2]%
- {\letgvalue{reset:sync:#1}\relax
- \letgvalue{preset:sync:#1}\relax
+ {\letgvalue{\s!reset:\s!syncpos:#1}\relax
+ \letgvalue{\s!preset:\s!syncpos:#1}\relax
\dontleavehmode
\dodosyncposition{#1}{#2}\s!set
\ignorespaces}
@@ -36,24 +41,24 @@
{\doifelse{\lastsyncclass\lastsyncposition}{#1#2}}
\def\dodosyncposition#1#2#3%
- {\letgvalue{reset:sync:#1}\relax
- \letgvalue{preset:sync:#1}\relax
- \ifundefined{syncpos:#1}%
+ {\letgvalue{\s!reset:\s!syncpos:#1}\relax
+ \letgvalue{\s!preset:\s!syncpos:#1}\relax
+ \ifundefined{\s!syncpos:#1}%
\strut
\else
- \pluscounter{num:syncpos:#1}%
+ \pluscounter{\s!num:\s!syncpos:#1}%
\setsyncpositions{#1}%
% option: geen w/h, alleen p 0 0 0 data
\setpositionplus
- {sync:#1:\countervalue{num:syncpos:#1}}%
+ {\s!syncpos:#1:\countervalue{\s!num:\s!syncpos:#1}}%
{#2}%
- \hbox{\strut\traceposstring\llap\green{#3/\countervalue{num:syncpos:#1}/#1/#2>>}}%
+ \hbox{\strut\traceposstring\llap\green{#3/\countervalue{\s!num:\s!syncpos:#1}/#1/#2>>}}%
\fi}
\def\setsyncpositions#1%
{\enabletextarearegistration
- \getvalue{set:syncpos:#1}%
- \letgvalue{set:syncpos:#1}\relax}
+ \getvalue {\s!set:\s!syncpos:#1}%
+ \letgvalue{\s!set:\s!syncpos:#1}\relax}
\def\dosetsyncpositions#1%
{\startnointerference % removing out of sync can best be done in mp
@@ -61,9 +66,9 @@
\!!counta\zerocount
\!!countc\zerocount
\doloop
- {\doifpositionelse{sync:#1:\recurselevel}
- {\!!dimenb\MPy{sync:#1:\recurselevel}\relax
- \!!countb\MPp{sync:#1:\recurselevel}\relax
+ {\doifpositionelse{\s!syncpos:#1:\recurselevel}
+ {\!!dimenb\MPy{\s!syncpos:#1:\recurselevel}\relax
+ \!!countb\MPp{\s!syncpos:#1:\recurselevel}\relax
\ifnum\!!countb=\!!counta % same page
\ifdim\!!dimenb>\!!dimena
\donefalse % out of order nodes
@@ -77,40 +82,26 @@
\!!counta\!!countb
\!!dimena\!!dimenb
\advance\!!countc\plusone
- \edef\!!stringc{sync:#1:\the\!!countc}%
- \edef\!!stringa{[#1][\the\!!countc]}%
- %
- % the formal way:
- %
- % \setxvalue{syncpos:#1}%
- % {\getsyncpositions{#1}%
- % sync_p [#1][\the\!!countc] := \MPp \!!stringc ;
- % sync_xy[#1][\the\!!countc] := \MPxy\!!stringc ;
- % sync_w [#1][\the\!!countc] := \MPw \!!stringc ;
- % sync_h [#1][\the\!!countc] := \MPh \!!stringc ;
- % sync_d [#1][\the\!!countc] := \MPd \!!stringc ;
- % sync_t [#1][\the\!!countc] := \MPplus{sync:#1:\recurselevel}{2}{0} ; }%
- %
- % less tokens:
- %
\edef\!!stringa{[#1][\the\!!countc]:=}%
- \setxvalue{syncpos:#1}%
+ \edef\!!stringc{\s!syncpos:#1:\the\!!countc}%
+ \edef\!!stringd{\MPplus\!!stringc{1}{0}}%
+ \setxvalue{\s!syncpos:#1}%
{\getsyncpositions{#1}%
sync_p \!!stringa \MPp \!!stringc ;
sync_xy\!!stringa \MPxy\!!stringc ;
sync_w \!!stringa \MPw \!!stringc ;
sync_h \!!stringa \MPh \!!stringc ;
sync_d \!!stringa \MPd \!!stringc ;
- sync_t \!!stringa \MPplus\!!stringc{1}{0} ; }%
+ \ifx\!!stringd\empty \else sync_t \!!stringa \MPplus\!!stringc{1}{0} ; \fi}%
\fi}
- {\setxvalue{syncpos:#1}%
+ {\setxvalue{\s!syncpos:#1}%
{\getsyncpositions{#1}%
sync_n[#1] := \the\!!countc ;}
\exitloop}}%
\stopnointerference}
\def\getsyncpositions#1%
- {\getvalue{syncpos:#1}}
+ {\getvalue{\s!syncpos:#1}}
\newtoks\resetsyncpositions
\newtoks\presetsyncpositions
@@ -121,10 +112,8 @@
\def\dodoresyncposition #1#2{\dodosyncposition{#1}{#2}\s!reset}
\def\dodopresyncposition#1#2{\dodosyncposition{#1}{#2}\s!preset}
-\def\doresyncposition [#1][#2]{\setxvalue{reset:sync:#1}{\noexpand\dodoresyncposition{#1}{#2}}}
-\def\dopresyncposition[#1][#2]{\setxvalue{preset:sync:#1}{\noexpand\dodopresyncposition{#1}{#2}}}
-
-\ifx\s!preset\undefined \def\s!preset{preset} \fi
+\def\doresyncposition [#1][#2]{\setxvalue{\s!reset:\s!syncpos:#1}{\noexpand\dodoresyncposition{#1}{#2}}}
+\def\dopresyncposition[#1][#2]{\setxvalue{\s!preset:\s!syncpos:#1}{\noexpand\dodopresyncposition{#1}{#2}}}
% \appendtoks \the \resetsyncpositions \to \everypar
% \appendtoks \the\presetsyncpositions \to \everypar
@@ -154,26 +143,39 @@
\protect \endinput
-% \definesyncpositions[1]
-
-% \startuseMPgraphic{sync}
-% StartPage ;
-% \getsyncpositions{1} ;
-% SyncThreshold := 2LineHeight ; % maybe 3
-% SyncLeftOffset := -.5LeftMarginDistance ;
-% SetSyncThreshold(1,3,3LineHeight) ;
-% SyncWidth := - (BackSpace + SyncLeftOffset + 3mm) ;
-% SetSyncColor(1,1,\MPcolor{theorie:middel}) ;
-% SetSyncColor(1,2,\MPcolor{praktijk:middel}) ;
-% SetSyncColor(1,3,\MPcolor{samenvatting:middel}) ;
-% SetSyncColor(1,4,\MPcolor{voorbeeld:middel}) ;
-% PrepareSyncTasks(1,true,true,false) ;
-% for i = 1 upto NOfSyncPaths :
-% fill SyncPaths[i] topenlarged (LineHeight+StrutDepth) bottomenlarged LineHeight withcolor white ;
-% fill SyncPaths[i] topenlarged StrutDepth withcolor TheSyncColor(CurrentSyncClass,sync_t[CurrentSyncClass][SyncTasks[i]]) ;
-% endfor ;
-% setbounds currentpicture to Page ;
-% StopPage ;
-% \stopuseMPgraphic
-
-% \defineoverlay[tempoverlay][\useMPgraphic{sync}] \ No newline at end of file
+\starttext
+
+\setupcolors[state=start]
+
+\definesyncpositions[1]
+
+\startuseMPgraphic{sync}
+ StartPage ;
+ \getsyncpositions{1} ;
+ SyncThreshold := 2LineHeight ;
+ SyncLeftOffset := -.5LeftMarginDistance ;
+ % SetSyncThreshold(1,3,3LineHeight) ;
+ SyncWidth := - (BackSpace + SyncLeftOffset) ;
+ SetSyncColor(1,1,\MPcolor{red}) ;
+ SetSyncColor(1,2,\MPcolor{green}) ;
+ SetSyncColor(1,3,\MPcolor{blue}) ;
+ SetSyncColor(1,4,\MPcolor{yellow}) ;
+ PrepareSyncTasks(1,true,true,false) ;
+ for i = 1 upto NOfSyncPaths :
+ fill SyncPaths[i]
+ withcolor TheSyncColor(CurrentSyncClass,sync_t[CurrentSyncClass][SyncTasks[i]]) ;
+ endfor ;
+ setbounds currentpicture to Page ;
+ StopPage ;
+\stopuseMPgraphic
+
+\defineoverlay[tempoverlay][\useMPgraphic{sync}]
+
+\setupbackgrounds[page][background=tempoverlay]
+
+\syncposition[1][1] \input ward \endgraf
+\syncposition[1][2] \input ward \endgraf
+\syncposition[1][3] \input ward \endgraf
+\syncposition[1][4] \input ward \endgraf
+
+\stoptext \ No newline at end of file
diff --git a/tex/context/base/core-spa.tex b/tex/context/base/core-spa.tex
index 36e8326f2..49887d92b 100644
--- a/tex/context/base/core-spa.tex
+++ b/tex/context/base/core-spa.tex
@@ -1721,7 +1721,7 @@
\def\setspacingfactor#1\to#2\by#3\\%
{\strutdimen#2\points
\strutdimen#3\strutdimen
- \edef#1{\withoutpt{\the\strutdimen}}}
+ \edef#1{\withoutpt\the\strutdimen}}
\def\spacing#1%
{\ifgridsnapping
diff --git a/tex/context/base/core-tab.tex b/tex/context/base/core-tab.tex
index 81c357dbb..2558e7d6b 100644
--- a/tex/context/base/core-tab.tex
+++ b/tex/context/base/core-tab.tex
@@ -2455,18 +2455,18 @@
{\let\StrutDepthFactor\@@itdiepte}
{\let\StrutDepthFactor\@@tidiepte}%
\scratchdimen\StrutHeightFactor\points \multiply\scratchdimen 10%
- \edef\StrutHeightFactor{\@EA\withoutpt\the\scratchdimen}%
+ \edef\StrutHeightFactor{\withoutpt\the\scratchdimen}%
\scratchdimen\StrutDepthFactor \points \multiply\scratchdimen 10%
- \edef\StrutDepthFactor{\@EA\withoutpt\the\scratchdimen}%
+ \edef\StrutDepthFactor{\withoutpt\the\scratchdimen}%
% units
\NormalTSU{\normalbaselineskip\divide\StrutUnit 12 }%
\NormalTableUnits}
\def\OpenUp#1#2%
{\scratchdimen\StrutHeightFactor \points \advance\scratchdimen #1\points
- \edef\StrutHeightFactor{\@EA\withoutpt\the\scratchdimen}%
+ \edef\StrutHeightFactor{\withoutpt\the\scratchdimen}%
\scratchdimen\StrutDepthFactor \points \advance\scratchdimen #2\points
- \edef\StrutDepthFactor{\@EA\withoutpt\the\scratchdimen}}
+ \edef\StrutDepthFactor{\withoutpt\the\scratchdimen}}
%D As one can see, we didn't only add color, but also more
%D control over spacing.
diff --git a/tex/context/base/core-tbl.tex b/tex/context/base/core-tbl.tex
index d9fc83ed8..036af687d 100644
--- a/tex/context/base/core-tbl.tex
+++ b/tex/context/base/core-tbl.tex
@@ -66,6 +66,8 @@
% j i<n> skip right of column
% k i<n> skip around column
+% s setups
+
% g g{char} align at char
% . align at .
% , align at ,
@@ -184,9 +186,10 @@
\def\noftabcolumns{16}
-\def\@@tabbox@@ {@@tabbox@}
-\def\@@tabhook@@ {@@tabhook@}
-\def\@@tabalign@@{@@tabalign@}
+\def\@@tabbox@@ {@@tabbox@}
+\def\@@tabhook@@ {@@tabhook@}
+\def\@@tabalign@@ {@@tabalign@}
+\def\@@tabsetups@@{@@tabsetups@}
% \dorecurse\noftabcolumns % quick and dirty stack
% {\@EA\newbox\csname\@@tabbox@@\recurselevel\endcsname}
@@ -230,6 +233,79 @@
\global\let\tabulatehook\dotabulatehook
\fi}
+\def\checktabulatesetups
+ {\getvalue{\@@tabsetups@@\tabulatecolumn}}
+
+% \def\dodosettabulatepreamble#1#2%
+% {\ifzeropt\tabulatewidth
+% \ifcase\tabulatemodus\relax
+% \let\preamblebox\empty
+% \else
+% \def\preamblebox{\autotabulatetrue}%
+% \fi
+% \else
+% \ifcase\tabulatemodus\relax
+% \edef\preamblebox{\hbox to \the\tabulatewidth}%
+% \else
+% \edef\preamblebox{\hsize\the\tabulatewidth}%
+% \fi
+% \fi
+% %
+% % less bytes
+% %
+% %\edef\preamblebox%
+% % {\ifcase\tabulatewidth
+% % \ifcase\tabulatemodus\relax\else\noexpand\autotabulatetrue\fi
+% % \els
+% % \ifcase\tabulatemodus\relax\hbox to\else\hsize\fi\the\tabulatewidth
+% % \fi}%
+% %
+% % 0 = NC column next EQ equal column
+% % 1 = RC column raw RQ equal column raw
+% % 2 = HC column hook HQ equal column hook
+% % some entries can be left out if we test for them being set
+% \@EA\appendtoks \@EA&\@EA\hskip\pretabskip##&\to\!!toksa
+% \appendtoks \ignorespaces\to\!!toksa
+% %\@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\tabulatecolumns}\to\!!toksa
+% \@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\the\tabulatecolumns}\to\!!toksa
+% \appendtoks \checktabulatesetups\to\!!toksa
+% \appendtoks \checktabulatehook\to\!!toksa
+% \@EA\appendtoks \preamblebox\to\!!toksa
+% \appendtoks \bgroup\bbskip\bgroup#1\to\!!toksa
+% \appendtoks\ifnum\tabulatetype=\plusone \else \to\!!toksa
+% \@EA\appendtoks \the\tabulatebmath\to\!!toksa
+% \@EA\appendtoks \the\tabulatefont\to\!!toksa
+% \@EA\appendtoks \the\tabulatesettings\to\!!toksa
+% \@EA\appendtoks \the\tabulatebefore\to\!!toksa
+% \appendtoks\fi \to\!!toksa
+% \appendtoks \bgroup\ignorespaces\to\!!toksa
+% %
+% \appendtoks \tabulatehook##\to\!!toksa
+% %
+% %%\doifdefinedelse{\@@tabalign@@\tabulatecolumns}
+% %\doifdefinedelse{\@@tabalign@@\the\tabulatecolumns}
+% % {\appendtoks\handletabulatecharalign## \to\!!toksa}
+% % {\appendtoks\tabulatehook ##\to \!!toksa}%
+% % waarom kan ik hier geen \xx{##} geven, om een of
+% % andere reden passeert dan tex de hele regel (incl \NC's)
+% % als argument; elke delimiter <> space gaat trouwens fout
+% \appendtoks \unskip\unskip\ifmmode\else\endgraf\fi\egroup\to\!!toksa
+% \appendtoks\ifnum\tabulatetype=1 \else \to\!!toksa
+% \@EA\appendtoks \the\tabulateafter\to\!!toksa
+% \@EA\appendtoks \the\tabulateemath\to\!!toksa
+% \appendtoks\fi \to\!!toksa
+% \appendtoks #2\egroup\egroup\to\!!toksa
+% \@EA\appendtoks \@EA&\@EA\hskip\postabskip##\to\!!toksa
+% \appendtoks\NC\to\tabulatedummy
+% \let\bbskip\empty
+% \def\pretabskip{.5\tabulateunit}%
+% \let\postabskip\pretabskip
+% \let\gettabulateexit\dogettabulateexit
+% \tabulatewidth\zeropoint}
+
+\let\pretabrule \donothing
+\let\posttabrule\donothing
+
\def\dodosettabulatepreamble#1#2%
{\ifzeropt\tabulatewidth
\ifcase\tabulatemodus\relax
@@ -257,10 +333,12 @@
% 0 = NC column next EQ equal column
% 1 = RC column raw RQ equal column raw
% 2 = HC column hook HQ equal column hook
- \@EA\appendtoks \@EA&\@EA\hskip\pretabskip##&\to\!!toksa
+ % some entries can be left out if we test for them being set
+ \@EA\appendtoks \@EA&\@EA\hskip\pretabskip\pretabrule##&\to\!!toksa
\appendtoks \ignorespaces\to\!!toksa
%\@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\tabulatecolumns}\to\!!toksa
\@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\the\tabulatecolumns}\to\!!toksa
+ \appendtoks \checktabulatesetups\to\!!toksa
\appendtoks \checktabulatehook\to\!!toksa
\@EA\appendtoks \preamblebox\to\!!toksa
\appendtoks \bgroup\bbskip\bgroup#1\to\!!toksa
@@ -287,7 +365,7 @@
\@EA\appendtoks \the\tabulateemath\to\!!toksa
\appendtoks\fi \to\!!toksa
\appendtoks #2\egroup\egroup\to\!!toksa
- \@EA\appendtoks \@EA&\@EA\hskip\postabskip##\to\!!toksa
+ \@EA\appendtoks \@EA&\@EA\posttabrule\@EA\hskip\postabskip##\to\!!toksa
\appendtoks\NC\to\tabulatedummy
\let\bbskip\empty
\def\pretabskip{.5\tabulateunit}%
@@ -297,14 +375,15 @@
\def\dosettabulatepreamble
{\ifx\next\relax
- \let\nextnext\relax
+ \let\nextnext\relax % == \expandafter\gobbleoneargument
\else
\let\nextnext\settabulatepreamble
- \ifx x\next \chardef\tabulatealign\zerocount
+ \ifx x\next \chardef\tabulatealign\zerocount % internal
\else\ifx l\next \chardef\tabulatealign\plusone
\else\ifx r\next \chardef\tabulatealign\plustwo
\else\ifx c\next \chardef\tabulatealign\plusthree
\else\ifx p\next \let\nextnext\gettabulateparagraph
+ \else\ifx s\next \let\nextnext\gettabulatesetups
\else\ifx w\next \let\nextnext\gettabulatewidth
\else\ifx f\next \let\nextnext\gettabulatefont
\else\ifx B\next \tabulatefont{\bf}%
@@ -320,7 +399,7 @@
\else\ifx i\next \let\nextnext\gettabulatepreskip
\else\ifx j\next \let\nextnext\gettabulateposskip
\else\ifx k\next \let\nextnext\gettabulatepreposskip
- \else\ifx X\next \let\nextnext\gettabulateexit
+ \else\ifx X\next \let\nextnext\gettabulateexit % internal
\else\ifx e\next \appendtoks\global\tabulateequaltrue\to\tabulatesettings
\else\ifx ~\next \appendtoks\fixedspaces\to\tabulatesettings
\else\ifx g\next \let\nextnext\gettabulatealign
@@ -328,7 +407,7 @@
\else\ifx ,\next \def\nextnext{\gettabulatealign,}%
\else \message{unknown preamble key [\meaning\next]}%
\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi
- \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi
+ \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi
\fi
\nextnext}
@@ -362,6 +441,10 @@
\let\gettabulateexit\settabulatepreamble
\@EA\settabulatepreamble\next}
+\def\gettabulatesetups#1%
+ {\setvalue{\@@tabsetups@@\the\tabulatecolumns}{\setups[#1]}%
+ \settabulatepreamble}
+
\def\gettabulatehook#1%
{\setvalue{\@@tabhook@@\the\tabulatecolumns}{#1}%
\settabulatepreamble}
@@ -454,6 +537,7 @@
\tabulatefont \emptytoks
\tabulatesettings\emptytoks
\global\advance\tabulatecolumns\plusone
+ \letvalue{\@@tabsetups@@\the\tabulatecolumns}\donothing
\settabulatepreamble#1\relax\relax % permits i without n
\ifcase\tabulatemodus\relax
\ifcase\tabulatealign\relax
@@ -496,8 +580,8 @@
\dp\tabulatebox\strutdp
\box\tabulatebox}
-\def\dotabulatehook {\getvalue{\@@tabhook@@ \tabulatecolumn}}
-\def\dotabulatealign{\getvalue{\@@tabalign@@\tabulatecolumn}}
+\def\dotabulatehook {\getvalue{\@@tabhook@@ \tabulatecolumn}}
+\def\dotabulatealign {\getvalue{\@@tabalign@@ \tabulatecolumn}}
\def\resettabulatepheight
{\globallet\tabulateminplines\!!plusone
@@ -1348,19 +1432,52 @@
\let\minusnoftabulatelines\noftabulatelines
\decrement\minusnoftabulatelines
\doglobal\newcounter\noftabulatelines
- \def\doHL##1%
+% not satisfying
+% \def\doHL##1%
+% {\TABLEnoalign
+% {\ifnum\noftabulatelines=\zerocount
+% \ifcase##1%
+% \@EAEAEA\ML
+% \or
+% \@EAEAEA\FL
+% \fi
+% \else\ifnum\noftabulatelines=\totalnoftabulatelines
+% \ifcase##1%
+% \@EA\@EAEAEA\@EA\ML
+% \or
+% \@EA\@EAEAEA\@EA\LL
+% \fi
+% \else
+% \@EAEAEA\ML
+% \fi\fi}}%
+% not good either
+% \def\doHL##1%
+% {\TABLEnoalign
+% {\csname\ifnum\noftabulatelines=\zerocount
+% \ifcase##1M\or F\fi
+% \else\ifnum\noftabulatelines=\totalnoftabulatelines
+% \ifcase##1M\or L\fi
+% \else
+% M%
+% \fi\fi L\endcsname}}%
+% ok
+% \def\doHL##1% ##1 ignored
+% {\TABLEnoalign
+% {\ifnum\noftabulatelines=\zerocount
+% \@EA\FL
+% \else\ifnum\noftabulatelines=\totalnoftabulatelines
+% \@EAEAEA\LL
+% \else
+% \@EAEAEA\ML
+% \fi\fi}}%
+% more fun
+ \def\doHL##1% ##1 ignored
{\TABLEnoalign
- {\ifnum\noftabulatelines=\zerocount
- \ifcase##1\or
- \@EAEAEA\FL
- \fi
- \else\ifnum\noftabulatelines=\totalnoftabulatelines
- \ifcase##1\or
- \@EA\@EAEAEA\@EA\LL
- \fi
- \else
- \@EAEAEA\ML
- \fi\fi}}%
+ {\csname
+ \ifnum\noftabulatelines=\zerocount F\else
+ \ifnum\noftabulatelines=\totalnoftabulatelines L\else
+ M\fi\fi
+ L\endcsname}}%
\def\doHR##1% horizontal rule line (break untested)
{\TABLEnoalign
{\globallet\TABLEautoline\dotabulatelinerule
diff --git a/tex/context/base/core-var.tex b/tex/context/base/core-var.tex
index 1cc72ee50..7f8c44030 100644
--- a/tex/context/base/core-var.tex
+++ b/tex/context/base/core-var.tex
@@ -23,6 +23,7 @@
\newevery \everyshipout \relax
\newevery \everybeforeshipout \relax
\newevery \everyaftershipout \relax
+\newevery \everyfirstshipout \relax
\newevery \everylastshipout \relax
\newevery \everybye \relax
\newevery \everygoodbye \relax
@@ -154,7 +155,7 @@
\fi
%D \macros
-%D {setvariables,getvariable}
+%D {setvariables,getvariable,getvariabledefault}
%D
%D \starttyping
%D \setvariables[xx][titel=]
@@ -178,7 +179,9 @@
\def\dosetvariables[#1][#2][#3]%
{\errorisfataltrue
\def\currentvariableclass{#2}%
+ \getvariable{#2}\s!reset
#1[\??vars:#2:][#3]%
+ \getvariable{#2}\s!set
\errorisfatalfalse}
\beginTEX
@@ -204,6 +207,50 @@
\let\currentvariableclass\empty
+%D \macros
+%D {doifelsevariable,doifvariable,doifnotvariable}
+%D
+%D A few trivial macros:
+
+\def\doifelsevariable#1#2%
+ {\ifundefined{\??vars:#1:#2}%
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+\def\doifvariable#1#2%
+ {\ifundefined{\??vars:#1:#2}%
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\def\doifnotvariable#1#2%
+ {\ifundefined{\??vars:#1:#2}%
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\getvariabledefault#1#2% #3%
+ {\executeifdefined{\??vars:#1:#2}}% {#3}
+
+%D \macros
+%D {checkvariables}
+%D
+%D I'll probably forget that this on exists.
+
+\def\checkvariables
+ {\dodoubleargument\docheckvariables}
+
+\def\docheckvariables
+ {\dogetparameters\docheckrawvalue}
+
+\def\docheckrawvalue#1#2#3%
+ {\doifundefined {\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}}
+ {\doifvaluenothing{\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}}}}
+
%D We store some original meanings, maybe in \type
%D {math-ini}.
diff --git a/tex/context/base/docs-ini.tex b/tex/context/base/docs-ini.tex
deleted file mode 100644
index 7209db8f9..000000000
--- a/tex/context/base/docs-ini.tex
+++ /dev/null
@@ -1,40 +0,0 @@
-%D \module
-%D [ file=docs-ini,
-%D versie=1995.10.10,
-%D naam=\CONTEXT\ Document Macros (ini),
-%D auteur=J. Hagen,
-%D datum=\currentdate,
-%D copyright=J. Hagen]
-
-\writestatus{loading}{Context Document Macros (ini)}
-
-\unprotect
-
-%I n=Documenten
-%I c=\startdocument
-%I
-%I Ten behoeve van veel voorkomende soorten documenten
-%I zijn speciale commando's beschikbaar. Bij dergelijke
-%I documenten worden in plaats van de gebruikelijke
-%I commando's \starttekst..\stoptekst de onderstaande
-%I commando's gebruikt:
-%I
-%I \startdocument[soort document]
-%I \stopdocument
-%I
-%I Documenten worden gedefinieerd in files met de naam
-%I docs-xxx, waarbij xxx de eerste drie letters van het
-%I soort overzicht zijn.
-%I
-%I Vooralsnog zijn alleen 'brief', 'sheet', 'sticker' en
-%I 'lijst' beschikbaar.
-
-\definieerfilegroep
- [document]
- [file=docs,
- voor=\starttekst,
- na=\stoptekst]
-
-\protect
-
-\endinput
diff --git a/tex/context/base/enco-mis.tex b/tex/context/base/enco-mis.tex
index 152e78542..6c312a804 100644
--- a/tex/context/base/enco-mis.tex
+++ b/tex/context/base/enco-mis.tex
@@ -8,16 +8,16 @@
%D copyright=PRAGMA-ADE]
%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 In this file we collect some definitions that construct
-%D pseudo characters. Some day we will move some definitions
-%D from \type {plain.tex} to this file. Some definitions are
-%D derived from definitions in the \LATEX\ distribution,
-%D especially Johannes Braams' Babel system.
+%D In this file we collect some definitions that construct
+%D pseudo characters. Some day we will move some definitions
+%D from \type {plain.tex} to this file. Some definitions are
+%D derived from definitions in the \LATEX\ distribution,
+%D especially Johannes Braams' Babel system.
-\startmapping[\s!default]
+\startmapping[\s!default]
\defineuppercasecom \dj \DJ
\defineuppercasecom \Dj \dj
@@ -26,7 +26,7 @@
\definecharacter dstroke {\pseudoencodeddj}
\definecharacter Dstroke {\pseudoencodedDJ}
-\stopmapping
+\stopmapping
%D We need proper names like in enco-com.tex!
@@ -34,53 +34,53 @@
\definecharacter Dj {\Dstroke} % {\pseudoencodedDJ}
\definecharacter DJ {\Dstroke} % {\pseudoencodedDJ}
-\unprotect
+\unprotect
-% \def\pseudoencodeddj % like in babel
+% \def\pseudoencodeddj % like in babel
% {\leavevmode\hbox\bgroup
% \setbox0\hbox{d}%
% \dimen0=\ht0
% \advance\dimen0 1ex
% \dimen0=.45\dimen0
-% \dimen2\expandafter\withoutpt\the\fontdimen1\font\dimen0
+% \dimen2=\withoutpt\the\fontdimen1\font\dimen0
% \advance\dimen2 .5ex
% \rlap{\raise\dimen0\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.3em}}}%
% \box0
% \egroup}
-%
-% \def\pseudoencodedDJ % like in babel
+%
+% \def\pseudoencodedDJ % like in babel
% {\leavevmode
% \hbox\bgroup
% \setbox0\hbox{D}%
% \dimen0=.55\ht0
-% \dimen2\expandafter\withoutpt\the\fontdimen1\font\dimen0
-% \advance\dimen2 .15ex
-% \advance\dimen2 -.15\fontdimen7\font
+% \dimen2=\withoutpt\the\fontdimen1\font\dimen0
+% \advance\dimen2 .15ex
+% \advance\dimen2 -.15\fontdimen7\font
% \rlap{\raise\dimen0\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.33em}}}%
% \box0
% \egroup}
-\def\pseudoencodeddj % like in babel, but safer
+\def\pseudoencodeddj % like in babel, but safer
{\leavevmode\hbox\bgroup
\setbox\scratchbox\hbox{d}%
\scratchdimen\ht\scratchbox
\advance\scratchdimen 1ex
\scratchdimen.45\scratchdimen
- \dimen2\expandafter\withoutpt\the\fontdimen1\font\dimen0
+ \dimen2=\withoutpt\the\fontdimen1\font\dimen0
\advance\dimen2 .5ex
\hbox to \wd\scratchbox
{\box\scratchbox\hss
\raise\scratchdimen\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.3em}}}%
\egroup}
-\def\pseudoencodedDJ % like in babel, but safer
+\def\pseudoencodedDJ % like in babel, but safer
{\leavevmode
\hbox\bgroup
\setbox\scratchbox\hbox{D}%
\scratchdimen.55\ht\scratchbox
- \dimen2\expandafter\withoutpt\the\fontdimen1\font\scratchdimen
- \advance\dimen2 .15ex
- \advance\dimen2 -.15\fontdimen7\font
+ \dimen2=\withoutpt\the\fontdimen1\font\scratchdimen
+ \advance\dimen2 .15ex
+ \advance\dimen2 -.15\fontdimen7\font
\hbox to \wd\scratchbox
{\box\scratchbox\hss
\raise\scratchdimen\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.3em}}}%
@@ -88,7 +88,7 @@
% currency
-\def\fakedollar % pretty cmr dependent
+\def\fakedollar % pretty cmr dependent
{\bgroup
\ifnum\fam=\itfam
\sl
@@ -98,7 +98,7 @@
\$%
\egroup}
-\def\fakesterling % pretty cmr dependent
+\def\fakesterling % pretty cmr dependent
{\bgroup
\ifnum\fam=\bffam
\bi
@@ -145,7 +145,7 @@
\hss}%
\egroup}
-% guillemots
+% guillemots
%D Yes I know, they are ugly:
@@ -161,7 +161,7 @@
\def\fakerightsubguillemot
{\hbox{\raise.25ex\hbox{$\scriptscriptstyle>$}}}
-%D Needed:
+%D Needed:
\def\fakevisiblespace
{\leavevmode\hbox
@@ -169,29 +169,29 @@
\scratchdimen.1\dp\scratchbox
\setbox\scratchbox\hbox{\space}%
\hbox to \wd\scratchbox
- {\vrule
+ {\vrule
\!!depth 5\scratchdimen
- \!!width \scratchdimen
+ \!!width \scratchdimen
\!!height \zeropoint
\hss
- \vrule
+ \vrule
\!!depth 5\scratchdimen
\!!width \wd\scratchbox
\!!height-4\scratchdimen
\hss
- \vrule
+ \vrule
\!!depth 5\scratchdimen
- \!!width \scratchdimen
+ \!!width \scratchdimen
\!!height \zeropoint}}}
-%\def\fakeunderscore{\leavevmode\kern.06em\vbox{\hrule\!!width.3em}}
+%\def\fakeunderscore{\leavevmode\kern.06em\vbox{\hrule\!!width.3em}}
\def\fakeunderscore
{\leavevmode\hbox
{\setbox\scratchbox\hbox{(}%
\scratchdimen.2\dp\scratchbox
\setbox\scratchbox\hbox{\space}%
- \vrule
+ \vrule
\!!depth \scratchdimen
\!!width \wd\scratchbox
\!!height\zeropoint}}
@@ -201,8 +201,8 @@
\def\_{\ifmmode\mathunderscore\else\textunderscore\fi}
-%D Handy:
+%D Handy:
\def\missingglyph{\ruledhbox{?}}
-\protect \endinput
+\protect \endinput
diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex
index a6acf4c09..1c12964dc 100644
--- a/tex/context/base/font-ini.tex
+++ b/tex/context/base/font-ini.tex
@@ -89,7 +89,10 @@
% {\one \bf test \two test}
% {\one \bf test \pushcurrentfont \two \popcurrentfont test}
-% new
+%D \macros
+%D {definedfont,startfont,doiffontcharelse}
+%D
+%D A couple of relatively new macros:
\newevery \everydefinedfont \relax
@@ -106,6 +109,15 @@
\def\stopfont
{\egroup}
+
+\def\doiffontcharelse#1#2%
+ {\bgroup
+ \definedfont[#1]%
+ \iffontchar\font#2\relax
+ \egroup\expandafter\firstoftwoarguments
+ \else
+ \egroup\expandafter\secondoftwoarguments
+ \fi}
%%% message 14 added
@@ -2519,7 +2531,7 @@
\readsysfile{\truefilename{\f!fontprefix#2}}
{\showmessage\m!fonts2{#2}}
{\makeshortfilename[\truefilename{\f!fontprefix#2}]%
- \readsysfile{\shortfilename}
+ \readsysfile\shortfilename
{\showmessage\m!fonts2{#2}}
{\showmessage\m!fonts3{#2}}}%
\stopreadingfile}}
diff --git a/tex/context/base/font-run.tex b/tex/context/base/font-run.tex
index 3a1c3be3c..1b2471a59 100644
--- a/tex/context/base/font-run.tex
+++ b/tex/context/base/font-run.tex
@@ -319,8 +319,8 @@
\gdef\showcharratio
{\dowithnextboxcontent
{\switchtobodyfont[10pt]}%
- {(\expanded{\withoutpt{\the\nextboxht}},%
- \expanded{\withoutpt{\the\nextboxdp}})}%
+ {(\expanded{\withoutpt\the\nextboxht},%
+ \expanded{\withoutpt\the\nextboxdp})}%
\hbox}
\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/java-fld.tex b/tex/context/base/java-fld.tex
index 5ef34bd58..aad157dd7 100644
--- a/tex/context/base/java-fld.tex
+++ b/tex/context/base/java-fld.tex
@@ -127,17 +127,18 @@
event.value = Sanitized_TeX_String(event.value) ;
\stopJScode
-%\startJSpreamble {Do_With_Field} used now
-
\startJSpreamble {Field} used now
-function PresetFields ()
- { this.syncAnnotScan() }
-
var visible_field = new Array() ; % no garbage collection !
var visible_fields = 0 ;
-function Hide_When_Down ()
+function PresetFields ( )
+ { this.syncAnnotScan() }
+
+function Preset_Fields ( )
+ { this.syncAnnotScan() }
+
+function Hide_When_Down ( )
{ event.target.hidden = true }
% { event.target.display = display.hidden }
@@ -226,6 +227,9 @@ function Flip_Fields ( Name )
function Forget_Changes ()
{ this.dirty = false }
+function ForgetChanges ()
+ { this.dirty = false }
+
\stopJSpreamble
%\startJScode{Hide_When_Down} Hide_When_Down() \stopJScode
diff --git a/tex/context/base/java-ini.tex b/tex/context/base/java-ini.tex
index 7fdef5345..f9cd778af 100644
--- a/tex/context/base/java-ini.tex
+++ b/tex/context/base/java-ini.tex
@@ -8,22 +8,22 @@
%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.
\writestatus{loading}{Context JavaScript Macros / Initialization}
-% BUG: preamble zonder used/used en split
+% BUG: preamble zonder used/used en split
% JavaScript support is under development. In the near future
-% a slightly different model will be used. The JScode stuff
-% will probably become just auto function inclusion and the
-% JS_* things will disappear. First I have to find a way to
+% a slightly different model will be used. The JScode stuff
+% will probably become just auto function inclusion and the
+% JS_* things will disappear. First I have to find a way to
% deal with global variables so the 'uses' thing will remain.
% ook p{ref}
% documentation should be corrected to JS(
-
+
% Also, obeylines will be supported.
\unprotect
@@ -31,7 +31,7 @@
%D \JAVA\ support is not implemented as a generic support
%D module. The main reason for this is that passing system
%D variables to a \JAVASCRIPT\ is closely related to other core
-%D macros. First some messages:
+%D macros. First some messages:
\startmessages dutch library: javascript
title: javascript
@@ -76,7 +76,7 @@
\stopmessages
%D \TEX\ is not the right tool to check the \JAVA\ code; the
-%D most we can do is reporting some passed variables:
+%D most we can do is reporting some passed variables:
\newif\iftraceJScode \traceJScodefalse
@@ -86,11 +86,11 @@
\bgroup
\catcode127=\@@letter
-\gdef\delcharacter{^^7f}
+\gdef\delcharacter{^^7f}
\egroup
%D The number of passed variables is minimalized by setting the
-%D next switch.
+%D next switch.
\newif\ifminimalizeJScode \minimalizeJScodetrue
@@ -100,108 +100,108 @@
%D Because \JAVASCRIPT's are activated by the user, for
%D instance by activating on a button, their support is closely
%D related to the referencing mechanism. Integration takes
-%D place by
-%D
+%D place by
+%D
%D \starttypen
%D \naar{calculate total}[Sum()]
%D \stoptypen
-%D
+%D
%D The \type{()} classify this as a script. If they are absent,
-%D the keyword is treated as a normal reference.
-%D
+%D the keyword is treated as a normal reference.
+%D
%D One can pass arguments to such a script by saying:
-%D
+%D
%D \starttypen
%D \naar{calculate total}[Sum(1.5,2.3)]
%D \stoptypen
-%D
-%D References are passed by using the \type{R{}} classifier.
-%D
+%D
+%D References are passed by using the \type{R{}} classifier.
+%D
%D \starttypen
%D \naar{calculate total}[Sum(1.5,2.3,R{overflow})]
%D \stoptypen
-%D
+%D
%D The last call calls the script \type{Sum} and passes the
-%D next set of variables:
-%D
+%D next set of variables:
+%D
%D \starttypen
%D JS_S_1="1.5";
%D JS_S_2="2.3";
%D JS_R_3="overflow";
%D JS_P_3=3;
%D \stoptypen
-%D
+%D
%D The first two parameters are just strings, the third one
%D however is treated as a reference and results in passing the
%D reference (if needed this references is prefixed) and the
-%D (real) page number. The alternative:
-%D
+%D (real) page number. The alternative:
+%D
%D \starttypen
%D \naar{calculate total}[JS(Sum{V{1.5},V{2.3},R{overflow}})]
%D \stoptypen
-%D
+%D
%D does a verbose passing:
-%D
+%D
%D \starttypen
%D JS_V_1=1.5;
%D JS_V_2=2.3;
%D JS_R_3="overflow";
%D JS_P_3=3;
%D \stoptypen
-% %D
-% %D Finally we have a counter that tells\JAVA\ how many
+% %D
+% %D Finally we have a counter that tells\JAVA\ how many
% %D arguments were passed,
% %D
% %D \starttypen
% %D JS_N
% %D \stoptypen
-%D We will also support direct function calls. In that case
-%D no intermediate variables are used.
+%D We will also support direct function calls. In that case
+%D no intermediate variables are used.
%D \macros
%D {startJScode}
%D
%D A piece of \JAVASCRIPT\ code is defined by saying:
-%D
+%D
%D \starttypen
%D \startJScode{SomeScript}
-%D var Item=this.getField("item");
+%D var Item=this.getField("item");
%D N=Item.getArray();
-%D Total=this.getField("total");
+%D Total=this.getField("total");
%D Total.value=0;
%D for (j=0; j<N.length; j++)
%D { if (N[j].value!="")
%D { Total.value += N[j].value } } ;
-%D if ((JS_N>0) && (JS_R_1!=""))
+%D if ((JS_N>0) && (JS_R_1!=""))
%D { gotoNamedDest(JS_R_1) };
%D \stopJScode
%D \stoptypen
-%D
+%D
%D Such a piece of code is closely related to the interpreter
%D used. Watch the last two lines, here the script adapts
-%D itself to the presence of a reference.
+%D itself to the presence of a reference.
%D
-%D While
+%D While
%D
%D \starttypen
-%D \startJScode{name}
+%D \startJScode{name}
%D name = 4 ;
-%D \stopJScode
+%D \stopJScode
%D \stoptypen
%D
-%D assumes uses no preamble or presumes that the preamble is
-%D always loaded, the next definition also tells \CONTEXT\ to
-%D actually include the preamble needed.
+%D assumes uses no preamble or presumes that the preamble is
+%D always loaded, the next definition also tells \CONTEXT\ to
+%D actually include the preamble needed.
%D
%D \starttypen
-%D \startJScode{uses} uses {later}
+%D \startJScode{uses} uses {later}
%D uses = 6 ;
-%D \stopJScode
+%D \stopJScode
%D \stoptypen
-\long\def\startJScode#1 #2
- {\doifelse{#2}{uses}
+\long\def\startJScode#1 #2
+ {\doifelse{#2}{uses}
{\dostartJScodeA{#1}}
{\dostartJScodeB{#1} #2 }}
@@ -216,22 +216,22 @@
%D \macros
%D {presetJScode}
%D
-%D The code can be retrieved by saying
-%D
+%D The code can be retrieved by saying
+%D
%D \starttypen
%D \presetJScode{SomeScript}{template}
%D \stoptypen
-%D
-%D Such a template is a comma separated list, where
-%D individual entries can optionally be transformed by
-%D \type{R{}} and \type{V{}}.
%D
-%D After this call, the code is available in \type{\JScode}.
+%D Such a template is a comma separated list, where
+%D individual entries can optionally be transformed by
+%D \type{R{}} and \type{V{}}.
+%D
+%D After this call, the code is available in \type{\JScode}.
\def\setverbosecscharacter#1%
{\edef#1{\string#1}}
-\def\setverbosecscharacters % temporary hack
+\def\setverbosecscharacters % temporary hack
{\setverbosecscharacter |\setverbosecscharacter ~%
\setverbosecscharacter\:\setverbosecscharacter\;%
\setverbosecscharacter\+\setverbosecscharacter\-%
@@ -243,14 +243,14 @@
\setverbosecscharacter\4\setverbosecscharacter\5%
\setverbosecscharacter\6\setverbosecscharacter\7%
\setverbosecscharacter\8\setverbosecscharacter\9%
- \setverbosecscharacter\n\setverbosecscharacter\s%
+ \setverbosecscharacter\n\setverbosecscharacter\s%
\setverbosecscharacter\/}
\newif\ifdirectJScode
\def\presetJScode#1#2% #1=operation #2=arguments
{\setverbosecscharacters
- \def\par{\delcharacter}% was: { }
+ \def\par{\delcharacter}% was: { }
\scratchcounter\zerocount
\globallet\JScode\empty
\def\do##1##2%
@@ -278,16 +278,16 @@
\dodopresetJSvariables#1\end}%
\def\dodopresetJSvariables
- {\doifnextcharelse{R}\dodopresetJSrefvariables
- {\doifnextcharelse{V}\dodopresetJSvervariables
- {\doifnextcharelse{S}\dodopresetJSstrvariables
- \dodopresetJSrawvariables}}}
+ {\doifnextcharelse R\dodopresetJSrefvariables
+ {\doifnextcharelse V\dodopresetJSvervariables
+ {\doifnextcharelse S\dodopresetJSstrvariables
+ \dodopresetJSrawvariables}}}
\def\dodopresetJSrefvariables R#1\end
{\doifreferencefoundelse{#1}
{\donetrue \dododopresetJSvariables R{\referenceprefix#1}%
\donefalse\dododopresetJSvariables P{\currentrealreference}}
- {\unknownreference{#1}}%
+ {\unknownreference{#1}}%
\ifminimalizeJScode \else
\donetrue\dododopresetJSvariables S{#1}%
\fi}
@@ -297,13 +297,13 @@
\ifminimalizeJScode \else
\donetrue\dododopresetJSvariables S{#1}%
\fi}
-
+
\def\dodopresetJSstrvariables S#1\end
{\donetrue\dododopresetJSvariables S{#1}}
\def\dodopresetJSrawvariables #1\end
{\donetrue\dododopresetJSvariables S{#1}}
-
+
\def\JSprefix#1%
{JS\string_#1\string_\the\scratchcounter}
@@ -320,35 +320,35 @@
%D \macros
%D {startJSpreamble, flushJSpreamble}
-%D
+%D
%D One can define insert \JAVASCRIPT\ code at the document level
%D by using:
-%D
+%D
%D \starttypen
-%D \startJSpreamble{oeps}
+%D \startJSpreamble{oeps}
%D oeps = 1 ;
-%D \stopJSpreamble
+%D \stopJSpreamble
%D \stoptypen
-%D
-%D which is the same as:
+%D
+%D which is the same as:
%D
%D \starttypen
-%D \startJSpreamble{now} used now
-%D now = 2 ;
-%D \stopJSpreamble
+%D \startJSpreamble{now} used now
+%D now = 2 ;
+%D \stopJSpreamble
%D \stoptypen
-%D
-%D while the next definition is only included when actually
+%D
+%D while the next definition is only included when actually
%D used.
%D
%D \starttypen
-%D \startJSpreamble{later} used later
-%D later = 3 ;
-%D \stopJSpreamble
+%D \startJSpreamble{later} used later
+%D later = 3 ;
+%D \stopJSpreamble
%D \stoptypen
-%D
-%D This command may be used more that once, but always before
-%D the first page is shipped out.
+%D
+%D This command may be used more that once, but always before
+%D the first page is shipped out.
\newif\ifoneJSpreamble \oneJSpreambletrue
@@ -357,7 +357,7 @@
\newcounter\currentJSpreamble
\long\def\startJSpreamble#1 #2 %
- {\bgroup % we need to restore the catcodes
+ {\bgroup % we need to restore the catcodes
\popendofline % just in case it happens while reading lists
\doifelse{#2}{used}
{\dostartJSpreamble#1 }
@@ -365,7 +365,7 @@
\long\def\dostartJSpreamble#1 #2 #3\stopJSpreamble
{\processaction
- [#2]
+ [#2]
[ later=>\chardef\JSstatus\zerocount,%
now=>\chardef\JSstatus\plusone ,%
\s!default=>\chardef\JSstatus\plustwo ,%
@@ -374,15 +374,15 @@
\long\setgvalue{\r!java\r!java#1}{#3}%
\ifcase\JSstatus \else
\useJSpreamblenow{#1}%
- \fi
+ \fi
\egroup}
-%D \macros
+%D \macros
%D {setJSpreamble, addtoJSpreamble}
-%D
-%D In addition to the previous preamble definitions, we can
-%D set a preamble \citeer {in||line} and add tokens to a
-%D preamble.
+%D
+%D In addition to the previous preamble definitions, we can
+%D set a preamble \citeer {in||line} and add tokens to a
+%D preamble.
\def\setJSpreamble#1#2%
{\doifundefined{\r!java\r!java#1}
@@ -393,22 +393,22 @@
\def\addtoJSpreamble#1#2%
{\doifdefinedelse{\r!java\r!java#1}
{\edef\!!stringa{\r!java\r!java#1}%
- \edef\!!stringb{\csname\!!stringa\endcsname}%
+ \edef\!!stringb{\csname\!!stringa\endcsname}%
\@EA\setgvalue\@EA\!!stringa\@EA{\!!stringb #2;}}
{\setJSpreamble{#1}{#2}}}
-%D \macros
+%D \macros
%D {useJSpreamblenow}
%D
%D The next macro can be used to force inclusion of postponed
-%D \JAVASCRIPT\ preambles.
+%D \JAVASCRIPT\ preambles.
\def\useJSpreamblenow#1%
{\doglobal\increment\currentJSpreamble
\doglobal\addtocommalist{#1}\allJSpreambles}
-%D Because we want to check for valid calls, we preload the
-%D functions. This means that we can call them directly as
+%D Because we want to check for valid calls, we preload the
+%D functions. This means that we can call them directly as
%D well as indirectly when defined by \type {\startJScode} etc.
\long\def\presetJSfunctions#1function #2(#3)%
@@ -425,18 +425,17 @@
{\ifx\allJSpreambles\empty\else
\bgroup
\setverbosecscharacters
- \def\par{\delcharacter}% was: { }
+ \def\par{\delcharacter}% was: { }
\globallet\JSpreamble\empty
\def\@@collectedJSpreamble{\r!java\r!java collected}%
\letvalue{\@@collectedJSpreamble}=\empty
\def\docommando##1%
{\xdef\JScode{\getvalue{\r!java\r!java##1}}%
- \ifoneJSpreamble
+ \ifoneJSpreamble % \global\letcdcsname
\@EA\setxvalue\@EA\@@collectedJSpreamble\@EA
{\csname\@@collectedJSpreamble\endcsname\JScode}%
\else
- \setxvalue{\r!java\r!java##1}%
- {\JScode}%
+ \setxvalue{\r!java\r!java##1}{\JScode}%
\fi}%
\processcommacommand[\allJSpreambles]\docommando
\ifoneJSpreamble
@@ -468,19 +467,19 @@
\fi}
\prependtoks \flushJSpreamble \to \everyshipout
-\prependtoks \finalflushJSpreamble \to \everylastshipout
+\prependtoks \finalflushJSpreamble \to \everylastshipout
%D \macros
%D {doPSsanitizeJScode}
-%D
+%D
%D Before the code can be passed to the (\POSTSCRIPT\ or \PDF)
%D output file, some precautions must be made concerning the
-%D use of \type{(} and~\type{)}. Here we use a beautiful
-%D \type{\aftergroup} trick I discovered in the \TABLE\ format.
+%D use of \type{(} and~\type{)}. Here we use a beautiful
+%D \type{\aftergroup} trick I discovered in the \TABLE\ format.
-\def\doPSsanitizeJScode#1\to#2%
+\def\doPSsanitizeJScode#1\to#2%
{\begingroup
- \scratchcounter\zerocount % \aftergroup counter
+ \scratchcounter\zerocount % \aftergroup counter
\aftergroup\xdef
\aftergroup#2%
\aftergroup{%
@@ -493,25 +492,25 @@
\fi}
%D I started with:
-%D
+%D
%D \starttypen
-%D \def\dodoPSsanitizeJScode#1%
+%D \def\dodoPSsanitizeJScode#1%
%D {\aftergroup\string
%D \if#1(%
%D \expandafter\aftergroup\csname#1\endcsname
%D \else\if#1)%
%D \expandafter\aftergroup\csname#1\endcsname
%D \else\if#1;%
-%D \aftergroup;\aftergroup\string\expandafter\aftergroup\
+%D \aftergroup;\aftergroup\string\expandafter\aftergroup\
%D \else
%D \expandafter\aftergroup#1%
%D \fi\fi\fi
%D \advance\scratchcounter by 1
-%D \ifnum\scratchcounter=500
+%D \ifnum\scratchcounter=500
%D \expandafter\dododoPSsanitizeJScode
%D \fi}
%D \stoptypen
-%D
+%D
%D For pretty printing purposes, we need some way to signal
%D \TEX\ macros. Therefore we introduce a special keyword
%D \type{TEX}. When followed by a space, this keyword is
@@ -520,7 +519,7 @@
\chardef\JSisTEX =0
\chardef\JScomment=0
-\newif\ifaddJSlinebreaks
+\newif\ifaddJSlinebreaks
\def\flushJSisTEX
{\ifcase\JSisTEX
@@ -540,25 +539,25 @@
\ifnum\JScomment=0
\chardef\JScomment\plusone
\else\ifnum\JScomment=1
- \chardef\JScomment\plustwo
+ \chardef\JScomment\plustwo
\fi\fi
\else
\ifnum\JScomment=1
\aftergroup/%
- \chardef\JScomment\zerocount
+ \chardef\JScomment\zerocount
\fi
\ifnum\JScomment=2
\if#1\delcharacter
- \chardef\JScomment\zerocount
- \fi
+ \chardef\JScomment\zerocount
+ \fi
\else
- \if#1\delcharacter
+ \if#1\delcharacter
\flushJSisTEX\doJSlinebreak
\else\if#1(%
\flushJSisTEX\aftergroup\string\expandafter\aftergroup\csname#1\endcsname
\else\if#1)%
\flushJSisTEX\aftergroup\string\expandafter\aftergroup\csname#1\endcsname
- \else\if#1;%
+ \else\if#1;%
\flushJSisTEX\aftergroup;\doJSlinebreak
\else\if#1T%
\ifnum\JSisTEX=0 \chardef\JSisTEX\plusone \else\flushJSisTEX\aftergroup T\fi
@@ -567,7 +566,7 @@
\else\if#1X%
\ifnum\JSisTEX=2 \chardef\JSisTEX\plusthree \else\flushJSisTEX\aftergroup X\fi
\else\if#1\normalspace
- \ifnum\JSisTEX=3 \chardef\JSisTEX\zerocount \else\flushJSisTEX\aftergroup#1\fi
+ \ifnum\JSisTEX=3 \chardef\JSisTEX\zerocount \else\flushJSisTEX\aftergroup#1\fi
\else
\flushJSisTEX\aftergroup\string\expandafter\aftergroup#1%
\fi\fi\fi\fi\fi\fi\fi\fi
@@ -575,13 +574,13 @@
\fi
\dododoPSsanitizeJScode}
-%D Close reading learns that one line comments (\type{// ...})
-%D are removed from the stream. This permits switching in
-%D pretty printing \JAVASCRIPT\ sources as well as saves
-%D some bytes.
+%D Close reading learns that one line comments (\type{// ...})
+%D are removed from the stream. This permits switching in
+%D pretty printing \JAVASCRIPT\ sources as well as saves
+%D some bytes.
-%D The magic 500 in the next hack prevents the input stack from
-%D overflowing when large scripts are sanitized.
+%D The magic 500 in the next hack prevents the input stack from
+%D overflowing when large scripts are sanitized.
%\beginTEX
@@ -589,8 +588,8 @@
{\ifcase\JSisTEX\ifcase\JScomment
\advance\scratchcounter \plusone
\fi\fi
- \ifnum\scratchcounter=500
- \expandafter\dodododoPSsanitizeJScode
+ \ifnum\scratchcounter=500
+ \expandafter\dodododoPSsanitizeJScode
\fi}
\def\dodododoPSsanitizeJScode
@@ -600,13 +599,13 @@
\begingroup
\aftergroup\xdef
\aftergroup\sanitizedJScode
- \aftergroup{%
+ \aftergroup{%
\aftergroup\sanitizedJScode
\let\next=}}
%\endTEX
%
-% Why is \aftergroup not doing what I expect?
+% Why is \aftergroup not doing what I expect?
%
% \beginETEX \aftergroup
%
@@ -614,17 +613,17 @@
%
% \endETEX
-%D The macro \type{\doPSsanitizeJScode} converts its argument
-%D into the macro \type{\sanitizedJScode}, thereby prefixing
-%D each \type{(} and \type{)} by a slash.
+%D The macro \type{\doPSsanitizeJScode} converts its argument
+%D into the macro \type{\sanitizedJScode}, thereby prefixing
+%D each \type{(} and \type{)} by a slash.
%D Hooking this mechanism into the general \CONTEXT\ reference
-%D mechanism does not take much effort:
+%D mechanism does not take much effort:
\definespecialtest{JS}%
{\doifdefinedelse{\r!java\currentreferenceoperation}}
-\definespeciallocation{JS}#1#2%
+\definespeciallocation{JS}#1#2%
{\iflocation
\bgroup
\bgroup
@@ -645,21 +644,21 @@
{#2}%
\fi}
-%D \macros
+%D \macros
%D {useJSscripts}
-%D
+%D
%D In due time, users will build their collections of scripts,
%D which can be used (loaded) when applicable. Although not all
%D public, we will provide some general purpose scripts,
%D collected in files with names like \type{java-...}. One can
-%D load these scripts with \type{\useJSscripts}, like:
-%D
+%D load these scripts with \type{\useJSscripts}, like:
+%D
%D \starttypen
%D \useJSscripts[fld]
%D \stoptypen
-%D
+%D
%D The not so complicated implementation of this macro is:
-
+
\def\dodouseJSscripts#1%
{\doifelse{#1}\v!reset
{\let\allJSpreambles\empty}
@@ -680,4 +679,4 @@
\def\useJSscripts
{\dodoubleempty\douseJSscripts}
-\protect \endinput
+\protect \endinput
diff --git a/tex/context/base/lang-frq.tex b/tex/context/base/lang-frq.tex
index 4877e87dc..5240f9370 100644
--- a/tex/context/base/lang-frq.tex
+++ b/tex/context/base/lang-frq.tex
@@ -193,9 +193,9 @@
%D A few samples of usage of this mechanism are shown below:
%D
%D \startbuffer
-%D {\mainlanguage[en]\hsize65\averagecharwidth\mainlanguage[en]\input ward \endgraf}
-%D {\mainlanguage[nl]\hsize65\averagecharwidth\mainlanguage[en]\input ward \blanko }
-%D {\mainlanguage[de]\hsize65\averagecharwidth\mainlanguage[de]\input ward \blanko }
+%D {\mainlanguage[en]\hsize65\averagecharwidth\mainlanguage[en]\input ward \blanko}
+%D {\mainlanguage[nl]\hsize65\averagecharwidth\mainlanguage[en]\input ward \blanko}
+%D {\mainlanguage[de]\hsize65\averagecharwidth\mainlanguage[en]\input ward \blanko}
%D \stopbuffer
%D
%D \typebuffer \getbuffer
@@ -203,4 +203,15 @@
%D Although the widthts differ, the consequenes for breaking the paragraph
%D into lines are minimal.
+%D \macros
+%D {freezeaveragecharacterwidth}
+%D
+%D This macro can be used to make sure that the width does not change during a
+%D page break when another font is used.
+
+\let\normalaveragecharacterwidth\averagecharacterwidth
+
+\def\freezeaveragecharacterwidth % global
+ {\xdef\averagecharacterwidth{\dimexpr(\the\normalaveragecharacterwidth)}}
+
\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/list-ini.tex b/tex/context/base/list-ini.tex
deleted file mode 100644
index 20031b53f..000000000
--- a/tex/context/base/list-ini.tex
+++ /dev/null
@@ -1,39 +0,0 @@
-%D \module
-%D [ file=list-ini,
-%D versie=1995.10.10,
-%D naam=\CONTEXT\ List Macros,
-%D auteur=J. Hagen,
-%D datum=\currentdate,
-%D copyright=J. Hagen]
-
-\writestatus{loading}{Context List Macros}
-
-\unprotect
-
-%I n=Overzichten
-%I c=\startoverzicht
-%I
-%I Ten behoeve van veel voorkomende soorten overzichten
-%I zijn speciale commando's beschikbaar. Bij dergelijke
-%I overzichten worden in plaats van de gebruikelijke
-%I commando's \starttekst..\stoptekst de onderstaande
-%I commando's gebruikt:
-%I
-%I \startoverzicht[soort overzicht]
-%I \stopoverzicht
-%I
-%I Overzichten staan in files met de naam list-xxx, waarbij
-%I xxx de eerste drie letters van het soort overzicht zijn.
-%I
-%I Vooralsnog zijn alleen overzichten van 'figuren' en
-%I 'kontakten' beschikbaar.
-
-\definieerfilegroep
- [overzicht]
- [file=list,
- voor=,
- na=]
-
-\protect
-
-\endinput
diff --git a/tex/context/base/m-chart.tex b/tex/context/base/m-chart.tex
index f40a88a5f..23aea538b 100644
--- a/tex/context/base/m-chart.tex
+++ b/tex/context/base/m-chart.tex
@@ -11,17 +11,17 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-% to do: \localpushmacro/\localpopmacro (dohandleflowchart etc)
+% to do: \localpushmacro/\localpopmacro (dohandleflowchart etc)
-% will be redone with layers
+% will be redone with layers
%D This is an experimental module. Pieces of code will be moved
%D to other modules. More features are possible but will be
-%D interfaces later.
+%D interfaces later.
%D
%D When finished this module will be documented. The main macro
%D is still a rather big one and there is some redundant and
-%D slow code that needs a clean up.
+%D slow code that needs a clean up.
% arrow, dash
% crossing
@@ -49,7 +49,7 @@
% nx : minimaal aantal cellen horizontaal
% ny : minimaal aantal cellen vertikaal
%
-% shape none en geen equivalent maken
+% shape none en geen equivalent maken
%
% kaderkleur achtergrondkleur
% lijnkleur lijndikte
@@ -61,7 +61,7 @@
\unprotect
\definieersorteren [flowchart] [flowcharts] [\v!geen] % no access
-\stelsorterenin [flowchart] [\c!status=\v!stop] % off by default
+\stelsorterenin [flowchart] [\c!status=\v!stop] % off by default
\def\@FLOW@{@FLOW@}
\def\@FLOC@{@FLOC@}
@@ -99,7 +99,7 @@
\global\let\FLOWalign \empty
\global\let\FLOWshape \empty
\global\let\FLOWlocation \empty
- \global\let\FLOWtext \empty
+ \global\let\FLOWtext \empty
\global\let\FLOWhelp \empty
\global\let\FLOWdestination\empty
\global\let\FLOWoverlay \empty
@@ -191,7 +191,7 @@
\def\doFLOWexit[#1]#2%
{\setgvalue{#1FLOWexit}{#2}\ignorespaces}
-\def\startFLOWchart%
+\def\startFLOWchart
{\bgroup
\let\stopFLOWchart\egroup
\obeylines % lelijk, buffers nog eens fatsoeneren
@@ -213,7 +213,7 @@
\flowchart{#1}%
\setxvalue{\@FLOW@-#1}%
{\noexpand\dohandleflowchart[\nofFLOWcharts][#2]}}
-
+
\def\setupFLOWcharts{\dodoubleargument\getparameters[\@@FLOW]}
\def\setupFLOWlines {\dodoubleargument\getparameters[\@@FLOL]}
\def\setupFLOWshapes{\dodoubleargument\getparameters[\@@FLOS]}
@@ -394,7 +394,7 @@
\global\let\FLOWwidth \@@FLOWnx
\global\let\FLOWheight\@@FLOWny
\let\startFLOWcell\startFLOWcellA
- \resetFLOWlocation
+ \resetFLOWlocation
\processFLOWbuffer\currentFLOWnumber
\ifcase\@@FLOWnx\relax \let\@@FLOWnx\FLOWwidth \fi
\ifcase\@@FLOWny\relax \let\@@FLOWny\FLOWheight \fi
@@ -434,7 +434,7 @@
\forgetall
\offinterlineskip
\else\ifx\@@FLOWkorps\empty\else
- \expanded{\switchtobodyfont[\@@FLOWkorps]}% \expanded ?
+ \expanded{\switchtobodyfont[\@@FLOWkorps]}% \expanded ?
\fi\fi
\global\let\FLOWcells\empty
\dimen0=\@@FLOWbreedte
@@ -481,7 +481,7 @@
\resetMPdrawing
\doglobal\newcounter\FLOWcomment
\startMPdrawing
- if unknown context_char : input mp-char.mp ; fi ;
+ if unknown context_char : input mp-char.mp ; fi ;
grid_width := \FLOWgridwidth ;
grid_height := \FLOWgridheight ;
shape_width := \FLOWshapewidth ;
@@ -500,7 +500,7 @@
% \expandafter\getFLOWlocationX\FLOWlocation\end
% \ignorespaces}%
% \let\startFLOWcell\startFLOWcellX
-% \resetFLOWlocation
+% \resetFLOWlocation
% \processFLOWbuffer\currentFLOWnumber
% \ifnum\@@FLOWnx\@@FLOWny=11 % listig
% \let\@@FLOWnx\FLOWwidth
@@ -535,10 +535,10 @@
show_\@@FLOWpunt_points := true ;
\stopMPdrawing]%
\let\startFLOWcell\startFLOWcellB
- \resetFLOWlocation
+ \resetFLOWlocation
\processFLOWbuffer\currentFLOWnumber
\let\startFLOWcell\startFLOWcellC
- \resetFLOWlocation
+ \resetFLOWlocation
\processFLOWbuffer\currentFLOWnumber
\startMPdrawing
clip_chart(\@@FLOWx,\@@FLOWy,\@@FLOWnx,\@@FLOWny) ;
@@ -559,7 +559,7 @@
\def\MPareapath##1##2##3##4%
{\def\areaMPllx{##1bp}\def\areaMPlly{##2bp}%
\def\areaMPurx{##3bp}\def\areaMPury{##4bp}}%
- \getMPdata
+ \getMPdata
\doglobal\newcounter\FLOWcomment
\let\startFLOWcell\startFLOWcellD
\setbox2\vbox to \ht0
@@ -635,9 +635,9 @@
% Pass B
%
-% beware: the - after \@FLOC@ is needed since name can be
-% empty and we don't want to redefine \@FLOC@ itself by
-% mistake
+% beware: the - after \@FLOC@ is needed since name can be
+% empty and we don't want to redefine \@FLOC@ itself by
+% mistake
\long\def\startFLOWcellB#1\stopFLOWcell
{\resetFLOWcell\ignorespaces#1\unskip
@@ -689,10 +689,10 @@
\long\def\startFLOWcellC#1\stopFLOWcell%
{\resetFLOWcell
-\pushmacro\lastFLOWx
+\pushmacro\lastFLOWx
\pushmacro\lastFLOWy
- \ignorespaces#1\unskip % makes sure that vars are set
-\popmacro\lastFLOWy
+ \ignorespaces#1\unskip % makes sure that vars are set
+\popmacro\lastFLOWy
\popmacro\lastFLOWx
\let\connection\doFLOWconnectionC
\ignorespaces#1\unskip}
@@ -704,7 +704,7 @@
\def\doFLOWconnectionC
{\dodoubleempty\dodoFLOWconnectionC}
-
+
\def\dodoFLOWconnectionC[#1][#2]#3%
{\doglobal\increment\FLOWcomment
\setFLOWname\otherFLOWname{name_#3}%
@@ -715,7 +715,7 @@
\doifdefinedelse{\@FLOC@-\otherFLOWname}
{\edef\FLOWto {\getvalue{\@FLOC@-\otherFLOWname}}}
{\let \FLOWto \FLOWorigin}%
- \ifx\FLOWto\FLOWorigin \else
+ \ifx\FLOWto\FLOWorigin \else
\FLOWsetconnect{#1}%
\ifx\cFLOWfrom\empty \else
\doifelse\@@FLOLhoek\v!rond
@@ -732,17 +732,17 @@
{\startMPdrawing touchshape := false ; \stopMPdrawing}%
%\doifsomething{#2}
% {\startMPdrawing
-% \doFLOWdisplace[0#2,0,0]%
+% \doFLOWdisplace[0#2,0,0]%
% \stopMPdrawing}%
\startMPdrawing
-\doFLOWdisplace[0#2,0,0]%
+\doFLOWdisplace[0#2,0,0]%
connection_line_color := \MPcolor{\@@FLOLkleur} ;
connection_line_width := \@@FLOLlijndikte ;
connect_\cFLOWfrom_\cFLOWto (\FLOWfrom,\zFLOWfrom) (\FLOWto,\zFLOWto) ;
-\doFLOWdisplace[0,0,0]%
+\doFLOWdisplace[0,0,0]%
\stopMPdrawing
\fi
- \fi
+ \fi
\fi
\ignorespaces}
@@ -865,9 +865,9 @@
\fi
\edef\FLOWdx{\the\dimen0}%
\edef\FLOWdy{\the\dimen2}%
- \def\positionFLOWzero% assumes \FLOWdx and \FLOWdy are set
+ \def\positionFLOWzero% assumes \FLOWdx and \FLOWdy are set
{\setbox0=\hbox{\hskip\FLOWdx\lower\FLOWdy\box0}%
- \smashbox0\box0}%
+ \smashbox0\box0}%
\def\doFLOWtlabel##1##2##3%
{\scratchdimen=\ifcase##2 \!!zeropoint\else\@@FLOWdy\fi
\setbox0=\hbox{\hskip\dimen2\raise\scratchdimen
@@ -896,17 +896,17 @@
\doFLOWblabel\rightbottombox0\bFLOWlabel
\doFLOWllabel \lefttopbox0\lFLOWlabel
\doFLOWrlabel \righttopbox0\rFLOWlabel
- \doFLOWtlabel \topbox0\tcFLOWlabel % for me only
- \doFLOWblabel \bottombox0\bcFLOWlabel % for me only
- \doFLOWllabel \leftbox0\lcFLOWlabel % for me only
- \doFLOWrlabel \rightbox0\rcFLOWlabel % for me only
+ \doFLOWtlabel \topbox0\tcFLOWlabel % for me only
+ \doFLOWblabel \bottombox0\bcFLOWlabel % for me only
+ \doFLOWllabel \leftbox0\lcFLOWlabel % for me only
+ \doFLOWrlabel \rightbox0\rcFLOWlabel % for me only
\ifnum#1=\@@FLOWx\relax \doFLOWllabel \leftbox1\lFLOWexit \fi
\ifnum#1=\!!countc \doFLOWrlabel \rightbox1\rFLOWexit \fi
\ifnum#2=\@@FLOWy\relax \doFLOWtlabel \topbox1\tFLOWexit \fi
\ifnum#2=\!!countd \doFLOWblabel \bottombox1\bFLOWexit \fi
\fi\fi\fi\fi}
-% Pass E
+% Pass E
\long\def\startFLOWcellE#1\stopFLOWcell
{\resetFLOWcell
@@ -1033,7 +1033,7 @@
\fi}
\def\setgetFLOWchart[#1][#2][#3]%
- {\def\docommando##1{}% cell line focus ?
+ {\def\docommando##1{}% cell line focus ?
\processcommalist[#2]\docommando
\getFLOWchart[#1][#3]}
@@ -1180,13 +1180,13 @@
%D {\FLOWcharts[mybigflow]}
%D \stoptypen
-%D \macros
+%D \macros
%D {typeFLOWchart}
%D
-%D For documentation purposes the following macro is
-%D provided. Watch the use of the first and last line hooks,
-%D which is needed because the start and stop commands are
-%D not part of the buffer.
+%D For documentation purposes the following macro is
+%D provided. Watch the use of the first and last line hooks,
+%D which is needed because the start and stop commands are
+%D not part of the buffer.
\def\typeFLOWchart[#1]%
{\bgroup
@@ -1194,69 +1194,69 @@
\convertargument\startFLOWchart[#1]\to\firstverbatimfileline
\convertargument \stopFLOWchart\to\lastverbatimfileline
\getvalue{\@FLOW@-#1}
- \egroup}
+ \egroup}
-%D New:
+%D New:
%D
-%D \starttypen
+%D \starttypen
%D \setupFLOWcharts[command=\Whow]
-%D
-%D \startFLOWset[convert-en] % [tag][convert-en]
+%D
+%D \startFLOWset[convert-en] % [tag][convert-en]
%D \subFLOWchart[a][x=1,y=1,nx=3,ny=3]
%D \subFLOWchart[b][x=1,y=2,nx=3,ny=3]
%D \subFLOWchart[c][x=2,y=1,nx=3,ny=3]
%D \stopFLOWset
-%D
+%D
%D \def\Whow#1%
%D {\ifnum\currentFLOWset=1 \framed{Some Chart}\fi}
-%D
-%D \FLOWset[convert-en] % [tag]
-%D
+%D
+%D \FLOWset[convert-en] % [tag]
+%D
%D \def\Whow#1%
%D {\setuphead[status=hoog]
%D \startstandardmakeup
%D \centerbox{#1}
%D \stopstandardmakeup}
-%D
-%D \FLOWset[convert-en] % [tag]
-%D \stoptypen
+%D
+%D \FLOWset[convert-en] % [tag]
+%D \stoptypen
\def\startFLOWset
{\dodoubleempty\dostartFLOWset}
-\def\dostartFLOWset[#1][#2]#3\stopFLOWset % tag name data
+\def\dostartFLOWset[#1][#2]#3\stopFLOWset % tag name data
{\ifsecondargument
\long\setvalue{\@FLOX@#1}{\dohandleFLOWset{#1}{#2}{#3}}%
\else
\long\setvalue{\@FLOX@#1}{\dohandleFLOWset{#1}{#1}{#3}}%
\fi}
-\long\def\dohandleFLOWset#1#2#3% tag name data
+\long\def\dohandleFLOWset#1#2#3% tag name data
{\bgroup
\def\subFLOWchart
{\dodoubleempty\dosubFLOWchart}%
- \def\dosubFLOWchart[##1][##2]% subtag settings
+ \def\dosubFLOWchart[##1][##2]% subtag settings
{\ifsecondargument
- \dodohandleFLOWset{#1}{##1}{#2}{##2}%
+ \dodohandleFLOWset{#1}{##1}{#2}{##2}%
\else
\subFLOWchart[][##1]%
\fi}%
#3%
\egroup}
-\def\dodohandleFLOWset#1#2#3#4% tag subtag name settings
+\def\dodohandleFLOWset#1#2#3#4% tag subtag name settings
{\increment\currentFLOWset
\bgroup
\@@FLOXcommando
{\ifnum\currentFLOWset=1 \pagereference[#1]\fi
\doifsomething{#2}
- {\setupreferencing[\c!prefix=]%
- \pagereference[#1:#2]% -:#1:#2
- \setupreferencing[\c!prefix=#1:#2]}%
+ {\setupreferencing[\c!prefix=]%
+ \pagereference[#1:#2]% -:#1:#2
+ \setupreferencing[\c!prefix=#1:#2]}%
\FLOWchart[#3][#4]}%
\egroup}
-\def\FLOWset[#1]%
+\def\FLOWset[#1]%
{\newcounter\currentFLOWset
\doifdefinedelse{\@FLOX@#1}
{\getvalue{\@FLOX@#1}}
@@ -1267,11 +1267,11 @@
\setupFLOWsets
[\c!commando=]
-%D This will be an option:
-
+%D This will be an option:
+
% \def\startFLOWchart%
% {\dodoubleempty\dostartFLOWchart}
-%
+%
% \long\def\dostartFLOWchart[#1][#2]#3\stopFLOWchart
% {\preparenextFLOWchart{#1}{#2}%
% \long\setgvalue{\FLOWbufferprefix\nofFLOWcharts}{#3}}
@@ -1310,8 +1310,8 @@
\defineXMLsingular [flowchart]
{\expanded{\FLOWchart[\XMLpar{flowchart}{identifier}{unknown}]}}
-\defineXMLdirective [flowchart] [shapes] \setupFLOWshapes
-\defineXMLdirective [flowchart] [lines] \setupFLOWlines
+\defineXMLdirective [flowchart] [shapes] \setupFLOWshapes
+\defineXMLdirective [flowchart] [lines] \setupFLOWlines
\stopXMLdefinitions
diff --git a/tex/context/base/m-layout.tex b/tex/context/base/m-layout.tex
index 5cfc233e6..6bc5c8c55 100644
--- a/tex/context/base/m-layout.tex
+++ b/tex/context/base/m-layout.tex
@@ -11,6 +11,8 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% layout-preset - thf th tf
+
%D This is a preliminary module, don't depend on these dimensions yet.
\readsysfile{lang-frq}\donothing\donothing
@@ -18,12 +20,12 @@
\unprotect
-%def\layouthwratio{\withoutpt{\the\dimexpr(8\paperheight/\dimexpr(\paperwidth/ 8192))}}
-%def\layouthwratio{\withoutpt{\the\dimexpr(4\paperheight/\dimexpr(\paperwidth/16384))}}
-%def\layouthwratio{\withoutpt{\the\dimexpr(2\paperheight/\dimexpr(\paperwidth/32768))}}
+% \def\layouthwratio{\withoutpt\the\dimexpr(8\paperheight/\dimexpr(\paperwidth/ 8192))}
+% \def\layouthwratio{\withoutpt\the\dimexpr(4\paperheight/\dimexpr(\paperwidth/16384))}
+% \def\layouthwratio{\withoutpt\the\dimexpr(2\paperheight/\dimexpr(\paperwidth/32768))}
\def\layouthwratio
- {\withoutpt{\the\dimexpr(2\paperheight/(\paperwidth/32768))}}
+ {\withoutpt\the\dimexpr(2\paperheight/(\paperwidth/32768))}
\def\layouthfheight
{\dimexpr(\layoutparameter\c!hoofd+\layoutparameter\c!hoofdafstand+
diff --git a/tex/context/base/m-quest.tex b/tex/context/base/m-quest.tex
index f56ee90b3..5ea34164b 100644
--- a/tex/context/base/m-quest.tex
+++ b/tex/context/base/m-quest.tex
@@ -8,26 +8,26 @@
%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.
-%I Invuloefeningen kunnen worden vormgegeven met het
+%I Invuloefeningen kunnen worden vormgegeven met het
%I de commando's:
-%I
+%I
%I \definieerinvulwoord[trefwoord]{woord,woord}
%I \invulwoord[trefwoord]
%I \invulwoord{woord,woord,...}
-%I
-%I Daarbij kan het een en ander worden ingesteld met
+%I
+%I Daarbij kan het een en ander worden ingesteld met
%I
%I \stelinvullenin[status=,nummer=,links=,rechts=,letter=]
%P
%I Er zijn drie manieren om woorden in te vullen. De meest
-%I eenvoudige is die waarbij de in te vullen woorden in de
-%I tekst staan.
+%I eenvoudige is die waarbij de in te vullen woorden in de
+%I tekst staan.
%I
%I bla bla \invulwoord{een,alfa} bla bla bla bla bla bla
-%I bla bla bla bla bla bla bla bla \invulwoord{twee,beta}.
+%I bla bla bla bla bla bla bla bla \invulwoord{twee,beta}.
%I
%I De gezette tekst hangt af van de instellingen:
%I
@@ -35,52 +35,52 @@
%I [status=vol,nummer=1] 'een' respectievelijk 'twee'
%I [status=vol,nummer=2] 'alfa' respectievelijk 'beta'
%I
-%I Het nummer heeft dus betrekking op het volgnummer in de
-%I opgegeven reeks.
+%I Het nummer heeft dus betrekking op het volgnummer in de
+%I opgegeven reeks.
%P
-%I Bij de tweede manier worden eerste de alternatieven
+%I Bij de tweede manier worden eerste de alternatieven
%I gedefinieerd:
%I
%I \definieerinvulwoord{een,alfa}
-%I \definieerinvulwoord{twee,beta}
+%I \definieerinvulwoord{twee,beta}
+%I
+%I die vervolgens worden opgeroepen:
%I
-%I die vervolgens worden opgeroepen:
-%I
%I bla \invulwoord[+] bla bla bla bla bla bla bla bla bla
-%I bla bla bla bla bla bla bla bla bla bla \invulwoord[+].
+%I bla bla bla bla bla bla bla bla bla bla \invulwoord[+].
%I
%I De mogelijke instellingen komen overeen met die van de
-%I eerste manier.
-%P
-%I De derde manier is een variant op de tweede. Bij grote
-%I teksten kan men het overzicht kwijtraken. Het is daarom
-%I mogelijk 'logische' namen toe te kennen aan woorden.
+%I eerste manier.
+%P
+%I De derde manier is een variant op de tweede. Bij grote
+%I teksten kan men het overzicht kwijtraken. Het is daarom
+%I mogelijk 'logische' namen toe te kennen aan woorden.
%I
%I \definieerinvulwoord[a]{een,alfa}
-%I \definieerinvulwoord[b]{twee,beta}
+%I \definieerinvulwoord[b]{twee,beta}
+%I
+%I die vervolgens worden opgeroepen:
%I
-%I die vervolgens worden opgeroepen:
-%I
%I bla \invulwoord[a] bla bla bla bla bla bla bla bla bla
-%I bla bla bla bla bla bla bla bla bla bla \invulwoord[b].
+%I bla bla bla bla bla bla bla bla bla bla \invulwoord[b].
+%I
+%I Dit maakt het bovendien mogelijk woorden meerdere malen
+%I (in een willekeurige volgorde op te roepen:
%I
-%I Dit maakt het bovendien mogelijk woorden meerdere malen
-%I (in een willekeurige volgorde op te roepen:
-%I
-%I bla \invulwoord[a] bla \invulwoord[b] bla bla bla bla
-%I bla bla bla bla \invulwoord[b] bla bla \invulwoord[a].
+%I bla \invulwoord[a] bla \invulwoord[b] bla bla bla bla
+%I bla bla bla bla \invulwoord[b] bla bla \invulwoord[a].
%P
-%I Bij [status=leeg] wordt een streep gezet die in breedte
-%I overeenkomt met het woord dat er eigenlijk hoort te
-%I staan. De ingevulde tekst komt visueel daardoor overeen
-%I met de in te vullen tekst, wat vergelijken vereenvoudigd.
+%I Bij [status=leeg] wordt een streep gezet die in breedte
+%I overeenkomt met het woord dat er eigenlijk hoort te
+%I staan. De ingevulde tekst komt visueel daardoor overeen
+%I met de in te vullen tekst, wat vergelijken vereenvoudigd.
%I
-%I Met [status=reset] worden enkele tellers weer op 0 gezet.
-%I Dit kan nodig zijn als meerdere invuloefeningen in een
-%I tekst worden gezet.
+%I Met [status=reset] worden enkele tellers weer op 0 gezet.
+%I Dit kan nodig zijn als meerdere invuloefeningen in een
+%I tekst worden gezet.
%I
%I Als \versie[voorlopig] is ingesteld, worden bij invullers
-%I zonder logische namen tussen haakjes de volgnummers
+%I zonder logische namen tussen haakjes de volgnummers
%I getoond.
%S \startsetup
@@ -133,11 +133,11 @@
%S [\c!text!]
%S \stopsetup
-% Mogelijke uitbreidingen
+% Mogelijke uitbreidingen
%
% - [breedte=<maat>,passend,ruim]
% - invullijst met nummers
-% - weergeven lijst tijdens definitie blokkeren
+% - weergeven lijst tijdens definitie blokkeren
% - door elkaar definieren
\unprotect
@@ -146,9 +146,9 @@
\definereferenceconstant {fillin} {:iv:}
-\newcount\invulteller \newcount\invulput \newcount\invulget
+\newcount\invulteller \newcount\invulput \newcount\invulget
-\def\stelinvullenin%
+\def\stelinvullenin
{\dosingleargument\dostelinvullenin}
\def\dostelinvullenin[#1]%
@@ -156,7 +156,7 @@
\doif\@@ivstatus\v!reset
{\global\invulput\zerocount
\global\invulget\zerocount
- \let\@@ivstatus\empty}}
+ \let\@@ivstatus\empty}}
\def\definieerinvulwoord
{\dosingleempty\dodefinieerinvulwoord}
@@ -176,7 +176,7 @@
\def\dosimpleinvulwoord#1%
{\ifnum\@@ivnummer>0 \advance\invulteller \plusone \fi
- \ifnum\invulteller=\@@ivnummer\relax
+ \ifnum\invulteller=\@@ivnummer\relax
\bgroup
\doconvertfont\@@ivletter
{\@@ivlinks
@@ -220,11 +220,11 @@
% when nummer > 0, then commalist processing; beware of $(1,2)$, use { } there
\stelinvullenin
- [\c!nummer=0,
- \c!letter=\v!vet,
+ [\c!nummer=0,
+ \c!letter=\v!vet,
\c!lijn=\v!aan,
\c!links=,
\c!rechts=,
\c!status=]
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/meta-clp.tex b/tex/context/base/meta-clp.tex
index 8b841e876..a160e7661 100644
--- a/tex/context/base/meta-clp.tex
+++ b/tex/context/base/meta-clp.tex
@@ -1,31 +1,31 @@
%D \module
%D [ file=meta-clp,
%D version=2000.07.06,
-%D title=\METAPOST\ Graphics,
-%D subtitle=Clipping,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Clipping,
%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.
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
-%D In this library, we define a bunch of clipping paths that
-%D can be fed to \type {\clip}.
+%D In this library, we define a bunch of clipping paths that
+%D can be fed to \type {\clip}.
\startMPclip{ellipse}
- clip currentpicture to unitcircle
+ clip currentpicture to unitcircle
xscaled \width yscaled \height ;
\stopMPclip
\startMPclip{negellipse}
- clip currentpicture to (unitcircle peepholed unitsquare)
+ clip currentpicture to (unitcircle peepholed unitsquare)
xscaled \width yscaled \height ;
\stopMPclip
\startMPclip{urellipse}
- clip currentpicture to urcircle scaled 2
+ clip currentpicture to urcircle scaled 2
xscaled \width yscaled \height ;
\stopMPclip
@@ -65,17 +65,17 @@
\stopMPclip
\startMPclip{diamond}
- clip currentpicture to unitdiamond
+ clip currentpicture to unitdiamond
xscaled \width yscaled \height ;
\stopMPclip
\startMPclip{negdiamond}
- clip currentpicture to (unitdiamond peepholed unitsquare)
+ clip currentpicture to (unitdiamond peepholed unitsquare)
xscaled \width yscaled \height ;
\stopMPclip
\startMPclip{urtriangle}
- clip currentpicture to urtriangle scaled 2
+ clip currentpicture to urtriangle scaled 2
xscaled \width yscaled \height ;
\stopMPclip
@@ -94,43 +94,43 @@
xscaled \width yscaled \height ;
\stopMPclip
-% More efficient:
+% More efficient:
%
% \def\dosimpleMPclip#1
% {clip currentpicture to (#1) xscaled \width yscaled \height ;}
-%
+%
% \def\simpleMPclip#1#2%
% {\startMPclip{#1}\dosimpleMPclip{#2}\stopMPclip}
-%
+%
% \simpleMPclip {ellipse} {unitcircle}
-% \simpleMPclip {diamond} {unitdiamond}
-%
+% \simpleMPclip {diamond} {unitdiamond}
+%
% \simpleMPclip {negellipse} {unitcircle peepholed unitsquare}
% \simpleMPclip {negdiamond} {unitdiamond peepholed unitsquare}
-%
+%
% \simpleMPclip {urellipse} {urcircle scaled 2 shifted (0,0)}
% \simpleMPclip {ulellipse} {ulcircle scaled 2 shifted (1,0)}
% \simpleMPclip {llellipse} {llcircle scaled 2 shifted (1,1)}
% \simpleMPclip {lrellipse} {lrcircle scaled 2 shifted (0,1)}
-%
+%
% \simpleMPclip {tellipse} {tcircle shifted (.5,0) yscaled 2}
% \simpleMPclip {bellipse} {bcircle shifted (.5,.5) yscaled 2}
% \simpleMPclip {lellipse} {lcircle shifted (.5,.5) xscaled 2}
% \simpleMPclip {rellipse} {rcircle shifted (0,.5) xscaled 2}
-%
+%
% \simpleMPclip {urtriangle} {urtriangle scaled 2 shifted (0,0)}
% \simpleMPclip {ultriangle} {ultriangle scaled 2 shifted (1,0)}
% \simpleMPclip {lltriangle} {lltriangle scaled 2 shifted (1,1)}
% \simpleMPclip {lrtriangle} {lrtriangle scaled 2 shifted (0,1)}
-%D \in {Figure} [fig:clipping paths] shows which paths are
-%D predefined. When applied to a whole picture, their usage
-%D is:
-%D
+%D \in {Figure} [fig:clipping paths] shows which paths are
+%D predefined. When applied to a whole picture, their usage
+%D is:
+%D
%D \starttypen
%D \clip[nx=1,ny=1,mp=ellipse]{some clippable content}
%D \stoptypen
-%D
+%D
%D \startbuffer
%D \setupclipping [nx=1,ny=1,x=1,y=1]
%D \setupblackrules[width=2cm,height=1cm]
@@ -155,10 +155,10 @@
%D {\clip[mp=negdiamond]{\blackrule}} {negdiamond}
%D \stopcombinatie % \stopcombination
%D \stopbuffer
-%D
-%D \plaatsfiguur % \placefigure
+%D
+%D \plaatsfiguur % \placefigure
%D [here][fig:clipping paths]
%D {The predefined clipping paths.}
%D {\haalbuffer} % {\getbuffer}
-\endinput
+\endinput \ No newline at end of file
diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex
index dd1f193c3..ecfd053c1 100644
--- a/tex/context/base/meta-ini.tex
+++ b/tex/context/base/meta-ini.tex
@@ -196,11 +196,11 @@
%D {\getvalue{\@@MPG#1}}
%D \stoptypen
-%\def\overlaystamp% watch the \MPcolor, since colors can be redefined
+%\def\overlaystamp % watch the \MPcolor, since colors can be redefined
% {\overlaywidth:\overlayheight:\overlaydepth
% :\MPcolor{\overlaycolor}:\MPcolor{\overlaylinecolor}}
-\def\overlaystamp% watch the \MPcolor, since colors can be redefined
+\def\overlaystamp % watch the \MPcolor, since colors can be redefined
{\overlaywidth:\overlayheight:\overlaydepth
:\MPcolor\overlaycolor:\MPcolor\overlaylinecolor}
@@ -272,7 +272,7 @@
\long\def\startuseMPgraphic
{\dodoublegroupempty\dostartuseMPgraphic}
-\long\def\dostartuseMPgraphic#1#2#3\stopuseMPgraphic%
+\long\def\dostartuseMPgraphic#1#2#3\stopuseMPgraphic
{\blabelgroup
\long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}{#3}}%
\elabelgroup}
@@ -280,7 +280,7 @@
\long\def\startusableMPgraphic % redundant but handy
{\dodoublegroupempty\dostartusableMPgraphic}
-\long\def\dostartusableMPgraphic#1#2#3\stopusableMPgraphic%
+\long\def\dostartusableMPgraphic#1#2#3\stopusableMPgraphic
{\blabelgroup
\long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}{#3}}%
\elabelgroup}
@@ -300,7 +300,7 @@
\getvalue{\@@MPG#1}%
\elabelgroup}
-\long\def\startreusableMPgraphic%
+\long\def\startreusableMPgraphic
{\dodoublegroupempty\dostartreusableMPgraphic}
% \long\def\dostartreusableMPgraphic#1#2#3\stopreusableMPgraphic%
@@ -353,10 +353,17 @@
\unexpanded\def\uniqueMPpagegraphic
{\dodoublegroupempty\douniqueMPpagegraphic}
+% \def\douniqueMPpagegraphic#1#2%
+% {\blabelgroup
+% \let\overlaystamp\overlaypagestamp
+% \setupMPvariables[#1][#2]%
+% \getvalue{\@@MPG\MPpageprefix#1}{}%
+% \elabelgroup}
+
\def\douniqueMPpagegraphic#1#2%
{\blabelgroup
\let\overlaystamp\overlaypagestamp
- \setupMPvariables[#1][#2]%
+ \setupMPvariables[\MPpageprefix#1][#2]% prefix is new here
\getvalue{\@@MPG\MPpageprefix#1}{}%
\elabelgroup}
@@ -511,9 +518,9 @@
\newtoks\everyMPTEXgraphic
\fi
-%D A more generar of passing environments is:
+%D A more general way of passing environments is:
-\def\startMPenvironment% % second arg gobbles spaces, so
+\def\startMPenvironment % second arg gobbles spaces, so
{\dodoubleempty\dostartMPenvironment} % that reset gives \emptytoks
\long\def\dostartMPenvironment[#1][#2]#3\stopMPenvironment%
@@ -529,9 +536,7 @@
\global\loadfontfileoncetrue
\stopMPenvironment}
-\startMPenvironment
- \global\loadfontfileoncetrue
-\stopMPenvironment
+\resetMPenvironment
%D This command takes \type {[reset]} as optional
%D argument.
@@ -558,14 +563,21 @@
% \immediate\closeout\MPwrite
% }%\fi}
-\def\initializeMPgraphicfile
- {\bgroup
- \doinitializeMPgraphicfile
- \MPruntrue
- \doinitializeMPgraphicfile
- \egroup}
+% strange :
+
+% \def\initializeMPgraphicfile
+% {\bgroup
+% \doinitializeMPgraphicfile
+% \MPruntrue
+% \doinitializeMPgraphicfile
+% \egroup}
-\def\doinitializeMPgraphicfile
+% \def\doinitializeMPgraphicfile
+% {\immediate\openout\scratchwrite\MPgraphicfile.mp
+% \immediate\write\scratchwrite{end.}%
+% \immediate\closeout\scratchwrite}
+
+\def\initializeMPgraphicfile
{\immediate\openout\scratchwrite\MPgraphicfile.mp
\immediate\write\scratchwrite{end.}%
\immediate\closeout\scratchwrite}
@@ -844,6 +856,72 @@
\def\doifelseMPgraphic#1{\doifdefinedelse{\@@MPG#1}}
+%D \macros
+%D {startMPcolor}
+%D
+%D The following time consuming method uses \METAPOST\ to
+%D calculate a color. This enables a match between colors
+%D resulting from a complex calculation (e.g. for a title
+%D page) and those in the text.
+
+% \startuseMPgraphic{somecolors}
+% color c[] ; c[1] := .7[red,green] ; c[2] := .7[blue,yellow] ;
+% \stopuseMPgraphic
+
+% \startMPcolor[shade-1][t=.2,a=1]
+% \includeMPgraphic{somecolors} ; fill fullcircle withcolor c[1] ;
+% \stopMPcolor
+
+% \startMPcolor[shade-2][t=.2,a=1]
+% \includeMPgraphic{somecolors} ; fill fullcircle withcolor c[2] ;
+% \stopMPcolor
+
+% \blackrule[width=\hsize,height=4cm,color=shade-1]
+% \blackrule[width=\hsize,height=4cm,color=shade-2]
+
+\def\startMPcolor
+ {\dodoubleempty\dostartMPcolor}
+
+\long\def\dostartMPcolor[#1][#2]#3\stopMPcolor % slow but sometimes handy
+ {\startnointerference
+ \def\handleMPgraycolor{\expanded{\defineglobalcolor[#1][s=\!MPgMPa1,#2]}}%
+ \def\handleMPrgbcolor {\expanded{\defineglobalcolor[#1][r=\!MPgMPa1,g=\!MPgMPa2,b=\!MPgMPa3,#2]}}%
+ \def\handleMPcmykcolor{\expanded{\defineglobalcolor[#1][c=\!MPgMPa1,m=\!MPgMPa2,y=\!MPgMPa3,k=\!MPgMPa4,#2]}}%
+ \startMPcode#3\stopMPcode
+ \stopnointerference}
+
+%D New:
+
+\definelayerpreset
+ [mp]
+ [\c!y=-\MPury bp,
+ \c!x=\MPllx bp,
+ \c!methode=\v!passend]
+
+\definelayer
+ [mp]
+ [\c!preset=mp]
+
+%D Usage:
+%D
+%D \starttypen
+%D \defineproperty[one][layer][state=start]
+%D \defineproperty[two][layer][state=stop]
+%D
+%D \startuseMPgraphic{step-1}
+%D fill fullcircle scaled 10cm withcolor red ;
+%D \stopuseMPgraphic
+%D
+%D \startuseMPgraphic{step-2}
+%D fill fullcircle scaled 5cm withcolor green ;
+%D \stopuseMPgraphic
+%D
+%D \setlayer[mp]{\property[one]{\useMPgraphic{step-1}}}
+%D \setlayer[mp]{\property[two]{\useMPgraphic{step-2}}}
+%D
+%D \ruledhbox{\tightlayer[mp]}
+%D \stoptypen
+
%D New:
% \appendtoks \closeMPgraphicfiles \to \everystoptext
@@ -854,4 +932,4 @@
%
% linecap := rounded ;
% linejoin := rounded ;
-% drawoptions () ;
+% drawoptions () ; \ No newline at end of file
diff --git a/tex/context/base/mult-com.tex b/tex/context/base/mult-com.tex
index 0db0f2201..b89489942 100644
--- a/tex/context/base/mult-com.tex
+++ b/tex/context/base/mult-com.tex
@@ -2014,6 +2014,13 @@ definecolumnset: definieerkolomgroep definecolumnset
stopcolumnset stopcolumnset
terminagruppocolonne stopcolumnset
+ setupcolumnsetlines: stelkolomgroepregelsin setupcolumnsetlines
+ setupcolumnsetlines setupcolumnsetlines
+ setupcolumnsetlines setupcolumnsetlines
+ setupcolumnsetstart: stelkolomgroepstartin setupcolumnsetstart
+ setupcolumnsetstart setupcolumnsetstart
+ setupcolumnsetstart setupcolumnsetstart
+
startcolumnmakeup: startkolomopmaak startcolumnmakeup
startcolumnmakeup startcolumnmakeup
startcolumnmakeup startcolumnmakeup
diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex
index 0ca131b07..a4b56f4bf 100644
--- a/tex/context/base/mult-con.tex
+++ b/tex/context/base/mult-con.tex
@@ -559,6 +559,10 @@ component: component component
eigennummer: eigennummer ownnumber
eigenenummer vlastnicislo
numeroproprio numarpropriu
+% new
+% eigenschap: eigenschap property
+% property property
+% property property
evenmarge: evenmarge evenmargin
geraderand sudamarginalie
marginepari marginepara
@@ -1288,6 +1292,10 @@ zijuitlijnen: zijuitlijnen sidealign
zij: zij side
objektabstand pocitat
lato parte
+% new
+veldlaag: veldlaag fieldlayer
+ fieldlayer fieldlayer
+ fieldlayer fieldlayer
veldachtergrondkleur: veldachtergrondkleur fieldbackgroundcolor
feldhintergrundfarbe barvapozadipole
coloresfondocampo culoarefundalcamp
diff --git a/tex/context/base/mult-sys.tex b/tex/context/base/mult-sys.tex
index f591be99e..dcf414bce 100644
--- a/tex/context/base/mult-sys.tex
+++ b/tex/context/base/mult-sys.tex
@@ -328,8 +328,9 @@
\def\!!twelvepoint {12pt}
\def\!!fourteenpointfour {14.4pt}
-\newdimen\zeropoint \zeropoint = 0pt
-\newdimen\onepoint \onepoint = 1pt
+\newdimen \zeropoint \zeropoint = 0pt
+\newdimen \onepoint \onepoint = 1pt
+\chardef \scaledpoint = 1
\newcount\medcard \medcard\!!medcard % used in font module
\newcount\maxcard \maxcard\!!maxcard % used in font module
diff --git a/tex/context/base/page-bck.tex b/tex/context/base/page-bck.tex
index 58bf4922b..720b9fa69 100644
--- a/tex/context/base/page-bck.tex
+++ b/tex/context/base/page-bck.tex
@@ -626,6 +626,22 @@
\next
\doglobal\increment\localpositionnumber\relax} % afterwards !
+\def\doaddlocalbackground#1%
+ {\edef\next
+ {\noexpand\redoglobal\wd#1\the\wd#1%
+ \noexpand\redoglobal\ht#1\the\ht#1%
+ \noexpand\dodoglobal\dp#1\the\dp#1}%
+ \dodoglobal\setbox#1\hbox
+ {\fastlocalframed
+ [\??ma\v!lokaal]
+ [\c!component=local,\c!kader=\v!uit,\c!offset=\v!overlay,%
+ \c!breedte=\wd#1,\c!hoogte=\ht#1,\c!diepte=\dp#1,%
+ \c!achtergrond=\localbackground]%
+ {\registerMPlocaltextarea{\box#1}}}%
+ \next
+ \doglobal\increment\localpositionnumber\relax} % afterwards !
+
+
% Test how previous macro behaves with depth:
%
% \startcolumnset
diff --git a/tex/context/base/page-flt.tex b/tex/context/base/page-flt.tex
index a76d17e63..a680a19fb 100644
--- a/tex/context/base/page-flt.tex
+++ b/tex/context/base/page-flt.tex
@@ -255,69 +255,6 @@
\let\floatrotation\!!zerocount
-% \def\presetfloatvariables#1#2#3#4%
-% {\doifcommonelse
-% {#2}
-% {\v!links,\v!rechts,\v!binnen,\v!buiten,%
-% \v!inlinker,\v!inrechter,\v!inmarge,%
-% \v!rugwit,\v!snijwit,%
-% \v!binnenmarge,\v!buitenmarge,\v!binnenrand,\v!buitenrand,%
-% \v!linkermarge,\v!linkerrand,\v!rechtermarge,\v!rechterrand}
-% {\global\parfloattrue}
-% {\global\parfloatfalse}%
-% \ifbinnenkolommen
-% \global\parfloatfalse
-% \fi
-% \global\sidefloatshift\zeropoint
-% \global\sidefloatmaximum\zeropoint
-% \global\chardef\sidefloatmethod\getvalue{\??fl#1\c!zijmethode}%
-% \global\chardef\textfloatmethod\getvalue{\??fl#1\c!tekstmethode}%
-% \global\chardef\sidefloatalign\zerocount
-% \globallet\floatrotation\!!zerocount
-% \calculatefloatskips{#1}%
-% \ifparfloat
-% \processaction
-% [\getvalue{\??fl#1\c!zijuitlijnen}]
-% [\v!hoogte=>\global\chardef\sidefloatalign\plusone,%
-% \v!regel=>\global\chardef\sidefloatalign\plustwo,% (***)
-% \v!diepte=>\global\chardef\sidefloatalign\plusthree,%
-% \v!grid=>\global\chardef\sidefloatalign4]%
-% \ifcase\sidefloatalign\relax
-% \doifinset\v!hoogte{#2}{\global\chardef\sidefloatalign\plusone}%
-% \doifinset\v!regel {#2}{\global\chardef\sidefloatalign\plustwo}%
-% \doifinset\v!diepte{#2}{\global\chardef\sidefloatalign\plusthree}%
-% \doifinset\v!grid {#2}{\global\chardef\sidefloatalign4}%
-% \fi
-% \doifinset\v!hoog{#2}{\global\sidefloattopskip \zeropoint}%
-% \doifinset\v!laag{#2}{\global\sidefloatbottomskip\zeropoint}%
-% \doifinset\v!passend{#2}
-% {\global\sidefloattopskip \zeropoint
-% \global\sidefloatbottomskip\zeropoint
-% \global\floatsideskip \zeropoint}%
-% \else
-% \processallactionsinset
-% [#2]
-% [ 90=>\globallet\floatrotation\commalistelement,%
-% 180=>\globallet\floatrotation\commalistelement,%
-% 270=>\globallet\floatrotation\commalistelement]%
-% \fi
-% \doifinsetelse\v!geennummer{#2}
-% {\global\nofloatnumbertrue}
-% {\doifelsevalue{\??kj#1\c!nummer}\v!ja
-% {\global\nofloatnumberfalse}
-% {\global\nofloatnumbertrue}}%
-% \ConvertToConstant\doifelse{#4}{}
-% {\global\emptyfloatcaptiontrue}
-% {\global\emptyfloatcaptionfalse}%
-% \doifinsetelse\v!geen{#2}
-% {\global\nofloatcaptiontrue}
-% {\ConvertToConstant\doifelse{#4}\v!geen
-% {\global\nofloatcaptiontrue}
-% {\global\nofloatcaptionfalse}}%
-% \ifemptyfloatcaption \ifnofloatnumber
-% \global\nofloatcaptiontrue
-% \fi \fi}
-
\def\presetfloatvariables#1#2#3#4%
{\doifcommonelse
{#2}
@@ -661,26 +598,16 @@
\def\dodefinefloatcommands[#1][#2]%
{\definieerlijst[#1]%
\presetheadtext[#2=\Word{#2}]%
- \setvalue{\e!plaats\e!lijstmet#2}%
- {\dodoubleempty\doplaatslijst[#1]}%
- \setvalue{\e!volledige\e!lijstmet#2}%
- {\dotripleempty\dodovolledigelijst[#1][#2]}%
- \setvalue{\e!plaats#1}%
- {\dotripleempty\docomplexplaatsblok[#1]}%
- \setvalue{\e!reserveer#1}%
- {\doquadrupleempty\docomplexreserveerblok[#1]}%
- \setvalue{\e!start#1\e!tekst}%
- {\dotripleempty\docomplexstarttekstblok[#1]}%
- \setvalue{\e!stop#1\e!tekst}%
- {\dostoptextfloat}%
- \setvalue{\e!start\e!reserveer#1\e!tekst}%
- {\doquadrupleempty\docomplexstartreserveertekstblok[#1]}%
- \setvalue{\e!stop\e!reserveer#1\e!tekst}%
- {\dostoptextfloat}%
- \setvalue{\e!lege#1}%
- {\doleegblok{#1}}%
- \setvalue{\e!leeg#1}%
- {\doleegblok{#1}}}
+ \setvalue {\e!plaats\e!lijstmet#2}{\dodoubleempty\doplaatslijst[#1]}%
+ \setvalue {\e!volledige\e!lijstmet#2}{\dotripleempty\dodovolledigelijst[#1][#2]}%
+ \setvalue {\e!plaats#1}{\dotripleempty\docomplexplaatsblok[#1]}%
+ \setvalue {\e!reserveer#1}{\doquadrupleempty\docomplexreserveerblok[#1]}%
+ \setvalue {\e!start#1\e!tekst}{\dotripleempty\docomplexstarttekstblok[#1]}%
+ \setvalue {\e!stop#1\e!tekst}{\dostoptextfloat}%
+ \setvalue{\e!start\e!reserveer#1\e!tekst}{\doquadrupleempty\docomplexstartreserveertekstblok[#1]}%
+ \setvalue {\e!stop\e!reserveer#1\e!tekst}{\dostoptextfloat}%
+ \setvalue {\e!lege#1}{\doleegblok{#1}}%
+ \setvalue {\e!leeg#1}{\doleegblok{#1}}}
% \setupfloat[...][leftmargindistance=1cm,default={left,none}]
@@ -1370,6 +1297,66 @@
{\hsize\wd\tempfloatbox
\putcompletecaption{#4}{#2}{#3}{0}}}
+% \def\dopreparestackcaptionaut#1#2#3#4%
+% {\doifsomething\@@kjkjuitlijnen
+% {\ExpandBothAfter\doifnotinset\v!midden\@@kjkjuitlijnen
+% {\let\captionovershoot\!!zeropoint}}%
+% \ifdim\wd\tempfloatbox>\hsize
+% % float is wider than \hsize
+% \dosetraggedvbox\@@kjkjuitlijnen
+% \setbox\scratchbox\raggedbox % trial run
+% {\hsize\wd\tempfloatbox
+% \notesenabledfalse
+% \putcompletecaption{#4}{#2}{#3}{0}}%
+% \ifdim\ht\scratchbox>\lineheight % more lines
+% \dosetraggedvbox\@@kjkjuitlijnen
+% \setbox\tempcaptionbox\raggedbox
+% {\hsize\wd\tempfloatbox
+% \advance\hsize -\captionovershoot\relax
+% \ifdim\hsize<\captionminwidth\relax
+% \hsize\wd\tempfloatbox
+% \fi
+% \putcompletecaption{#4}{#2}{#3}{0}}%
+% \else
+% \setbox\tempcaptionbox\raggedbox
+% {\hsize\wd\tempfloatbox
+% \putcompletecaption{#4}{#2}{#3}{0}}%
+% \fi
+% \else
+% % float is smaller of equal to \hsize
+% \ifdim\wd\tempfloatbox<\captionminwidth\relax
+% \scratchdimen\captionminwidth % float smaller than min width
+% \else
+% \scratchdimen\wd\tempfloatbox % float width
+% \fi
+% \setbox\scratchbox\vbox % test with overshoot
+% {\advance\scratchdimen \captionovershoot
+% \advance\scratchdimen 3em % an average word length
+% \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi
+% \notesenabledfalse
+% \putcompletecaption{#4}{#2}{#3}{0}}%
+% \ifdim\ht\scratchbox>\lineheight
+% % at least an average word longer than a line
+% \dosetraggedvbox\@@kjkjuitlijnen
+% \setbox\tempcaptionbox\raggedbox
+% {\advance\scratchdimen \captionovershoot
+% \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi
+% \putcompletecaption{#4}{#2}{#3}{0}}%
+% \else
+% % just over a line, don't use an overshoot
+% \doifinsetelse\@@kjkjuitlijnen{\v!links,\v!rechts}
+% {\dosetraggedvbox\@@kjkjuitlijnen
+% \setbox\tempcaptionbox\raggedbox
+% {\hsize\scratchdimen
+% \raggedcenter
+% \putcompletecaption{#4}{#2}{#3}{0}}}
+% {% nicer
+% \setbox\tempcaptionbox\cbox
+% {\hsize\scratchdimen
+% \putcompletecaption{#4}{#2}{#3}{0}}}%
+% \fi
+% \fi}
+
\def\dopreparestackcaptionaut#1#2#3#4%
{\doifsomething\@@kjkjuitlijnen
{\ExpandBothAfter\doifnotinset\v!midden\@@kjkjuitlijnen
@@ -1421,7 +1408,7 @@
{\dosetraggedvbox\@@kjkjuitlijnen
\setbox\tempcaptionbox\raggedbox
{\hsize\scratchdimen
- \raggedcenter
+% strange : \raggedcenter
\putcompletecaption{#4}{#2}{#3}{0}}}
{% nicer
\setbox\tempcaptionbox\cbox
diff --git a/tex/context/base/page-imp.tex b/tex/context/base/page-imp.tex
index 29501a833..ac2d2b0c5 100644
--- a/tex/context/base/page-imp.tex
+++ b/tex/context/base/page-imp.tex
@@ -164,6 +164,12 @@
{\setbox0\hbox{#1}% just in case there are objects there
\setbox\scratchbox\hbox
{\the\everyshipout\relax
+ % so, these two come *after* the main one
+ \ifcase\realfolio \or
+ \the\everyfirstshipout
+ \global\everyfirstshipout\emptytoks
+ \fi
+ % one page document can do both
\ifnum\realpageno=\lastpage\relax
\flushtextdata
\the\everylastshipout
diff --git a/tex/context/base/page-ini.tex b/tex/context/base/page-ini.tex
index 1a4fda7f0..07ca4dea2 100644
--- a/tex/context/base/page-ini.tex
+++ b/tex/context/base/page-ini.tex
@@ -664,6 +664,19 @@
\newtoks \mainoutput
\newcount\otrlevel
+% Shipout handler (see page[stop] for example usage)
+
+\ifx\undefined\normalshipout \let\normalshipout=\shipout \fi
+
+\def\noshipout
+ {\writestatus\m!systems{ignoring further shipouts}%
+ \dowithnextbox{\deadcycles\zerocount}}
+
+\def\doignorerestoftext
+ {\ifarrangingpages \else \ifnum\textlevel>\zerocount \else
+ \globallet\shipout\noshipout
+ \fi \fi}
+
% When issuing two \par\penalty-\@M's, only the first
% triggers the otr; obscure feature or optimization?
@@ -1185,9 +1198,9 @@
{\chardef\showgridstate\plusone % downward compatible default
\processaction
[#1]%
- [\v!reset=>\chardef\showgridstate0,
- %\v!onder=>\chardef\showgridstate1,%
- \v!boven=>\chardef\showgridstate2]}
+ [\v!reset=>\chardef\showgridstate\zerocount,
+ %\v!onder=>\chardef\showgridstate\plusone,
+ \v!boven=>\chardef\showgridstate\plustwo]}
\def\buildpagebox#1%
{\setbox#1\vbox to \papierhoogte
@@ -1610,6 +1623,12 @@
\od
\filluparrangedpages}
+\installpagebreakhandler \v!start
+ {\globallet\shipout\normalshipout}
+
+\installpagebreakhandler \v!stop
+ {\globallet\shipout\noshipout}
+
% nb: \executepagebreakhandler\v!hoofd in other ones
\installpagebreakhandler \v!hoofd
@@ -1838,4 +1857,4 @@
\box#3%
\egroup}
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/page-lay.tex b/tex/context/base/page-lay.tex
index dd93d2101..24e28e67b 100644
--- a/tex/context/base/page-lay.tex
+++ b/tex/context/base/page-lay.tex
@@ -281,10 +281,7 @@
{\ifsecondargument
\getparameters
[\??pp#1] % geen \c!schaal, scheelt hash ruimte
- [\c!breedte=\@@ppbreedte,
- \c!hoogte=\@@pphoogte,
- \c!offset=\@@ppoffset,
- #2]%
+ [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte,\c!offset=\@@ppoffset,#2]%
\else
\getparameters[\??pp][#1]%
\setuppapersize
@@ -355,6 +352,60 @@
{\getparameters[\??pp#1][#2]}
{\dodosetuppapersize[#1][#2]}}}
+% \def\dodosetuppapersize[#1][#2]%
+% {\ifsecondargument
+% \xdef\restorepapersize
+% {\noexpand\setuppapersize[#1][#2]}%
+% \dostelpapierrichtingin{#1}\paperlandscape\paperrotation\paperreverse\papermirror
+% \dostelpapierrichtingin{#2}\printlandscape\printrotation\printreverse\printmirror
+% \def\docommando##1%
+% {\doifsomething{##1}{\doifdefined{\??pp##1\c!breedte}
+% {\global\papierbreedte\getvalue{\??pp##1\c!breedte}%
+% \global\papierhoogte\getvalue{\??pp##1\c!hoogte}%
+% \calculatepaperoffsets{##1}%
+% \xdef\papersize{##1}}}}%
+% \processcommacommand[#1]\docommando
+% \doifdefinedelse{\??pp#1\c!schaal}
+% {\edef\paperscale{\getvalue{\??pp#1\c!schaal}}}
+% {\edef\paperscale{1}}%
+% \def\docommando##1%
+% {\doifsomething{##1}{\doifdefined{\??pp##1\c!breedte}
+% {\global\printpapierbreedte\getvalue{\??pp##1\c!breedte}%
+% \global\printpapierhoogte\getvalue{\??pp##1\c!hoogte}%
+% \xdef\printpapersize{##1}}}}%
+% \processcommacommand[#2]\docommando
+% \global\setdimentoatleast\papierbreedte \onepoint
+% \global\setdimentoatleast\papierhoogte \onepoint
+% \global\setdimentoatleast\printpapierbreedte\onepoint
+% \global\setdimentoatleast\printpapierhoogte \onepoint
+% \ifcase\paperlandscape\else
+% \doglobal\swapdimens\papierbreedte\papierhoogte
+% \fi
+% \ifcase\printlandscape\else
+% \doglobal\swapdimens\printpapierbreedte\printpapierhoogte
+% \fi
+% % this check can be confusing, maybe we should add
+% % an option \setuppapersize[option=fit] or so
+% \ifdim\papierhoogte>\printpapierhoogte
+% \global\printpapierhoogte\papierhoogte
+% \writestatus\m!systems{print height forced to paper height}%
+% \fi
+% \ifdim\papierbreedte>\printpapierbreedte
+% \global\printpapierbreedte\papierbreedte
+% \writestatus\m!systems{print width forced to paper width}%
+% \fi
+% %
+% \calculatehsizes
+% \calculatevsizes
+% \recalculatelogos
+% \recalculatebackgrounds
+% \recalculatelayout
+% \else\iffirstargument
+% \setuppapersize[#1][#2]%
+% \else\ifx\papersize\undefined\else
+% \restorepapersize
+% \fi\fi\fi}
+
\def\dodosetuppapersize[#1][#2]%
{\ifsecondargument
\xdef\restorepapersize
@@ -387,12 +438,23 @@
\ifcase\printlandscape\else
\doglobal\swapdimens\printpapierbreedte\printpapierhoogte
\fi
- \ifdim\papierhoogte>\printpapierhoogte
- \global\printpapierhoogte\papierhoogte
- \fi
- \ifdim\papierbreedte>\printpapierbreedte
- \global\printpapierbreedte\papierbreedte
- \fi
+ % this check can be confusing, so we've added the possibility
+ % to bypass this test: \setuppapersize[option=fit]
+ \doif\@@ppoptie\v!max % \v!fit is
+ {\bgroup
+ % we need to pre-swap else we get the wrong paper size
+ \doifinset\paperrotation{90,270}{\swapdimens\papierbreedte\papierhoogte}%
+ \doifinset\printrotation{90,270}{\swapdimens\printpapierbreedte\printpapierhoogte}%
+ \ifdim\papierhoogte>\printpapierhoogte
+ \global\printpapierhoogte\papierhoogte
+ \writestatus\m!systems{print height forced to paper height}%
+ \fi
+ \ifdim\papierbreedte>\printpapierbreedte
+ \global\printpapierbreedte\papierbreedte
+ \writestatus\m!systems{print width forced to paper width}%
+ \fi
+ \egroup}%
+ %
\calculatehsizes
\calculatevsizes
\recalculatelogos
@@ -854,8 +916,7 @@
\def\rotatepagebodybox#1#2#3%
{\ifnum#2#3>\zerocount
\setbox#1\vbox
- {\edef\somerotation
- {\ifdubbelzijdig\ifodd\realpageno#2\else#3\fi\else#2\fi}%
+ {\edef\somerotation{\ifdubbelzijdig\ifodd\realpageno#2\else#3\fi\else#2\fi}%
\dorotatebox\somerotation\hbox{\box#1}}%
\fi}
@@ -1279,7 +1340,27 @@
\c!bodemwit=\!!zeropoint]
%D First we define a whole range of (DIN) papersizes,
-%D of which the A-series makes most sense.
+%D of which the A-series makes most sense. We enable checking.
+
+%D We also set some of the parameters that will be used when
+%D positioning the typeset paper onto the print paper.
+
+\setuppaper % (size) % only used in XY imposition
+ [\c!breedte=\zeropoint,
+ \c!hoogte=\zeropoint,
+ \c!kopwit=\zeropoint,
+ \c!rugwit=\zeropoint,
+ \c!dx=\zeropoint,
+ \c!dy=\zeropoint,
+ \c!nx=1,
+ \c!ny=1]
+
+\setuppapersize
+ [\c!optie=\v!max,
+ \c!boven=,
+ \c!onder=\vss,
+ \c!links=,
+ \c!rechts=\hss]
\definepapersize [A0] [\c!breedte=841mm,\c!hoogte=1189mm]
\definepapersize [A1] [\c!breedte=594mm,\c!hoogte=841mm]
@@ -1372,25 +1453,6 @@
\setuppapersize
[A4][A4]
-%D We also set some of the parameters that will be used when
-%D positioning the typeset paper onto the print paper.
-
-\setuppaper % (size) % only used in XY imposition
- [\c!breedte=\zeropoint,
- \c!hoogte=\zeropoint,
- \c!kopwit=\zeropoint,
- \c!rugwit=\zeropoint,
- \c!dx=\zeropoint,
- \c!dy=\zeropoint,
- \c!nx=1,
- \c!ny=1]
-
-\setuppapersize
- [\c!boven=,
- \c!onder=\vss,
- \c!links=,
- \c!rechts=\hss]
-
%D A few goodies:
\beginETEX \dimexpr
diff --git a/tex/context/base/page-lyr.tex b/tex/context/base/page-lyr.tex
index d469c9361..953019775 100644
--- a/tex/context/base/page-lyr.tex
+++ b/tex/context/base/page-lyr.tex
@@ -19,6 +19,8 @@
% displacement. Should be an option, on by default
% (compatibility).
+% positie=forceer == ja maar dan ook in status=herhaal
+
%D The layering mechanism implemented here is independent of
%D the output routine, but future extensions may depend on a
%D more close cooperation.
@@ -134,24 +136,6 @@
\dodosetlayer[#1][][#2]%
\fi}}
-% \def\dodosetlayer[#1][#2][#3]% #2 = links/rechts
-% {\bgroup
-% \recalculatebackgrounds
-% \recalculatelogos
-% \doglobal\increment\currentlayerdata
-% \forgetall
-% \dontcomplain
-% \doifvalue{\??ll#1\c!optie}\v!test\tracelayerstrue
-% \iftracelayers\traceboxplacementtrue\fi
-% \dowithnextbox % sneller als aparte macro
-% {\ifundefined{\@@layerbox#1}%
-% \writestatus{layer}{unknown layer #1}%
-% \else
-% \dododosetlayer[#1][#2][#3]%
-% \fi
-% \egroup}
-% \hbox}
-
\def\dodosetlayer[#1][#2][#3]% #2 = links/rechts
{\bgroup
\recalculatebackgrounds
@@ -221,29 +205,26 @@
\newdimen\layerwidth
\newdimen\layerheight
+\chardef\@@lacome=1 % LAyerCOnstructionMEthod / temp, will be default
+
\def\dododosetlayer[#1][#2][#3]% will be sped up
{% we use the global width, never change this
\def\currentlayer{#1}%
\@@layerxsiz\layerparameter\c!breedte
\@@layerysiz\layerparameter\c!hoogte
-\layerwidth \@@layerxsiz
-\layerheight\@@layerysiz
+ \layerwidth \@@layerxsiz
+ \layerheight\@@layerysiz
% preroll
\getparameters[\??ll#1][#3]%
% presets and real roll
- \doifdefined{\??ll\??ll\layerparameter\c!preset}
- {\getvalue{\??ll\??ll\layerparameter\c!preset}{#1}{#3}}%
+ \executeifdefined{\??ll\??ll\layerparameter\c!preset}\gobbletwoarguments{#1}{#3}%
% that was real slow
- \doifvalue{\??ll#1\c!positie}\v!overlay % slow
- {\getparameters[\??ll#1]
- [\c!breedte=\zeropoint,
- \c!hoogte=\zeropoint,
- \c!positie=\v!ja]}%
- \doifvaluesomething{\??ll#1\c!rotatie}
+ \doif{\layerparameter\c!positie}\v!overlay % slow
+ {\getparameters[\??ll\currentlayer][\c!breedte=\zeropoint,\c!hoogte=\zeropoint,\c!positie=\v!ja]}%
+ \doifsomething{\layerparameter\c!rotatie}
{\setbox\nextbox\hbox
- {\rotate
- [\c!plaats=\v!hoog,
- \c!rotatie=\layerparameter\c!rotatie]
+ {\rotate % to be checked with new rotation
+ [\c!plaats=\v!hoog,\c!rotatie=\layerparameter\c!rotatie]
{\flushnextbox}}}%
% no, not local
% \@@layerxsiz\layerparameter\c!breedte
@@ -251,19 +232,17 @@
% never change that
\@@layerxpos\layerparameter\c!x
\@@layerypos\layerparameter\c!y
- \doifelsevalue{\??ll#1\c!hoffset}\v!max
- {\@@layerxoff\@@layerxsiz}
- {\@@layerxoff\layerparameter\c!hoffset}%
- \doifelsevalue{\??ll#1\c!voffset}\v!max
- {\@@layeryoff\@@layerysiz}
- {\@@layeryoff\layerparameter\c!voffset}%
+ \doifelse{\layerparameter\c!hoffset}\v!max
+ {\@@layerxoff\@@layerxsiz}{\@@layerxoff\layerparameter\c!hoffset}%
+ \doifelse{\layerparameter\c!voffset}\v!max
+ {\@@layeryoff\@@layerysiz}{\@@layeryoff\layerparameter\c!voffset}%
\advance\@@layerxoff\layerparameter\c!offset
\advance\@@layeryoff\layerparameter\c!offset
\@@layerxpos\layerparameter\c!sx\@@layerxpos
\@@layerypos\layerparameter\c!sy\@@layerypos
\@@layerxoff\layerparameter\c!sx\@@layerxoff
\@@layeryoff\layerparameter\c!sy\@@layeryoff
- \doifelsevalue{\??ll#1\c!positie}\v!ja % combine ^
+ \doifelse{\layerparameter\c!positie}\v!ja % combine ^
{\setlastlayerpos{#2#1}% todo l/r %%%%%%%%%%%%
\@@layerxpos\lastlayerxpos
\@@layerypos\lastlayerypos
@@ -313,55 +292,92 @@
\doifundefined{\@@layerbox#2#1\layerpage}
{\global\expandafter\newbox\csname\@@layerbox#2#1\layerpage\endcsname}}%
\dontcomplain % more comfortable
- \global\setbox\csname\@@layerbox#2#1\layerpage\endcsname\vbox
- to \layerparameter\c!hoogte % new, otherwise no negative y possible
+ \chardef\layerpagebox\csname\@@layerbox#2#1\layerpage\endcsname
+ \ifvoid\layerpagebox
+ \gsetboxllx\layerpagebox\zeropoint
+ \gsetboxlly\layerpagebox\zeropoint
+ \fi
+ \global\setbox\layerpagebox\vbox %to \layerparameter\c!hoogte % new, otherwise no negative y possible
{\offinterlineskip
- \hsize\layerparameter\c!breedte % new, keep box small
- \ifvoid\csname\@@layerbox#1\layerpage\endcsname\else
- \ht\csname\@@layerbox#2#1\layerpage\endcsname\zeropoint
- \dp\csname\@@layerbox#2#1\layerpage\endcsname\zeropoint
- \wd\csname\@@layerbox#2#1\layerpage\endcsname\zeropoint
- \doifnotvalue{\layerparameter\c!richting}\v!omgekeerd
- {\box\csname\@@layerbox#2#1\layerpage\endcsname}%
+ %postpone, to after nextboxwd correction % \hsize\layerparameter\c!breedte % new, keep box small
+ %\ifvoid\csname\@@layerbox#1\layerpage\endcsname\else % why not #2#1
+ \ifvoid\layerpagebox
+ \let\lastlayerwidth \zeropoint
+ \let\lastlayerheight\zeropoint
+ \else
+ \edef\lastlayerwidth {\the\wd\layerpagebox}%
+ \edef\lastlayerheight{\the\ht\layerpagebox}%
+ \ht\layerpagebox\zeropoint
+ \dp\layerpagebox\zeropoint
+ \wd\layerpagebox\zeropoint
+ \doifnotvalue{\layerparameter\c!richting}\v!omgekeerd{\box\layerpagebox}%
\fi
- \xdef\lastlayerwd{\the\wd\nextbox}%
- \xdef\lastlayerht{\the\ht\nextbox}% % not entirely ok when grid !
- \xdef\lastlayerdp{\the\dp\nextbox}% % not entirely ok when grid !
- \doifelsevalue{\??ll#1\c!plaats}\v!grid\donetrue\donefalse
- \ifdone
- \nextboxht\strutheight
- \nextboxdp\strutdepth
- \else
- \setbox\nextbox\hbox
- {\alignedbox[\layerparameter\c!plaats]\vbox{\flushnextbox}}%
- \fi
- \ifnum\layerparameter\c!regel=\zerocount\else % no \ifcase, can be negative
- \advance\@@layerypos \layerparameter\c!regel\lineheight
- \advance\@@layerypos \topskip
- \advance\@@layerypos-\lineheight
- \advance\@@layerypos-\nextboxht
- \fi
- \ifnum\layerparameter\c!kolom=\zerocount\else % no \ifcase, can be negative
- \advance\@@layerxpos \layoutcolumnoffset{\layerparameter\c!kolom}%
- \fi
-\ifdone
- \setbox\nextbox\hbox
- {\alignedbox[rb]\vbox{\flushnextbox}}%
-\fi
- \smashbox\nextbox
- \vskip\@@layerypos
- \vskip\@@layeryoff
- \hskip\@@layerxpos
- \hskip\@@layerxoff
- \flushnextbox
- \ifvoid\csname\@@layerbox#2#1\layerpage\endcsname
- % already flushed
+ % don't move
+ \xdef\lastlayerwd{\wd\nextboxwd}%
+ \xdef\lastlayerht{\ht\nextboxht}% % not entirely ok when grid !
+ \xdef\lastlayerdp{\dp\nextboxdp}% % not entirely ok when grid !
+ % this code
+ \doifelse{\layerparameter\c!plaats}\v!grid\donetrue\donefalse
+ \ifdone
+ \nextboxht\strutheight
+ \nextboxdp\strutdepth
\else
- % the reverse case % check !
- \vskip-\@@layerypos
- \vskip-\@@layeryoff
- \box\csname\@@layerbox#2#1\layerpage\endcsname
- \fi}%
+ \setbox\nextbox\hbox{\alignedbox[\layerparameter\c!plaats]\vbox{\flushnextbox}}%
+ \fi
+ \ifnum\layerparameter\c!regel=\zerocount\else % no \ifcase, can be negative
+ \advance\@@layerypos \layerparameter\c!regel\lineheight
+ \advance\@@layerypos \topskip
+ \advance\@@layerypos-\lineheight
+ \advance\@@layerypos-\nextboxht
+ \fi
+ \ifnum\layerparameter\c!kolom=\zerocount\else % no \ifcase, can be negative
+ \advance\@@layerxpos \layoutcolumnoffset{\layerparameter\c!kolom}%
+ \fi
+ \ifdone
+ \setbox\nextbox\hbox{\alignedbox[rb]\vbox{\flushnextbox}}%
+ \fi
+ % ll registration
+ \scratchdimen\@@layerxpos
+ \advance\scratchdimen\@@layerxoff
+ \ifdim\scratchdimen<\getboxllx\layerpagebox
+ \gsetboxllx\layerpagebox\scratchdimen
+ \fi
+\ifcase\@@lacome\or % this test will become obsolete
+ \advance\scratchdimen\nextboxwd
+ \nextboxwd\ifdim\scratchdimen>\lastlayerwidth \scratchdimen \else \lastlayerwidth \fi
+\fi
+ \scratchdimen\@@layerypos
+ \advance\scratchdimen\@@layeryoff
+ \ifdim\scratchdimen<\getboxlly\layerpagebox
+ \gsetboxlly\layerpagebox\scratchdimen
+ \fi
+ % ll compensation
+\ifcase\@@lacome\or % this test will become obsolete
+ \advance\scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \nextboxht\ifdim\scratchdimen>\lastlayerheight \scratchdimen \else \lastlayerheight \fi
+ \nextboxdp\zeropoint
+\fi
+ % placement
+ \hsize\layerparameter\c!breedte % new, keep box small
+ \vbox to \layerparameter\c!hoogte \bgroup
+ \smashbox\nextbox
+ \vskip\@@layerypos
+ \vskip\@@layeryoff
+ \hskip\@@layerxpos
+ \hskip\@@layerxoff
+ \flushnextbox
+ \ifvoid\layerpagebox
+ % already flushed
+ \else
+ % the reverse case % check !
+ \vskip-\@@layerypos
+ \vskip-\@@layeryoff
+ \box\layerpagebox
+ \fi
+ \egroup}%
+ % when position is true, the layerbox holds the compensation and needs
+ % to be placed; never change this !
\ifvoid\layerbox\else\box\layerbox\fi}
%D Given the task to be accomplished, the previous macro is
@@ -371,6 +387,19 @@
%D reference point is chosen.
%D \macros
+%D {doifelselayerdata}
+%D
+
+\def\doifelselayerdata#1%
+ {\ifundefined{\@@layerbox#1}%
+ \@EA\secondoftwoarguments
+ \else\ifvoid\csname\@@layerbox#1\endcsname
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi\fi}
+
+%D \macros
%D {flushlayer}
%D
%D When we flush a layer, we flush both the main one and the
@@ -378,48 +407,6 @@
%D efficient in \ETEX\ since there testing for an undefined
%D macro does not takes hash space.
-% \unexpanded\def\flushlayer[#1]%
-% {\doifnotvalue{\??ll#1\c!status}{\v!stop}
-% {\startoverlay
-% {\doflushlayer1{#1}{#1}}
-% {\doflushlayer0{#1}{#1:\realfolio}}
-% \stopoverlay}}
-%
-% \def\doflushlayer#1#2#3%
-% {\ifundefined{\@@layerbox#3}%
-% \ifcase#1\else\writestatus{layer}{unknown layer #3}\fi
-% \else
-% \doifvalue{\??ll#2\c!optie}{\v!test}
-% {\traceboxplacementtrue\tracelayerstrue}%
-% \iftracelayers \ruledvbox \else \vbox \fi to \overlayheight
-% {\forgetall
-% \hbox to \overlaywidth
-% {\doifvalue{\??ll#3\realfolio\c!positie}{\v!ja}
-% {\xypos{lyr:#3:\realfolio}}%
-% \let\next\box
-% \ifcase#1\else
-% \doifnotvalue{\??ll#2\c!positie}{\v!ja}
-% {\doifvalue{\??ll#2\c!status}{\v!herhaal}
-% {\let\next\copy}}%
-% \fi
-% \next\csname\@@layerbox#3\endcsname
-% \hss}%
-% \vss}%
-% \fi}
-
-% \unexpanded\def\flushlayer[#1]%
-% {\doifelsevalue{\??ll#1\c!dubbelzijdig}\v!ja
-% {\doifundefinedelse{\@@layerbox#1}%
-% {\dodoflushlayerA[#1]}
-% {\doifbothsidesoverruled
-% \dodoflushlayerB[#1][\v!links]% left
-% \orsideone
-% \dodoflushlayerB[#1][\v!rechts]% right
-% \orsidetwo
-% \dodoflushlayerB[#1][\v!links]% left
-% \od}}
-% {\dodoflushlayerA[#1]}}
-
\unexpanded\def\flushlayer[#1]%
{\doifelsevalue{\??ll#1\c!status}\v!volgende
{\global\letvalue{\??ll#1\c!status}\v!start} % dangerous, stack-built-up
@@ -442,15 +429,6 @@
{\dodoflushlayer0{#1}{#1:\realfolio}}
\stopoverlay}}
-% \def\dodoflushlayerB[#1][#2]%
-% {\doifnotvalue{\??ll#1\c!status}\v!stop
-% {\startoverlay
-% {\dodoflushlayer1{#1}{#1}}
-% {\dodoflushlayer0{#1}{#1:\realfolio}}
-% {\dodoflushlayer1{#1}{#2#1}}
-% {\dodoflushlayer0{#1}{#2#1:\realfolio}}
-% \stopoverlay}}
-
\def\dodoflushlayerB#1[#2]%
{\doifnotvalue{\??ll#2\c!status}\v!stop
{\startoverlay
@@ -460,58 +438,65 @@
{\dodoflushlayer0{#2}{#1#2:\realfolio}}
\stopoverlay}}
-% \def\dodoflushlayer#1#2#3%
-% {\ifundefined{\@@layerbox#3}%
-% \ifcase#1\else\writestatus{layer}{unknown layer #3}\fi
-% \else
-% \doifvalue{\??ll#2\c!optie}\v!test\tracelayerstrue
-% \iftracelayers\traceboxplacementtrue\fi
-% \doifelsevalue{\??ll#2\c!methode}\v!tekst\donetrue\donefalse
-% \iftracelayers \ruledvbox \else \vbox \fi \ifdone \else to \overlayheight \fi
-% {\forgetall
-% \hbox \ifdone \else to \overlaywidth \fi
-% {% klopt dit? #3 en niet #2 ?
-% \doifvalue{\??ll#3\realfolio\c!positie}\v!ja
-% {\xypos{lyr:#3:\realfolio}}%
-% \let\next\box
-% \ifcase#1\else
-% \doifnotvalue{\??ll#2\c!positie}\v!ja
-% {\doifvalue{\??ll#2\c!status}\v!herhaal
-% {\let\next\copy}}%
-% \fi
-% \next\csname\@@layerbox#3\endcsname
-% \hss}%
-% \vss}%
-% \fi}
-
\def\dodoflushlayer#1#2#3%
{\ifundefined{\@@layerbox#3}%
\ifcase#1\else\writestatus{layer}{unknown layer #3}\fi
\else
+ \bgroup
+ \forgetall
+ \offinterlineskip
\doifvalue{\??ll#2\c!optie}\v!test\tracelayerstrue
\iftracelayers\traceboxplacementtrue\fi
- \doifelsevalue{\??ll#2\c!methode}\v!tekst\donetrue\donefalse
- \iftracelayers \ruledvbox \else \vbox \fi \ifdone \else to \overlayheight \fi
- {\forgetall
- \hbox \ifdone \else to \overlaywidth \fi
+ \!!doneafalse
+ \!!donebfalse
+ \doifvalue{\??ll#2\c!methode}\v!overlay\!!doneatrue
+ \doifvalue{\??ll#2\c!methode}\v!passend\!!donebtrue
+ \!!donectrue
+ \ifcase#1\else
+ \doifnotvalue{\??ll#2\c!positie}\v!ja
+ {\doifvalue{\??ll#2\c!herhaal}\v!ja\!!donecfalse
+ \doifvalue{\??ll#2\c!status}\v!herhaal\!!donecfalse}% old method
+ \fi
+ \chardef\layerbox\csname\@@layerbox#3\endcsname
+ % we need to copy in order to retain the negative offsets for a next
+ % stage of additions, i.e. llx/lly accumulate in repeat mode and the
+ % compensation is may differ each flush depending on added content
+ \setbox\nextbox \if!!doneb
+ \vbox
+ {\scratchdimen\getboxlly\layerbox
+ \vskip-\scratchdimen
+ \scratchdimen\getboxllx\layerbox
+ \hskip-\scratchdimen
+ \advance\scratchdimen-\wd\layerbox
+ \hsize-\scratchdimen
+ \if!!donec\box\else\copy\fi\layerbox}%
+ \else
+ \if!!donec\box\else\copy\fi\layerbox % sorry for the delay due to copying
+ \fi
+ \iftracelayers \ruledvbox \else \vbox \fi \if!!donea to \overlayheight \fi
+ {\hbox \if!!donea to \overlaywidth \fi
{% klopt dit? #3 en niet #2 ?
\doifvalue{\??ll#3\realfolio\c!positie}\v!ja
{\xypos{lyr:#3:\realfolio}}%
- \let\next\box
- \ifcase#1\else
- \doifnotvalue{\??ll#2\c!positie}\v!ja
- {\doifvalue{\??ll#2\c!status}\v!herhaal
- {\let\next\copy}}%
- \fi
\doifoverlayelse{#3}
- {\next\csname\@@layerbox#3\endcsname}%
- {\startlayoutcomponent{l:#3}{layer #3}%
- \next\csname\@@layerbox#3\endcsname
- \stoplayoutcomponent}%
+ {\box\nextbox}
+ {\startlayoutcomponent{l:#3}{layer #3}\box\nextbox\stoplayoutcomponent}%
\hss}%
\vss}%
+ \if!!donec
+ \gsetboxllx\layerbox\zeropoint
+ \gsetboxlly\layerbox\zeropoint
+ \fi
+ \egroup
\fi}
+% \definelayer[test][method=fit] \setupcolors[state=start] \tracelayerstrue
+%
+% \framed[framecolor=red,offset=overlay]{\setlayer[test]{aa}\setlayer[test][x=10pt]{g}\flushlayer[test]}
+% \framed[framecolor=red,offset=overlay]{\setlayer[test]{aa}\setlayer[test][x=-10pt]{bb}\flushlayer[test]}
+% \framed[framecolor=red,offset=overlay]{\setlayer[test][x=-20pt]{cccccc}\flushlayer[test]}
+% \framed[framecolor=red,offset=overlay]{\setlayer[test]{dd}\setlayer[test][x=-20pt,y=-3pt]{eeeeee}\flushlayer[test]}
+
%D \macros
%D {composedlayer,placelayer,tightlayer}
%D
@@ -647,7 +632,7 @@
\c!xoffset=\!!zeropoint,%
\c!yoffset=\!!zeropoint]}
-\def\setuppositioning%
+\def\setuppositioning
{\resetpositioning
\dodoubleargument\getparameters[\??ps]}
diff --git a/tex/context/base/page-mar.tex b/tex/context/base/page-mar.tex
index 78118a418..2c4428128 100644
--- a/tex/context/base/page-mar.tex
+++ b/tex/context/base/page-mar.tex
@@ -16,6 +16,7 @@
\writestatus{loading}{Context Core Macros / Maginal Things}
% todo: compensate distance when setuplayout[textwidth=..]
+% todo: generalize margin/edge model, now too much duplication
\unprotect
@@ -100,7 +101,7 @@
\dostopattributes
\@@imna}%
\doif\@@imstapel\v!ja
- {\def\overlappingmargin{-2\s!sp}% test value, maybe .25\strutboxdp, maybe configurable
+ {\def\overlappingmargin{-20\scaledpoint}% test value, maybe .25\strutboxdp, maybe configurable
\setbox0\vbox{\stackeddown\vbox{\box0}}}% new
\ht0\strutht
\box0
@@ -145,9 +146,14 @@
{\llap{\plaatsmargetekstscheider}}{\hskip\margetekstafstand}
{#1}}
-\def\rechtermargetekstblok#1%
+% \def\rechtermargetekstblok#1%
+% {\maakmargetekstblok \rightmargintextwidth \v!rechts \v!links
+% {\hskip\margetekstafstand}{\rlap{\plaatsmargetekstscheider}}
+% {#1}}
+
+\def\rechtermargetekstblok#1% new: hsize correction
{\maakmargetekstblok \rightmargintextwidth \v!rechts \v!links
- {\hskip\margetekstafstand}{\rlap{\plaatsmargetekstscheider}}
+ {\hskip\margetekstafstand\hskip\tekstbreedte\hskip-\hsize }{\rlap{\plaatsmargetekstscheider}}
{#1}}
\def\doplacemargintext#1#2#3%
@@ -212,7 +218,7 @@
\definetwopasslist\s!margin
-\def\domarginreference
+\def\domarginreference % todo: use doonrightpage
{\doglobal\increment\nofmarginnotes\relax
\edef\writemarref
{\writeutilitycommand%
@@ -285,7 +291,7 @@
[\v!rechts][\doinlinker][\doinrechter]}
\def\inmarge
- {\doquintupleempty\doinmarge
+ { \doquintupleempty\doinmarge
[\@@implaats][\doinlinker][\doinrechter]}
\def\inanderemarge
@@ -499,10 +505,24 @@
\popindentation
\ignorespaces}
-\def\inrightmargin#1%
+% \def\inrightmargin#1%
+% {\pushindentation
+% \rlap
+% {\hskip\hsize
+% \hskip-\rightskip
+% \hskip\rechtermargeafstand
+% \hsize\rechtermargebreedte
+% #1}%
+% \popindentation
+% \ignorespaces}
+
+
+\def\inrightmargin#1% new: hsize correction
{\pushindentation
\rlap
- {\hskip\hsize
+ {\hskip\tekstbreedte
+ %\hskip-\hsize
+ %\hskip\hsize
\hskip-\rightskip
\hskip\rechtermargeafstand
\hsize\rechtermargebreedte
@@ -512,10 +532,10 @@
\def\inleftedge#1%
{\inleftmargin
- {\hsize\linkermargebreedte
- #1\relax
- \hskip\linkermargebreedte
- \hskip\linkerrandafstand}}
+ {\hsize\linkermargebreedte
+ #1\relax
+ \hskip\linkermargebreedte
+ \hskip\linkerrandafstand}}
\def\inrightedge#1%
{\inrightmargin
diff --git a/tex/context/base/page-new.tex b/tex/context/base/page-new.tex
index 6bab8a7d6..1c79f428c 100644
--- a/tex/context/base/page-new.tex
+++ b/tex/context/base/page-new.tex
@@ -1,11 +1,11 @@
-\unprotect
+\unprotect
-% clean up footnotes to notes
+% clean up footnotes to notes
-% We need to set the \dimen globally since we are in the
-% OTR. Unfortunately this interferes with local settings,
-% although we may assume that they will not cross page
-% boundaries.
+% We need to set the \dimen globally since we are in the
+% OTR. Unfortunately this interferes with local settings,
+% although we may assume that they will not cross page
+% boundaries.
\def\OTRSETcheckcontent
{\bgroup
@@ -17,16 +17,16 @@
\dorecurse{\nofcolumns}
{\OTRSETcheckcontent\columngettextbox
\OTRSETcheckcontent\columngetfootbox
- \OTRSETcheckcontent\columngettopbox
+ \OTRSETcheckcontent\columngettopbox
\OTRSETcheckcontent\columngetbotbox}%
- \ifdone\egroup\donefalse\else\egroup\donetrue\fi}
+ \ifdone\egroup\donefalse\else\egroup\donetrue\fi}
\def\OTRSETgetcolumntextheight#1% max - boven - top
{\scratchdimen=\OTRSETgetparameter\c!maxhoogte#1%
\advance\scratchdimen -\OTRSETgetparameter\c!bovenoffset#1%
\advance\scratchdimen -\ht\columntopbox#1%
\advance\scratchdimen -\getvalue{\??mc\number\mofcolumns-f}%
- \advance\scratchdimen -\ht\columnbotbox#1} % not used
+ \advance\scratchdimen -\ht\columnbotbox#1} % not used
\def\OTRSETgetcolumnnaturalheight#1% max - boven - top
{\setbox\scratchbox\vbox{\unvcopy\columntextbox#1}%
@@ -34,7 +34,7 @@
\advance\scratchdimen \OTRSETgetparameter\c!bovenoffset#1%
\advance\scratchdimen \ht\columntopbox#1%
\advance\scratchdimen -\getvalue{\??mc\number\mofcolumns-f}%
- \advance\scratchdimen \ht\columnbotbox#1} % not used
+ \advance\scratchdimen \ht\columnbotbox#1} % not used
\def\OTRSETdobalance% splitten in met en zonder footnotes
{\bgroup
@@ -44,13 +44,13 @@
\OTRSEToutput
{\global\setbox1\vbox{\unvbox\normalpagebox}%
\global\setbox3\vbox{\unvbox\footins}}%
- \verticalstrut\vskip-\struttotal % makes footnotes flush
+ \verticalstrut\vskip-\struttotal % makes footnotes flush
\eject
\global\collectingcontentfalse
- % check for footnotes only
- \ifdim\ht1<\topskip % real dirty
+ % check for footnotes only
+ \ifdim\ht1<\topskip % real dirty
\global\setbox1=\vbox{}
- % fix height of first line
+ % fix height of first line
\ifdim\ht3>\!!zeropoint
\global\setbox3\vbox
{\setfootnotebodyfont
@@ -58,19 +58,19 @@
\kern\topskip
\unvbox3}
\fi
- % prepare trial box
+ % prepare trial box
\global\setbox5\vbox
- {\ifdim\ht1>\zeropoint
+ {\ifdim\ht1>\zeropoint
\unvcopy1 \ifdim\ht3>\zeropoint \kern\skip\footins \fi
\fi
\ifdim\ht3>\zeropoint \unvcopy3 \fi}
\egroup
- % erase old stuff
+ % erase old stuff
\columnerasetextboxes
\columnerasefootboxes
% prepare floats
\OTRSETdotopinsertions
- \OTRSETdobotinsertions % not used can be removed
+ \OTRSETdobotinsertions % not used can be removed
% calculate available space
\!!heighta\zeropoint % available total height
\dorecurse{\nofcolumns}
@@ -82,30 +82,30 @@
% use normal routine
\columnerasetextboxes
\columnerasefootboxes
- % TEMP, TODO, FORCE NEXT PASS !
+ % TEMP, TODO, FORCE NEXT PASS !
\unvbox1
- \unvbox3
+ \unvbox3
\doglobal\addtocommalist{-\realfolio}\OTRSETbalancinglist
\donefalse
%\writestatus\m!columns{no balancing, text overflows height}%
\else\ifdim\ht5>\zeropoint \relax
% some text and/or notes
\donetrue
- \else
+ \else
\donefalse
\dorecurse\nofcolumns
{\ifdim\ht\columntopbox\recurselevel>\zeropoint \donetrue \fi}%
- \ifdone
- % no text and notes, but figures
+ \ifdone
+ % no text and notes, but figures
\else
- % no text, no notes, no figures
+ % no text, no notes, no figures
\doglobal\addtocommalist{-\realfolio}\OTRSETbalancinglist
\writestatus\m!columns{no balancing, nothing to be placed}%
\fi
\fi\fi
\ifdone
\ifdim\ht5>\zeropoint \relax
- % balancing text and notes
+ % balancing text and notes
%\writestatus\m!columns{text may fit, balancing}%
\newcounter\loopcounter
\newcounter\balancinglines
@@ -114,7 +114,7 @@
% initialize
\columnerasetextboxes
\columnerasefootboxes
- \setbox0=\copy5
+ \setbox0=\copy5
\splittopskip\topskip
% pre-split loop and quality calculation
%\writestatus\m!columns{pass \loopcounter: correction -\balancinglines}
@@ -126,7 +126,7 @@
\advance\!!heightc -\balancinglines\lineheight
\fi
\columnsettextbox\recurselevel\vsplit0 to \!!heightc}
- % just one method
+ % just one method
\OTRSETgetcolumnnaturalheight1 \dimen4\scratchdimen
\OTRSETgetcolumnnaturalheight\nofcolumns \dimen6\scratchdimen
%\writestatus\m!columns{first column: \the\dimen4}%
@@ -143,9 +143,9 @@
\decrement\balancinglines
\fi
\fi\fi
- % extra check
+ % extra check
% \ifdim\ht0>\zeropoint\relax \donefalse \fi
- % another check
+ % another check
\ifdone
%\writestatus\m!columns{balancing finished in pass \loopcounter}%
\else \ifnum\loopcounter>100 \donetrue
@@ -166,7 +166,7 @@
\ifnum\recurselevel<\nofcolumns
\advance\!!heightc -\balancinglines\lineheight
\fi
- % split off text
+ % split off text
\ifdim\ht0>\zeropoint
\columnsettextbox\recurselevel\vsplit0 to \!!heightc
\setbox4\vbox{\unvcopy\columntextbox\recurselevel}
@@ -177,7 +177,7 @@
\fi
\fi
% split off footnotes
- \ifdim\ht0>\zeropoint\relax \else
+ \ifdim\ht0>\zeropoint\relax \else
\ifdim\ht2>\zeropoint\relax
\setbox4\vsplit2 to \!!heightc
\setbox\footins=\vbox{\unvbox4} % ugly and dirty trick
@@ -194,7 +194,7 @@
\exitloop
\fi}
\else
- % no reason to balance floats
+ % no reason to balance floats
\fi
\fi
\doglobal\addtocommalist{\realfolio}\OTRSETbalancinglist
@@ -202,4 +202,62 @@
\fi
\egroup}
-\protect \endinput
+\protect \endinput
+
+% \def\OTRSETsetbalanceht#1#2% var col
+% {#1\getvalue{\??mc\OTRSETidentifier\number#2\c!regels}\relax
+% \ifcase#1#1\getvalue{\??mc\OTRSETidentifier\c!regels}\relax\fi
+% \ifcase#1#1\savedcolumnmaxcells\relax\fi}
+
+% \def\OTRSETinitbalancing
+% {\ifbalancecolumns
+% \let\savedcolumnmaxcells\columnmaxcells
+% \ifnum\realpageno=\balancingpageno\relax
+% \ifnum\mofcolumns=\plusone\relax
+% \ifcase\OTRSETbottombalance \else
+% \!!countc\zeropoint
+% \dorecurse\nofcolumns
+% {\OTRSETsetbalanceht\!!countb\recurselevel
+% \ifnum\!!countb>\!!countc\!!countc\!!countb\fi}%
+% \fi
+% \dorecurse\nofcolumns
+% {\!!counta\recurselevel\relax
+% % can be an option: absolute versus relative
+% \ifcase\OTRSETbottombalance
+% \OTRSETsetbalanceht\!!countb\recurselevel
+% \advance\!!countb\precolumnlines
+% \ifnum\!!countb>\localcolumnmaxcells\relax
+% \xdef\localcolumnmaxcells{\the\!!countb}%
+% \fi
+% \advance\!!countb \plusone
+% \dostepwiserecurse\!!countb\columnmaxcells\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \else
+% \globallet\localcolumnmaxcells\columnmaxcells
+% \!!countb\!!countc
+% \advance\!!countb-\columnmaxcells
+% \!!countb-\!!countb
+% \advance\!!countb \minusone
+% \ifnum\!!countb>\zerocount
+% \dostepwiserecurse\plusone\!!countb\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \OTRSETsetbalanceht\!!countb\recurselevel
+% \ifnum\!!countc>\!!countb
+% \!!countd\columnmaxcells
+% \advance\!!countd-\!!countc
+% \advance\!!countd+\!!countb
+% \dostepwiserecurse\!!countd\columnmaxcells\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \fi
+% \fi
+% \fi}%
+% \OTRSETsetvsize % ! ! !
+% \fi
+% \fi
+% \fi}
diff --git a/tex/context/base/page-run.tex b/tex/context/base/page-run.tex
index 3709bc869..801ca4c6d 100644
--- a/tex/context/base/page-run.tex
+++ b/tex/context/base/page-run.tex
@@ -2,7 +2,7 @@
%D [ file=page-run,
%D version=2000.10.20,
%D title=\CONTEXT\ Page Macros,
-%D subtitle=Runtime Macros,
+%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
@@ -11,9 +11,9 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\writestatus{loading}{Context Page Macros / Runtime Macros}
+\writestatus{loading}{Context Page Macros / Runtime Macros}
-\unprotect
+\unprotect
\gdef\doshowprint[#1][#2][#3]%
{\framed
@@ -97,7 +97,7 @@
\c!hoek=\v!recht,
\c!kaderoffset=\!!zeropoint,
\c!kaderdiepte=\!!zeropoint,
- \c!kaderkleur=green]
+ \c!kaderkleur=layout:page]
\setupbackgrounds
[#1][#2]
[\c!achtergrond=,
@@ -128,19 +128,19 @@
\gdef\showsetupB#1#2#3%
{#1&&#2#3&\tttf\string#3\cr}
-\iffixedlayoutdimensions
+\iffixedlayoutdimensions
\global\let\showsetupC=\showsetupA
\else % we could have used \@the
- \gdef\showsetupC#1#2% \relax is really needed here !
+ \gdef\showsetupC#1#2% \relax is really needed here !
{#1&\scratchdimen#2\PtToCm{\the\scratchdimen}&%
\scratchdimen#2\relax\the\scratchdimen&\tttf\string#2\cr}
\fi
-% \startinterface english % english is fallback
+% \startinterface english % english is fallback
\gdef\showsetups
{\noindent
@@ -184,7 +184,7 @@
\showsetupB{topskip} \relax \topskipfactor
\showsetupB{maxdepth} \relax \maxdepthfactor}}}
-% \stopinterface
+% \stopinterface
\startinterface dutch
@@ -283,7 +283,7 @@
\startinterface czech
-\gdef\showsetups%
+\gdef\showsetups%
{\noindent
\vbox
{\forgetall
@@ -391,4 +391,4 @@
\NC inner margin \NC \the\innermarginwidth \NC \NR
\stoptabulate}
-\protect \endinput
+\protect \endinput
diff --git a/tex/context/base/page-set.tex b/tex/context/base/page-set.tex
index a4e98abc3..84327dc44 100644
--- a/tex/context/base/page-set.tex
+++ b/tex/context/base/page-set.tex
@@ -13,7 +13,7 @@
% getnoflines vs getrawnoflines
-% some day: cleanup
+% some day: cleanup and go etex
\writestatus{loading}{Context OTR Macros / Column Sets}
@@ -25,6 +25,8 @@
% todo : test page areas per page
% todo : leftmargin/rightmargin (better than afstand(1))
+% use the OTRSET layer for more purposes, like the footnotes !
+
\unprotect
\newcount\tofcolumns % total
@@ -50,20 +52,71 @@
\def\@otr@{otr}
-\def\OTRSETgridcell#1#2%
- {\csname\@otr@:\number#1:\number#2\endcsname}
+\def\OTRSETgridcell #1#2{\csname \@otr@:\number#1:\number#2\endcsname}
+\def\OTRSETgetgridcell#1#2{\box\csname \@otr@:\number#1:\number#2\endcsname}
+\def\OTRSETsetgridcell#1#2{\global\setbox\csname\@otr@:\number#1:\number#2\endcsname}
-\def\OTRSETgetgridcell#1#2%
- {\box\csname\@otr@:\number#1:\number#2\endcsname}
+\long\def\OTRSETdoifcellelse#1#2#3#4%
+ {\relax\ifvoid\csname\@otr@:\number#1:\number#2\endcsname#4\else#3\fi}
-\def\OTRSETsetgridcell#1#2%
- {\global\setbox\csname\@otr@:\number#1:\number#2\endcsname}
+\long\def\OTRSETdoifcellelse#1#2%
+ {\relax\ifvoid\csname\@otr@:\number#1:\number#2\endcsname
+ \@EA\secondoftwoarguments\else\@EA\firstoftwoarguments
+ \fi}
-% \def\OTRSETgetgridcell{\box \OTRSETgridcell}
-% \def\OTRSETsetgridcell{\global\setbox\OTRSETgridcell}
+% The following two macros are used to compensate for a switch in body fonts
+% as in:
+%
+% \definecolumnset [twee] [n=2,balanceren=ja]
+% \definecolumnset [three] [n=3,balanceren=ja]
+%
+% \setupcolumnsetlines[twee][1][1][7]
+% \setupcolumnsetlines[twee][1][2][10]
+%
+% \setupcolumnsetlines[three][1][1][40]
+% \setupcolumnsetlines[three][1][2][40]
+% \setupcolumnsetlines[three][1][3][40]
+%
+% \setupcolumnsetstart[three][1][1][15]
+% \setupcolumnsetstart[three][1][2][20]
+% \setupcolumnsetstart[three][1][3][20]
+%
+% \starttext
+% \startcolumnset [twee] \dorecurse {1}{\input tufte \par} \stopcolumnset
+% \switchnaarkorps[klein]
+% \startcolumnset [three] \dorecurse {1}{\input tufte \par} \stopcolumnset
+% \stoptext
+
+\def\OTRSETsetcorrectnofcells#1%
+ {\bgroup
+ \!!counta#1\relax
+ \ifdim\globalbodyfontsize=\localbodyfontsize
+ % already ok
+ \else
+ \!!dimena-\!!counta\lineheight
+ \restoreglobalbodyfont % slow, we need a fast one
+ \advance\!!dimena\!!counta\lineheight
+ \getnoflines\!!dimena
+ \advance\!!counta\noflines
+ \ifnum\!!counta<#1\else
+ \!!counta#1\relax
+ \fi
+ \fi
+ \relax % needed ! ! ! ! else lookahead over \fi and \@EA
+ \@EA\egroup\@EA\scratchcounter\the\!!counta\relax}
+
+\def\OTRSETsetcorrectcellht
+ {\bgroup
+ \!!dimena-\strutht\relax
+ \ifdim\globalbodyfontsize=\localbodyfontsize
+ % already ok
+ \else
+ \restoreglobalbodyfont
+ \fi
+ \advance\!!dimena\strutht
+ \relax % needed ! ! ! ! else lookahead over \fi and \@EA
+ \@EA\egroup\@EA\scratchdimen\the\!!dimena\relax}
-\long\def\OTRSETdoifcellelse#1#2#3#4%
- {\relax\ifvoid\csname\@otr@:\number#1:\number#2\endcsname#4\else#3\fi}
\beginETEX \ifcsname
@@ -185,112 +238,89 @@
\def\OTRSETerasegridcells#1#2#3#4%
{\doOTRSETsetgridcells{\box\voidb@x}{#1}{#2}{#3}{#4}{\box\voidb@x}}
-% \def\OTRSETsetfreecells#1#2% col start
-% {\global\columnfirstcell\ifnum#2=0 1\else#2\fi\relax
-% \ifnum\columnfirstcell>\columnmaxcells
-% \global\columnfreecells\zerocount
-% \global\columnfirstcell\plusone
-% \global\columnlastcell \zerocount
-% \global\somefreecolumncellsfalse
-% %\message{no cells a}%
-% \else
-% \doloop
-% {\ifnum\columnfirstcell>\columnmaxcells\relax
-% \exitloop
-% \else
-% \OTRSETdoifcellelse{#1}\columnfirstcell
-% {\global\advance\columnfirstcell\plusone}
-% {\exitloop}%
-% \fi}%
-% \global\columnlastcell\columnfirstcell
-% \doloop
-% {\ifnum\columnlastcell>\columnmaxcells\relax
-% \exitloop
-% \else
-% \OTRSETdoifcellelse{#1}\columnlastcell
-% {\global\advance\columnlastcell \minusone \exitloop}
-% {\global\advance\columnlastcell \plusone }%
-% \fi}%
-% \ifnum\columnfirstcell>\columnmaxcells
-% \global\columnfreecells\zerocount
-% \global\columnfirstcell\plusone
-% \global\columnlastcell \zerocount
-% \global\somefreecolumncellsfalse
-% %\message{no cells b}%
-% \else
-% \ifnum\columnlastcell>\columnmaxcells
-% \global\columnlastcell\columnmaxcells
-% \fi
-% \global\columnfreecells\columnlastcell
-% \global\advance\columnfreecells -\columnfirstcell
-% \global\advance\columnfreecells \plusone
-% \global\somefreecolumncellstrue
-% %\message{\number\columnfirstcell-\number\columnlastcell=\number\columnfreecells}%
-% \fi
-% \fi}
+\def\setupcolumnsetlines{\doquintupleempty\dosetupcolumnsettrick[l]}
+\def\setupcolumnsetstart{\doquintupleempty\dosetupcolumnsettrick[s]}
+
+\def\dosetupcolumnsettrick[#1][#2][#3][#4][#5]% tag id page col value
+ {% not needed, is already relative
+ % \doifinstringelse{+}{#3}{\scratchcounter\realpageno}{\scratchcounter\zerocount}%
+ % \advance\scratchcounter#3\relax % \relax needed
+ % \setevalue{\??mc:#1:#2:\the\scratchcounter:\number#4}{\number#5}}
+ \iffifthargument
+ \setevalue{\??mc:#1:#2:\number#3:\number#4}{\number#5}%
+ \else
+ \setevalue{\??mc:#1:#2:\number#3:0}{\number#4}%
+ \fi}
-% \def\OTRSETgetmaxfreecells#1#2% col start
-% {\scratchcounter\zerocount
-% \let\columnmaxfreecells\!!zerocount
-% \let\columnfrmfreecells\!!zerocount
-% \dostepwiserecurse{#2}\columnmaxcells\plusone
-% {\OTRSETdoifcellelse{#1}\recurselevel
-% {\ifnum\columnmaxfreecells<\scratchcounter
-% \edef\columnmaxfreecells{\the\scratchcounter}%
-% \let\columnfrmfreecells\recurselevel
-% \fi
-% \scratchcounter\zerocount}
-% {\advance\scratchcounter\plusone}}}
-
-\def\setupcolumnsetlines
- {\doquadrupleargument\dosetupcolumnsetlines}
-
-\def\dosetupcolumnsetlines[#1][#2][#3][#4]%
- {\setevalue{\??mc#1:#2:\number#3}{\number#4}}
+\def\currentcolumnmaxcellstag #1{\??mc:l:\OTRSETidentifier:\columnsetpage:\number#1}
+\def\currentcolumnstartcelltag#1{\??mc:s:\OTRSETidentifier:\columnsetpage:\number#1}
\beginTEX
-\def\currentcolumnmaxcells
- {\ifundefined{\??mc\OTRSETidentifier:\columnsetpage:\number\mofcolumns}%
- \columnmaxcells
- \else\ifnum\csname\??mc\OTRSETidentifier:\columnsetpage:\number\mofcolumns\endcsname=0
- \columnmaxcells
- \else
- \csname\??mc\OTRSETidentifier:\columnsetpage:\number\mofcolumns\endcsname
- \fi\fi}
+ \def\doresetcolumnsetlines#1%
+ {\ifundefined{\currentcolumnmaxcellstag{#1}}\else
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
+ \fi
+ \ifundefined{\currentcolumnmaxcellstag{#1}}\else
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
+ \fi}
+
+ \def\currentcolumnsomecells#1#2%
+ {\expandafter\ifx\csname#1\mofcolumns\endcsname\relax
+ \expandafter\ifx\csname#10\endcsname\relax
+ #2%
+ \else
+ \ifnum\csname#10\endcsname=\zerocount
+ #2\else\csname#10\endcsname
+ \fi
+ \fi
+ \else
+ \ifnum\csname#1\mofcolumns\endcsname=\zerocount
+ #2\else\csname#1\mofcolumns\endcsname
+ \fi
+ \fi}
\endTEX
-% in etex we also support negative numbers
-
-\def\currentcolumnmaxcellstag
- {\??mc\OTRSETidentifier:\columnsetpage:\number\mofcolumns}
-
\beginETEX \numexpr
-\def\currentcolumnmaxcells
- {\ifcsname\currentcolumnmaxcellstag\endcsname
- \ifnum\csname\currentcolumnmaxcellstag\endcsname=0
- \columnmaxcells
- \else
- \number\numexpr(\ifnum\csname\currentcolumnmaxcellstag\endcsname<0
- \columnmaxcells+\fi\csname\currentcolumnmaxcellstag\endcsname)%
+ \def\doresetcolumnsetlines#1%
+ {\ifcsname\currentcolumnmaxcellstag{#1}\endcsname
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
\fi
- \else
- \columnmaxcells
- \fi}
+ \ifcsname\currentcolumnmaxcellstag{#1}\endcsname
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
+ \fi}
+
+ \def\currentcolumnsomecells#1#2%
+ {\ifcsname#1\mofcolumns\endcsname
+ \ifnum\csname#1\mofcolumns\endcsname=\zerocount
+ #2%
+ \else
+ \number\numexpr(\ifnum\csname#1\mofcolumns\endcsname<\zerocount
+ \columnmaxcells+\fi\csname#1\mofcolumns\endcsname)%
+ \fi
+ \else\ifcsname#10\endcsname
+ \ifnum\csname#10\endcsname=\zerocount
+ #2%
+ \else
+ \number\numexpr(\ifnum\csname#10\endcsname<\zerocount
+ \columnmaxcells+\fi\csname#10\endcsname)%
+ \fi
+ \else
+ #2%
+ \fi\fi}
\endETEX
-\def\doresetcolumnsetlines#1%
- {\ifundefined{\??mc\OTRSETidentifier:\columnsetpage:\number#1}\else
- \letgvalue{\??mc\OTRSETidentifier:\columnsetpage:\number#1}\!!zerocount
- \fi}
+\def\currentcolumnmaxcells {\currentcolumnsomecells\currentcolumnmaxcellstag \columnmaxcells}
+\def\currentcolumnstartcell{\currentcolumnsomecells\currentcolumnstartcelltag\plusone}
\def\OTRSETsetfreecells#1#2% col start
- {\global\columnfirstcell\ifnum#2=0 1\else#2\fi\relax
- \pushmacro \columnmaxcells
- \edef\columnmaxcells{\currentcolumnmaxcells}%
+ {\bgroup
+ \global\columnfirstcell\ifnum#2=0 1\else#2\fi\relax
+\OTRSETsetcorrectnofcells\currentcolumnmaxcells % sets \scratchcounter
+\edef\columnmaxcells{\the\scratchcounter}%
\ifnum\columnfirstcell>\columnmaxcells
\global\columnfreecells\zerocount
\global\columnfirstcell\plusone
@@ -303,8 +333,7 @@
\exitloop
\else
\OTRSETdoifcellelse{#1}\columnfirstcell
- {\global\advance\columnfirstcell\plusone}
- {\exitloop}%
+ {\global\advance\columnfirstcell\plusone}\exitloop
\fi}%
\global\columnlastcell\columnfirstcell
\doloop
@@ -332,14 +361,15 @@
%\message{\number\columnfirstcell-\number\columnlastcell=\number\columnfreecells}%
\fi
\fi
- \popmacro \columnmaxcells}
+ \egroup}
\def\OTRSETgetmaxfreecells#1#2% col start
- {\scratchcounter\zerocount
- \let\columnmaxfreecells\!!zerocount
+ {\let\columnmaxfreecells\!!zerocount
\let\columnfrmfreecells\!!zerocount
\pushmacro \columnmaxcells
- \edef\columnmaxcells{\currentcolumnmaxcells}%
+\OTRSETsetcorrectnofcells\currentcolumnmaxcells % sets \scratchcounter
+\edef\columnmaxcells{\the\scratchcounter}%
+ \scratchcounter\zerocount
\dostepwiserecurse{#2}\columnmaxcells\plusone
{\OTRSETdoifcellelse{#1}\recurselevel
{\ifnum\columnmaxfreecells<\scratchcounter
@@ -373,8 +403,7 @@
\localcolumnwidth\OTRSETlocalwidth\mofcolumns
\setbox\scratchbox\hbox\localframed
[\??mc\OTRSETidentifier\number\mofcolumns]%
- [\c!breedte=\localcolumnwidth,\c!hoogte=\!!heighta,
- \c!regels=]%
+ [\c!breedte=\localcolumnwidth,\c!hoogte=\!!heighta,\c!regels=]%
{}%
\wd\scratchbox\localcolumnwidth
\ht\scratchbox\!!heighta
@@ -392,8 +421,19 @@
{\mofcolumns\recurselevel
\localcolumnwidth\OTRSETlocalwidth\mofcolumns
\offinterlineskip
- \setbox\scratchbox\vbox to \!!heighta % \teksthoogte
- {\topskipcorrection
+ \setbox\scratchbox\vbox to \!!heighta
+ {\topskipcorrection % not needed
+ \ifcase\OTRSETbalancemethod
+ % no
+ \or
+ % yes
+ \doifelselayerdata{OTRTEXT}\vfill\relax % temp hack
+ \or
+ % top
+ \or
+ % bottom
+ \vfill
+ \fi
\dorecurse\columnmaxcells
{\setbox\scratchbox\hbox{\OTRSETgetgridcell\mofcolumns\recurselevel}%
\ht\scratchbox\strutht
@@ -404,7 +444,19 @@
\hbox to \localcolumnwidth
{\hskip\localcolumnwidth\llap{\box\scratchbox}}%
\fi
- \par}}%
+ \par}%
+ \ifcase\OTRSETbalancemethod
+ % no
+ \else
+ % yes, top, bottom
+ \ifdim\globalbodyfontsize=\localbodyfontsize
+ \removedepth
+ \restoreglobalbodyfont
+ \vskip\strutdepth
+ \fi
+ \kern\zeropoint
+ \vss
+ \fi}%
\wd\scratchbox\localcolumnwidth % \tekstbreedte
\ifcase\columndirection
\hskip\OTRSETgetparameter\c!afstand\recurselevel\box\scratchbox
@@ -413,9 +465,33 @@
\fi}}%
\egroup}
-\def\OTRSETreducegridbox
- {\ifnum\localcolumnmaxcells>\zerocount
- \let\columnmaxcells\localcolumnmaxcells
+\let\OTRSETbalht\zeropoint
+
+\def\OTRSETreducegridbox % for the moment no difference between methods
+ {\globallet\OTRSETbalht\zeropoint
+ \ifcase\OTRSETbalancemethod
+ % no balancing
+ \else
+ \bgroup
+ \!!counta\columnmaxcells
+ \donetrue
+ \doloop
+ {\dorecurse\nofcolumns{\OTRSETdoifcellelse\recurselevel\!!counta\donefalse\donothing}%
+ \ifdone
+ \ifnum\!!counta>\plusone\advance\!!counta\minusone\else\exitloop\fi
+ \else
+ \exitloop
+ \fi}%
+ \ifnum\!!counta>\plusone
+ \!!heighta\lineheight
+ \multiply\!!heighta \!!counta
+ \advance\!!heighta \topskip
+ \advance\!!heighta -\lineheight
+ \else
+ \!!heighta\zeropoint
+ \fi
+ \xdef\OTRSETbalht{\the\!!heighta}%
+ \egroup
\fi}
\def\OTRSETflushfinalfootnotes
@@ -449,14 +525,6 @@
\initializecolumntextareas
\fi}
-%\def\OTRSETdofinalflush % see \OTRSETdoflush
-% {\OTRSETflushfinalfootnotes
-% \placecolumntextareas
-% \OTRSETcentergridcells
-% \setbox\scratchbox=\OTRSETmakegridbox
-% \global\mofcolumns=\nofcolumns % otherwise problems in finaloutput
-% \finaloutput\box\scratchbox}
-
\newbox\OTRfinalpagebox
\def\OTRSETdofinalflush % see \OTRSETdoflush
@@ -473,7 +541,17 @@
\def\OTRSETdofinaloutput
{\ifdim\ht\OTRfinalpagebox=\teksthoogte
% \bgroup \let\OTRSETsetvsize\relax % prevents useless search for gap
+ \ifcase\OTRSETbalancemethod
+ \finaloutput\box\OTRfinalpagebox
+ \else\ifdim\OTRSETbalht>\zeropoint
+ \global\setbox\OTRfinalpagebox \iftracecolumnset\ruledvbox\else\vbox\fi to \OTRSETbalht
+ {\box\OTRfinalpagebox}%
+ \global\dp\OTRfinalpagebox\strutdepth
+ \box\OTRfinalpagebox
+ \else
\finaloutput\box\OTRfinalpagebox
+ \fi \fi
+ \globallet\OTRSETbalht\zeropoint
% \egroup
\fi}
@@ -715,23 +793,6 @@
\appendtoks \OTRSETflushsavednotes \to \OTRSETeverystartofcolumn
-% \def\OTRSETnaturalflush
-% {\bgroup
-% \forgetall % new, needed !
-% \setbox0\vbox to \columnfreecells\lineheight
-% {\vskip-\topskip
-% \vskip\lineheight
-% \prevdepth\strutdp
-% \unvbox\normalpagebox
-% \vfill}%
-% \setbox2\hbox
-% {\OTRSETplacebottomnotes}%
-% \setbox\scratchbox\hbox
-% {\wd0\zeropoint\box0\box2}%
-% \dp\scratchbox\strutdp
-% \OTRSEThandleflushedtext1
-% \egroup}
-
\def\OTRSETnaturalflush
{\bgroup
\forgetall % new, needed !
@@ -862,9 +923,9 @@
\bgroup
\scratchdimen#2%
\advance\scratchdimen-\wd#1\relax
- \ifdim-10\s!sp>\scratchdimen
+ \ifdim-10\scaledpoint>\scratchdimen
\egroup
- \else\ifdim10\s!sp<\scratchdimen
+ \else\ifdim10\scaledpoint<\scratchdimen
\egroup
\else
\egroup
@@ -1122,12 +1183,15 @@
\else
% crappy test / needed for o-pbu-f / will be replaced
\getnoflines{\ht#1}%
- \scratchdimen\dimexpr(\noflines\lineheight+\lineheight)\relax
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen\lineheight
\advance\scratchdimen\pagetotal\relax
\ifdim\scratchdimen<\pagegoal
- \OTRSETprepareforcolumnslot3{#1}%
- \snaptogrid\vbox{\box#1}%
- \blanko
+ %OTRSETprepareforcolumnslot3{#1}%
+ %ruledvskip\columnslotspacing\lineheight
+ \blanko[\columnslotspacing*\v!regel]%
+ \snaptogrid\hbox to \hsize{\hss\box#1\hss}% strange, why the centering
+ \blanko[\columnslotspacing*\v!regel]%
\else
\OTRSETstoreincolumnslotSOMEWHERE2{#1}%
\fi
@@ -1637,12 +1701,14 @@
\fi
\decrement\columnsetlevel\relax}
+\chardef\OTRSETbalancemethod\zerocount
+
\def\dostopcolumnset
{%\OTRSETdofinalflushfloats % yes/no
- \ifbalancecolumns
- \OTRSETdobalance
- \else
+ \ifcase\OTRSETbalancemethod
\OTRSETnobalance
+ \else
+ \OTRSETdobalance
\fi}
\def\OTRSETdobalance
@@ -1655,10 +1721,8 @@
% 2-3 columns on one page with both sets balanced: the
% second set does not see the first set
-\chardef\OTRSETbottombalance\zerocount
-
% \def\OTRSETinitbalancing
-% {\ifbalancecolumns
+% {\ifcase\OTRSETbalancemethod\or
% \let\savedcolumnmaxcells\columnmaxcells
% \ifnum\realpageno=\balancingpageno\relax
% \ifnum\mofcolumns=\plusone
@@ -1672,7 +1736,7 @@
% \!!countb \savedcolumnmaxcells\relax
% \fi
% % can be an option: absolute versus relative
-% \ifcase\OTRSETbottombalance
+% \ifnum\OTRSETbalancemethod=\plusthree
% \advance\!!countb\precolumnlines
% \ifnum\!!countb>\localcolumnmaxcells\relax
% \xdef\localcolumnmaxcells{\the\!!countb}%
@@ -1774,8 +1838,31 @@
\OTRSETsetplaceholders
\OTRSEThandlepreposttext
\initializecolumntextareas % name !
+ \OTRSETcheckstartcells
\OTRSETsetvsize}
+% \def\OTRSETcheckstartcells
+% {\dorecurse\nofcolumns
+% {\bgroup
+% \mofcolumns\recurselevel
+% \scratchcounter\currentcolumnstartcell % uses \mofcolumns, returns 1 or more
+% \advance\scratchcounter \minusone
+% \dorecurse\scratchcounter
+% {\OTRSETdoifcellelse\mofcolumns\recurselevel
+% \donothing{\OTRSETsetgridcell\mofcolumns\recurselevel\copy\placeholderboxe}}%
+% \egroup}}
+
+\def\OTRSETcheckstartcells
+ {\dorecurse\nofcolumns
+ {\bgroup
+ \mofcolumns\recurselevel
+\OTRSETsetcorrectnofcells\currentcolumnstartcell
+\advance\scratchcounter \minusone
+ \dorecurse\scratchcounter
+ {\OTRSETdoifcellelse\mofcolumns\recurselevel
+ \donothing{\OTRSETsetgridcell\mofcolumns\recurselevel\copy\placeholderboxe}}%
+ \egroup}}
+
\OTRSEToutput
{\OTRSETnaturalflush
%\OTRSETstartnextpage
@@ -1792,15 +1879,12 @@
{\chardef\columndirection\zerocount}
{\chardef\columndirection\plusone}%
% balancing
- \balancecolumnsfalse
- \chardef\OTRSETbottombalance\zerocount
+ \chardef\OTRSETbalancemethod\zerocount
\processaction
[\getvalue{\??mc\OTRSETidentifier\c!balanceren}]
- [ \v!ja=>\balancecolumnstrue,
- \v!onder=>\chardef\OTRSETbottombalance\plusone
- \balancecolumnstrue,
- \v!boven=>%chardef\OTRSETbottombalance\zerocount
- \balancecolumnstrue]}
+ [ \v!ja=>\chardef\OTRSETbalancemethod\plusone,
+ \v!boven=>\chardef\OTRSETbalancemethod\plustwo,
+ \v!onder=>\chardef\OTRSETbalancemethod\plusthree]}
% keep 'm for a while
%
@@ -1882,6 +1966,30 @@
\let\precolumnlines \!!zerocount
\let\postcolumnlines\!!zerocount
+% \def\OTRSEThandlepreposttext
+% {\ifdim\ht\precolumnbox>\zeropoint % new
+% \getnoflines{\ht\precolumnbox}%
+% \edef\precolumnlines{\the\noflines}%
+% \doOTRSETsetgridcells
+% {\copy\placeholderboxe}
+% \plusone\plusone\nofcolumns\noflines
+% {\box\precolumnbox}%
+% \else
+% \let\precolumnlines\!!zerocount
+% \fi
+% \ifdim\ht\postcolumnbox>\zeropoint % new, otherwise empty bottom line
+% \getnoflines{\ht\postcolumnbox}%
+% \edef\postcolumnlines{\the\noflines}%
+% \advance\columnfreecells -\noflines
+% \advance\columnfreecells \plusone
+% \doOTRSETsetgridcells
+% {\copy\placeholderboxe}
+% \plusone\columnfreecells\nofcolumns\noflines
+% {\box\postcolumnbox}%
+% \else
+% \let\postcolumnlines\!!zerocount
+% \fi}
+
\def\OTRSEThandlepreposttext
{\ifdim\ht\precolumnbox>\zeropoint % new
\getnoflines{\ht\precolumnbox}%
@@ -1889,7 +1997,12 @@
\doOTRSETsetgridcells
{\copy\placeholderboxe}
\plusone\plusone\nofcolumns\noflines
- {\box\precolumnbox}%
+ % normal version (single column set)
+ % {\box\precolumnbox}%
+ % compensated for bodyfont change
+ {\hbox
+ {\OTRSETsetcorrectcellht
+ \raise\scratchdimen\box\precolumnbox}}%
\else
\let\precolumnlines\!!zerocount
\fi
@@ -1920,7 +2033,7 @@
\brokenpenalty\zerocount
\fi}
-\def\OTRSETcheckinsert%
+\def\OTRSETcheckinsert
{\iflastcolumnfootnotes
\ifnum\nofcolumns=\mofcolumns
\OTRSETforceinserts
@@ -1939,35 +2052,6 @@
% interface to footnotes
-%\def\OTRSETassignwidth#1\to#2%
-% {\doifelsevalue{\??mc#1\c!breedte}{\v!passend}
-% {#2=\zetbreedte
-% \scratchcounter=\getvalue{\??mc#1\c!nlinks}\relax
-%\ifnum\getvalue{\??mc#1\c!nrechts}>\scratchcounter
-% \scratchcounter=\getvalue{\??mc#1\c!nrechts}%
-%\fi
-% \dorecurse{\scratchcounter}
-% {\advance#2 -\getvalue{\??mc#1\recurselevel\c!afstand}}%
-% \divide#2 \scratchcounter}
-% {#2=\getvalue{\??mc#1\c!breedte}}}
-
-%\def\OTRSETassignwidth#1\to#2% assumes mofcolumns
-% {\doifelsevalue{\??mc#1\number\mofcolumns\c!breedte}{\v!passend}
-% {#2=\zetbreedte
-% \scratchcounter=0
-% \dorecurse{\getvalue{\??mc#1\c!n}}
-% {\doifelsevalue{\??mc#1\number\recurselevel\c!breedte}{\v!passend}
-% {\advance\scratchcounter by 1 }
-% {\advance#2 by -\getvalue{\??mc#1\recurselevel\c!breedte}}%
-% \advance#2 by -\getvalue{\??mc#1\recurselevel\c!afstand}}%
-% \divide#2 by \scratchcounter}
-% {#2=\getvalue{\??mc#1\number\mofcolumns\c!breedte}}}
-%
-% replaced by
-%
-%\def\OTRSETassignwidth#1\to#2% assumes mofcolumns
-% {#2=\OTRSETlocalwidth\mofcolumns}
-
\def\OTRSETassignwidths
{%\scratchdimen\zetbreedte
\freezetextwidth \scratchdimen\tekstbreedte
@@ -2004,7 +2088,8 @@
{\localcolortrue
\setbox\scratchbox\hbox to \hsize
{\iftracecolumnset \incolortrue \localcolortrue
- #2\hskip-.5ex\vrule\!!width1ex\!!height.5ex\!!depth.5ex\hss
+ \hskip-.5ex%
+ \startcolor[columnset:#2]\vrule\!!width1ex\!!height.5ex\!!depth.5ex\stopcolor
\fi
\hss}%
\ifcase#1\relax
@@ -2018,13 +2103,17 @@
\fi
\box\scratchbox}}
+\definepalet
+ [columnset]
+ [a=cyan,b=green,c=blue,d=red,e=magenta,f=darkgray]
+
\def\OTRSETsetplaceholders
- {\global\setbox\placeholderboxa\columnplaceholder0\cyan
- \global\setbox\placeholderboxb\columnplaceholder0\green
- \global\setbox\placeholderboxc\columnplaceholder0\blue
- \global\setbox\placeholderboxd\columnplaceholder0\red
- \global\setbox\placeholderboxe\columnplaceholder0\magenta
- \global\setbox\placeholderboxf\columnplaceholder1\darkgray}
+ {\global\setbox\placeholderboxa\columnplaceholder0a%
+ \global\setbox\placeholderboxb\columnplaceholder0b%
+ \global\setbox\placeholderboxc\columnplaceholder0c%
+ \global\setbox\placeholderboxd\columnplaceholder0d%
+ \global\setbox\placeholderboxe\columnplaceholder0e%
+ \global\setbox\placeholderboxf\columnplaceholder1f}
\def\doOTRSETshowstatus
{\llap{\incolortrue \localcolortrue \tt\tfxx\blue
@@ -2048,8 +2137,6 @@
\def\OTRSETsometopfloat {\def\floatmethod{TOPS}\OTRSETsomeslotfloat} % check
\def\OTRSETsomebottomfloat{\def\floatmethod{BOTS}\OTRSETsomeslotfloat} % check
-% \def\OTRSETsomeslotfloat {\let\floatmethod\v!hier\OTRONEsomeelsefloat}
-
\def\OTRSETflushfloatbox% nog verder doorvoeren en meer info in marge
{\iftestfloatbox\ruledhbox\fi{\box\floatbox}}
@@ -2300,18 +2387,6 @@
\doplacecolumntextareas\columnleftareas\v!links
\fi}
-%\def\doplacecolumntextareas#1#2% global ?
-% {\bgroup
-% \forgetall
-% \def\docommando##1%
-% {\doifelsevalue{\??mt##1#2\c!status}\v!start
-% {\doglobal\removefromcommalist{##1}#1%
-% \dodoplacecolumntextareas{##1}{#2}}
-% {\doifvalue{\??mt##1#2\c!status}\v!herhaal
-% {\dodoplacecolumntextareas{##1}{#2}}}}%
-% \processcommacommand[#1]\docommando
-% \egroup}
-
\def\doplacecolumntextareas#1#2% global ?
{\bgroup
\forgetall
@@ -2535,7 +2610,7 @@
\hsize\columnsetspanhsize
\setbox\scratchbox\vbox\bgroup
\dostartframedtext[cs:#1][\v!geen]% geen nils placement
- \vskip-\struttotal\par\verticalstrut\par
+ % spoils spacing : \vskip-\struttotal\par\verticalstrut\par
\ifnum\columnsetlevel>\zerocount
\framedtextparameter{cs:#1}\c!voor
\fi
diff --git a/tex/context/base/page-txt.tex b/tex/context/base/page-txt.tex
index 44d9ec1f8..a36dfed78 100644
--- a/tex/context/base/page-txt.tex
+++ b/tex/context/base/page-txt.tex
@@ -444,13 +444,18 @@
\hss}%
\dp#1\zeropoint}
+\definepalet
+ [layout]
+ [grid=red,
+ page=green]
+
\def\addtextgridlayer#1% tzt run time
{\ifcase\showgridstate\else % 1=bottom 2=top
\setgridbox\scratchbox\zetbreedte\teksthoogte
\setbox#1\hbox
{\ifcase\showgridstate\or\or\box#1\hskip-\zetbreedte\fi
\bgroup % color
-\startlayoutcomponent{gridcolumns}{grid columns}%
+ \startlayoutcomponent{gridcolumns}{grid columns}%
\incolortrue
\ifcase\layoutcolumns\else
\gray
@@ -465,11 +470,10 @@
\fi}}%
\hskip-\zetbreedte
\fi
-\stoplayoutcomponent
-\startlayoutcomponent{gridlines}{grid lines}%
- \red
- \box\scratchbox
-\stoplayoutcomponent
+ \stoplayoutcomponent
+ \startlayoutcomponent{gridlines}{grid lines}%
+ \startcolor[layout:grid]\box\scratchbox\stopcolor
+ \stoplayoutcomponent
\egroup
\ifcase\showgridstate\or\hskip-\zetbreedte\box#1\fi}%
\fi}
@@ -760,4 +764,4 @@
\setupfooter[\c!letter=,\c!kleur=]
\setupbottom[\c!letter=,\c!kleur=]
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/prop-ini.tex b/tex/context/base/prop-ini.tex
index 3c077564f..49f4e48de 100644
--- a/tex/context/base/prop-ini.tex
+++ b/tex/context/base/prop-ini.tex
@@ -2,7 +2,7 @@
%D [ file=prop-ini,
%D version=2003.04.20,
%D title=\CONTEXT\ Property Macros,
-%D subtitle=Initialization,
+%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
@@ -11,11 +11,11 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\writestatus{loading}{Context Property Macros / initialization}
+\writestatus{loading}{Context Property Macros / initialization}
-%D Experimental module.
+%D Experimental module.
-%D local or not? like colors? cross pages? needed?
+%D local or not? like colors? cross pages? needed?
%D combine with newfont.tex
@@ -24,13 +24,44 @@
\def\defineproperty
{\dotripleempty\dodefineproperty}
-\def\dodefineproperty[#1][#2][#3]% todo : global def
+% \def\dodefineproperty[#1][#2][#3]% todo : global def
+% {\ifundefined{\??py#1\c!titel}%
+% \getgparameters[\??py#1][\c!titel=#1,\c!type=#2,#3]% global ! ! ! !
+% \setgvalue{\e!start#1}{\getvalue{init#2property}{#1}{#2}}% init should set "start#2property"
+% \setgvalue{\e!stop #1}{\getvalue{stop#2property}}%
+% \fi}
+
+\def\dodefineproperty[#1][#2][#3]% todo : global def
{\ifundefined{\??py#1\c!titel}%
- \getgparameters[\??py#1][\c!titel=#1,#3]%
- \setgvalue{\e!start#1}{\getvalue{init#2property}{#1}{#2}}%
- \setgvalue{\e!stop #1}{\getvalue{stop#2property}}%
+ \getgparameters[\??py#1][\c!titel=#1,\c!type=#2,#3]% global ! ! ! !
+ \setgvalue{\s!check#1}{\docheckproperty{#1}}%
+ \setgvalue{\e!start#1}{\dostartproperty{#1}}%
+ \setgvalue{\e!stop #1}{\dostopproperty {#1}}%
\fi}
+\def\docheckproperty#1% watch the s instead of e
+ {\def\currentproperty{#1}%
+ \csname\s!check\csname\??py#1\c!type\endcsname property\endcsname{#1}%
+ \letgvalue{\s!check#1}\relax}
+
+\def\dostartproperty#1%
+ {\checkproperty{#1}%
+ \csname\s!start\csname\??py#1\c!type\endcsname property\endcsname{#1}}
+
+\def\dostopproperty#1%
+ {\csname\s!stop\csname\??py#1\c!type\endcsname property\endcsname}
+
+\def\checkproperty#1%
+ {\csname\s!check#1\endcsname}
+
+\def\propertyparameter#1{\csname\??py\currentproperty #1\endcsname}
+%def\currentpropertytype{\csname\??py\currentproperty\c!type\endcsname}
+
+%def\checkedpropertyparameter#1#2{\executeifdefined{\??py\currentproperty#1}{#2}}
+\def\checkedpropertyparameter #1{\executeifdefined{\??py\currentproperty#1}}
+
+\let\currentproperty\s!unknown
+
\unexpanded\def\startproperty[#1]%
{\bgroup\edef\currentproperty{#1}%
\csname\e!start\currentproperty\endcsname}
@@ -45,4 +76,74 @@
\csname\e!start\currentproperty\endcsname}
{\csname\e!stop \currentproperty\endcsname}}
-\protect \endinput
+% grouped
+
+% \def\restartproperty#1%
+% {\edef\currentproperty{#1}%
+% \csname\e!start\currentproperty\endcsname}
+
+% \def\restopproperty
+% {\csname\e!stop \currentproperty\endcsname}
+
+% \unexpanded\def\startproperty[#1]%
+% {\bgroup\restartproperty{#1}}
+
+% \unexpanded\def\stopproperty
+% {\restopproperty\egroup}
+
+% \unexpanded\def\property[#1]%
+% {\groupedcommand{\restartproperty{#1}}\restopproperty}
+
+% \newtoks\nestedproperties
+
+% \unexpanded\def\startproperties[#1]%
+% {\bgroup
+% \getcommalistsize[#1]\edef\nofnestedproperties{\number\commalistsize}%
+% \nestedproperties\emptytoks
+% \doxprecurse\nofnestedproperties
+% {\appendtoks\restopproperty\to\nestedproperties
+% \expanded{\appendtoks\noexpand\restartproperty{\commalistelement}}\to\scratchtoks}%
+% \the\scratchtoks}
+
+% \unexpanded\def\stopproperties
+% {\the\nestedproperties\egroup}
+
+% not grouped (but we assume grouped, maybe some day an ungrouped extra!)
+
+% \newcount\propertydepth
+% \newcount\pstackeddepth
+
+% \def\currentproperty{\csname\??py:\number\propertydepth\endcsname}
+% \def\currentpstacked{\csname\??py:\number\pstackeddepth\endcsname}
+
+% \def\restartproperty#1%
+% {\advance\propertydepth\plusone
+% \setvalue{\??py:\number\propertydepth}{#1}%
+% \csname\e!start\currentproperty\endcsname}
+
+% \def\restopproperty
+% {\csname\e!stop \currentproperty\endcsname
+% \advance\propertydepth\minusone}
+
+% \unexpanded\def\startproperty[#1]%
+% {\restartproperty{#1}}
+
+% \unexpanded\def\stopproperty
+% {\restopproperty}
+
+% \unexpanded\def\property[#1]%
+% {\groupedcommand{\restartproperty{#1}}\restopproperty}
+
+% \unexpanded\def\startproperties[#1]%
+% {\advance\pstackeddepth\plusone
+% \getcommacommandsize[#1]%
+% \setvalue{\??py:\number\pstackeddepth}{\number\commalistsize}%
+% \rawprocesscommacomand[#1]\restartproperty}
+
+% \unexpanded\def\stopproperties
+% {\doxprecurse\currentpstacked\restopproperty
+% \advance\pstackeddepth\minusone}
+
+% so far
+
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/prop-lay.tex b/tex/context/base/prop-lay.tex
index d8e7fcb2e..f8e67e459 100644
--- a/tex/context/base/prop-lay.tex
+++ b/tex/context/base/prop-lay.tex
@@ -2,7 +2,7 @@
%D [ file=prop-lay,
%D version=2003.04.20,
%D title=\CONTEXT\ Property Macros,
-%D subtitle=Layers,
+%D subtitle=Layers,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
@@ -11,24 +11,32 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\writestatus{loading}{Context Property Macros / layers}
+\writestatus{loading}{Context Property Macros / layers}
-%D Highly experimental, will probably change/evolve.
+%D Highly experimental, will probably change/evolve.
-\unprotect
+\unprotect
-\def\initlayerproperty#1#2%
- {\dodefineviewerlayer
- {#1}% tag
- {\getvalue{\??py#1\c!titel}}% title
- {1}% visible
+% \def\initlayerproperty#1#2%
+% {\dodefineviewerlayer
+% {#1}% tag
+% {\propertyparameter\c!titel}% title
+% {1}% visible
+% {0}% type (1=frozen)
+% {0}% printable
+% \setgvalue{\e!start#1}{\getvalue{start#2property}{#1}}%
+% \getvalue{\e!start#1}}
+
+\def\checklayerproperty#1%
+ {\dodefineviewerlayer
+ \currentproperty % tag
+ {\propertyparameter\c!titel}% title
+ {\checkedpropertyparameter\c!status\v!start}% visible
{0}% type (1=frozen)
- {0}% printable
- \setgvalue{\e!start#1}{\getvalue{start#2property}{#1}}%
- \getvalue{\e!start#1}}
+ {0}}% printable
\def\startlayerproperty#1%
- {\dostartviewerlayer{#1}}
+ {\dostartviewerlayer{#1}}
\def\stoplayerproperty
{\dostopviewerlayer}
@@ -52,64 +60,64 @@
% \defineproperty [navigation] [layer] [title=navigation]
%D \starttext
-%D
+%D
%D \setuppapersize[S4][S4]
%D \setuplayout[middle]
%D \setupcolors[state=start]
%D \setupinteraction[state=start,color=,contrastcolor=]
-%D
+%D
%D \defineproperty [L1] [layer] [title=layer 1]
%D \defineproperty [L2] [layer] [title=layer 2]
-%D
+%D
%D \button{HIDE L1}[HideLayer{L1}]
%D \button{VIDE L1}[VideLayer{L1}]
%D \button{TOGGLE L1}[ToggleLayer{L1}]
-%D
+%D
%D \button{HIDE L2}[HideLayer{L2}]
%D \button{VIDE L2}[VideLayer{L2}]
%D \button{TOGGLE L2}[ToggleLayer{L2}]
-%D
+%D
%D \noheaderandfooterlines \centerbox{\startoverlay
%D {\definedfont[Mono at 150pt]%
%D \startproperty[L1]\red TEST\stopproperty}
%D {\definedfont[Mono at 150pt]%
%D \startproperty[L2]\green TEST\stopproperty}
%D \stopoverlay} \page
-%D
+%D
%D \noheaderandfooterlines \centerbox{\startoverlay
%D {\definedfont[Mono at 15pt]%
%D \goto{\startproperty[L1]\red TEST\stopproperty}[CloseDocument]}
%D {\definedfont[Mono at 15pt]%
%D \goto{\startproperty[L2]\green TEST\stopproperty}[CloseDocument]}
%D \stopoverlay} \page
-%D
-%D \startproperty[L1]
-%D level 1 \startproperty[L2]level 2 \stopproperty level 1
-%D \stopproperty
-%D
-%D \startproperty[L1]
-%D level 1 \page \startproperty[L2]level 2 \stopproperty level 1
-%D \stopproperty
-%D
-%D \stoptext
+%D
+%D \startproperty[L1]
+%D level 1 \startproperty[L2]level 2 \stopproperty level 1
+%D \stopproperty
+%D
+%D \startproperty[L1]
+%D level 1 \page \startproperty[L2]level 2 \stopproperty level 1
+%D \stopproperty
+%D
+%D \stoptext
\fetchruntimecommand \showlayoutcomponents {\f!propprefix\s!run}
-\protect \endinput
+\protect \endinput
% \def\remaplayering
% {\dodoubleargument\doremaplayering}
-%
+%
% \def\remaplayering[#1][#2]%
% {\setvalue{\??lm#1}{#2}}
-%
+%
% \def\remappedlayering#1%
% {\ifcsname\??lm#1\endcsname
% \@EA\remappedlayering\csname\??lm#1\endcsname\else#1%
% \fi}
-%
+%
% \def\startshowlayering#1#2%
-% {\ifshowlayering
+% {\ifshowlayering
% \defineproperty[\remappedlayering{#1}][layer][\c!titel=#2]%
% \startproperty[\remappedlayering{#1}]%
-% \fi}
+% \fi} \ No newline at end of file
diff --git a/tex/context/base/s-mag-01.tex b/tex/context/base/s-mag-01.tex
index 8d7a9ebbf..6e2471e99 100644
--- a/tex/context/base/s-mag-01.tex
+++ b/tex/context/base/s-mag-01.tex
@@ -197,44 +197,50 @@
\stopsetups
\setupbottomtexts
- [\RightBanner][]
- [][\LeftBanner]
-
-\def\LeftBanner
- {\definedfont[Regular at \bottomheight]%
- \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}%
- \ht\scratchbox1ex
- \dp\scratchbox\zeropoint
- \MainColor
- \definedfont[Regular sa 2]%
- \doifsomething{\getvariable{magazine}{number}}
- {\doifnot{\getvariable{magazine}{number}}{0}
- {\#\getvariable{magazine}{number}}}%
- \quad
- \currentdate
- \quad
- \scale[height=.25\bottomheight]{\box\scratchbox}%
- \quad
- \hbox to 1.5em{\hss\pagenumber\hss}%
- \quad
- \hskip-\backspace}
-
-\def\RightBanner
- {\definedfont[Regular at \bottomheight]%
- \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}%
- \ht\scratchbox1ex
- \dp\scratchbox\zeropoint
- \MainColor
- \hskip-\backspace
- \definedfont[Regular sa 2]%
- \quad
- \hbox to 1.5em{\hss\pagenumber\hss}%
- \quad
- \scale[height=.25\bottomheight]{\box\scratchbox}%
- \quad
- \currentdate
- \quad
- \doifmode{atpragma}{\#\getvariable{magazine}{number}}}
+ [\setups{rightbanner}] []
+ [] [\setups{leftbanner}]
+
+\startsetups [leftbanner]
+
+ \definedfont[Regular at \bottomheight]
+ \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}
+ \ht\scratchbox1ex
+ \dp\scratchbox\zeropoint
+ \MainColor
+ \definedfont[Regular sa 2]
+ \doifsomething{\getvariable{magazine}{number}}
+ {\doifnot{\getvariable{magazine}{number}}{0}
+ {\#\getvariable{magazine}{number}}}
+ \quad
+ \currentdate
+ \quad
+ \scale[height=.25\bottomheight]{\box\scratchbox}
+ \quad
+ \hbox to 1.5em{\hss\pagenumber\hss}
+ \quad
+ \hskip-\backspace
+
+\stopsetups
+
+\startsetups [rightbanner]
+
+ \definedfont[Regular at \bottomheight]
+ \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}
+ \ht\scratchbox1ex
+ \dp\scratchbox\zeropoint
+ \MainColor
+ \hskip-\backspace
+ \definedfont[Regular sa 2]
+ \quad
+ \hbox to 1.5em{\hss\pagenumber\hss}
+ \quad
+ \scale[height=.25\bottomheight]{\box\scratchbox}
+ \quad
+ \currentdate
+ \quad
+ \doifmode{atpragma}{\#\getvariable{magazine}{number}}
+
+\stopsetups
\startsetups[titlepage]
diff --git a/tex/context/base/setupb.tex b/tex/context/base/setupb.tex
index 4dfda5fa1..279a07451 100644
--- a/tex/context/base/setupb.tex
+++ b/tex/context/base/setupb.tex
@@ -829,6 +829,10 @@
[\c!tekstkleur]
[\c!identifier!]
[]
+ \variable
+ [\c!interactie]
+ [\v!ja,\v!nee]
+ [\v!ja]
\inheritvariables
[\y!framed]
[]
@@ -3964,7 +3968,7 @@
\value
[\v!ja,\v!opmaak,\v!nee,\v!voorkeur,\v!grotevoorkeur,
\v!links,\v!rechts,\v!blokkeer,\v!laatste,\v!viertal,
- \v!even,\v!oneven,\v!blanko,\v!leeg,\v!reset]
+ \v!even,\v!oneven,\v!blanko,\v!leeg,\v!reset,\v!start,\v!stop]
[\v!ja]
\stopsetup
diff --git a/tex/context/base/spec-def.tex b/tex/context/base/spec-def.tex
index e0b472603..cf9f64724 100644
--- a/tex/context/base/spec-def.tex
+++ b/tex/context/base/spec-def.tex
@@ -8,11 +8,11 @@
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
-%D This module used to be integrated in \type {spec-ini},
-%D but testing optimization is more convenient this way.
+%D This module used to be integrated in \type {spec-ini},
+%D but testing optimization is more convenient this way.
\writestatus{loading}{Context Special Macros / Definitions}
@@ -100,7 +100,7 @@
%D can easily be accomplished by using \TEX's mark mechanism.
%D In \CONTEXT\ we follow this approach. More and more, drivers
%D are starting to support color, including stacking them.
-%D
+%D
%D Colors as well as grayscales can be represented in scales
%D from~0 to~1. When drivers use values in the range 0..255,
%D this value has to be adapted in the translation process.
@@ -109,8 +109,8 @@
%D Green and Blue components of 0.80 show the same gray as a
%D Gray Scale specified 0.80. The \kap{CMYK} color system
%D supports a Black component apart from Cyan, Magenta and
-%D Yellow.
-%D
+%D Yellow.
+%D
%D Depending on the target format, color support differs from
%D gray support. PostScript for example offers different
%D operators for setting gray and color. This is because
@@ -174,45 +174,45 @@
%D Probably the most problematic special is the following
%D one. Because we want to be able to support different
%D schemes, we pass a lot of data to it.
-%D
+%D
%D The support of inserting files (like illustrations) comes in
%D many flavors. Some drivers use scales, some take dimensions.
%D Some need offsets and others act on stored characteristics.
%D They need one thing in common: a filename. Although separate
%D specials for different formats sometimes are more clear, we
-%D decided to combine them all in one:
-%D
+%D decided to combine them all in one:
+%D
%D \starttypen
-%D \doinsertfile {type,method} {file,label}
-%D {xscale} {yscale} {x} {y} {w} {h}
+%D \doinsertfile {type,method} {file,label}
+%D {xscale} {yscale} {x} {y} {w} {h}
%D {options}
%D \stoptypen
%D
-%D The scale is given percents, the other values are base
+%D The scale is given percents, the other values are base
%D points.
-%D
+%D
%D The special is implemented as \type{or}. Because \DVIPSONE\
%D understands them all, a chain of alternatives would generate
-%D multiple occurrences of the same illustration.
-%D
+%D multiple occurrences of the same illustration.
+%D
%D When option 1 is passed, the viewers is asked to present a
-%D preview, like the first frame of a movie.
+%D preview, like the first frame of a movie.
\installspecial [\doinsertfile] [or] [9]
%D No start||stop construction is needed here, because there in
%D no further interference of \TEX. All dimensions are output
-%D in points and scales as a number, where 100 equal 100\%. (We
-%D used to pass scaled points).
+%D in points and scales as a number, where 100 equal 100\%. (We
+%D used to pass scaled points).
%D \macros
%D {doinsertsoundtrack}
%D
-%D Sounds are (for the moment) just files with
-%D associated options.
+%D Sounds are (for the moment) just files with
+%D associated options.
%D
%D \starttypen
-%D \doinsertsoundtrack {file} {label} {options}
+%D \doinsertsoundtrack {file} {label} {options}
%D \stoptypen
\installspecial [\doinsertsoundtrack] [or] [3]
@@ -220,21 +220,21 @@
%D \macros
%D {dogetnofinsertpages}
%D
-%D Some file formats support more than one page, like \PDF,
-%D and for special applications, one may want to have access
-%D to the total number of pages.
+%D Some file formats support more than one page, like \PDF,
+%D and for special applications, one may want to have access
+%D to the total number of pages.
%D
%D \starttypen
%D \dogetnofinsertpages{filename}
%D \stoptypen
%D
-%D The number is also available after the insert is placed,
-%D since inclusion may take place immediate when an insert is
-%D called upon.
+%D The number is also available after the insert is placed,
+%D since inclusion may take place immediate when an insert is
+%D called upon.
-\def\nofinsertpages{1} % one of the few 'talk backs'
+\def\nofinsertpages{1} % one of the few 'talk backs'
-\installspecial [\dogetnofinsertpages] [or] [1]
+\installspecial [\dogetnofinsertpages] [or] [1]
%D \macros
%D {dostartrotation,
@@ -262,7 +262,7 @@
%D \dostartscaling {x} {y} ... \dostopscaling
%D \stoptypen
%D
-%D Like the previous one, these specials are of category
+%D Like the previous one, these specials are of category
%D \type{or}.
\installspecial [\dostartscaling] [or] [2]
@@ -287,7 +287,7 @@
%D {dostartnegative,
%D dostopnegative}
%D
-%D When producing output for an image setter, negating the
+%D When producing output for an image setter, negating the
%D page comes into view. Here are the tools:
\installspecial [\dostartnegative] [or] [0]
@@ -295,7 +295,7 @@
%D The following two specials are used in for instance \type
-%D {\vadjust}'d margin material inside colored paragraphs.
+%D {\vadjust}'d margin material inside colored paragraphs.
\installspecial [\dostartgraphicgroup] [or] [0]
\installspecial [\dostopgraphicgroup ] [or] [0]
@@ -323,22 +323,22 @@
%D This command has to return a \type{\vbox} which can be used
%D to lay over another one (with text). The radius is in
%D degrees, the stroke and fill are~\type{1} (true) of~\type{0}
-%D (false).
+%D (false).
\installspecial [\doovalbox] [or] [7]
-%D \macros
+%D \macros
%D {dostartclipping,dostopclipping}
-%D
-%D Clipping is implemented in such a way that an arbitrary
-%D can be fed.
-%D
-%D \starttypen
-%D \dostartclipping {pathname}{width} {height}
-%D \dostopclipping
+%D
+%D Clipping is implemented in such a way that an arbitrary
+%D can be fed.
+%D
+%D \starttypen
+%D \dostartclipping {pathname}{width} {height}
+%D \dostopclipping
%D \stoptyping
%D
-%D
+%D
\installspecial [\dostartclipping] [or] [3]
\installspecial [\dostopclipping] [or] [0]
@@ -348,11 +348,11 @@
%D
%D We can declare some characteristics of the document with
%D
-%D \starttypen
+%D \starttypen
%D \dosetupidentity {title} {subject} {author} {creator} {date} {keys}
%D \stoptypen
%D
-%D All data is in string format.
+%D All data is in string format.
\installspecial [\dosetupidentity] [and] [6]
@@ -360,30 +360,30 @@
%D {dosetuppaper}
%D
%D This special can be used to tell the driver what page size
-%D to use. The special takes three arguments.
+%D to use. The special takes three arguments.
%D
%D \starttypen
%D \dosetuppaper {type} {width} {height}
%D \stoptypen
%D
-%D The type is one of the common identifiers, like A4, A5 or
-%D B2.
+%D The type is one of the common identifiers, like A4, A5 or
+%D B2.
\installspecial [\dosetuppaper] [and] [3]
%D \macros
%D {dosetupprinter}
%D
-%D Some drivers enable the user to specify the paper type
-%D used and/or page dimensions to be taken into account.
+%D Some drivers enable the user to specify the paper type
+%D used and/or page dimensions to be taken into account.
%D
%D \starttypen
%D \dosetupprinter {type} {hoffset} {voffset} {width} {height}
%D \stoptypen
%D
-%D The first argument is one of \type{letter}, \type{legal},
-%D \type{A4}, \type{A5} etc. The dimensions are in
-%D basepoints.
+%D The first argument is one of \type{letter}, \type{legal},
+%D \type{A4}, \type{A5} etc. The dimensions are in
+%D basepoints.
\installspecial [\dosetupprinter] [and] [5]
@@ -405,7 +405,7 @@
%D \stoptypen
%D
%D Normally this command does nothing but giving a message
-%D that some scheme is supported.
+%D that some scheme is supported.
%D
%D \starttypen
%D \dosetupstartaction
@@ -413,9 +413,9 @@
%D \stoptypen
%D
%D These two setup the actions to be executed when the document
-%D is opened and closed.
+%D is opened and closed.
%D
-%D The next commands sets up the page and screen. They are
+%D The next commands sets up the page and screen. They are
%D kind of related.
%D
%D \starttypen
@@ -423,24 +423,28 @@
%D \dosetupscreen {hoffset} {voffset} {width} {height} {options}
%D \stoptypen
%D
-%D The first four arguments are in points. Option~1 results in a
+%D The first four arguments are in points. Option~1 results in a
%D full screen launch.
%D
%D \starttypen
%D \dosetuppageview {keyword}
%D \stoptypen
%D
-%D For the moment we only support \type{fit}.
+%D For the moment we only support \type{fit}.
\installspecial [\dosetupinteraction] [and] [0]
+
\installspecial [\dosetupopenaction] [and] [0]
-\installspecial [\dosetupcloseaction] [and] [0]
-\installspecial [\dosetupopenpageaction] [and] [0]
-\installspecial [\dosetupclosepageaction] [and] [0]
\installspecial [\dosetupscreen] [and] [5]
\installspecial [\dosetuppageview] [and] [1]
-% new, yet undocumented, replaces \dosetupscreen
+\installspecial [\dosetupcloseaction] [and] [0]
+\installspecial [\dosetupopenpageaction] [and] [0]
+\installspecial [\dosetupclosepageaction] [and] [0]
+\installspecial [\dosetuprenderingopenpageaction] [and] [0]
+\installspecial [\dosetuprenderingclosepageaction] [and] [0]
+
+% new, yet undocumented, replaces \dosetupscreen
\installspecial [\dosetupcropbox] [and] [4]
\installspecial [\dosetuptrimbox] [and] [4]
@@ -467,14 +471,14 @@
%D {dostartgotolocation, dostopgotolocation,
%D dostartgotorealpage, dostopgotorealpage}
%D
-%D When we want to support hypertext buttons, again we have
+%D When we want to support hypertext buttons, again we have
%D to deal with two concepts.
%D
%D \startopsomming[opelkaar,n]
%D \som let \TEX\ highlight the text
%D \som let the driver show us where to click
%D \stopopsomming
-%D
+%D
%D The first approach is the most secure one. It gives us
%D complete control over the visual appearance of hyper
%D buttons. The second alternative lets the driver guess what
@@ -487,9 +491,9 @@
%D However, it's no trivial matter to let a driver find out
%D where things begin and end. Because most hyperlinks can be
%D found in tables of contents and registers, the saving in
-%D terms of bytes can be neglected and the first approach is a
-%D clear winner.
-%D
+%D terms of bytes can be neglected and the first approach is a
+%D clear winner.
+%D
%D The most convenient way of cross||referencing is using named
%D destinations. A more simple scheme is using page numbers as
%D destinations. Because the latter alternative can often be
@@ -508,7 +512,7 @@
%D implementation of \type{pdfmarks} in version 1.0 of
%D Acrobat. Because only pagenumbers were supported as
%D destination, we had to provide both labels (\DVIWINDO) and
-%D pagenumbers (\PDF). Some drivers use start stop pairs.
+%D pagenumbers (\PDF). Some drivers use start stop pairs.
%D
%D \starttypen
%D \dostartgotolocation {w} {h} {url} {file} {label} {page}
@@ -518,14 +522,14 @@
%D Their counterparts are:
%D
%D \starttypen
-%D \dostopgotolocation
-%D \dostopgotorealpage
+%D \dostopgotolocation
+%D \dostopgotorealpage
%D \stoptypen
%D
%D The internal alternative is used for system||generated
-%D links, the external one for user||generated links. The
-%D Uniform Resource Locator can be used to let the reader
-%D surf the net.
+%D links, the external one for user||generated links. The
+%D Uniform Resource Locator can be used to let the reader
+%D surf the net.
\installspecial [\dostartgotolocation] [and] [6]
\installspecial [\dostopgotolocation] [and] [0]
@@ -539,15 +543,15 @@
%D \macros
%D {dostartgotoJS, doflushJSpreamble}
-%D
-%D Rather special is the option to include and execute
+%D
+%D Rather special is the option to include and execute
%D JavaScript code. This is a typical \PDF\ option.
%D
%D \starttypen
%D \dostartgotoJS {w} {h} {script}
%D \stoptypen
%D
-%D This not so standard \TEX\ feature should be used with
+%D This not so standard \TEX\ feature should be used with
%D care. Preamble scripts are flushed by
%D
%D \doflushJSpreamble {script}
@@ -574,11 +578,11 @@
%D \dostartthisisrealpage {page}
%D \stoptypen
%D
-%D These commands are accompanied by:
+%D These commands are accompanied by:
%D
%D \starttypen
-%D \dostopthisislocation
-%D \dostopthisisrealpage
+%D \dostopthisislocation
+%D \dostopthisisrealpage
%D \stoptypen
%D
%D As with all interactive commands's they are installed as
@@ -589,13 +593,13 @@
\installspecial [\dostartthisisrealpage] [and] [1]
\installspecial [\dostopthisisrealpage] [and] [0]
-%D In \CONTEXT\ we don't use the \type{\stopsomething}
-%D macros because we let \TEX\ take care of typographic
-%D issues.
+%D In \CONTEXT\ we don't use the \type{\stopsomething}
+%D macros because we let \TEX\ take care of typographic
+%D issues.
%D \macros
%D {doresetgotowhereever}
-%D
+%D
%D These and others need:
\installspecial [\doresetgotowhereever] [and] [0]
@@ -603,21 +607,21 @@
%D \macros
%D {dostartexecutecommand, dostopexecutecommand}
%D
-%D The actual behavior of the next pair of commands depends
-%D much on the viewing engine. Therefore one cannot depend
-%D too much on their support.
+%D The actual behavior of the next pair of commands depends
+%D much on the viewing engine. Therefore one cannot depend
+%D too much on their support.
%D
%D \starttypen
-%D \dostartexecutecommand {w} {h} {command} {options}
+%D \dostartexecutecommand {w} {h} {command} {options}
%D \stoptypen
%D
-%D At least the next commands are supported (more examples
-%D can be found in \type {spec-fdf.tex}:
+%D At least the next commands are supported (more examples
+%D can be found in \type {spec-fdf.tex}:
%D
%D \startregelcorrectie\steluitlijnenin[midden]\leavevmode
-%D \starttabel[|l|l|]
+%D \starttabel[|l|l|]
%D \HL
-%D \NC \bf command \NC \bf action \NC\SR
+%D \NC \bf command \NC \bf action \NC\SR
%D \HL
%D \NC first \NC go to the first page \NC\FR
%D \NC previous \NC go to the previous page \NC\MR
@@ -634,20 +638,20 @@
%D \stoptabel
%D \stopregelcorrectie
%D
-%D Options are to be passed as a comma separated list of
+%D Options are to be passed as a comma separated list of
%D assignments.
\installspecial [\dostartexecutecommand] [and] [4]
\installspecial [\dostopexecutecommand] [and] [0]
%D \macros
-%D {dostartobject,
+%D {dostartobject,
%D dostopobject,
%D doresetobjects,
%D doinsertobject}
%D
-%D Reuse of object can reduce the output filesize
-%D considerably. Reusable objects are implemented with:
+%D Reuse of object can reduce the output filesize
+%D considerably. Reusable objects are implemented with:
%D
%D \starttypen
%D \dostartobject{class}{name}{width}{height}{depth}
@@ -659,7 +663,7 @@
%D \doinsertobject{class}{name}
%D \stoptypen
%D
-%D The savings can be huge in interactive texts.
+%D The savings can be huge in interactive texts.
%D
%D \starttypen
%D \doresetobjects
@@ -672,26 +676,26 @@
%D \macros
%D {doregisterfigure}
-%D
+%D
%D Images can be objects as well and it's up to the driver to
%D handle this. Alternative images are also up to the driver,
%D and the next macro tells the driver that the previous image
%D is somehow followed by another and that both have to be
-%D handled together. This is a rather fuzzy model, but for the
+%D handled together. This is a rather fuzzy model, but for the
%D moment it suits its purpose: low res screen versions combined
-%D with high res printable ones.
+%D with high res printable ones.
\installspecial [\doregisterfigure][or] [2]
% %D \macros
-% %D {dogetobjectreference}
+% %D {dogetobjectreference}
% %D
-% %D For very special purposes, one can ask for the internal
+% %D For very special purposes, one can ask for the internal
% %D reference to the object. Beware!
-%
+%
% \installspecial [\dogetobjectreference] [or] [3]
-%
-% %D The first argument is the name, the second a macro that
+%
+% %D The first argument is the name, the second a macro that
% %D gets the associated value.
%D \macros
@@ -714,36 +718,36 @@
%D \macros
%D {doinsertbookmark}
-%D
+%D
%D Bookmarks, that is viewer generated tables of contents, are
%D a strange phenomena, mainly because \TEX\ can provide
-%D whatever kind of table in much better quality.
+%D whatever kind of table in much better quality.
\installspecial [\doinsertbookmark] [and] [5]
%D This special is called as:
-%D
+%D
%D \starttypen
%D \doinstallbookmark {level} {nofsubentries} {text} {page} {open}
%D \stoptypen
%D
-%D This definition is very \PDF\ oriented, so for more
-%D information we kindly refer to the \PDF\ manuals.
+%D This definition is very \PDF\ oriented, so for more
+%D information we kindly refer to the \PDF\ manuals.
%D \macros
%D {dosetpagetransition}
%D
%D In presentations, fancy page transitions can, at least for a
%D short moment, let the audience focus at the screen. Like the
-%D previous one, this special is very \PDF.
+%D previous one, this special is very \PDF.
%D
%D \starttypen
%D \dosetpagetransition{dissolve}{0}
%D \stoptypen
%D
%D Transitions have symbolic names, like dissolve, box, split,
-%D blinds, wipe and glitter. The second argument determines
-%D the wait time (unless zero).
+%D blinds, wipe and glitter. The second argument determines
+%D the wait time (unless zero).
\installspecial [\dosetpagetransition] [or] [2]
@@ -756,29 +760,29 @@
%D The special drivers are programmed independant from their
%D calling macros are thereby use the standard \TEX\ way of
%D passing parameters. Unfortunately fields often have more
-%D than nine characteristics, so we pack some arguments in one.
-%D
+%D than nine characteristics, so we pack some arguments in one.
+%D
%D \starttypen
%D \dopresettextfield / \dopresetlinefield
-%D {name} {width} {height} {default} {length}
+%D {name} {width} {height} {default} {length}
%D {style,color} {options} {alignment} {actions}
-%D
+%D
%D \dopresetchoicefield / \dopresetpopupfield / \dopresetcombofield
-%D {name} {width} {height} {default}
+%D {name} {width} {height} {default}
%D {style,color} {options} {values} {actions}
-%D
-%D \dopresetpushfield
+%D
+%D \dopresetpushfield
%D {name} {width} {height} {default}
%D {options} {values} {actions}
-%D
-%D \dopresetcheckfield
-%D {name} {width} {height} {default}
+%D
+%D \dopresetcheckfield
+%D {name} {width} {height} {default}
%D {options} {values} {actions}
-%D
+%D
%D \dopresetradiofield
%D {name} {width} {height} {default}
%D {options} {parent} {values} {actions}
-%D
+%D
%D \dopresetradiorecord
%D {name} {top} {options} {kids} {actions}
%D \stoptypen
@@ -795,7 +799,7 @@
%D \macros
%D {dodefinefieldset,dogetfieldset,doiffieldset}
-%D
+%D
%D Field sets, used in resetting and submitting, are handled
%D by:
@@ -803,11 +807,11 @@
\installspecial [\dogetfieldset] [or] [1]
\installspecial [\doiffieldset] [or] [2]
-%D \macros
+%D \macros
%D {dosetfieldstatus}
%D
-%D For practical reasons we set some field characteristics
-%D using:
+%D For practical reasons we set some field characteristics
+%D using:
%D
%D \starttypen
%D \dosetfieldstatus {mode} {parent} {kids} {root}
@@ -822,7 +826,7 @@
\def\fieldchildmode {2} % no \chardef here
\def\fieldcopymode {3} % no \chardef here
-%D \macros
+%D \macros
%D {doregistercalculationset}
%D
%D We can define a calculation order list with:
@@ -833,18 +837,18 @@
\installspecial [\doregistercalculationset] [or] [1]
-%D \macros
+%D \macros
%D {doinsertcomment, doflushcomments}
%D
-%D Not so much out of need, but to be complete, we also
+%D Not so much out of need, but to be complete, we also
%D implement text annotations, so called comment:
-%D
+%D
%D \starttypen
%D \doinsertcomment
-%D {title} {width} {height} {color} {open} {symbol} {collect} {data}
+%D {title} {width} {height} {color} {open} {symbol} {collect} {data}
%D \stoptypen
%D
-%D When enables, comments can be collected and flushed:
+%D When enables, comments can be collected and flushed:
%D
%D \starttypen
%D \doflushcomments
@@ -854,27 +858,27 @@
\installspecial[\doflushcomments] [and] [0]
%D \macros
-%D {dosetposition, dosetpositionwhd, dosetpositionplus,
+%D {dosetposition, dosetpositionwhd, dosetpositionplus,
%D dosetpositionpapersize}
%D
-%D Not natural to \TEX, but available in \PDFTEX, and by
-%D means of postprocessed \DVI, we can save and call upon
-%D positions.
+%D Not natural to \TEX, but available in \PDFTEX, and by
+%D means of postprocessed \DVI, we can save and call upon
+%D positions.
%D
%D \starttypen
%D \dosetposition {identifier}
%D \dosetpositionwhd {identifier} {width} {height} {depth}
%D \dosetpositionplus {identifier} {width} {height} {depth} {list}
-%D \dosetpositionpapersize {width} {height}
+%D \dosetpositionpapersize {width} {height}
%D \stoptypen
%D
-%D This is one of the few specials where when using \PDFTEX\
-%D the driver directly deals with the utility file.
+%D This is one of the few specials where when using \PDFTEX\
+%D the driver directly deals with the utility file.
-\installspecial [\dosetposition] [or] [1]
-\installspecial [\dosetpositionwhd] [or] [4]
-\installspecial [\dosetpositionplus] [or] [5]
-\installspecial [\dosetpositionpapersize] [or] [2]
+\installspecial [\dosetposition] [or] [1]
+\installspecial [\dosetpositionwhd] [or] [4]
+\installspecial [\dosetpositionplus] [or] [5]
+\installspecial [\dosetpositionpapersize] [or] [2]
%D \macros
%D {dostarttransparency,dostoptransparency}
@@ -883,10 +887,10 @@
%D \dostarttransparency{fraction}{type}
%D \dostoptransparency
%D \stoptypen
-%D
-%D Although in \CONTEXT\ transparency is closely integrated
-%D in the color drivers, in the end it is an independent
-%D feature.
+%D
+%D Although in \CONTEXT\ transparency is closely integrated
+%D in the color drivers, in the end it is an independent
+%D feature.
\installspecial [\dostarttransparency] [or] [2]
\installspecial [\dostoptransparency] [or] [0]
@@ -900,7 +904,7 @@
\installspecial [\doattachfile] [or] [8]
-%D Experimental (properties):
+%D Experimental (properties):
\installspecial[\dostartviewerlayer] [or] [1]
\installspecial[\dostopviewerlayer] [or] [0]
@@ -909,19 +913,24 @@
%installspecial[\doflushviewerpagelayers] [or] [0]
\installspecial[\domakeviewerlayerlist] [or] [1]
-%D We define a couple of backends:
+\installspecial[\doinsertrenderingwindow] [or] [4]
+\installspecial[\doinsertrendering] [or] [4]
+\installspecial[\doinsertrenderingobject] [or] [4]
+\installspecial[\doinsertrenderingobject] [or] [4]
+
+%D We define a couple of backends:
\defineoutput [dvipsone] [dvi,ps,yy]
\defineoutput [dviwindo] [dvi,ps,yy,win]
\defineoutput [dvips] [dvi,ps,tr]
\defineoutput [dviview] [dvi,ps,tr,dv]
-\defineoutput [pdftex] [tpd]
-\defineoutput [pdf] [tpd]
+\defineoutput [pdftex] [tpd]
+\defineoutput [pdf] [tpd]
\defineoutput [dvipdfm] [dpm]
-\defineoutput [dpm] [dpm]
+\defineoutput [dpm] [dpm]
\defineoutput [dvipdfmx] [dpx]
-\defineoutput [dpx] [dpx]
-\defineoutput [acrobat] [pdf,ps,tr]
+\defineoutput [dpx] [dpx]
+\defineoutput [acrobat] [pdf,ps,tr]
%D Please let me know if we need more. From now on we default
%D to:
@@ -929,18 +938,18 @@
\setupoutput [dvips]
%D We don't enable \ACROBAT, because pure \POSTSCRIPT\ is not
-%D that strong on objects and \PDFTEX\ does a better job.
+%D that strong on objects and \PDFTEX\ does a better job.
%D Some reasonable alternatives are:
-%D
+%D
%D \starttypen
%D \setupoutput [dvipsone,acrobat]
%D \setupoutput [dviwindo,acrobat]
%D \stoptypen
-%D
+%D
%D Although, better is:
-%D
+%D
%D \starttypen
%D \setupoutput [pdftex]
%D \stoptypen
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/spec-fdf.tex b/tex/context/base/spec-fdf.tex
index 47a904145..1e1a6ec52 100644
--- a/tex/context/base/spec-fdf.tex
+++ b/tex/context/base/spec-fdf.tex
@@ -379,11 +379,10 @@
\egroup}
\appendtoksonce % hack to prevent duplicates
- \ifcase\realfolio \or % only at page one
- \doPDFaddtocatalog{\currentPDFpagemode\currentPDFviewerprefs}%
- \doPDFaddtoinfo{/Trapped /False}%
- \fi
-\to \everyshipout
+ \doPDFaddtocatalog{\currentPDFpagemode\currentPDFviewerprefs}%
+ \doPDFaddtoinfo{/Trapped /False}%
+ \doPDFaddtoinfo{/ConTeXt.Version (\contextversion)}%
+\to \everyfirstshipout
\def\doPDFsetupwhateverbox#1#2#3#4#5#6% watch the extra arguments
{\bgroup
@@ -445,6 +444,15 @@
%D because action chains are derived from the reference
%D mechanism.
+%D Starting with version~5 viewers, when the open actions
+%D started yto give problems, for testing purposes we
+%D decided use indirect actions.
+
+% \definespecial\dosetupopenaction {\doPDFsetupopenaction}
+% \definespecial\dosetupcloseaction {\doPDFsetupcloseaction}
+% \definespecial\dosetupopenpageaction {\doPDFsetupopenpageaction}
+% \definespecial\dosetupclosepageaction{\doPDFsetupclosepageaction}
+
\let\lastPDFaction\empty
%D We can safe a couple of references by moving this code
@@ -454,15 +462,42 @@
%D update of Acrobat Viewers, upward compatibility was
%D just a dream.
-\def\doPDFsetupopenaction
- {\doPDFaddtocatalog{/OpenAction <<\lastPDFaction>>}}
-
-\def\doPDFsetupcloseaction
- {\doPDFaddtocatalog{/CloseAction <<\lastPDFaction>>}}
-
-%D So, starting with version~5 viewers, when the open actions
-%D started yto give problems, for testing purposes we
-%D decided use indirect actions.
+\definespecial\dosetupopenaction {\doPDFaddtocatalog{/OpenAction <<\lastPDFaction>>}}
+\definespecial\dosetupcloseaction{\doPDFaddtocatalog{/CloseAction <<\lastPDFaction>>}}
+
+% todo: /AA << dictionary in catalog >>
+
+% \globalletempty\PDFdocumentclose
+% \globalletempty\PDFwillsave
+% \globalletempty\PDFdidsave
+% \globalletempty\PDFwillprint
+% \globalletempty\PDFdidprint
+
+% \definespecial\dosetupdocumentcloseaction {\global\let\PDFdocumentclose\lastPDFaction}
+% \definespecial\dosetupwillsaveaction {\global\let\PDFwillsave \lastPDFaction}
+% \definespecial\dosetupdidsaveaction {\global\let\PDFdidsave \lastPDFaction}
+% \definespecial\dosetupwillprintaction {\global\let\PDFwillprint \lastPDFaction}
+% \definespecial\dosetupdidprintaction {\global\let\PDFdidprint \lastPDFaction}
+
+% \def\checkPDFdocumentactions
+% {\iflocation
+% \doPDFpageattribute
+% {/AA <<\ifx\PDFdocumentclose\empty \else /DC <<\PDFdocumentclose>> \fi
+% \ifx\PDFwillsave \empty \else /WS <<\PDFwillsave >> \fi
+% \ifx\PDFdidsave \empty \else /DS <<\PDFdidsave >> \fi
+% \ifx\PDFwillprint \empty \else /WP <<\PDFwillprint >> \fi
+% \ifx\PDFdidprint \empty \else /DP <<\PDFdidprint >> \fi>>}%
+% % \globalletempty\PDFdocumentclose
+% % \globalletempty\PDFwillsave
+% % \globalletempty\PDFdidsave
+% % \globalletempty\PDFwillprint
+% % \globalletempty\PDFdidprint
+% \global\let\checkPDFdocumentactions\relax
+% \fi}
+
+% \appendtoksonce
+% \checkPDFdocumentactions
+% \to \everylastshipout
%\def\doPDFsetupopenaction%
% {\doPDFdictionaryobject class FDF name local:openaction data \lastPDFaction
@@ -477,11 +512,8 @@
\let\PDFopenpageaction \empty
\let\PDFclosepageaction\empty
-\def\doPDFsetupopenpageaction
- {\global\let\PDFopenpageaction\lastPDFaction}
-
-\def\doPDFsetupclosepageaction
- {\global\let\PDFclosepageaction\lastPDFaction}
+\definespecial\dosetupopenpageaction {\global\let\PDFopenpageaction \lastPDFaction}
+\definespecial\dosetupclosepageaction{\global\let\PDFclosepageaction\lastPDFaction}
\def\checkPDFpageactions
{\iflocation % important since direct -)
@@ -771,7 +803,7 @@
%\@EA\aftersplitstring \string\at{ }\to\parameters
%\edef\action%
% {/S /Launch /F (\program) /P (\parameters) /D (.)}%
- \edef\action%
+ \edef\action
{/S /Launch /F (#3) /P (#4) /D (.)}%
\ifsecondaryreference
\savesecondaryPDFreference\action
@@ -794,7 +826,7 @@
{\bgroup
\setPDFdestination{#3}%
\doifsomething\PDFdestination
- {\edef\action%
+ {\edef\action
{/S /Thread /D (\PDFdestination)}%
\ifsecondaryreference
\savesecondaryPDFreference\action
@@ -814,6 +846,23 @@
%D the transitions look awful anyway. By the way, \CONTEXT\ is
%D able to select transitions randomly.
+% some day, when 1.5 is on linux and apple, we will add:
+%
+% \def\pagetransitions
+% {{split,in,vertical},{split,in,horizontal},
+% {split,out,vertical},{split,out,horizontal},
+% {blinds,horizontal},{blinds,vertical},
+% {box,in},{box,out},
+% {wipe,east},{wipe,west},{wipe,north},{wipe,south},
+% dissolve,
+% {glitter,east},{glitter,south},
+% {fly,in,east},{fly,in,west},{fly,in,north},{fly,in,south},
+% {fly,out,east},{fly,out,west},{fly,out,north},{fly,out,south},
+% {push,east},{push,west},{push,north},{push,south},
+% {cover,east},{cover,west},{cover,north},{cover,south},
+% {uncover,east},{uncover,west},{uncover,north},{uncover,south},
+% fade}
+
\def\pagetransitions
{{split,in,vertical},{split,in,horizontal},
{split,out,vertical},{split,out,horizontal},
@@ -834,6 +883,12 @@
\def\PDFpageglitter {/S /Glitter }
\def\PDFpagereplace {/S /R }
+\def\PDFpagefly {/S /Fly } % 1.5
+\def\PDFpagepush {/S /Push } % 1.5
+\def\PDFpagecover {/S /Cover } % 1.5
+\def\PDFpageuncover {/S /Uncover } % 1.5
+\def\PDFpagefade {/S /Fade } % 1.5
+
\def\PDFpagehorizontal {/Dm /H }
\def\PDFpagevertical {/Dm /V }
\def\PDFpagein {/M /I }
@@ -863,6 +918,10 @@
%D link}, but here is another one: the {\em movie} annotation.
%D The driver module must implement \type {setcurrentmovie}.
+%D Great: this will become an obsolete pdf feature; why did we have to
+%D keep up with the bugs ... and by the time acrobat gets better in
+%D handling it have to drop it.
+
\let\currentmovie\s!unknown
\def\doPDFinsertmov#1#2#3#4#5#6#7#8#9%
@@ -916,6 +975,33 @@
\def\doPDFfilestreamobject class #1 name #2 file #3 source #4%
{}
+\def\doPDFfilestreamidentifier#1%
+ {0}
+
+\def\doPDFgetfilestreamreference#1#2%
+ {0 0 R}
+
+% \def\doPDFattachfile#1#2#3#4#5#6#7#8%
+% {\bgroup % title width height color symbol file
+% \edef\PDFfile{#8}\convertcommand\PDFfile\to\PDFfile
+% % beware: the symbol may (indirectly) use the file
+% % reference when typesetting the object number;
+% \presetPDFsymbolappearance{#5}{#6}{#2}{#3}{#4}% sets width/height
+% \startPDFsymbolappearance
+% \doifnotflagged{a:\PDFfile}%
+% {\doPDFfilestreamobject
+% class PDFEF name {\PDFfile} file {#7} source {#8}%
+% \doglobal\setflag{a:\PDFfile}}%
+% \doPDFgetobjectreference{PDFEF}\PDFfile\PDFobjectreference
+% \doPDFannotation width {\width} height {\totalheight} data
+% {/Subtype /FileAttachment
+% /FS \PDFobjectreference\space
+% /Contents (#1)
+% \PDFsymbol
+% \PDFattributes}%
+% \stopPDFsymbolappearance
+% \egroup}
+
\def\doPDFattachfile#1#2#3#4#5#6#7#8%
{\bgroup % title width height color symbol file
\edef\PDFfile{#8}\convertcommand\PDFfile\to\PDFfile
@@ -923,11 +1009,8 @@
% reference when typesetting the object number;
\presetPDFsymbolappearance{#5}{#6}{#2}{#3}{#4}% sets width/height
\startPDFsymbolappearance
- \doifnotflagged{a:\PDFfile}%
- {\doPDFfilestreamobject
- class PDFEF name {\PDFfile} file {#7} source {#8}%
- \doglobal\setflag{a:\PDFfile}}%
- \doPDFgetobjectreference{PDFEF}\PDFfile\PDFobjectreference
+ \doPDFembedfile\PDFfile{#7}{#8}%
+ \doPDFgetembeddedfilereference\PDFfile\PDFobjectreference
\doPDFannotation width {\width} height {\totalheight} data
{/Subtype /FileAttachment
/FS \PDFobjectreference\space
@@ -937,6 +1020,23 @@
\stopPDFsymbolappearance
\egroup}
+% semi-public
+
+\def\doPDFembedfile#1#2#3% symbolic name | filename | user name
+ {\edef\PDFfile{#1}\convertcommand\PDFfile\to\PDFfile
+ \doifnotflagged{a:\PDFfile}%
+ {\doPDFfilestreamobject
+ class PDFEF name {\PDFfile} file {#2} source {#3}%
+ \doglobal\setflag{a:\PDFfile}}}
+
+\def\doPDFgetembeddedfilereference#1#2%
+ {\edef\PDFfile{#1}\convertcommand\PDFfile\to\PDFfile
+ \doPDFgetobjectreference{PDFEF}\PDFfile#2}
+
+\def\doPDFgetembeddedfilestreamreference#1#2%
+ {\edef\PDFfile{#1}\convertcommand\PDFfile\to\PDFfile
+ \doPDFgetfilestreamreference\PDFfile#2} % == \doPDFgetobjectreference{PDFFS}\PDFfile#2
+
\definespecial \doattachfile {\doPDFattachfile}
% requested by Jens-Uwe Morawski: permits usage of pdftosrc
@@ -962,6 +1062,169 @@
\fi}
%D \macros
+%D {...}
+%D
+%D Rather preliminary. We have to wait till the complete specs
+%D show up. As usual, we cannot really check it (Acrobat 6.0
+%D has a bug that inhibits us to make a test file). Half a day
+%D of testing made clear that trying to control the plugin fails
+%D in most cases (we need plugin specs -). We also miss a feature
+%D to let acrobat wait with proceeding (action processing) till
+%D the media clip is ready.
+
+% aiff audio/aiff
+% au audio/basic
+% avi video/avi
+% mid audio/midi
+% mov video/quicktime
+% mp3 audio/x-mp3 (mpeg)
+% mp4 audio/mp4
+% mp4 video/mp4
+% mpeg video/mpeg
+% smil application/smil
+% swf application/x-shockwave-flash
+
+% beware, this is preliminary code, should be improved
+
+\def\PDFrenderingspecs#1{\executeifdefined{PDFMR:#1}\empty}
+
+\def\PDFexecutestartrendering {/Rendition /OP 0 \PDFrenderingspecs\argumentA}
+\def\PDFexecutestoprendering {/Rendition /OP 1 \PDFrenderingspecs\argumentA}
+\def\PDFexecutepauserendering {/Rendition /OP 2 \PDFrenderingspecs\argumentA}
+\def\PDFexecuteresumerendering {/Rendition /OP 3 \PDFrenderingspecs\argumentA}
+
+% todo : sub files
+%
+% \doPDFembedfile{pier-39.png}{pier-39.png}{pier-39.png}%
+% \doPDFgetembeddedfilestreamreference{pier-39.png}\xPDFobjectreference
+% \edef\xxxx{/RF [(pier-39.png) \xPDFobjectreference]}%
+
+% todo: alternative renderings
+%
+% object_1 -> <</Type /Rendition /S /MR /C << /Type /MediaClip ... >> >>
+% object_2 -> <</Type /Rendition /S /MR /C << /Type /MediaClip ... >> >>
+%
+% rendering -> <</Type /Rendition /S /MS [objref_1 objref_2]>>
+
+% todo: embedded files (too buggy)
+%
+% \let\PDFattribute\empty
+% % /D \PDFobjectreference
+% % test one, no error, but ignored
+% \doifinset\v!file{#4}
+% {\doPDFembedfile{#3}{#3}{#3}%
+% \doPDFgetembeddedfilestreamreference{#3}\PDFobjectreference
+% \edef\PDFattribute{/EF \PDFobjectreference}}%
+% % official, does not work either
+% \doifinset\v!file{#4}
+% {\doPDFembedfile{#3}{#3}{#3}%
+% \doPDFgetembeddedfilereference{#3}\PDFobjectreference}
+% % do we play the game as follows
+
+\definespecial\doinsertrendering#1#2#3#4% tag mime file options
+ {\ifundefined{PDFMR:#1}%
+ \doifinstringelse{://}{#3}\donetrue\donefalse % evt url as keyword
+ \doPDFdictionaryobject class {PDFMF} name {#1} data
+ {/Type /Rendition
+ /S /MR
+ % does not work: /SP << /Type /MediaScreenParam /BE << /B [1 0 0] /O 0.5 >> >>
+ /C << /Type /MediaClip
+ /S /MCD
+ /N (#1)
+ /Alt [() (file not found)] % language id + message
+ /D << /Type /Filespec
+ /F (#3)
+ \ifdone/FS /URL\fi >>
+ /CT (#2) >>}%
+ % common code
+ \doifobjectreferencefoundelse{PDFMS}{#1}
+ {\doPDFgetobjectreference{PDFMS}{#1}\PDFobjectreferenceB}
+ {\doPDFgetobjectreference{PDFMU}{#1}\PDFobjectreferenceB}%
+ \doPDFgetobjectreference{PDFMF}{#1}\PDFobjectreferenceA
+ \setxvalue{PDFMR:#1}% needed /AA actions in /Screen
+ {/R \PDFobjectreferenceA
+ /AN \PDFobjectreferenceB}%
+ \doifobjectreferencefoundelse{PDFMS}{#1}\donothing
+ {\dodoinsertrenderingwindow{PDFMU}{#1}\zeropoint\zeropoint{#4}}%
+ \fi}
+
+\definespecial\doinsertrenderingobject#1#2#3#4% tag class objectname options
+ {\ifundefined{PDFMR:#1}%
+ \doPDFgetobjectreference{#2}{#3}\PDFobjectreference
+ \doPDFdictionaryobject class {PDFMF} name {#1} data
+ {/Type /Rendition
+ /S /MR
+ /C << /Type /MediaClip
+ /S /MCD
+ /N (#1)
+ /D \PDFobjectreference>>}%
+ % common code
+ \doifobjectreferencefoundelse{PDFMS}{#1}
+ {\doPDFgetobjectreference{PDFMS}{#1}\PDFobjectreferenceB}
+ {\doPDFgetobjectreference{PDFMU}{#1}\PDFobjectreferenceB}%
+ \doPDFgetobjectreference{PDFMF}{#1}\PDFobjectreferenceA
+ \setxvalue{PDFMR:#1}% needed /AA actions in /Screen
+ {/R \PDFobjectreferenceA
+ /AN \PDFobjectreferenceB}%
+ \doifobjectreferencefoundelse{PDFMS}{#1}\donothing
+ {\dodoinsertrenderingwindow{PDFMU}{#1}\zeropoint\zeropoint{#4}}%
+ \fi}
+
+\definespecial\doinsertrenderingwindow
+ {\dodoinsertrenderingwindow{PDFMS}}
+
+\def\dodoinsertrenderingwindow#1#2#3#4#5%
+ {\vbox to #4 \bgroup
+ \checkPDFscreenactions{#2}{#5}%
+ \doPDFgetobjectpagereference{PDFMF}{#2}\PDFobjectreferenceA
+ \doPDFgetobjectreference {PDFMF}{#2}\PDFobjectreferenceB
+ \vss
+ \hbox to #3 \bgroup
+ \doPDFannotationobject class {#1} name {#2} width #3 height #4 data
+ {/Subtype /Screen
+ /P \PDFobjectreferenceA
+ /A \PDFobjectreferenceB
+ \PDFattributes
+ /Border [0 0 0]}%
+ \hss
+ \egroup
+ \egroup}
+
+\global\let\PDFrenderingopenpageaction \empty
+\global\let\PDFrenderingclosepageaction\empty
+
+\def\checkPDFscreenactions#1#2%
+ {\let\PDFattributes\empty
+ \iflocation % important since direct -)
+ % the action can either (already) be set by the window handler
+ % or (normally when no window [i.e a zero dimensions one] is present) by keyword
+ \doifinset\v!auto{#2}
+ {% brrr, here instead of in navigation module, must move and become special
+ % now two sided dependency
+ \let\checkrendering\gobbleoneargument
+ \ifx\PDFrenderingopenpageaction \empty
+ \handlereferenceactions{\v!StartRendering{#1}}\dosetuprenderingopenpageaction
+ \fi
+ \ifx\PDFrenderingclosepageaction\empty
+ \handlereferenceactions{\v!StopRendering {#1}}\dosetuprenderingclosepageaction
+ \fi
+ }%
+ \donefalse
+ \ifx\PDFrenderingopenpageaction \empty\!!doneafalse\else\donetrue\!!doneatrue\fi
+ \ifx\PDFrenderingclosepageaction\empty\!!donebfalse\else\donetrue\!!donebtrue\fi
+ \ifdone
+ \edef\PDFattributes
+ {/AA <<\if!!donea/PO <<\PDFrenderingopenpageaction >> \fi
+ \if!!doneb/PC <<\PDFrenderingclosepageaction>> \fi>>}%
+ \fi
+ \global\let\PDFrenderingopenpageaction \empty
+ \global\let\PDFrenderingclosepageaction\empty
+ \fi}
+
+\definespecial\dosetuprenderingopenpageaction {\global\let\PDFrenderingopenpageaction \lastPDFaction}
+\definespecial\dosetuprenderingclosepageaction{\global\let\PDFrenderingclosepageaction\lastPDFaction}
+
+%D \macros
%D {doPDFinsertbookmark}
%D
%D Well, here is the dreadfull bookmark, rather useless because
@@ -983,6 +1246,37 @@
%D support. These macros are complicated by the fact that
%D cloning is possible.
+% new approach, 'global' variables, since we run out of
+% arguments
+
+\ifx\undefined\@@DriverFieldName
+
+ \letempty \@@DriverFieldName
+ \letempty \@@DriverFieldWidth
+ \letempty \@@DriverFieldHeight
+ \letempty \@@DriverFieldDefault
+ \letempty \@@DriverFieldNumber
+ \letempty \@@DriverFieldNumber
+ \letempty \@@DriverFieldStyle
+ \letempty \@@DriverFieldColor
+ \letempty \@@DriverFieldBackgroundColor
+ \letempty \@@DriverFieldFrameColor
+ \letempty \@@DriverFieldLayer
+ \letempty \@@DriverFieldOption
+ \letempty \@@DriverFieldAlign
+ \letempty \@@DriverFieldClickIn
+ \letempty \@@DriverFieldClickOut
+ \letempty \@@DriverFieldRegionIn
+ \letempty \@@DriverFieldRegionOut
+ \letempty \@@DriverFieldAfterKey
+ \letempty \@@DriverFieldFormat
+ \letempty \@@DriverFieldValidate
+ \letempty \@@DriverFieldCalculate
+ \letempty \@@DriverFieldFocusIn
+ \letempty \@@DriverFieldFocusOut
+
+\fi
+
%D \macros
%D {FDFflag...,FDFplus...}
%D
@@ -1022,6 +1316,11 @@
\def\FDFplusHidden {2} % 2
\def\FDFplusPrintable {4} % 3
+%def\FDFplusNoView {32} % 6
+%def\FDFplusToggleNoView {256} % 9
+
+\def\FDFplusAutoView {256} % {288} % 6+9
+
%D \macros
%D {setFDFswitches}
%D
@@ -1043,6 +1342,8 @@
\letvalue {\@@FDFplus\v!verborgen}=\FDFplusHidden
\letvalue {\@@FDFplus\v!printbaar}=\FDFplusPrintable
+\letvalue {\@@FDFplus\v!auto}=\FDFplusAutoView
+
%D A set of switches is collected into the flags we mentioned
%D before by the next macro (we don't handle negations yet,
%D but do take care of redundancy):
@@ -1196,25 +1497,51 @@
% \fi}
%% {\setFDFaction A#2}% mouseup % changed for version 5
+% \def\setFDFactions[#1,#2,#3,#4,#5,#6,#7,#8,%
+% {\global\let\FDFactions\empty
+% \setFDFaction D#1% mousedown
+% %\setFDFaction U#2% mouseup
+% \setFDFaction E#3% enterregion
+% \setFDFaction X#4% exitregion
+% \setFDFaction K#5% afterkeystroke
+% \setFDFaction F#6% formatresult
+% \setFDFaction V#7% validateresult
+% \setFDFaction C#8% calculatewhatever
+% \setFDFactionsmore#2,}
+
+% \def\setFDFactionsmore#1,#2,#3]%
+% {\setFDFaction{Fo}#2% focusin
+% \setFDFaction{Bl}#3% focusout % was I (now pdf ref manual explicitly talks about lowercase l)
+% \ifx\FDFactions\empty\else
+% \xdef\FDFactions{/AA << \FDFactions >>}% since 1.3 no longer inherited
+% \fi
+% \setFDFaction A#1}% mouseup
+
\def\setFDFactions[#1,#2,#3,#4,#5,#6,#7,#8,%
{\global\let\FDFactions\empty
\setFDFaction D#1% mousedown
-% \setFDFaction U#2% mouseup
+ \setFDFaction U#2% mouseup
\setFDFaction E#3% enterregion
\setFDFaction X#4% exitregion
\setFDFaction K#5% afterkeystroke
\setFDFaction F#6% formatresult
\setFDFaction V#7% validateresult
\setFDFaction C#8% calculatewhatever
- \setFDFactionsmore#2,}
+ \setFDFactionsmore}
-\def\setFDFactionsmore#1,#2,#3]%
- {\setFDFaction{Fo}#2% focusin
- \setFDFaction{Bi}#3% focusout
+\def\setFDFactionsmore#1,#2]%
+ {\setFDFaction{Fo}#1% focusin
+ \setFDFaction{Bl}#2% focusout % was I (now pdf ref manual explicitly talks about lowercase l)
\ifx\FDFactions\empty\else
\xdef\FDFactions{/AA << \FDFactions >>}% since 1.3 no longer inherited
- \fi
- \setFDFaction A#1}% mouseup
+ \fi}
+
+% todo, when new var scheme is implemented
+%
+% \setFDFaction{PO}\@@DriverFieldPageOpen
+% \setFDFaction{PC}\@@DriverFieldPageClose
+% \setFDFaction{PV}\@@DriverFieldPageVisible
+% \setFDFaction{PI}\@@DriverFieldPageInVisible
%D The event handler becomes something:
%D
@@ -1247,8 +1574,7 @@
\def\setFDFaction#1#2%
{\bgroup
- \def\docommando%
- {\xdef\FDFactions{\FDFactions /#1 << \lastPDFaction >> }}%
+ \def\docommando{\xdef\FDFactions{\FDFactions /#1 << \lastPDFaction >> }}%
\@EA\handlereferenceactions\@EA{#2}\docommando % one level expansion
\egroup}
@@ -1486,6 +1812,7 @@
\def\doFDFpresetlinefield#1#2#3#4#5#6#7#8#9%
{\bgroup
+ \setFDFlayer
\setFDFswitches[#7]%
\setFDFattributes[#6]%
\setFDFalignment[#8]%
@@ -1500,6 +1827,7 @@
/Ff \FDFflag\space
/F \FDFplus\space
/DA (\FDFattributes)
+ \FDFlayer\space
\FDFsurroundings\space
/Q \FDFalign\space
\FDFactions}%
@@ -1515,6 +1843,7 @@
/Ff \FDFflag\space
/F \FDFplus\space
/DA (\FDFattributes)
+ \FDFlayer\space
\FDFsurroundings\space
/Q \FDFalign\space
\FDFactions}%
@@ -1528,6 +1857,7 @@
/Ff \FDFflag\space
/F \FDFplus\space
/DA (\FDFattributes)
+ \FDFlayer\space
\FDFsurroundings\space
/Q \FDFalign\space
\FDFactions}%
@@ -1547,6 +1877,7 @@
\def\doFDFpresetchoicefield#1#2#3#4#5#6#7#8%
{\bgroup
+ \setFDFlayer
\setFDFswitches[#6]%
\setFDFattributes[#5]%
\setFDFvalues[#7][#4]%
@@ -1559,6 +1890,7 @@
/Ff \FDFflag\space
/F \FDFplus\space
/DA (\FDFattributes)
+ \FDFlayer\space
\FDFsurroundings\space
/Opt [\FDFvalues]
\FDFactions}%
@@ -1572,6 +1904,7 @@
/Ff \FDFflag\space
/F \FDFplus\space
/DA (\FDFattributes)
+ \FDFlayer\space
\FDFsurroundings\space
/Opt [\FDFvalues]
\FDFactions}%
@@ -1585,6 +1918,7 @@
/Ff \FDFflag\space
/F \FDFplus\space
/DA (\FDFattributes)
+ \FDFlayer\space
\FDFsurroundings\space
\FDFactions}%
\or
@@ -1608,6 +1942,7 @@
\def\doFDFpresetpushcheckfield#1#2#3#4#5#6#7#8% in acro<5 (\FDFdefault)
{\bgroup % in acro>5 /\FDFdefault
+ \setFDFlayer
\ifcase#8\relax\FDFvaluesfalse\else\FDFvaluestrue\fi
\setFDFswitches[#5]%
\setFDFactions[#7]%
@@ -1623,12 +1958,14 @@
/V /\FDFdefault\space
/AS /\FDFdefault\space
\fi
+ \FDFlayer
/Ff \FDFflag\space
/F \FDFplus\space
+ \FDFlayer\space
\FDFappearance\space
\FDFactions}%
\registerFDFobject{#1}%
- \or
+ \or % no appearance and layer ?
\setFDFkids[kids:][\currentFDFkids]%
\doPDFdictionaryobject class FDF name #1 data
{/T (#1) /FT /Btn
@@ -1656,6 +1993,7 @@
\fi
/Ff \FDFflag\space
/F \FDFplus\space
+ \FDFlayer\space
\FDFappearance\space
\FDFactions}%
\or
@@ -1671,6 +2009,7 @@
/V /\FDFdefault\space
/AS /\FDFdefault\space
\fi
+ \FDFlayer\space
\FDFappearance
\FDFactions}%
\fi
@@ -1684,14 +2023,15 @@
\def\doFDFpresetradiofield#1#2#3#4#5#6#7#8%
{\bgroup
+ \setFDFlayer
\FDFvaluestrue
\setFDFswitches[#5]%
\setFDFactions[#8]%
\doifelsenothing{#4}
{\def\FDFdefault{Off}}
{\def\FDFdefault{#4}}%
-\@EA\aftersplitstring\FDFdefault\at=>\to\FDFdefaultvalue
-\ifx\FDFdefaultvalue\empty\else\let\FDFdefault\FDFdefaultvalue\fi
+ \@EA\aftersplitstring\FDFdefault\at=>\to\FDFdefaultvalue
+ \ifx\FDFdefaultvalue\empty\else\let\FDFdefault\FDFdefaultvalue\fi
\ifcase\currentFDFmode
\doFDFappearance{#1}{#7}{1}%
\doPDFgetobjectreference{FDF}{#6}\PDFobjectreference
@@ -1700,6 +2040,7 @@
/Parent \PDFobjectreference\space
/F \FDFplus\space
/AS /\FDFdefault\space
+ \FDFlayer\space
\FDFappearance\space
\FDFactions}%
\registerFDFobject{#1}%
@@ -1722,6 +2063,7 @@
/Parent \PDFobjectreference\space
/AS /\FDFdefault\space
/F \FDFplus\space
+ \FDFlayer\space
\FDFappearance\space
\FDFactions}%
\or
@@ -1734,6 +2076,7 @@
/Parent \PDFobjectreference\space
/AS /\FDFdefault\space
/F \FDFplus\space
+ \FDFlayer\space
\FDFappearance\space
\FDFactions}%
\fi
@@ -1766,13 +2109,13 @@
% /V (#2)
% and now finally this works
/H /N
-% /opt is buggy in 5.05, only works once, sigh
-%\ifx\FDFfirstvalues\FDFsecondvalues
- /V /#2
-%\else
-% /V /\FDFdefaultindex\space
-% /Opt [\FDFsecondvalues]
-%\fi
+ % /opt is buggy in 5.05, only works once, sigh
+ %\ifx\FDFfirstvalues\FDFsecondvalues
+ /V /#2
+ %\else
+ % /V /\FDFdefaultindex\space
+ % /Opt [\FDFsecondvalues]
+ %\fi
/Ff \FDFflag\space
/F \FDFplus\space
/Kids [\FDFkids]
@@ -1843,6 +2186,17 @@
\def\doFDFdefault#1#2%
{\doifelse{#2}{1}{\def\FDFdefault{On}}{\def\FDFdefault{Off}}}
+%D Layer support:
+
+\def\setFDFlayer % todo : \ifx\PDFobjectreference\noPDFobjectreference ipv found
+ {\letempty\FDFlayer
+ \doifsomething\@@DriverFieldLayer
+ {\checkproperty\@@DriverFieldLayer
+ \doifobjectreferencefoundelse{PDLN}\@@DriverFieldLayer
+ {\doPDFgetobjectreference{PDLN}\@@DriverFieldLayer\PDFobjectreference
+ \edef\FDFlayer{/OC \PDFobjectreference}}%
+ \donothing}}
+
%D The three appearances {\em normal}, \type{roll over} and
%D \type{push down} are passed as comma separated triplets,
%D that is, the second argument can look like:
@@ -1908,10 +2262,10 @@
\beginETEX \ifcsname
-\def\getsecondaryPDFreferences%
+\def\getsecondaryPDFreferences
{\ifcase\nofsecondaryreferences\else
\ifcsname PDF-SR:\the\nofsecondaryreferences\endcsname
- \xdef\secondaryPDFreferences%
+ \xdef\secondaryPDFreferences
{/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
\secondaryPDFreferences >>}%
\fi
@@ -1923,10 +2277,10 @@
\beginTEX
-\def\getsecondaryPDFreferences%
+\def\getsecondaryPDFreferences
{\ifcase\nofsecondaryreferences\else
\@EA\ifx\csname PDF-SR:\the\nofsecondaryreferences\endcsname\relax\else
- \xdef\secondaryPDFreferences%
+ \xdef\secondaryPDFreferences
{/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
\secondaryPDFreferences >>}%
\fi
@@ -2010,7 +2364,7 @@
\egroup}
%D The next macro does the same job, but now in the \TEX\ way
-%D of doing things. Easy eh?
+%D of doing things. Easy eh? Will become obsolete!
\bgroup
@@ -2627,11 +2981,9 @@
/Name (#2)}%
\doPDFgetobjectreference{PDLN}{#1}\PDFobjectreference
\xdef\PDFtextlayers{\PDFtextlayers\space\PDFobjectreference}%
- \ifcase#3\relax
- \xdef\PDFhidelayers{\PDFhidelayers\space\PDFobjectreference}%
- \or
- \xdef\PDFvidelayers{\PDFvidelayers\space\PDFobjectreference}%
- \fi
+ \doifelse{#3}\v!start
+ {\xdef\PDFvidelayers{\PDFvidelayers\space\PDFobjectreference}}%
+ {\xdef\PDFhidelayers{\PDFhidelayers\space\PDFobjectreference}}%
%\driverreferenced \doPDFdictionaryobject class PDLD name #1 data
\doPDFdictionaryobject class PDLD name #1 data
{/Type /OCMD
@@ -2704,4 +3056,4 @@
\fi
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/spec-ini.tex b/tex/context/base/spec-ini.tex
index feaaf5b8b..33cae54dc 100644
--- a/tex/context/base/spec-ini.tex
+++ b/tex/context/base/spec-ini.tex
@@ -8,17 +8,20 @@
%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.
-\newif\ifsimplifyspecials \simplifyspecialstrue % see later
+\newif\ifsimplifyspecials \simplifyspecialstrue % see later
-%D We will forbid loading specials after the first page is
-%D shipped out.
+% todo: no args, named vars instead
+% maybe also drop multiple drivers and make simply the default, then simplier defs
-\ifx\realpageno\undefined
+%D We will forbid loading specials after the first page is
+%D shipped out.
+
+\ifx\realpageno\undefined
\countdef\realpageno=0 \realpageno=1
-\fi
+\fi
%D Specials are \TEX's channel to the outside world. They make
%D \TEX\ even more platform independant and permit easy
@@ -141,8 +144,8 @@
%D are used which can optionally be followed by length
%D specifiers and arguments. The \DVI||format incorporates a
%D channel to the outside world. This channel is activated by
-%D the \TEX\ primitive \type {\special}. The sequence
-%D
+%D the \TEX\ primitive \type {\special}. The sequence
+%D
%D \starttypen
%D \special{Hello here I am.}
%D \stoptypen
@@ -156,26 +159,26 @@
%D The \type {xxx1} is represented in byte code 239 and the
%D number of following bytes in a~1, 2, 3 or~4 byte number. So
%D here we get $1+1+16$ bytes of code.
-%D
+%D
%D Translating these codes is upto the \DVI\ driver. It's
%D common use to ignore specials that cannot be interpreted, so
%D the example string should have no consequences for the
-%D output.
+%D output.
-%D \macros
+%D \macros
%D {everyresetspecials}
%D
-%D Now what will this one do? We'll see in a few lines.
+%D Now what will this one do? We'll see in a few lines.
\newevery \everyresetspecials \relax
%D \macros
%D {jobsuffix}
%D
-%D By default, \TEX\ produces \DVI\ files which can be
-%D converted to other filetypes. Sometimes it is handy to
-%D know what the target file will be. In other driver
-%D modules we wil set \type {\jobsuffix} to \type {pdf}.
+%D By default, \TEX\ produces \DVI\ files which can be
+%D converted to other filetypes. Sometimes it is handy to
+%D know what the target file will be. In other driver
+%D modules we wil set \type {\jobsuffix} to \type {pdf}.
\def\jobsuffix{dvi}
@@ -187,12 +190,12 @@
%D settings is that the latter don't interfere with typesetting
%D but must be set before the first shipout, while the specials
%D must be packaged in the shipped out box in such a way that
-%D they don't interfere.
+%D they don't interfere.
\newif\ifspecialbasedsettings \specialbasedsettingstrue
-\appendtoksonce
- \specialbasedsettingstrue
+\appendtoksonce
+ \specialbasedsettingstrue
\to \everyresetspecials
%D Because there is no standardization in the use of specials,
@@ -214,9 +217,9 @@
%D \stopspecials
%D \stoptypen
%D
-%D Because drivers can have overlap in low level macros, a
-%D mechanism of inheritance is implemented. The libraries
-%D defined as second argument are loaded first.
+%D Because drivers can have overlap in low level macros, a
+%D mechanism of inheritance is implemented. The libraries
+%D defined as second argument are loaded first.
%D
%D Every special has to be predefined first. We do this with
%D the command:
@@ -267,7 +270,7 @@
\def\@@specarg@@{@@spcarg@@}
\def\@@specexc@@{@@spcexc@@}
-% not faster
+% not faster
%
% \def\@@specfil@@{@sp@f@}
% \def\@@speclst@@{@sp@l@}
@@ -298,7 +301,7 @@
%D overruled. The name may differ from the file||tag.
%D
%D The optional second argument can consist of a list of
-%D libraries that are to be loaded first.
+%D libraries that are to be loaded first.
\def\dostartspecials[#1][#2]%
{\doifsomething{#2}
@@ -316,7 +319,7 @@
\def\stopspecials
{\localpopmacro\currentspecial
\protect}
-
+
%D \macros
%D {installspecial,
%D resetspecials}
@@ -333,7 +336,7 @@
%D
%D With \type{\resetspecials} we can unload the predefined
%D specials. Special reset actions |<|look in \type{spec-mis}
-%D for an example|>| can be assigned to the token register
+%D for an example|>| can be assigned to the token register
%D \type{\everyresetspecials}.
\let\@@allspecials=\empty
@@ -393,7 +396,7 @@
%D We use \type{\usespecials} to load a specific library.
%D This command is only permitted outside the definition part.
-\def\dousespecials#1%
+\def\dousespecials#1%
{\doifelse{#1}\v!reset
{\resetspecials}
{\doifdefinedelse{\@@specfil@@#1}
@@ -420,10 +423,10 @@
%D defined specials. Once a special is installed, the special
%D itself calls for this command, so it's not needed outside
%D this module. One can use it if wanted.
-%D
-%D A former implementation grouped the execution. Recent
-%D additions however |<|like the specials that implement object
-%D handling|>| asked for non||grouped execution.
+%D
+%D A former implementation grouped the execution. Recent
+%D additions however |<|like the specials that implement object
+%D handling|>| asked for non||grouped execution.
%D \starttypen
%D \def\executespecials#1#2%
@@ -431,7 +434,7 @@
%D {\getvalue{##1\string#1}#2\relax}%
%D \processcommacommand
%D [\getvalue{\@@speclst@@\string#1}]\doonespecial}
-%D
+%D
%D \def\executespecial#1%
%D {\expandafter\ifcase\getvalue{\@@specarg@@\string#1}\relax
%D \def\next%
@@ -462,24 +465,24 @@
%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}}}%
%D \or
%D \def\next##1##2##3##4##5##6##7##8##9%
-%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}{##9}}}%
+%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}{##9}}}%
%D \else
%D \def\next%
%D {\message{illegal special: \string#1}}%
%D \fi
%D \next}
-%D \stoptypen
-%D
+%D \stoptypen
+%D
%D Because specials happen quite often, we will use a bit more
%D brute force. Keep in mind that we have to collect the
-%D arguments because we want to support more drivers at once.
-%D
-%D I tested this on the next test. Where the previous alternative
-%D took about 32 seconds, the new alternative takes 25 seconds.
+%D arguments because we want to support more drivers at once.
+%D
+%D I tested this on the next test. Where the previous alternative
+%D took about 32 seconds, the new alternative takes 25 seconds.
%D
-%D \starttypen
+%D \starttypen
%D \testfeature{10000}{\setbox0=\hbox{test \color[red]{oeps} test}}
-%D \stoptypen
+%D \stoptypen
\def\@@exsp{exsp}
@@ -500,15 +503,15 @@
%D {\csname##1\xspecialcommand\endcsname#1\relax}%
%D \@EA\rawprocesscommalist\@EA
%D [\csname\@@speclst@@\xspecialcommand\endcsname]\doonespecial}
-%D
+%D
%D \def\executespecial#1%
%D {\def\xspecialcommand{\string#1}%
%D \@EA\@EA\@EA\executespecials\csname\@@exsp\csname\@@specarg@@\xspecialcommand\endcsname\endcsname}
-%D \stoptypen
+%D \stoptypen
-%D Some more speed can be gained by using a dedicated string
-%D processing routine. Now we can bring down the execution
-%D time to 21 seconds, one third less than the original run time.
+%D Some more speed can be gained by using a dedicated string
+%D processing routine. Now we can bring down the execution
+%D time to 21 seconds, one third less than the original run time.
\def\executespecials#1%
{\@EA\let\@EA\speciallist\csname\@@speclst@@\xspecialcommand\endcsname
@@ -527,32 +530,32 @@
\doonespecial{#1}\expandafter\dodoonespecial
\fi}
-%D This kind of saving only shows up when making interative
-%D documents with lots of color switches. In such documents
-%D tens of thousands of special calls are rather normal.
-%D On a 650 Mhz Pentium, the previous test takes 15 seconds
-%D less (on about 65 seconds). When processing 2000 page
-%D interactive documents this saving can be neglected.
+%D This kind of saving only shows up when making interative
+%D documents with lots of color switches. In such documents
+%D tens of thousands of special calls are rather normal.
+%D On a 650 Mhz Pentium, the previous test takes 15 seconds
+%D less (on about 65 seconds). When processing 2000 page
+%D interactive documents this saving can be neglected.
-%D In the previous macros, the \type{{{...}}} are needed
+%D In the previous macros, the \type{{{...}}} are needed
%D because we pass all those arguments to the specials support
-%D macro.
+%D macro.
\let\openspecialfile \relax
\let\closespecialfile \relax
%D \macros
%D {doifspecialavailableelse}
-%D
-%D For testing purposes (this was first needed when object
-%D support was implemented) we have:
-%D
+%D
+%D For testing purposes (this was first needed when object
+%D support was implemented) we have:
+%D
%D \starttypen
%D \doifspecialavailableelse\specialcommand{true}{false}
%D \stoptypen
-%D
-%D e.g:
-%D
+%D
+%D e.g:
+%D
%D \starttypen
%D \doifspecialavailableelse\doinsertobject{...}{...}
%D \stoptypen
@@ -564,9 +567,9 @@
%D In the file \type {spec-def} you will find the predefined
%D specials.
-%D Now that we have seen the flexible way (permitting
-%D special chains) we will implement a faster and flat
-%D alternative. But only if flag si set.
+%D Now that we have seen the flexible way (permitting
+%D special chains) we will implement a faster and flat
+%D alternative. But only if flag si set.
\ifsimplifyspecials
@@ -594,54 +597,54 @@
\let\preloadedspecials\empty}
\def\definespecial#1%
- {\@EA\chardef\csname\@@speclst@@\string#1\endcsname=1
+ {\@EA\chardef\csname\@@speclst@@\string#1\endcsname=1
\def#1}
- \def\doifspecialavailableelse#1%
+ \def\doifspecialavailableelse#1%
{\ifcase\csname\@@speclst@@\string#1\endcsname
\expandafter\secondoftwoarguments
\else
\expandafter\firstoftwoarguments
\fi}
-\fi
+\fi
%D For quite some time the \CONTEXT\ way of specifying the
-%D output format has been:
-%D
+%D output format has been:
+%D
%D \starttypen
%D \usespecials[ps,yy,win,pdf]
%D \stoptypen
%D
-%D Because at \PRAGMA\ we use \DVIPSONE, this was a suitable
-%D setting, but with \CONTEXT\ going public, the next sequence
-%D is more suitable for \DVIPS\ users:
-%D
+%D Because at \PRAGMA\ we use \DVIPSONE, this was a suitable
+%D setting, but with \CONTEXT\ going public, the next sequence
+%D is more suitable for \DVIPS\ users:
+%D
%D \starttypen
%D \usespecials[reset,ps,tr,pdf]
%D \stoptypen
%D
-%D On the other hand, for \PDFTEX\ we needed:
+%D On the other hand, for \PDFTEX\ we needed:
%D
%D \starttypen
%D \usespecials[tpd]
%D \stoptypen
%D
-%D To simplify things, I decided to provide a higher level
-%D command.
+%D To simplify things, I decided to provide a higher level
+%D command.
%D
%D \starttypen
%D \defineoutput[name][specials]
%D \setupoutput[name,...]
%D \stoptypen
%D
-%D In a \type {spec-def} you can find some examples.
+%D In a \type {spec-def} you can find some examples.
\def\defineoutput
{\dodoubleargument\dodefineoutput}
\def\dodefineoutput[#1][#2]%
- {\setvalue{\??ui#1}{#2}}
+ {\setvalue{\??ui#1}{#2}}
\def\dosetupoutput#1%
{\doifdefinedelse{\??ui#1}
@@ -651,7 +654,7 @@
{\showmessage\m!specials7{#1}}}}
\def\setupoutput[#1]%
- {\ifnum\realpageno<2 % new
+ {\ifnum\realpageno<2 % new
\resetspecials\processcommacommand[#1]\dosetupoutput
\fi}
diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex
index f673e97c3..47c887acf 100644
--- a/tex/context/base/spec-tpd.tex
+++ b/tex/context/base/spec-tpd.tex
@@ -347,7 +347,7 @@
\immediate\pdfobj
{[ << /Image \PDFfigurereference\space0 R
/DefaultForPrinting true >> ]}%
- \xdef\pdfimageattributes%
+ \xdef\pdfimageattributes
{attr {/Alternates \the\pdflastobj\space0 R}}%
\fi}
@@ -549,8 +549,7 @@
{\pdfliteral{Q n}}
%D \macros
-%D {dosetupinteraction,
-%D dosetupopenaction,dosetupcloseaction}
+%D {dosetupinteraction}
%D
%D Nothing special is needed to enable \PDF\ commands and
%D interaction. We stick with a message.
@@ -558,9 +557,6 @@
\definespecial\dosetupinteraction
{\showmessage\m!interactions{21}{pdftex}}
-\definespecial\dosetupopenaction {\doPDFsetupopenaction}
-\definespecial\dosetupcloseaction{\doPDFsetupcloseaction}
-
%D \macros
%D {doresetgotowhereever,
%D dostartthisisrealpage,dostartthisislocation,
@@ -1156,7 +1152,8 @@
%D use feed this number to \type {pdftosrc} and filter the
%D file from the \PDF\ file.
-\let\PDFlaststreamobject\s!unknown
+\let\PDFlaststreamobject \s!unknown
+%def\PDFlaststreamreference{0 0 R}
\def\doPDFfilestreamobject class #1 name #2 file #3 source #4%
{\immediate\pdfobj stream file{#4}%
@@ -1165,9 +1162,12 @@
\doPDFdictionaryobject class {#1} name {#2} data
{/Type /Filespec /F (#3) /EF <</F \PDFlaststreamobject\space0 R>>}}
+\def\doPDFgetfilestreamreference#1#2%
+ {\doPDFgetobjectreference{PDFFS}{#1}#2}
+
\def\doPDFfilestreamidentifier#1%
{\doifsomething{#1}
- {\doPDFgetobjectreference{PDFFS}{#1}\PDFobjectreference
+ {\doPDFgetfilestreamreference{#1}\PDFobjectreference
\@EA\beforesplitstring\PDFobjectreference\at{ }\to\PDFlaststreamobject
\PDFlaststreamobject}}
diff --git a/tex/context/base/supp-box.tex b/tex/context/base/supp-box.tex
index 9a8e36874..b5e908c8e 100644
--- a/tex/context/base/supp-box.tex
+++ b/tex/context/base/supp-box.tex
@@ -852,12 +852,19 @@
%D of \type {\normalhbox}, since it manages the height and depth of
%D the line.
-\def\shapedhbox
- {\dowithnextbox
- {\nextboxht\zeropoint
- \nextboxdp\zeropoint
- \flushnextbox}
- \normalhbox}
+% \def\shapedhbox
+% {\dowithnextbox
+% {\nextboxht\zeropoint
+% \nextboxdp\zeropoint
+% \flushnextbox}
+% \normalhbox}
+
+\def\shapedhbox % lines with non strutted dimensions have
+ {\expanded{\dowithnextbox % interlineskip so if we want the original
+ {\nextboxht\the\ht\shapebox % spacing, we need to preserve the original
+ \nextboxdp\the\dp\shapebox % height and depth which is definitely
+ \noexpand\flushnextbox}} % needed if we apply struts to the 'new'
+ \normalhbox} % box or do something that changed ist size
%D \macros
%D {hyphenatedword,
@@ -1640,27 +1647,27 @@
\def\setvboxtohbox
{\bgroup
\ifdim\baselineskip<16pt \relax
- \dimen0\baselineskip
- \multiply\dimen0 1024
+ \scratchdimen\baselineskip
+ \multiply\scratchdimen 1024
\else
\message{cropping \baselineskip to 16pt}%
- \dimen0\maxdimen
+ \scratchdimen\maxdimen
\fi
- \divide\dimen0 \hsize
- \multiply\dimen0 64
- \xdef\normalvboxtohboxfactor{\expandafter\withoutpt\the\dimen0}%
+ \divide\scratchdimen \hsize
+ \multiply\scratchdimen 64
+ \xdef\normalvboxtohboxfactor{\withoutpt\the\scratchdimen}%
\egroup}
\def\startvboxtohbox
{\bgroup
\setvboxtohbox
- \setbox0\normalhbox\bgroup}
+ \setbox\scratchbox\normalhbox\bgroup}
\def\stopvboxtohbox
{\egroup
- \dp0=\zeropoint
- \ht0=\normalvboxtohboxfactor\wd0
- \box0
+ \dp\scratchbox\zeropoint
+ \ht\scratchbox\normalvboxtohboxfactor\wd\scratchbox
+ \box\scratchbox
\egroup}
% % to be done: start halfway a line combined with one line
@@ -1690,6 +1697,8 @@
% \box0
% \egroup}
+% todo: \scratchbox
+
\def\convertvboxtohbox
{\setvboxtohbox
\makehboxofhboxes
@@ -2500,7 +2509,7 @@
{\dorecurse5{\unskip\unkern\unpenalty}}
\def\removelastskip % \ifvmode the plain tex one \fi
- {\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi\fi}
+ {\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi}
%D \macros
%D {makestrutofbox}
@@ -2663,4 +2672,34 @@
\def\frozenhbox
{\hbox\bgroup\dowithnextbox{\hbox{\hbox{\flushnextbox}}\egroup}\hbox}
+%D \macros
+%D {setboxllx,setboxlly,gsetboxllx,gsetboxlly,getboxllx,getboxlly}
+%D
+%D A prelude to an extended \TEX:
+
+% it's about time to drop tex in favour of etex / TEX VERSION TO BE TESTED
+
+\beginTEX
+
+ \def\setboxllx #1#2{\bgroup\scratchdimen#2\expanded{\egroup\noexpand\setevalue{b@@x\number#1}{\the\scratchdimen}}}
+ \def\setboxlly #1#2{\bgroup\scratchdimen#2\expanded{\egroup\noexpand\setevalue{b@@y\number#1}{\the\scratchdimen}}}
+
+ \def\gsetboxllx#1#2{\bgroup\scratchdimen#2\setxvalue{b@@x\number#1}{\the\scratchdimen}\egroup}
+ \def\gsetboxlly#1#2{\bgroup\scratchdimen#2\setxvalue{b@@y\number#1}{\the\scratchdimen}\egroup}
+
+\endTEX
+
+\beginETEX
+
+ \def\setboxllx#1#2{\setevalue{b@@x\number#1}{\the\dimexpr(#2)}}
+ \def\setboxlly#1#2{\setevalue{b@@y\number#1}{\the\dimexpr(#2)}}
+
+ \def\gsetboxllx{\global\setboxllx}
+ \def\gsetboxlly{\global\setboxlly}
+
+\endETEX
+
+\def\getboxllx#1{\executeifdefined{b@@x\number#1}\zeropoint}
+\def\getboxlly#1{\executeifdefined{b@@y\number#1}\zeropoint}
+
\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/supp-emp.tex b/tex/context/base/supp-emp.tex
index 5d9a22e2a..fd9f473c9 100644
--- a/tex/context/base/supp-emp.tex
+++ b/tex/context/base/supp-emp.tex
@@ -8,46 +8,46 @@
%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.
-%M \input supp-emp
+%M \input supp-emp
%D When \THANH, the author of \PDFTEX, and I were exchanging
%D some emails on \PDFTEX\ functionality, positional
%D information popped up as potential extension. Actually, it
%D did not take that much time to cook up the basic
%D functionality and the author had implemented it before I
-%D could even start to think about real advanced applications.
-%D
+%D could even start to think about real advanced applications.
+%D
%D I'm sure that \TEX\ programmers can spend many days on how
%D and what kind of information is needed if you want to have
%D access to positions, but since high level macros will
%D probably be used anyway, even things like multiple reference
%D points have proved to be rather unimportant at the system
-%D level.
-%D
-%D Therefore, \PDFTEX\ provides just these three primitives:
-%D
+%D level.
+%D
+%D Therefore, \PDFTEX\ provides just these three primitives:
+%D
%D \starttabulatie[|l|l|]
%D \NC \type {\pdfsavepos} \NC marks the current position \NC \NR
%D \NC \type {\pdflastxpos} \NC the last marked horizontal position \NC \NR
%D \NC \type {\pdflastypos} \NC the last marked vertical position \NC \NR
%D \stoptabulatie
-%D
+%D
%D Based on these three primitives, very advanced systems can
%D be build, and for some time now, \CONTEXT\ has such a
%D system in its core. However, not everyone uses \CONTEXT, so
-%D we will demonstrate position tracking in generic applications.
-%D
+%D we will demonstrate position tracking in generic applications.
+%D
%D Because \PDFTEX\ produces its output directly, many of those
%D nice tricks provided by back||ends by means of \type
%D {\special} fail when producing \PDF\ code directly. Take for
%D instance \EMTEX\ specials. When someone sent me a mail
-%D asking if \PDFTEX\ did support those specials, the original
-%D answer was \citaat {no}, but in the last few years I have learned
-%D that you must never underestimate \TEX's capabilities.
-%D
+%D asking if \PDFTEX\ did support those specials, the original
+%D answer was \citaat {no}, but in the last few years I have learned
+%D that you must never underestimate \TEX's capabilities.
+%D
%D I must admit that I never use those specials myself, but
%D from the way they were used in the macros I was sent, I
%D learned that they depend on the back||end's capability to
@@ -56,20 +56,20 @@
%D positional information. So in order to use those specials,
%D you must be sure that they are supported by every driver you
%D use. However, the good news is that \PDFTEX\ does support
-%D position tracking, so here is our generic example.
-%D
+%D position tracking, so here is our generic example.
+%D
%D The two \EMTEX\ specials we need to implement are packaged
%D into the macros \type {\EMmoveto} and \type {\EMlineto},
-%D like:
-%D
+%D like:
+%D
%D \starttypen
%D \def\EMmoveto{\special{em:moveto}}
%D \def\EMlineto{\special{em:lineto}}
%D \stoptypen
-%D
+%D
%D They are used in macro packages to draw lines, and the
-%D results are often boxes with content like the following:
-%D
+%D results are often boxes with content like the following:
+%D
%D \startbuffer
%D \vbox to 2cm
%D {\offinterlineskip \EMmoveto
@@ -77,12 +77,12 @@
%D \vskip 2cm \EMlineto
%D \vskip-2cm \EMlineto}
%D \stopbuffer
-%D
+%D
%D \typebuffer
-%D
+%D
%D This box will contain a triangle, and when typeset, it should
-%D look like:
-%D
+%D look like:
+%D
%D \startregelcorrectie[blanko]
%D \haalbuffer
%D \stopregelcorrectie
@@ -94,7 +94,7 @@
%D Once they are known, we use them to draw a line and
%D afterwards we save these end coordinates as starting point
%D for the next line segment. So, at each point specified by
-%D \type {\EMlineto} we need to know the coordinates.
+%D \type {\EMlineto} we need to know the coordinates.
\def\EMmoveto
{\EMgetposition\EMlastmovex\EMlastmovey}
@@ -107,8 +107,8 @@
%D literal \PDF\ code into the text using \type {\pdfliteral}.
%D Here, the \type {m} means \citeer {moveto}, the \type {l}
%D means \citeer {lineto} and the \type {S} operator \citeer
-%D {strokes} (draws) the line. The macro \type {\EMlinewd}
-%D holds the linewidth in basepoints.
+%D {strokes} (draws) the line. The macro \type {\EMlinewd}
+%D holds the linewidth in basepoints.
\def\EMlinewd{.4}
@@ -124,8 +124,8 @@
\global\let\EMlastmovey\EMlastliney
\egroup}
-%D We need a fresh start, so we first set the current position
-%D to zero.
+%D We need a fresh start, so we first set the current position
+%D to zero.
\def\resetEMspecials
{\gdef\EMlastmovex{0}\gdef\EMlastmovey{0}}
@@ -134,8 +134,8 @@
%D current position is marked with \type {\pdfsavepos} and its
%D coordinates are written to a file whenever the page is
%D shipped out, since \type {\write} postpones its action
-%D until that moment. The file has entries like:
-%D
+%D until that moment. The file has entries like:
+%D
%D \starttypen
%D \EMsetpos 1 4661756 46651918
%D \EMsetpos 2 5000359 46990521
@@ -143,22 +143,22 @@
%D \EMsetpos 4 5338962 46990521
%D \EMsetpos 5 4661756 45974712
%D \stoptypen
-%D
-%D These lines are written with the command:
-%D
+%D
+%D These lines are written with the command:
+%D
%D \starttypen
%D \write\EMfile
%D {\EMsetpos\number\EMcounter
%D \space\number\pdflastxpos\space\number\pdflastypos}%
%D \stoptypen
-%D
+%D
%D In reality the argument to \type {\write} looks slightly
%D more complicated, because we have to make sure that the
%D number of the current position is frozen and \type
%D {\EMsetpos} is not expanded. We do so by explicitly
%D expanding the number beforehand and preventing expansion of
-%D \type {\EMsetpos}.
-
+%D \type {\EMsetpos}.
+
\def\EMgetposition#1#2%
{\bgroup
\pdfsavepos
@@ -171,17 +171,17 @@
\xdef#2{\the\count2}%
\egroup}
-%D The counter mentioned a few lines ago needs to be
-%D declared before it can be used.
+%D The counter mentioned a few lines ago needs to be
+%D declared before it can be used.
-\newcount\EMcounter
+\newcount\EMcounter
-%D We also need a dedicated file slot.
+%D We also need a dedicated file slot.
\newwrite\EMfile
-%D Before we open the file for writing, we read in the data
-%D written in the previous pass, but only if the file is
+%D Before we open the file for writing, we read in the data
+%D written in the previous pass, but only if the file is
%D present.
\def\EMfilename{\jobname.emp}
@@ -196,14 +196,14 @@
\def\stopEMspecials
{\closeout\EMfile}
-%D Just to be sure, we test if \type {\scratchread} is defined,
-%D and if not, we allocate a slot.
+%D Just to be sure, we test if \type {\scratchread} is defined,
+%D and if not, we allocate a slot.
\ifx\undefined\scratchread \newread\scratchread \fi
-%D This leaves us two commands. The \type {\EMsetpos} command
+%D This leaves us two commands. The \type {\EMsetpos} command
%D that ends up in the file stores each position in a macro.
-%D When this macro is expanded, it assigns the coordinates to
+%D When this macro is expanded, it assigns the coordinates to
%D two scratch counters.
\def\EMsetpos#1 #2 #3 % number x y
@@ -212,15 +212,15 @@
%D This position is recalled with its companion macro. First we
%D set the counters to zero. When the position is unknown,
%D nothing happens since the \type {\csname...} will expand to
-%D \type {\relax}.
+%D \type {\relax}.
\def\EMsetcounters%
- {\count0=0 \count2=0
+ {\count0=0 \count2=0
\csname EM:\the\EMcounter\endcsname}
%D These macros are rather independent of the macro package you
-%D use. For instance, in \CONTEXT\ the following works well:
-%D
+%D use. For instance, in \CONTEXT\ the following works well:
+%D
%D \startbuffer[pos-en]
%D \setuppositioning[unit=ex]
%D \startpositioning
@@ -229,7 +229,7 @@
%D \position(\recurselevel,0){\EMlineto}}
%D \stoppositioning
%D \stopbuffer
-%D
+%D
%D \startbuffer[pos-nl]
%D \stelpositionerenin[eenheid=ex]
%D \startpositioneren
@@ -238,42 +238,42 @@
%D \positioneer(\recurselevel,0){\EMlineto}}
%D \stoppositioneren
%D \stopbuffer
-%D
+%D
%D \typebuffer[pos-en]
-%D
-%D Here, we hook the \EMTEX\ macros into an existing text
+%D
+%D Here, we hook the \EMTEX\ macros into an existing text
%D positioning mechanism, which positions the commands
-%D using \TEX's skips and kerns.
-%D
+%D using \TEX's skips and kerns.
+%D
%D \startregelcorrectie[blanko]
%D \haalbuffer[pos-nl]
%D \stopregelcorrectie
-%D
+%D
%D Of course one should start and end the file with:
-%D
+%D
%D \starttypen
%D \startEMspecials
%D \stopEMspecials
-%D \stoptypen
-%D
-%D and, if needed, reset the begin position at each page using:
-%D
+%D \stoptypen
+%D
+%D and, if needed, reset the begin position at each page using:
+%D
%D \starttypen
-%D \resetEMspecials
+%D \resetEMspecials
%D \stoptypen
-\fi % end of non context part
+\fi % end of non context part
\ifx\dosetpositionpt\undefined \else % context part
-% \edef\EMlinewd{\expandafter\withoutpt\the\linewidth}
+% \edef\EMlinewd{\withoutpt\the\linewidth}
-%D A few pages ago, we mentioned that \CONTEXT\ has built||in
+%D A few pages ago, we mentioned that \CONTEXT\ has built||in
%D position tracking. This means that when we want to implement
%D this kind of trickery in this macro package, we can fall
%D back on existing functionality. In the following alternative
%D we will also use a few skips. This keeps the source readable
-%D and \CONTEXT\ has plenty of unused registers to accomodate
+%D and \CONTEXT\ has plenty of unused registers to accomodate
%D this strategy.
\newcount\EMcounter \def\EMvariable{EM:\the\EMcounter}
@@ -289,13 +289,13 @@
%D Watch how we reset the specials after a page is flushed. We
%D don't have to bother about files here, because saving and
%D recalling is already implemented. Although not needed, we
-%D define the start||stop macros, so that \CONTEXT\ users who
-%D key them in are not confronted with error messages.
+%D define the start||stop macros, so that \CONTEXT\ users who
+%D key them in are not confronted with error messages.
\let\startEMspecials\relax \let\stopEMspecials\relax
\def\EMgetposition#1#2%
- {\global\advance\EMcounter 1
+ {\global\advance\EMcounter 1
\setposition\EMvariable
\global#1=\POSx\EMvariable
\global#2=\POSy\EMvariable}
@@ -315,8 +315,8 @@
%D The command \type {\setposition} registers a position by
%D name (here \type {\EMvariable}), while \type {\POSx} and
-%D \type {\POSy} give you access to the coordinates.
-%D
+%D \type {\POSy} give you access to the coordinates.
+%D
%D These three commands are containes in a suite of low level
%D commands that can be used to register and get access to
%D positional information. The current mechanism is not yet
@@ -325,22 +325,22 @@
%D to the \METAPOST\ support already present in \CONTEXT.
%D Therefore, more advanced examples can be found in the
%D \METAFUN\ manual, since they fall beyond the scope of this
-%D module.
+%D module.
+
+\fi % end of context part
-\fi % end of context part
-
%D As a bonus, I will now provide a few macros that will make
%D this mechanism transparant to \DVI\ as well as \PDF\
-%D output. We will use \type {\pdfoutput} as trigger.
+%D output. We will use \type {\pdfoutput} as trigger.
-\ifx\pdfoutput\undefined \chardef\pdfoutput=0 \fi
+\ifx\pdfoutput\undefined \chardef\pdfoutput=0 \fi
%D We save some of the macros we defined previously:
\let\pdfEMmoveto\EMmoveto \let\pdfstartEMspecials\startEMspecials
\let\pdfEMlineto\EMlineto \let\pdfstopEMspecials \stopEMspecials
-%D We now redefine them to support \DVI\ and \PDF.
+%D We now redefine them to support \DVI\ and \PDF.
\def\EMmoveto{\ifcase\pdfoutput\special{em:moveto}\else\pdfEMmoveto\fi}
\def\EMlineto{\ifcase\pdfoutput\special{em:lineto}\else\pdfEMlineto\fi}
@@ -350,13 +350,13 @@
%D If there is any real demand for this in \CONTEXT, I will
%D hook these macros in the special drivers, so that their
-%D support becomes more natural.
-
+%D support becomes more natural.
+
%D You may want to change the default linewidth. The following
%D macro does the job. Beware of the fact that \type
-%D {\special}'s may interfere with the typesetting process.
+%D {\special}'s may interfere with the typesetting process.
%D
-%D \starttypen
+%D \starttypen
%D \setEMlinewidth{1pt}
%D \stoptypen
@@ -365,8 +365,8 @@
\dimen0=#1\relax
\count0=\dimen0
\divide\count0 65536
- \ifcase\pdfoutput
- \special{em:linewidth \the\dimen0}%
+ \ifcase\pdfoutput
+ \special{em:linewidth \the\dimen0}%
\fi
\xdef\EMlinewd{\the\count0}%
\egroup}
@@ -381,6 +381,6 @@
%D cleaner, but also faster. It was more out of curiosity than
%D out of need that we provided the \DVI\ methods as well.
%D Also, it is always good to have more roads to reach the same
-%D goal.
+%D goal.
-\endinput
+\endinput
diff --git a/tex/context/base/supp-lan.tex b/tex/context/base/supp-lan.tex
index 460cb02f1..31fe2f23f 100644
--- a/tex/context/base/supp-lan.tex
+++ b/tex/context/base/supp-lan.tex
@@ -1223,7 +1223,7 @@
% 2 => alles na
% 3 => alles voor
-\bgroup \catcode`\~=\active \catcode`\/=\active
+% \bgroup \catcode`\~=\active \catcode`\/=\active
% Why not convert to ascii first? I will redo this one!
@@ -1263,6 +1263,47 @@
%
% Better (a mere copy with \dohyphens):
+% \bgroup \catcode`\~=\active \catcode`\/=\active
+%
+% \unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
+% {\bgroup
+% \ifnum\hyphenpenalty<10000 \else
+% \def\discretionary##1##2##3{##1\allowbreak##2}%
+% \fi
+% \obeyhyphens
+% \def\splitbefore##1%
+% {\setbox\scratchbox=\hbox{##1{}{}}%
+% \ifcase\urlsplitmode
+% \box\scratchbox
+% \or
+% \postwordbreak\box\scratchbox\prewordbreak
+% \or
+% \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak
+% \else
+% \postwordbreak\box\scratchbox\prewordbreak
+% \fi}%
+% \def\splitafter##1%
+% {\ifcase\urlsplitmode
+% ##1{}{}%
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \else
+% \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak
+% \fi}%
+% \def\flushurl%
+% {\savedurl\let\savedurl\empty}%
+% \def\\%
+% {\spliturl\#}%
+% \let\~=\lettertilde\let~=\~%
+% \let\/=\letterslash\let/=\/%
+% \let\savedurl\empty
+% \handletokens#1\with\scanurl\savedurl
+% \egroup}
+%
+% \egroup
+
\bgroup \catcode`\~=\active \catcode`\/=\active
\unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
@@ -1299,6 +1340,7 @@
\let\~=\lettertilde\let~=\~%
\let\/=\letterslash\let/=\/%
\let\savedurl\empty
+ \scratchcounter\zerocount % used for hyphenmethod
\handletokens#1\with\scanurl\savedurl
\egroup}
@@ -1311,10 +1353,60 @@
%D \expandafter\handletokens\ascii\with\scanurl
%D \stoptypen
-\egroup
+% \def\scanurl#1%
+% {\ifx#1\~%
+% \flushurl\splitbefore\~%
+% \else\ifx#1\#%
+% \flushurl\splitbefore\#%
+% \else\ifx#1\&%
+% \flushurl\splitbefore\&%
+% \else\ifx#1\%%
+% \flushurl\splitbefore\%%
+% \else\ifx#1\_%
+% \flushurl\splitbefore\_%
+% \else\if\noexpand#1\relax
+% #1%
+% \else\ifnum\catcode`#1=8
+% \flushurl\splitbefore\_%
+% \else\ifnum\catcode`#1=6
+% \flushurl\splitbefore\#%
+% \else\ifnum\catcode`#1=4
+% \flushurl\splitbefore\&%
+% \else\if#1\lettertilde
+% \flushurl\splitbefore\~%
+% \else\if#1\letterpercent
+% \flushurl\splitbefore\%%
+% \else\if#1\letterunderscore
+% \flushurl\splitbefore\_%
+% \else\if#1\letterquestionmark
+% \flushurl\splitafter\letterquestionmark
+% \else\if#1\letterat
+% \flushurl\splitafter\letterat
+% \else\if#1\letterslash
+% \edef\savedurl{\savedurl\letterslash}%
+% \else\if#1+%
+% \flushurl\splitafter+%
+% \else\if#1:%
+% \flushurl\splitafter:%
+% \else\if#1.%
+% \flushurl\splitafter.%
+% \else\if#1(%
+% \flushurl\splitbefore(%
+% \else\if#1)%
+% \flushurl\splitafter)%
+% \else
+% \ifx\savedurl\empty\else
+% \splitbefore\savedurl
+% \let\savedurl\empty
+% \fi
+% #1%
+% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\chardef\urlhyphenmethod=0
\def\scanurl#1%
- {\ifx#1\~%
+ {\advance\scratchcounter\plusone
+ \ifx#1\~%
\flushurl\splitbefore\~%
\else\ifx#1\#%
\flushurl\splitbefore\#%
@@ -1359,9 +1451,26 @@
\splitbefore\savedurl
\let\savedurl\empty
\fi
- #1%
+ \ifcase\urlhyphenmethod
+ #1%
+ \else
+ \ifnum\scratchcounter>\plusthree % so, \http: will not break
+ \edef\savedurl{#1}%
+ \else
+ #1%
+ \fi
+ \fi
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+% \setupinteraction[state=start]
+% \def\gotoURL#1{\useURL[foo][#1]\goto{\url[foo]}[url(foo)]}
+% \starttext
+% \endgraf \chardef\urlhyphenmethod=0
+% \hsize1pt\gotoURL{http://www.physik.fu-berlin.de/SomeVeryVeryVeryLongDirectory/And/AQuiteLongFileName.html}
+% \endgraf \chardef\urlhyphenmethod=1
+% \hsize1pt\gotoURL{http://www.physik.fu-berlin.de/SomeVeryVeryVeryLongDirectory/And/AQuiteLongFileName.html}
+% \stoptext
+
%D When Joop Susan asked (on the \CONTEXT\ mailing list) how
%D to handle url's passed as argument, the following solutions
%D came to my mind:
diff --git a/tex/context/base/supp-mis.tex b/tex/context/base/supp-mis.tex
index 53988892c..2462140ba 100644
--- a/tex/context/base/supp-mis.tex
+++ b/tex/context/base/supp-mis.tex
@@ -22,7 +22,7 @@
%D Because \LATEX\ has no safe package loading mechanism, we
%D need to take care of possible interference.
-\def\StartLatexHack%
+\def\StartLatexHack
{\edef\StopLatexHack
{\catcode`\noexpand/=\the\catcode`/
\catcode`\noexpand:=\the\catcode`:
@@ -53,16 +53,16 @@
%D Furthermore nested \type{\if}'s can get us into
%D trouble.
-\def\definecontextobject%
+\def\definecontextobject
{\iftrue}
-\def\gobblecontextobject%
- {\setbox0=\hbox
+\def\gobblecontextobject
+ {\setbox0\hbox
\bgroup
\long\def\gobblecontextobject##1\fi{\egroup}%
\expandafter\gobblecontextobject\string}
-\long\def\ifnocontextobject#1\do%
+\long\def\ifnocontextobject#1\do
{\ifx#1\undefined
\expandafter\definecontextobject
\else
@@ -115,11 +115,11 @@
\ifnocontextobject \unprotect \do
- \def\unprotect%
+ \def\unprotect
{\advance\protectiondepth 1
\ifnum\protectiondepth=1
\let\normalprotect=\protect
- \def\protect%
+ \def\protect
{\ifnum\protectiondepth>0
\advance\protectiondepth -1
\ifnum\protectiondepth=0
@@ -127,7 +127,7 @@
\let\protect=\normalprotect
\fi
\fi}
- \edef\doprotect%
+ \edef\doprotect
{\catcode`\noexpand @=\the\catcode`@\relax
\catcode`\noexpand !=\the\catcode`!\relax
\catcode`\noexpand ?=\the\catcode`?\relax}
@@ -151,6 +151,25 @@
%D undefined. This way we can't mess up other macro packages,
%D but of course previous definitions can mess up our modules.
+\ifnocontextobject \donetrue \do \newif\ifdone \fi
+
+% no time now, will do a better test later (based on dimendef)
+
+\def\!!stringa{plain} \ifx\!!stringa\fmtname \donetrue \else
+\def\!!stringa{babel-plain} \ifx\!!stringa\fmtname \donetrue \else
+ \donefalse \fi \fi
+
+\ifdone
+ % plain defines some 15 dimens, so we need to define a few
+ % dummies in order to get out of the scratch area
+ \newdimen\scratchdimen % 16
+ \newdimen\scratchdimen % 17
+ \newdimen\scratchdimen % 18
+ \newdimen\scratchdimen % 19
+ \newdimen\scratchdimen % 20
+ \newdimen\scratchdimen % 21
+\fi
+
\ifnocontextobject \scratchcounter \do \newcount \scratchcounter \fi
\ifnocontextobject \scratchtoks \do \newtoks \scratchtoks \fi
\ifnocontextobject \scratchdimen \do \newdimen \scratchdimen \fi
@@ -179,7 +198,6 @@
\ifnocontextobject \nextdepth \do \newdimen \nextdepth \fi
\ifnocontextobject \CONTEXTtrue \do \newif\ifCONTEXT \fi
-\ifnocontextobject \donetrue \do \newif\ifdone \fi
\ifnocontextobject \eightbitcharacterstrue \do \newif\ifeightbitcharacters \fi
\ifnocontextobject \MPdrawingdonetrue \do \newif\ifMPdrawingdone \fi
@@ -458,7 +476,7 @@
\ifnocontextobject \uncatcodespecials \do
- \def\uncatcodespecials%
+ \def\uncatcodespecials
{\def\do##1{\catcode`##1=12 }\dospecials
\catcode`\ =\@@space
\catcode`\^^L=\@@ignore
@@ -469,7 +487,7 @@
\ifnocontextobject \setnaturalcatcodes \do
-\def\setnaturalcatcodes%
+\def\setnaturalcatcodes
{\catcode`\!=\@@other \catcode`\?=\@@other \catcode`\@=\@@other
\catcode`\#=\@@other \catcode`\&=\@@other \catcode`\|=\@@other
\catcode`\$=\@@other \catcode`\^=\@@other \catcode`\_=\@@other
@@ -538,10 +556,10 @@
\def\dorecurse#1%
{\dostepwiserecurse{1}{#1}{1}}
-\def\doloop%
+\def\doloop
{\dostepwiserecurse{1}{\maxdimen}{1}}
-\def\exitloop%
+\def\exitloop
{\recursecounter=\maxdimen}
%D \macros
@@ -620,13 +638,13 @@
\ifnocontextobject \dohandletokens \do
-\def\dodohandletokens%
+\def\dodohandletokens
{\ifx\next\end \else
\docommando{\next}%
\expandafter\dohandletokens
\fi}
-\def\dohandletokens%
+\def\dohandletokens
{\afterassignment\dodohandletokens\let\next= }
\long\def\handletokens#1\with#2%
@@ -675,4 +693,4 @@
%D That's it. Please forget this junk and take a look at how
%D it should be done.
-\StopLatexHack \protect \endinput
+\StopLatexHack \protect \endinput \ No newline at end of file
diff --git a/tex/context/base/supp-mpe.tex b/tex/context/base/supp-mpe.tex
index a964b450e..0285b9e82 100644
--- a/tex/context/base/supp-mpe.tex
+++ b/tex/context/base/supp-mpe.tex
@@ -913,6 +913,7 @@
\defineMPspecial{50} % x y width height label
{\bgroup
\scratchdimen\MPllx\s!bp \scratchdimen-\scratchdimen
+ % \scratchdimen-\MPllx\s!bp % moet ook werken
\advance\scratchdimen\gMPs1\s!bp
\edef\x{\number\scratchdimen}%
\scratchdimen\gMPs2\s!bp \scratchdimen-\scratchdimen
@@ -1267,4 +1268,4 @@
\fi
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/supp-mps.tex b/tex/context/base/supp-mps.tex
index ca56f6eaf..91b6a9e03 100644
--- a/tex/context/base/supp-mps.tex
+++ b/tex/context/base/supp-mps.tex
@@ -1351,9 +1351,9 @@
\immediate\write\scratchwrite
{\@@cl@@s \space setgray #4}%
\else
- \dimen0=1\s!pt \advance\dimen0 -#1\s!pt
- \dimen2=1\s!pt \advance\dimen2 -#2\s!pt
- \dimen4=1\s!pt \advance\dimen4 -#3\s!pt
+ \dimen0=\onepoint \advance\dimen0 -#1\points
+ \dimen2=\onepoint \advance\dimen2 -#2\points
+ \dimen4=\onepoint \advance\dimen4 -#3\points
\ifreduceMPcolors
\dimen6\dimen0
\ifdim\dimen2<\dimen6 \dimen6\dimen2 \fi
@@ -1365,10 +1365,10 @@
\dimen6\zeropoint
\fi
\immediate\write\scratchwrite
- {\withoutpt{\the\dimen0} \space
- \withoutpt{\the\dimen2} \space
- \withoutpt{\the\dimen4} \space
- \withoutpt{\the\dimen6} \space setcmykcolor #4}%
+ {\withoutpt\the\dimen0 \space
+ \withoutpt\the\dimen2 \space
+ \withoutpt\the\dimen4 \space
+ \withoutpt\the\dimen6 \space setcmykcolor #4}%
\fi
\fi
\egroup
diff --git a/tex/context/base/supp-pdf.tex b/tex/context/base/supp-pdf.tex
index 7775842c2..52df7a63c 100644
--- a/tex/context/base/supp-pdf.tex
+++ b/tex/context/base/supp-pdf.tex
@@ -220,8 +220,8 @@
\global\let\PDFyoffset\PDFyoffset}
\def\setPDFmediabox#1[#2 #3 #4 #5]#6\done
- {\dimen2=#2bp\dimen2=-\dimen2
- \dimen4=#3bp\dimen4=-\dimen4
+ {\dimen2=#2bp\dimen2=-\dimen2 % \dimen2=-#2bp also works since tex handles --
+ \dimen4=#3bp\dimen4=-\dimen4 % \dimen4=-#3bp also works since tex handles --
\dimen6=#4bp\advance\dimen6 \dimen2
\dimen8=#5bp\advance\dimen8 \dimen4
\setPDFboundingbox{\dimen2}{\dimen4}{\dimen6}{\dimen8}\PDFxscale\PDFyscale}
@@ -328,7 +328,7 @@
\def\PDFxscale{1}%
\def\PDFyscale{1}%
\uncatcodespecials
- \endlinechar=-1
+ \endlinechar\minusone
\def\checkPDFtypepage##1/Type /Page##2##3\done%
{\ifx##2\relax
\else\if##2s% accept /Page and /Pages
@@ -482,17 +482,17 @@
\def\@@MP{@@MP}
\def\setMPargument% #1%
- {\advance\nofMParguments 1
+ {\advance\nofMParguments \plusone
\expandafter\def
\csname\@@MP\the\nofMPsegments\the\nofMParguments\endcsname} % {#1}
\def\letMPargument
- {\advance\nofMParguments 1
+ {\advance\nofMParguments \plusone
\expandafter\let
\csname\@@MP\the\nofMPsegments\the\nofMParguments\endcsname}
\def\setMPsequence#1 %
- {\advance\nofMParguments 1
+ {\advance\nofMParguments \plusone
\expandafter\def
\csname\@@MP\the\nofMPsegments\the\nofMParguments\endcsname{#1}%
\handleMPsequence}
@@ -508,8 +508,8 @@
\def\setMPkeyword#1 %
{\expandafter\def\csname\@@MP\the\nofMPsegments0\endcsname{#1}%
- \advance\nofMPsegments1
- \nofMParguments0 }
+ \advance\nofMPsegments \plusone
+ \nofMParguments\zerocount}
\def\getMPkeyword#1%
{\csname\@@MP#10\endcsname}
@@ -799,8 +799,8 @@
\xdef\MPurx{#4}\xdef\MPury{#5}%
\dimen0=#2pt\dimen0=-\MPxscale\dimen0
\dimen2=#3pt\dimen2=-\MPyscale\dimen2
- \xdef\MPxoffset{\withoutpt{\the\dimen0}}%
- \xdef\MPyoffset{\withoutpt{\the\dimen2}}%
+ \xdef\MPxoffset{\withoutpt\the\dimen0}%
+ \xdef\MPyoffset{\withoutpt\the\dimen2}%
\dimen0=#2bp\dimen0=-\dimen0
\dimen2=#3bp\dimen2=-\dimen2
\advance\dimen0 #4bp
@@ -810,7 +810,7 @@
\xdef\MPyshift{\the\dimen2}% unscaled
\dimen2=\MPyscale\dimen2
\xdef\MPheight{\the\dimen2}%
- \chardef\currentMPboundingbox=#1\relax
+ \chardef\currentMPboundingbox#1\relax
\fi
\doresetMPstack
\let\handleMPsequence\dohandleMPsequence
@@ -873,31 +873,31 @@
{\obeyMPspecials
\edef\size{\gMPa\nofMParguments}%
\ifx\size\PSnfont % round font size (to pt)
- \advance\nofMParguments -1
- \expandafter\scratchdimen\gMPa\nofMParguments pt\relax
- \ifdim\scratchdimen<1pt
+ \advance\nofMParguments \minusone
+ \expandafter\scratchdimen\gMPa\nofMParguments\onepoint\relax
+ \ifdim\scratchdimen<\onepoint
\def\size{1pt}%
\else
- \advance\scratchdimen .5pt
+ \advance\scratchdimen .5\onepoint
\def\size##1.##2\relax{\def\size{##1pt}}%
\expandafter\size\the\scratchdimen\relax
\fi
\else
\edef\size{\size bp}%
\fi
- \advance\nofMParguments -1
+ \advance\nofMParguments \minusone
%\font\temp=\gMPa\nofMParguments\space at \size
\let\temp\relax % to be sure
\setMPfshowfont{\gMPa\nofMParguments}\size
- \advance\nofMParguments -1
+ \advance\nofMParguments \minusone
\temp
\MPfshowcommand
- {\ifnum\nofMParguments=1
+ {\ifnum\nofMParguments=\plusone
\def\do(##1){##1}%
\dogMPa1%
\else
% we need to catch ( a ) (a a a) (\123 \123 \123) etc
- \scratchcounter=1
+ \scratchcounter\plusone
\def\dodo##1% Andreas Fieger's bug: (\304...)
{\edef\!!stringa{##1\empty\empty}% and another one: ( 11) -> \ifx 11
\ifx\!!stringa\MPspacechar\MPspacechar\else\expandafter##1\fi}%
@@ -905,7 +905,7 @@
\dogMPa\scratchcounter\MPspacechar
\let\do\relax
\loop
- \advance\scratchcounter 1
+ \advance\scratchcounter \plusone
\ifnum\scratchcounter<\nofMParguments\relax
\gMPa\scratchcounter\MPspacechar
\repeat
@@ -1156,18 +1156,18 @@
{\multiply\dimen#1 \MPconcatfactor\relax}
\def\presetMPconcat
- {\dimen 0=\gMPs1 pt \doMPreducedimen 0 % r_x
- \dimen 2=\gMPs2 pt \doMPreducedimen 2 % s_x
- \dimen 4=\gMPs3 pt \doMPreducedimen 4 % s_y
- \dimen 6=\gMPs4 pt \doMPreducedimen 6 % r_y
- \dimen 8=\gMPs5 pt \doMPreducedimen 8 % t_x
- \dimen10=\gMPs6 pt \doMPreducedimen10 } % t_y
+ {\dimen 0=\gMPs1 \onepoint \doMPreducedimen 0 % r_x
+ \dimen 2=\gMPs2 \onepoint \doMPreducedimen 2 % s_x
+ \dimen 4=\gMPs3 \onepoint \doMPreducedimen 4 % s_y
+ \dimen 6=\gMPs4 \onepoint \doMPreducedimen 6 % r_y
+ \dimen 8=\gMPs5 \onepoint \doMPreducedimen 8 % t_x
+ \dimen10=\gMPs6 \onepoint \doMPreducedimen10 } % t_y
\def\presetMPscale
- {\dimen 0=\gMPs1 pt \doMPreducedimen 0
+ {\dimen 0=\gMPs1 \onepoint \doMPreducedimen 0
\dimen 2=\zeropoint
\dimen 4=\zeropoint
- \dimen 6=\gMPs2 pt \doMPreducedimen 6
+ \dimen 6=\gMPs2 \onepoint \doMPreducedimen 6
\dimen 8=\zeropoint
\dimen10=\zeropoint}
@@ -1212,8 +1212,8 @@
%D \divide \dimen18 \dimen16 \doMPexpanddimen18
%D \divide \dimen12 \dimen16 \doMPexpanddimen12
%D %
-%D \edef#2{\withoutpt{\the\dimen18}}% % p_x^\prime
-%D \edef#4{\withoutpt{\the\dimen12}}} % p_y^\prime
+%D \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+%D \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
%D \stoptypen
%D The following optimization resulted from some tests by
@@ -1264,8 +1264,8 @@
%D \fi
%D \fi
%D %
-%D \edef#2{\withoutpt{\the\dimen18}}% % p_x^\prime
-%D \edef#4{\withoutpt{\the\dimen12}}} % p_y^\prime
+%D \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+%D \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
%D \stoptypen
%D
%D But, this one is still too inaccurate, so we now have:
@@ -1325,8 +1325,8 @@
% \divide\dimen18 \MPfactor
% \divide\dimen12 \MPfactor
% %
-% \edef#2{\withoutpt{\the\dimen18}}% % p_x^\prime
-% \edef#4{\withoutpt{\the\dimen12}}} % p_y^\prime
+% \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+% \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
%D We cannot use \type {\beginETEX} here since in plain we
%D get \type {\outer} problems, sigh.
@@ -1405,8 +1405,8 @@
\multiply \dimen20 \dimen10
\advance \dimen12 -\dimen20
%
- \ifdim\dimen16=1pt \else
- \ifdim\dimen16>\MPconcatfactor pt
+ \ifdim\dimen16=\onepoint \else
+ \ifdim\dimen16>\MPconcatfactor \onepoint \relax
\doMPreducedimen16
\divide \dimen18 \dimen16 \doMPexpanddimen18
\divide \dimen12 \dimen16 \doMPexpanddimen12
@@ -1419,8 +1419,8 @@
\divide\dimen18 \MPfactor
\divide\dimen12 \MPfactor
%
- \edef#2{\withoutpt{\the\dimen18}}% % p_x^\prime
- \edef#4{\withoutpt{\the\dimen12}}} % p_y^\prime
+ \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+ \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
%D The following explanation of the conversion process was
%D posted to the \PDFTEX\ mailing list by Tanmoy. The original
@@ -1902,7 +1902,7 @@
\or
\scratchdimen\PDFMPformoffset\relax
\ifdim\scratchdimen>\zeropoint % compensate for error
- \setbox\scratchbox=\vbox spread 2\scratchdimen
+ \setbox\scratchbox\vbox spread 2\scratchdimen
{\forgetall
\vss
\hbox spread 2\scratchdimen
diff --git a/tex/context/base/symb-nav.tex b/tex/context/base/symb-nav.tex
index 20cb2d5d6..161fa5dad 100644
--- a/tex/context/base/symb-nav.tex
+++ b/tex/context/base/symb-nav.tex
@@ -8,108 +8,112 @@
%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.
\unprotect
\definefontsynonym [ContextNavigation] [contnav]
\loadmapfile [original-context-symbol.map]
-
+
% \def\ContextNavigationGlyph#1{\getglyph{ContextNavigation}{\char#1}}
\def\ContextNavigationGlyph#1{\getrawglyph{contnav}{\char#1}}
\startsymbolset [navigation 1]
- \definesymbol [\v!vorigepagina] [\ContextNavigationGlyph{1}]
- \definesymbol [\v!volgendepagina] [\ContextNavigationGlyph{2}]
- \definesymbol [\v!eerstepagina] [\ContextNavigationGlyph{3}]
- \definesymbol [\v!laatstepagina] [\ContextNavigationGlyph{4}]
+ \definesymbol [\v!vorigepagina] [\ContextNavigationGlyph{1}]
+ \definesymbol [\v!volgendepagina] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!eerstepagina] [\ContextNavigationGlyph{3}]
+ \definesymbol [\v!laatstepagina] [\ContextNavigationGlyph{4}]
- \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{5}]
- \definesymbol [\v!NextJump] [\ContextNavigationGlyph{6}]
+ \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{5}]
+ \definesymbol [\v!NextJump] [\ContextNavigationGlyph{6}]
- \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{7}]
+ \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{7}]
- \definesymbol [\v!vorigesubpagina] [\ContextNavigationGlyph{1}]
- \definesymbol [\v!volgendesubpagina] [\ContextNavigationGlyph{2}]
- \definesymbol [\v!eerstesubpagina] [\ContextNavigationGlyph{3}]
- \definesymbol [\v!laatstesubpagina] [\ContextNavigationGlyph{4}]
+ \definesymbol [\v!vorigesubpagina] [\ContextNavigationGlyph{1}]
+ \definesymbol [\v!volgendesubpagina] [\ContextNavigationGlyph{2}]
+ \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}]
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{8}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{7}]
- \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{2}]
- \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{8}]
- \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{7}]
+ \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{8}]
+ \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{7}]
- \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{2}]
- \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{8}]
- \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{7}]
+ \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{8}]
+ \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{7}]
+ \definesymbol [\v!ResumeRendering] [\ContextNavigationGlyph{2}]
-\stopsymbolset
+\stopsymbolset
\startsymbolset [navigation 2]
- \definesymbol [\v!vorigepagina] [\ContextNavigationGlyph{101}]
- \definesymbol [\v!volgendepagina] [\ContextNavigationGlyph{102}]
- \definesymbol [\v!eerstepagina] [\ContextNavigationGlyph{103}]
- \definesymbol [\v!laatstepagina] [\ContextNavigationGlyph{104}]
+ \definesymbol [\v!vorigepagina] [\ContextNavigationGlyph{101}]
+ \definesymbol [\v!volgendepagina] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!eerstepagina] [\ContextNavigationGlyph{103}]
+ \definesymbol [\v!laatstepagina] [\ContextNavigationGlyph{104}]
+
+ \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{105}]
+ \definesymbol [\v!NextJump] [\ContextNavigationGlyph{106}]
- \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{105}]
- \definesymbol [\v!NextJump] [\ContextNavigationGlyph{106}]
+ \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{107}]
- \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{107}]
+ \definesymbol [\v!vorigesubpagina] [\ContextNavigationGlyph{101}]
+ \definesymbol [\v!volgendesubpagina] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!eerstesubpagina] [\ContextNavigationGlyph{103}]
+ \definesymbol [\v!laatstesubpagina] [\ContextNavigationGlyph{104}]
- \definesymbol [\v!vorigesubpagina] [\ContextNavigationGlyph{101}]
- \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}]
- \definesymbol [\v!StartSound] [\ContextNavigationGlyph{102}]
- \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{108}]
- \definesymbol [\v!StopSound] [\ContextNavigationGlyph{107}]
+ \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{108}]
+ \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{107}]
- \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{102}]
- \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{108}]
- \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{107}]
+ \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{108}]
+ \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{107}]
+ \definesymbol [\v!ResumeRendering] [\ContextNavigationGlyph{102}]
- \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{102}]
- \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{108}]
- \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{107}]
\stopsymbolset
\startsymbolset [navigation 3]
- \definesymbol [\v!vorigepagina] [\ContextNavigationGlyph{201}]
- \definesymbol [\v!volgendepagina] [\ContextNavigationGlyph{202}]
- \definesymbol [\v!eerstepagina] [\ContextNavigationGlyph{203}]
- \definesymbol [\v!laatstepagina] [\ContextNavigationGlyph{204}]
+ \definesymbol [\v!vorigepagina] [\ContextNavigationGlyph{201}]
+ \definesymbol [\v!volgendepagina] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!eerstepagina] [\ContextNavigationGlyph{203}]
+ \definesymbol [\v!laatstepagina] [\ContextNavigationGlyph{204}]
- \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{205}]
- \definesymbol [\v!NextJump] [\ContextNavigationGlyph{206}]
+ \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{205}]
+ \definesymbol [\v!NextJump] [\ContextNavigationGlyph{206}]
- \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{207}]
+ \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{207}]
- \definesymbol [\v!vorigesubpagina] [\ContextNavigationGlyph{201}]
- \definesymbol [\v!volgendesubpagina] [\ContextNavigationGlyph{202}]
- \definesymbol [\v!eerstesubpagina] [\ContextNavigationGlyph{203}]
- \definesymbol [\v!laatstesubpagina] [\ContextNavigationGlyph{204}]
+ \definesymbol [\v!vorigesubpagina] [\ContextNavigationGlyph{201}]
+ \definesymbol [\v!volgendesubpagina] [\ContextNavigationGlyph{202}]
+ \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}]
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{208}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{207}]
- \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{202}]
- \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{208}]
- \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{207}]
+ \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{208}]
+ \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{207}]
- \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{202}]
- \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{208}]
- \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{207}]
+ \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{208}]
+ \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{207}]
+ \definesymbol [\v!ResumeRendering] [\ContextNavigationGlyph{202}]
\stopsymbolset
@@ -117,4 +121,4 @@
%D \showsymbolset[navigation 2]
%D \showsymbolset[navigation 3]
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/syst-con.tex b/tex/context/base/syst-con.tex
index b69adcf66..0ce6ea579 100644
--- a/tex/context/base/syst-con.tex
+++ b/tex/context/base/syst-con.tex
@@ -1,6 +1,6 @@
-%D \module
+%D \module
%D [ file=syst-con,
-%D version=2000.12.10, % actually very old -)
+%D version=2000.12.10, % actually very old -)
%D title=\CONTEXT\ System Macros,
%D subtitle=Conversions,
%D author=Hans Hagen,
@@ -8,29 +8,29 @@
%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.
\writestatus{loading}{Context System Macro's / Conversions}
\unprotect
%D When the number of conversions grew, it did no longer make
-%D sense to spread them over multiple files. So, instead of
-%D defining these in \type {font-ini}, we now have a dedicated
-%D module.
+%D sense to spread them over multiple files. So, instead of
+%D defining these in \type {font-ini}, we now have a dedicated
+%D module.
-%D \macros
+%D \macros
%D {lchexnumber,uchexnumber,lchexnumbers,uchexnumbers}
%D
-%D In addition to the uppercase hex conversion, as needed in
-%D math families, we occasionally need a lowercase one, for
+%D In addition to the uppercase hex conversion, as needed in
+%D math families, we occasionally need a lowercase one, for
%D instance when we want to compose gbsong fontnames.
%D
-%D The ugly indirectness is needed to get rid of \TEX\
-%D induced spaces and \type {\relax}'s.
-%D
-%D \starttypen
+%D The ugly indirectness is needed to get rid of \TEX\
+%D induced spaces and \type {\relax}'s.
+%D
+%D \starttypen
%D [\uchexnumber{0}]
%D [\uchexnumber\scratchcounter]
%D [\uchexnumber\zerocount]
@@ -53,7 +53,7 @@
{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
8\or 9\or a\or b\or c\or d\or e\or f\else 0\fi}
-\def\uchexnumber#1%
+\def\uchexnumber#1%
{\@EA\douchexnumber\number#1\relax}
\def\douchexnumber#1\relax % \def\uchexnumber#1%
@@ -84,7 +84,7 @@
e0\or e1\or e2\or e3\or e4\or e5\or e6\or e7\or e8\or e9\or ea\or eb\or ec\or ed\or ee\or ef\or
f0\or f1\or f2\or f3\or f4\or f5\or f6\or f7\or f8\or f9\or fa\or fb\or fc\or fd\or fe\or ff\fi}
-\def\uchexnumbers#1%
+\def\uchexnumbers#1%
{\@EA\douchexnumbers\number#1\relax}
\def\douchexnumbers#1\relax % \def\uchexnumbers#1%
@@ -106,61 +106,61 @@
E0\or E1\or E2\or E3\or E4\or E5\or E6\or E7\or E8\or E9\or EA\or EB\or EC\or ED\or EE\or EF\or
F0\or F1\or F2\or F3\or F4\or F5\or F6\or F7\or F8\or F9\or FA\or FB\or FC\or FD\or FE\or FF\fi}
-%D \macros
+%D \macros
%D {octnumber}
%D
-%D For unicode remapping purposes, we need octal numbers.
+%D For unicode remapping purposes, we need octal numbers.
\def\octnumber#1%
{\@EA\dooctnumber\number#1\relax}
\def\dooctnumber#1\relax % \def\octnumber#1%
{\ifcase#1
- 000\or 001\or 002\or 003\or 004\or 005\or 006\or 007\or
- 010\or 011\or 012\or 013\or 014\or 015\or 016\or 017\or
- 020\or 021\or 022\or 023\or 024\or 025\or 026\or 027\or
- 030\or 031\or 032\or 033\or 034\or 035\or 036\or 037\or
- 040\or 041\or 042\or 043\or 044\or 045\or 046\or 047\or
- 050\or 051\or 052\or 053\or 054\or 055\or 056\or 057\or
- 060\or 061\or 062\or 063\or 064\or 065\or 066\or 067\or
- 070\or 071\or 072\or 073\or 074\or 075\or 076\or 077\or
+ 000\or 001\or 002\or 003\or 004\or 005\or 006\or 007\or
+ 010\or 011\or 012\or 013\or 014\or 015\or 016\or 017\or
+ 020\or 021\or 022\or 023\or 024\or 025\or 026\or 027\or
+ 030\or 031\or 032\or 033\or 034\or 035\or 036\or 037\or
+ 040\or 041\or 042\or 043\or 044\or 045\or 046\or 047\or
+ 050\or 051\or 052\or 053\or 054\or 055\or 056\or 057\or
+ 060\or 061\or 062\or 063\or 064\or 065\or 066\or 067\or
+ 070\or 071\or 072\or 073\or 074\or 075\or 076\or 077\or
100\or 101\or 102\or 103\or 104\or 105\or 106\or 107\or
- 110\or 111\or 112\or 113\or 114\or 115\or 116\or 117\or
- 120\or 121\or 122\or 123\or 124\or 125\or 126\or 127\or
- 130\or 131\or 132\or 133\or 134\or 135\or 136\or 137\or
- 140\or 141\or 142\or 143\or 144\or 145\or 146\or 147\or
- 150\or 151\or 152\or 153\or 154\or 155\or 156\or 157\or
- 160\or 161\or 162\or 163\or 164\or 165\or 166\or 167\or
+ 110\or 111\or 112\or 113\or 114\or 115\or 116\or 117\or
+ 120\or 121\or 122\or 123\or 124\or 125\or 126\or 127\or
+ 130\or 131\or 132\or 133\or 134\or 135\or 136\or 137\or
+ 140\or 141\or 142\or 143\or 144\or 145\or 146\or 147\or
+ 150\or 151\or 152\or 153\or 154\or 155\or 156\or 157\or
+ 160\or 161\or 162\or 163\or 164\or 165\or 166\or 167\or
170\or 171\or 172\or 173\or 174\or 175\or 176\or 177\or
- 200\or 201\or 202\or 203\or 204\or 205\or 206\or 207\or
- 210\or 211\or 212\or 213\or 214\or 215\or 216\or 217\or
- 220\or 221\or 222\or 223\or 224\or 225\or 226\or 227\or
- 230\or 231\or 232\or 233\or 234\or 235\or 236\or 237\or
- 240\or 241\or 242\or 243\or 244\or 245\or 246\or 247\or
- 250\or 251\or 252\or 253\or 254\or 255\or 256\or 257\or
- 260\or 261\or 262\or 263\or 264\or 265\or 266\or 267\or
- 270\or 271\or 272\or 273\or 274\or 275\or 276\or 277\or
- 300\or 301\or 302\or 303\or 304\or 305\or 306\or 307\or
- 310\or 311\or 312\or 313\or 314\or 315\or 316\or 317\or
- 320\or 321\or 322\or 323\or 324\or 325\or 326\or 327\or
- 330\or 331\or 332\or 333\or 334\or 335\or 336\or 337\or
- 340\or 341\or 342\or 343\or 344\or 345\or 346\or 347\or
- 350\or 351\or 352\or 353\or 354\or 355\or 356\or 357\or
- 360\or 361\or 362\or 363\or 364\or 365\or 366\or 367\or
+ 200\or 201\or 202\or 203\or 204\or 205\or 206\or 207\or
+ 210\or 211\or 212\or 213\or 214\or 215\or 216\or 217\or
+ 220\or 221\or 222\or 223\or 224\or 225\or 226\or 227\or
+ 230\or 231\or 232\or 233\or 234\or 235\or 236\or 237\or
+ 240\or 241\or 242\or 243\or 244\or 245\or 246\or 247\or
+ 250\or 251\or 252\or 253\or 254\or 255\or 256\or 257\or
+ 260\or 261\or 262\or 263\or 264\or 265\or 266\or 267\or
+ 270\or 271\or 272\or 273\or 274\or 275\or 276\or 277\or
+ 300\or 301\or 302\or 303\or 304\or 305\or 306\or 307\or
+ 310\or 311\or 312\or 313\or 314\or 315\or 316\or 317\or
+ 320\or 321\or 322\or 323\or 324\or 325\or 326\or 327\or
+ 330\or 331\or 332\or 333\or 334\or 335\or 336\or 337\or
+ 340\or 341\or 342\or 343\or 344\or 345\or 346\or 347\or
+ 350\or 351\or 352\or 353\or 354\or 355\or 356\or 357\or
+ 360\or 361\or 362\or 363\or 364\or 365\or 366\or 367\or
370\or 371\or 372\or 373\or 374\or 375\or 376\or 377\fi}
%D \macros
%D {rawcharacter}
%D
%D This conversion macro produces raw characters. We have to
-%D construct the macro in a special way to avoid problems with
-%D characters with special meanings. So, we revert to the
+%D construct the macro in a special way to avoid problems with
+%D characters with special meanings. So, we revert to the
%D lowercase conversion trick to bypass \TEX's input parser.
\bgroup
-\catcode`\^^@=12 % ascii null == ignored in plain
-\catcode`\^^?=12 % ascii delete == invalid in plain
+\catcode`\^^@=12 % ascii null == ignored in plain
+\catcode`\^^?=12 % ascii delete == invalid in plain
\let\or\relax
@@ -175,4 +175,4 @@
\egroup
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex
index 2550ffc53..2f99824f1 100644
--- a/tex/context/base/syst-ext.tex
+++ b/tex/context/base/syst-ext.tex
@@ -2714,8 +2714,8 @@
\def\withoutunit#1#2%
{\begingroup
- \dimen0=#1\relax
- \@EA\convertargument\the\dimen0\to\asciiA
+ \scratchdimen#1\relax
+ \@EA\convertargument\the\scratchdimen\to\asciiA
\@EA\convertargument#2\to\asciiB
%\@EA\@EA\@EA\beforesplitstring\@EA\asciiA\@EA\at\asciiB\to\!!stringa
\@EA\beforesplitstring\@EA\asciiA\@EA\at\asciiB\to\!!stringa
@@ -2748,7 +2748,7 @@
{\begingroup
\scratchdimen#1\relax
\scratchdimen0.0351459804\scratchdimen % 2.54/72.27
- \withoutpt{\the\scratchdimen}cm%
+ \withoutpt\the\scratchdimen cm%
\endgroup}
%D We also support:
@@ -2760,10 +2760,12 @@
%D
%D Both macros return a rounded number.
+% todo: etex version
+
\def\numberofpoints#1%
{\scratchdimen#1%
\advance\scratchdimen .5pt
- \withoutpt{\the\scratchdimen}}
+ \withoutpt\the\scratchdimen}
\def\dimensiontocount#1#2%
{\scratchdimen#1%
@@ -2895,7 +2897,7 @@
%D \macros
%D {processtokens}
%D
-%D We fully agree with (most) typogaphers that inter||letter
+%D We fully agree with (most) typographers that inter||letter
%D spacing is only permitted in fancy titles, we provide a
%D macro that can be used to do so. Because this is
%D (definitely and fortunately) no feature of \TEX, we have to
@@ -3648,7 +3650,7 @@
\def\PointsToBigPoints#1#2%
{\scratchdimen#1%
\scratchdimen.996264\scratchdimen
- \edef#2{\withoutpt{\the\scratchdimen}}}
+ \edef#2{\withoutpt\the\scratchdimen}}
\def\PointsToWholeBigPoints#1#2%
{\scratchdimen#1%
@@ -3670,7 +3672,7 @@
\def\PointsToReal#1#2%
{\scratchdimen#1%
- \edef#2{\withoutpt{\the\scratchdimen}}}
+ \edef#2{\withoutpt\the\scratchdimen}}
%D \macros
%D {dontleavehmode}
@@ -4387,6 +4389,32 @@
\else
\strippedcsname\gobblethreearguments
\fi
+ \or
+ \ifcase#3\or
+ \strippedcsname\firstoffourarguments
+ \or
+ \strippedcsname\secondoffourarguments
+ \or
+ \strippedcsname\thirdoffourarguments
+ \or
+ \strippedcsname\fourthoffourarguments
+ \else
+ \strippedcsname\gobblefourarguments
+ \fi
+ \or
+ \ifcase#3\or
+ \strippedcsname\firstoffivearguments
+ \or
+ \strippedcsname\secondoffivearguments
+ \or
+ \strippedcsname\thirdoffivearguments
+ \or
+ \strippedcsname\fourthoffivearguments
+ \or
+ \strippedcsname\fifthoffivearguments
+ \else
+ \strippedcsname\gobblefivearguments
+ \fi
\fi
\fi
\endcsname\csname#1\endcsname}
diff --git a/tex/context/base/syst-gen.tex b/tex/context/base/syst-gen.tex
index ebc24ea16..5f6ca4570 100644
--- a/tex/context/base/syst-gen.tex
+++ b/tex/context/base/syst-gen.tex
@@ -4182,16 +4182,21 @@
%D used to select arguments. Their names explain their
%D functionality.
-\long\def\firstofoneargument #1{#1}
-\long\def\firstoftwoarguments #1#2{#1}
-\long\def\firstofthreearguments #1#2#3{#1}
-\long\def\firstoffourarguments #1#2#3#4{#1}
-\long\def\secondoftwoarguments #1#2{#2}
-\long\def\secondofthreearguments #1#2#3{#2}
-\long\def\secondoffourarguments #1#2#3#4{#2}
-\long\def\thirdofthreearguments #1#2#3{#3}
-\long\def\thirdoffourarguments #1#2#3#4{#3}
-\long\def\fourthoffourarguments #1#2#3#4{#4}
+\long\def\firstofoneargument #1{#1}
+\long\def\firstoftwoarguments #1#2{#1}
+\long\def\firstofthreearguments #1#2#3{#1}
+\long\def\firstoffourarguments #1#2#3#4{#1}
+\long\def\firstoffivearguments #1#2#3#4#5{#1}
+\long\def\secondoftwoarguments #1#2{#2}
+\long\def\secondofthreearguments #1#2#3{#2}
+\long\def\secondoffourarguments #1#2#3#4{#2}
+\long\def\secondoffivearguments #1#2#3#4#5{#2}
+\long\def\thirdofthreearguments #1#2#3{#3}
+\long\def\thirdoffourarguments #1#2#3#4{#3}
+\long\def\thirdoffivearguments #1#2#3#4#5{#3}
+\long\def\fourthoffourarguments #1#2#3#4{#4}
+\long\def\fourthoffivearguments #1#2#3#4#5{#4}
+\long\def\fifthoffivearguments #1#2#3#4#5{#5}
%D \macros
%D {globalletempty,letempty,letvalueempty,letgvalueempty}
diff --git a/tex/context/base/syst-new.tex b/tex/context/base/syst-new.tex
index 183ad8cb4..84733098c 100644
--- a/tex/context/base/syst-new.tex
+++ b/tex/context/base/syst-new.tex
@@ -360,14 +360,14 @@
\def\testfeature#1#2%
{\def\dotestfeature
{\advance\featuretest \plusone
- \ifnum\featuretest<#1\relax#2\expandafter\dotestfeature\fi}%
+ \ifnum\featuretest>#1\else#2\expandafter\dotestfeature\fi}%
\retestfeature}
\def\retestfeature
{\bgroup
\ifcase\interactionmode\let\wait\relax\fi
\message{starting feature test}\wait
- \featuretest=-1 \dotestfeature
+ \featuretest\zerocount \dotestfeature
\message{feature test done}\wait
\egroup}
diff --git a/tex/context/base/thrd-ran.tex b/tex/context/base/thrd-ran.tex
index 057e51127..63b3e1371 100644
--- a/tex/context/base/thrd-ran.tex
+++ b/tex/context/base/thrd-ran.tex
@@ -1,12 +1,12 @@
% Since we cannot be sure that this file is available at any
-% system, we have copied the original in this file. These
-% macros are encapsulates and extended in supp-ran.tex.
+% system, we have copied the original in this file. These
+% macros are encapsulates and extended in supp-ran.tex.
%
-% This module is slightly recoded to bring it more in tune
+% This module is slightly recoded to bring it more in tune
% with \CONTEXT's scratch registers and protection mechanisms.
% RANDOM.TEX v.1 (Donald Arseneau)
-% Generating "random" numbers in TeX.
+% Generating "random" numbers in TeX.
%
% Random integers are generated in the range 1 to 2147483646 by the
% macro \nextrandom. The result is returned in the counter \randomi.
@@ -43,12 +43,12 @@
% code deals with initialization and type-conversion. On the other hand,
% the large range may be wasted due to the sparse seed initialization.
-% original code
-%
+% original code
+%
% \newcount\randomi % the random number seed (while executing)
% \global\randomi\catcode`\@ % scratch variable during definitions
% \catcode`\@=11
-%
+%
% \def\nextrandom{\begingroup
% \ifnum\randomi<\@ne % then initialize with time
% \global\randomi\time
@@ -69,11 +69,11 @@
% \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi
% \endgroup
% }
-%
+%
% \countdef\count@ii=2 % use only in boxes!
% \ifx\@tempcnta\undefined \csname newcount\endcsname \@tempcnta \fi
% \ifx\@tempcntb\undefined \csname newcount\endcsname \@tempcntb \fi
-%
+%
% \def\setrannum#1#2#3{% count register, minimum, maximum
% \@tempcnta#3\advance\@tempcnta-#2\advance\@tempcnta\@ne
% \@tempcntb 2147483645 % = m - 2 = 2^{31} - 3
@@ -82,40 +82,40 @@
% \advance\ranval#2\relax
% #1\ranval
% }
-%
+%
% \def\setrandim#1#2#3{% dimen register, minimum length, maximum length
% \dimen@#2\dimen@ii#3\relax
% \setrannum\ranval\dimen@\dimen@ii
% #1\ranval sp\relax
% }
-%
+%
% \def\getr@nval{% The values in \@tempcnta and \@tempcntb are parameters
% \nextrandom
% \ranval\randomi \advance\ranval\m@ne \divide\ranval\@tempcntb
% \ifnum\ranval<\@tempcnta\else \expandafter\getr@nval \fi
% }
-%
-% %D The next macro is not needed in \CONTEXT, which provides
-% %D the \type {\withoutpt} macro.
+%
+% %D The next macro is not needed in \CONTEXT, which provides
+% %D the \type {\withoutpt} macro.
% %D
-% %D \starttypen
+% %D \starttypen
% %D \def\pointless{\expandafter\PoinTless\the}
% %D {\catcode`p=12 \catcode`t=12 \gdef\PoinTless#1pt{#1}}
-% %D \stoptypen
-%
+% %D \stoptypen
+%
% \catcode`\@=\randomi
% \global\randomi=0
% \newcount\ranval
-% the recoded version, using \CONTEXT\ methods and variables;
-% the magic is kept untouched
+% the recoded version, using \CONTEXT\ methods and variables;
+% the magic is kept untouched
-\unprotect
+\unprotect
\newcount\randomi % the random number seed (while executing)
\newcount\ranval
-\ifx\m!systems\undefined \def\m!systems{system} \fi
+\ifx\m!systems\undefined \def\m!systems{system} \fi
\def\nextrandom
{\begingroup
@@ -135,8 +135,8 @@
\global\multiply\randomi 16807
\multiply\!!countc 2836
\global\advance\randomi-\!!countc\relax
- \ifnum\randomi<\zerocount
- \global\advance\randomi 2147483647
+ \ifnum\randomi<\zerocount
+ \global\advance\randomi 2147483647
\fi
\endgroup}
@@ -154,15 +154,15 @@
{\!!dimenc#2%
\!!dimend#3%
\setrannum\ranval\!!dimenc\!!dimend
- #1\ranval\s!sp\relax}
+ #1\ranval\s!sp\relax} % \s!sp not needed
\def\getr@nval % The values in \!!counta and \!!countb are parameters
{\nextrandom
- \ranval\randomi
+ \ranval\randomi
\advance\ranval\minusone
\divide\ranval\!!countb
- \ifnum\ranval<\!!counta \else
- \expandafter\getr@nval
+ \ifnum\ranval<\!!counta \else
+ \expandafter\getr@nval
\fi}
-\protect \endinput
+\protect \endinput \ No newline at end of file
diff --git a/tex/context/base/thrd-trg.tex b/tex/context/base/thrd-trg.tex
index 8c60986c9..32e042b38 100644
--- a/tex/context/base/thrd-trg.tex
+++ b/tex/context/base/thrd-trg.tex
@@ -21,9 +21,9 @@
\def\tg@series
{\!!dimena\@lxxi\!!dimena
\divide\!!dimena\@mmmmlxviii
- \edef\!!stringa{\withoutpt{\the\!!dimena}}%
+ \edef\!!stringa{\withoutpt\the\!!dimena}%
\!!dimena\!!stringa\!!dimena
- \edef\!!stringb{\withoutpt{\the\!!dimena}}%
+ \edef\!!stringb{\withoutpt\the\!!dimena}%
\divide\!!dimena\tr@coeffz
\advance\!!dimena\minusone\onepoint
\!!dimena\!!stringb\!!dimena
@@ -54,7 +54,7 @@
{{\expandafter\ifx\csname sin \number#1\endcsname\relax
\!!dimena#1\onepoint
\tg@@sin
- \expandafter\xdef\csname sin \number#1\endcsname{\withoutpt{\the\!!dimena}}%
+ \expandafter\xdef\csname sin \number#1\endcsname{\withoutpt\the\!!dimena}%
\fi}}
\def\calculatecos#1%
@@ -62,7 +62,7 @@
\!!dimena\@xc\onepoint
\advance\!!dimena-#1\onepoint
\tg@@sin
- \expandafter\xdef\csname cos \number#1\endcsname{\withoutpt{\the\!!dimena}}%
+ \expandafter\xdef\csname cos \number#1\endcsname{\withoutpt\the\!!dimena}%
\fi}}
\def\calculatetan#1%
@@ -74,7 +74,7 @@
\!!dimenb\calculatedsin{#1}\onepoint
\!!dimenb\@xvi@k\!!dimenb
\divide\!!dimenb\!!dimena
- \expandafter\xdef\csname tan \number#1\endcsname{\withoutpt{\the\!!dimenb}}%
+ \expandafter\xdef\csname tan \number#1\endcsname{\withoutpt\the\!!dimenb}%
\fi}}
%D The results are accessed with:
diff --git a/tex/context/base/type-enc.tex b/tex/context/base/type-enc.tex
index e8c1e6e2b..16eaff96f 100644
--- a/tex/context/base/type-enc.tex
+++ b/tex/context/base/type-enc.tex
@@ -1367,4 +1367,4 @@
\stoptypescript
-\endinput
+\endinput \ No newline at end of file
diff --git a/tex/context/base/type-ghz.tex b/tex/context/base/type-ghz.tex
index 56e39318e..98687fe91 100644
--- a/tex/context/base/type-ghz.tex
+++ b/tex/context/base/type-ghz.tex
@@ -4,6 +4,20 @@
% texfont --en=texnansi --ve=linotype --co=optima-nova type-ghz.dat
% texfont --en=texnansi --ve=linotype --co=palatino type-ghz.dat
+% zapfino
+
+\starttypescript [serif] [zapfino] [texnansi,ec,8r] % todo: handwriting
+
+ \definefontsynonym [ZapfinoOne] [\typefaceencoding-lt-54223] [encoding=\typefaceencoding]
+ \definefontsynonym [ZapfinoTwo] [\typefaceencoding-lt-54224] [encoding=\typefaceencoding]
+ \definefontsynonym [ZapfinoThree] [\typefaceencoding-lt-54225] [encoding=\typefaceencoding]
+ \definefontsynonym [ZapfinoFour] [\typefaceencoding-lt-54226] [encoding=\typefaceencoding]
+
+ \loadmapfile[\typefaceencoding-linotype-zapfino.map]
+
+\stoptypescript
+
+
% optima
\starttypescript [sans] [optima] [name]
diff --git a/tex/context/base/type-ini.tex b/tex/context/base/type-ini.tex
index d2ef37410..48e67009b 100644
--- a/tex/context/base/type-ini.tex
+++ b/tex/context/base/type-ini.tex
@@ -325,7 +325,7 @@
\else
\writestatus{pdftex}{using map file: #1}%
\fi
- \pdfmapfile{+#1}%
+ \doiffileelse{#1}{\pdfmapfile{+#1}}\donothing
\setxvalue{#1 \c!status}{1}}}
\def\doreportfontmapfile#1%
diff --git a/tex/context/base/type-map.tex b/tex/context/base/type-map.tex
index ca23fc788..bea38ec32 100644
--- a/tex/context/base/type-map.tex
+++ b/tex/context/base/type-map.tex
@@ -44,7 +44,7 @@
\starttypescript [map] [8r]
\loadmapfile[8r-adobe-utopia.map]
- \loadmapfile[8r-bit-charter.map]
+ \loadmapfile[8r-bitstrea-charter.map]
\loadmapfile[8r-public-antp.map]
\loadmapfile[8r-public-antt.map]
\loadmapfile[8r-urw-bookman.map]
@@ -58,7 +58,7 @@
\starttypescript [map] [ec]
\loadmapfile[ec-adobe-utopia.map]
- \loadmapfile[ec-bit-charter.map]
+ \loadmapfile[ec-bitstrea-charter.map]
\loadmapfile[ec-public-antp.map]
\loadmapfile[ec-public-antt.map]
\loadmapfile[ec-urw-bookman.map]
@@ -72,7 +72,7 @@
\starttypescript [map] [texnansi]
\loadmapfile[texnansi-adobe-utopia.map]
- \loadmapfile[texnansi-bit-charter.map]
+ \loadmapfile[texnansi-bitstrea-charter.map]
\loadmapfile[texnansi-public-antp.map]
\loadmapfile[texnansi-public-antt.map]
\loadmapfile[texnansi-urw-bookman.map]
diff --git a/tex/context/base/x-res-01.tex b/tex/context/base/x-res-01.tex
index d3f888376..9b724411f 100644
--- a/tex/context/base/x-res-01.tex
+++ b/tex/context/base/x-res-01.tex
@@ -55,7 +55,7 @@
\setupoutput[pdftex] \overcomePDFspacefalse
-\setjobfullname {xml} % default suffix
+\setjobfullname {xml} % default suffix
\doifnothing {\jobfullname} {\end}
\doiffileelse {\jobfullname} {} {\end}
@@ -90,7 +90,7 @@
height=\XMLpar{rl:dummy}{height}{8cm},
background=color,
backgroundcolor=gray,
- foregroundcolor=darkred,
+ foregroundcolor=darkred,
align=normal,
frame=off]
{\bf \XMLflush{rl:dummy}}
@@ -448,4 +448,4 @@
\processXMLfilegrouped{\jobfullname} \page
-\stoptext
+\stoptext \ No newline at end of file
diff --git a/tex/context/base/x-res-02.tex b/tex/context/base/x-res-02.tex
index 19584f921..5ef8e901d 100644
--- a/tex/context/base/x-res-02.tex
+++ b/tex/context/base/x-res-02.tex
@@ -1,5 +1,5 @@
%D \module
-%D [ file=x-fig-02,
+%D [ file=x-res-02,
%D version=2001.03.21,
%D title=\CONTEXT\ Style File,
%D subtitle=Figure Base Inclusion (I),
@@ -11,22 +11,22 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-%D This module enables non||\ConTeXt\ users to access the
-%D database. For this, you need to run
-%D
+%D This module enables non||\ConTeXt\ users to access the
+%D database. For this, you need to run
+%D
%D \starttypen
%D texexec --pdf --use=fig-fake yourfile.xml
%D \stoptypen
-%D
-%D The resulting file, \type {yourfile.fig}, can be loaded
-%D in the normal way. The figures can be accessed with:
+%D
+%D The resulting file, \type {yourfile.fig}, can be loaded
+%D in the normal way. The figures can be accessed with:
%D
%D \starttypen
-%D \getfigurefile{label}
-%D \getfigurepage{label}
+%D \getfigurefile{label}
+%D \getfigurepage{label}
%D \stoptypen
%D
-%D A a bonus, the following macro is defined:
+%D A a bonus, the following macro is defined:
%D
%D \starttypen
%D \includefigurefile width 10cm {label}
@@ -42,7 +42,7 @@
\defineXMLenvironment [rl:figure] \StartFigure \StopFigure
\def\StartLibrary
- {\immediate\openout \scratchwrite=\jobfilename.fig
+ {\immediate\openout \scratchwrite=\jobfilename.fig
\immediate\write\scratchwrite{\string\input\space x-fig-03.tex \string\relax}
\immediate\write\scratchwrite{}}
diff --git a/tex/context/base/x-res-50.tex b/tex/context/base/x-res-50.tex
new file mode 100644
index 000000000..d708b0821
--- /dev/null
+++ b/tex/context/base/x-res-50.tex
@@ -0,0 +1,415 @@
+%D \module
+%D [ file=x-res-50,
+%D version=2004.02.18,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Multimedia Presentation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={\PRAGMA\ / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is a preliminary module, using a preliminary xml media format that
+%D looks as follows (record is embedded in resource library element):
+%D
+%D \starttypen
+%D <rl:mediaclip label="sample 1">
+%D <rl:name>Sample One</rl:name>
+%D <rl:mime>application/x-shockwave-flash</rl:mime>
+%D <rl:file>http://localhost/mb.swf</rl:file>
+%D <rl:width>8cm</rl:width>
+%D <rl:height>6cm</rl:height>
+%D <rl:text>Nothing special to be said.</rl:text>
+%D <rl:picture>cow.pdf</rl:picture>
+%D </rl:mediaclip>
+%D
+%D <rl:mediaclip label="sample 2">
+%D <rl:name>Sample Two</rl:name>
+%D <rl:mime>audio/mpeg</rl:mime>
+%D <rl:file>mb.mp3</rl:file>
+%D <rl:picture>mb.jpg</rl:picture>
+%D </rl:mediaclip>
+%D \stoptypen
+%D
+%D \starttypen
+%D texexec --pdf --use=med-show yourfile.xml
+%D \stoptypen
+%D
+%D Bonus:
+%D
+%D \starttypen
+%D --arg="url=http://localhost:8881/e:/media"
+%D \stoptypen
+
+% output=pdftex
+
+% bugs in recognizing embedded stream cq. player
+% bugs in layers + hide/vide
+% bugs in save javascripts
+% bugs all over the place
+
+% in principe kan menu overal hetzelfde zijn als we via JS per pagina de clip var zetten,
+% hoewel, misschien zal het menu gaan afhangen van de soort clip
+
+% property (eigenschap) aan framed en layer
+
+\usemodule[meta-dum]
+\usemodule[contml]
+
+\doifelsevariable{environment}{url}
+ {\setvariables[mediaclip][url=\getvariable{environment}{url}/]}
+ {\setvariables[mediaclip][url=]}
+
+\startmode [silent]
+
+ \setvariables[mediaclip:option][start=]
+
+\stopmode
+
+\startnotmode [silent]
+
+ \setvariables[mediaclip:option][start=auto]
+
+\stopnotmode
+
+\chardef\XMLtokensreduction=1 \dontcomplain % \showframe \pdfcompresslevel=0
+
+\setuppapersize
+ [S6][S6]
+
+\definemeasure [GapSize] [\dimexpr( 15pt)]
+\definemeasure [EdgeWidth] [\dimexpr(100pt)]
+\definemeasure [TextWidth] [\dimexpr(.5\textwidth)]
+\definemeasure [RenderingWidth] [\dimexpr(\textwidth)]
+\definemeasure [RenderingHeight] [\dimexpr(\textheight)]
+
+% \XMLflush{rl:ratio}\dimexpr(.75\textwidth),
+
+\setuplayout
+ [backspace=\measure{GapSize},
+ topspace=\measure{GapSize},
+ header=0pt,
+ footer=0pt,
+ margin=0pt,
+ edgedistance=2\measure{GapSize},
+ rightedge=\measure{EdgeWidth},
+ bottomdistance=2\measure{GapSize},
+ bottom=2\measure{GapSize},
+ height=fit,
+ width=fit]
+
+\setupinteraction
+ [state=start,
+ color=lightgray,
+ contrastcolor=lightgray,
+ openaction=PresetFields,
+ closeaction=ForgetChanges,
+ menu=on,
+ click=no]
+
+\setupinteractionscreen
+ [option=max]
+
+\setupcolors
+ [state=start]
+
+\usetypescript
+ [palatino][texnansi]
+
+\setupbodyfont
+ [palatino]
+
+\definecolor[darkgray] [s=.2]
+\definecolor[mediumgray][s=.5]
+\definecolor[lightgray] [s=.8]
+\definecolor[transgray] [s=1,t=.9,a=1]
+
+\setupbackgrounds
+ [page]
+ [backgroundoffset=\measure{GapSize},
+ background={color,pagebutton},
+ backgroundcolor=black]
+
+\definelayer
+ [main]
+ [width=\textwidth,
+ height=\textheight]
+
+\definelayer
+ [extra]
+ [width=\rightedgewidth,
+ height=\bottomheight]
+
+\setupbackgrounds
+ [text]
+ [backgroundoffset=0pt,
+ background=main]
+
+\setupbackgrounds
+ [bottom][rightedge]
+ [backgroundoffset=0pt,
+ background=extra]
+
+% java scripts
+
+\startJSpreamble {handy} used now
+
+ function ForgetChanges ()
+ { this.dirty = false }
+
+ function PresetFields ()
+ { this.syncAnnotScan() }
+
+\stopJSpreamble
+
+\definereference[PresetFields] [JS(PresetFields)]
+\definereference[ForgetChanges][JS(ForgetChanges)]
+
+% layers
+
+\defineproperty [menulayer] [layer] [title=menulayer]
+\defineproperty [textlayer] [layer] [title=textlayer,state=stop]
+\defineproperty [datalayer] [layer] [title=datalayer,state=stop]
+
+\setupfield
+ [rollbutton]
+ [fieldlayer=menulayer]
+
+\setupfield
+ [rollbutton]
+ [option=auto]
+
+\definepalet
+ [rollover]
+ [n=darkgray,
+ r=lightgray,
+ d=darkgray]
+
+% list
+
+\definelist
+ [clips]
+ [expansion=yes,
+ criterium=text,
+ alternative=f]
+
+% navigation
+
+\defineoverlay[pagebutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer},ToggleLayer{menulayer}}]
+\defineoverlay[textbutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer}}]
+\defineoverlay[databutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer}}]
+
+% clips
+
+\defineXMLenvironment
+ [rl:mediaclip]
+ {\setups[mediaclip:start]}
+ {\setups[mediaclip:stop]}
+
+\newcounter\MediaClip
+
+\startsetups[mediaclip:start]
+
+ \bgroup \startXMLignore
+
+ % no \startstandardmakeup here since we need the dsta in the menuconstruction
+
+ \defineXMLsave [rl:name]
+ \defineXMLsave [rl:visualization]
+ \defineXMLsave [rl:file]
+ \defineXMLsave [rl:mime]
+ \defineXMLsave [rl:picture] [backgroundcolor=lightgray]
+
+ \defineXMLsavecontent [rl:text] {No additional info.}
+ \defineXMLsavecontent [rl:width] {\measure{RenderingWidth}}
+ \defineXMLsavecontent [rl:height] {\measure{RenderingHeight}}
+ \defineXMLsavecontent [rl:aspect] {1}
+
+\stopsetups
+
+\startsetups[mediaclip:stop]
+
+ \startstandardmakeup
+
+ \doifXMLdataelse{rl:file}
+ {\setups[mediaclip:file:yes]}
+ {}
+
+ \doifXMLdataelse{rl:picture}
+ {\doifelse{\XMLflush{rl:picture}}{self}
+ {\setups[mediaclip:picture:self]}
+ {\setups[mediaclip:picture:yes]}}
+ {\setups[mediaclip:picture:no]}
+
+ \doifXMLdata{rl:text}
+ {\setups[mediaclip:text]}
+
+ \setlayerframed
+ [extra]
+ [preset=rightbottom]
+ [frame=off,offset=overlay,width=fit,background=databutton,align=left]
+ {\startproperty[datalayer]\setups[mediaclip:data]\stopproperty}
+
+ \doifXMLdataelse{rl:name}
+ {\writetolist[clips]{}{\XMLflush{rl:name}}}
+ {\writetolist[clips]{}{\XMLpar{rl:mediaclip}{label}{unknown}}}
+
+ \stopstandardmakeup
+
+ \stopXMLignore \egroup
+
+\stopsetups
+
+\startsetups[mediaclip:data]
+
+ \noindent \buttonframed
+ [framecolor=lightgray,
+ foregroundcolor=lightgray]
+ {\bf\XMLflush{rl:file}}
+
+ \vskip12pt
+
+ \noindent \buttonframed
+ [framecolor=lightgray,
+ foregroundcolor=lightgray]
+ {\bf\XMLflush{rl:mime}}
+
+\stopsetups
+
+\startsetups[mediaclip:picture:self]
+
+ \definerenderingwindow
+ [mediaclip]
+ [width=\XMLflush{rl:width},
+ height=\XMLflush{rl:height},
+ frame=off,
+ openpageaction=StartCurrentRendering,
+ closepageaction=StopCurrentRendering]
+
+ \setlayer
+ [main]
+ {\placerenderingwindow[mediaclip][mediaclip-\MediaClip]}
+
+\stopsetups
+
+\startsetups[mediaclip:picture:yes]
+
+ \setlayer
+ [main]
+ {\externalfigure
+ [\XMLflush{rl:picture}]
+ [background=color,
+ backgroundcolor=\XMLpar{rl:picture}{backgroundcolor}{lightgray},
+ factor=max,
+ width=\XMLflush{rl:width},
+ height=\XMLflush{rl:height}]}
+
+\stopsetups
+
+\startsetups[mediaclip:picture:no]
+
+ \setlayer
+ [main]
+ {\externalfigure
+ [dummy]
+ [width=\XMLflush{rl:width},
+ height=\XMLflush{rl:height}]}
+
+\stopsetups
+
+\startsetups[mediaclip:file:yes]
+
+ \doglobal\increment\MediaClip
+
+ \useexternalrendering
+ [mediaclip-\MediaClip]
+ [\XMLflush{rl:mime}]
+ [\getvariable{mediaclip}{url}\XMLflush{rl:file}]
+ [\getvariable{mediaclip:option}{start}]
+
+\stopsetups
+
+\defineinteractionmenu
+ [navigation] [right]
+
+\defineinteractionmenu
+ [control] [bottom]
+
+\setupinteractionmenu
+ [navigation,control]
+ [state=start,
+ frame=on,
+ middle=\hskip.5\measure{GapSize},
+ inbetween=\vskip.5\measure{GapSize}]
+
+\setupinteractionmenu
+ [right,bottom]
+ [distance=overlay]
+
+\startinteractionmenu [navigation]
+ \rob [HideLayer{textlayer},FirstPage] First Page \\
+ \rob [HideLayer{textlayer},PreviousPage] Previous Page \\
+ \rob [HideLayer{textlayer},NextPage] Next Page \\
+ \rob [HideLayer{textlayer},LastPage] Last Page \\
+ \rob [HideLayer{textlayer},clips] List Of Clips \\
+ \rob [ForgetChanges,CloseDocument] Close Document \\
+\stopinteractionmenu
+
+\startinteractionmenu [control]
+ \rob [StartRendering{mediaclip-\MediaClip}] Start \\
+ \rob [StopRendering{mediaclip-\MediaClip}] Stop \\
+ \rob [PauseRendering{mediaclip-\MediaClip}] Pause \\
+ \rob [ResumeRendering{mediaclip-\MediaClip}] Resume \\
+ \rob [ToggleLayer{datalayer}] Info \\
+ \doifXMLdata{rl:text}{\rob [HideLayer{datalayer},ToggleLayer{textlayer}] Text \\}
+\stopinteractionmenu
+
+\startsetups[mediaclip:text]
+
+ \setlayer
+ [extra]
+ [preset=rightbottom]
+ {\startproperty[textlayer]
+ \framed
+ [align=normal,
+ frame=off,
+ width=\measure{TextWidth},
+ foregroundcolor=darkgray,
+ background={color,textbutton},
+ backgroundcolor=lightgray]
+ {\XMLflush{rl:text}}
+ \stopproperty}
+
+\stopsetups
+
+\setupcolors[textcolor=lightgray]
+
+\startsetups [library:start]
+
+ \starttext
+
+ \setupinteractionmenu[control][state=stop]
+
+ \title[clips]{List of Media Clips}
+
+ \placelist[clips] \page
+
+ \setupinteractionmenu[control][state=start]
+
+\stopsetups
+
+\startsetups [library:stop]
+
+ \stoptext
+
+\stopsetups
+
+\defineXMLenvironment [rl:resourcelibrary]
+ {\setups[library:start]}
+ {\setups[library:stop]}
+
+\doifelsenothing{\inputfilename}
+ {\processXMLfile{mediaclient.xml}}
+ {\processXMLfile{\inputfilename}} \ No newline at end of file
diff --git a/tex/context/base/xtag-xsl.tex b/tex/context/base/xtag-xsl.tex
index df7c320de..2ebb15e9b 100644
--- a/tex/context/base/xtag-xsl.tex
+++ b/tex/context/base/xtag-xsl.tex
@@ -11,18 +11,18 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-%D This module is rather experimental so users may expect
+%D This module is rather experimental so users may expect
%D changes in the interface.
-\unprotect
+\unprotect
-\definesystemvariable {xl}
+\definesystemvariable {xl}
\newif\iftraceXSLTprocessing % \traceXSLTprocessingtrue
\def\XSLTscriptfile{\bufferprefix xlscript}
-% to be sped up:
+% to be sped up:
\def\presetXSLTcharacters
{\let\par\empty
@@ -39,21 +39,29 @@
\obeyXSLTcharacters
\doifelse{#2}{capsule}\dostartXSLTscript\nostartXSLTscript#1 #2 }
-\long\def\dostartXSLTscript#1 #2 #3 #4\stopXSLTscript
+\long\def\dostartXSLTscript#1 #2 #3 %
+ {\obeylines
+ \dodostartXSLTscript#1 #2 #3 }
+
+\long\def\dodostartXSLTscript#1 #2 #3 #4\stopXSLTscript
{\egroup
\long\setvalue{\??xl#1}{\doXSLTscript{#3}{#4}}}
-\long\def\nostartXSLTscript#1 #2\stopXSLTscript
+\long\def\nostartXSLTscript
+ {\obeylines
+ \nonostartXSLTscript}
+
+\long\def\nonostartXSLTscript#1 #2\stopXSLTscript
{\egroup
\long\setvalue{\??xl#1}{\doXSLTscript\empty{#2}}}
-\long\def\donormalXSLTscript#1#2%
+\long\def\donormalXSLTscript#1#2%
{\includeXSLTscript{b-capsule-#1}%
#2%
\includeXSLTscript{e-capsule-#1}}
-
+
\def\includeXSLTscript#1%
- {\csname\ifcsname\??xl#1\endcsname\??xl#1\else empty\fi\endcsname}
+ {\csname\ifcsname\??xl#1\endcsname\??xl#1\else\s!empty\fi\endcsname}
\startXSLTscript b-capsule-1.0
<?xml version="1.0"?>
@@ -73,41 +81,40 @@
\let\doXSLTscript\donormalXSLTscript
\presetXSLTcharacters
\donefalse
- \def\docommando##1%
- {\dodoapplyXSLTscript{##1}{\ifdone#3\else#2\fi}{#3}\donetrue}%
+ \def\docommando##1{\dodoapplyXSLTscript{##1}{\ifdone#3\else#2\fi}{#3}\donetrue}%
\processcommalist[#1]\docommando
\egroup
\else
\applyXSLTscript[#1][#2][#2]%
\fi}
-% Since a \XML\ file is loaded into memory as a tree, we
+% Since a \XML\ file is loaded into memory as a tree, we
% can safely use the same input and output filename, thereby
-% avoiding temporary files.
-
+% avoiding temporary files.
+
\def\dodoapplyXSLTscript#1#2#3%
{\bgroup
\doifundefined{\??xl#1}%
{\writestatus{XSLT}{unknown script #1}}
{\writestatus{XSLT}{convert #2 into #3 using #1}%
+ \edef\par{\rawcharacter{13}}%
\edef\!!stringc{\getvalue{\??xl#1}}%
\immediate\openout\scratchwrite=\XSLTscriptfile.xsl
\immediate\write\scratchwrite{\!!stringc}%
\immediate\closeout\scratchwrite
\iftraceXSLTprocessing\wait\fi
\executeXSLT{\XSLTscriptfile.xsl}{#2}{#3}%
- \iftraceXSLTprocessing\wait\fi}%
+ \iftraceXSLTprocessing\wait\fi}%
\egroup}
-\def\executeXSLT#1#2#3% script input output
+\def\executeXSLT#1#2#3% script input output
{\executesystemcommand{xsltproc -o #3 #1 #2}}
\long\def\applyXSLTtobuffer
{\dodoubleempty\doapplyXSLTtobuffer}
\long\def\doapplyXSLTtobuffer[#1][#2]%
- {\expanded{\applyXSLTscript
- [#1][\TEXbufferfile{\ifsecondargument#2\else\jobname\fi}]}}
+ {\expanded{\applyXSLTscript[#1][\TEXbufferfile{\ifsecondargument#2\else\jobname\fi}]}}
\def\resetXSLTscripting#1%
{\setgvalue{\??xl\s!dummy}{\doXSLTscript{#1}{}}}
@@ -117,6 +124,7 @@
\def\startXSLTscripting
{\bgroup
\obeyXSLTcharacters
+ \obeylines
\dostartXSLTscripting}
\long\def\dostartXSLTscripting#1\stopXSLTscripting
@@ -130,57 +138,57 @@
\def\applyXSLTscripting
{\applyXSLTscript[\s!dummy]}
-\protect
+\protect
-\doifnotmode{mytest}{\endinput}
+\doifnotmode{demo}{\endinput}
-\starttext
-
% \def\Whow{Whow It Works}
-%
-% \startXSLTscript test capsule 1.0
+%
+% \startXSLTscript test capsule 1.0
% <xsl:output method="text"/>
-%
+%
% <xsl:template match="/figurelibrary/figure">
% \Whow \\ #<xsl:apply-templates/>
% </xsl:template>
-%
+%
% <xsl:template match="/">
% <xsl:apply-templates/>
% </xsl:template>
-% \stopXSLTscript
-%
+% \stopXSLTscript
+%
% \applyXSLTscript [test] [figtest.xml] [crap.tmp] \typefile{crap.tmp}
-%
+%
% \startbuffer
% <hello>world</hello>
% \stopbuffer
-%
+%
% \applyXSLTtobuffer[test] \typebuffer
-%
+%
% \startXSLTscripting
% <xsl:output method="text"/>
-% \stopXSLTscripting
-%
+% \stopXSLTscripting
+%
% \startXSLTscripting
% <xsl:template match="/figurelibrary/figure">
% <xsl:apply-templates/>
% </xsl:template>
-% \stopXSLTscripting
-%
+% \stopXSLTscripting
+%
% \startXSLTscripting
% <xsl:template match="/">
% <xsl:apply-templates/>
% </xsl:template>
-% \stopXSLTscripting
-%
+% \stopXSLTscripting
+%
% \applyXSLTscripting [figtest.xml] [crap.tmp] \typefile{crap.tmp}
-\startXSLTscript another
+\starttext
+
+\startXSLTscript another
<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:cd="http://www.pragma-ade.com/commands"
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:cd="http://www.pragma-ade.com/commands"
version="1.0">
<xsl:output method="text"/>
@@ -198,10 +206,10 @@
</xsl:template>
</xsl:stylesheet>
-\stopXSLTscript
+\stopXSLTscript
-\applyXSLTscript [another] [cont-en.xml] [whatever.tmp]
+\applyXSLTscript [another] [cont-en.xml] [whatever.tmp]
\readfile{whatever.tmp}{}{}
-\stoptext
+\stoptext
diff --git a/tex/context/sample/tufte.tex b/tex/context/sample/tufte.tex
index 72f39da35..154dfa3fb 100644
--- a/tex/context/sample/tufte.tex
+++ b/tex/context/sample/tufte.tex
@@ -1,13 +1,13 @@
-We thrive in information||thick worlds because of our
-marvelous and everyday capacity to select, edit,
-single out, structure, highlight, group, pair, merge,
-harmonize, synthesize, focus, organize, condense,
-reduce, boil down, choose, categorize, catalog, classify,
-list, abstract, scan, look into, idealize, isolate,
-discriminate, distinguish, screen, pigeonhole, pick over,
-sort, integrate, blend, inspect, filter, lump, skip,
-smooth, chunk, average, approximate, cluster, aggregate,
-outline, summarize, itemize, review, dip into,
-flip through, browse, glance into, leaf through, skim,
-refine, enumerate, glean, synopsize, winnow the wheat
-from the chaff and separate the sheep from the goats.
+We thrive in information||thick worlds because of our
+marvelous and everyday capacity to select, edit,
+single out, structure, highlight, group, pair, merge,
+harmonize, synthesize, focus, organize, condense,
+reduce, boil down, choose, categorize, catalog, classify,
+list, abstract, scan, look into, idealize, isolate,
+discriminate, distinguish, screen, pigeonhole, pick over,
+sort, integrate, blend, inspect, filter, lump, skip,
+smooth, chunk, average, approximate, cluster, aggregate,
+outline, summarize, itemize, review, dip into,
+flip through, browse, glance into, leaf through, skim,
+refine, enumerate, glean, synopsize, winnow the wheat
+from the chaff and separate the sheep from the goats. \ No newline at end of file
diff --git a/tex/context/sample/ward.tex b/tex/context/sample/ward.tex
index 9922beb6e..a95b90f5f 100644
--- a/tex/context/sample/ward.tex
+++ b/tex/context/sample/ward.tex
@@ -1,5 +1,5 @@
The Earth, as a habitat for animal life, is in old age and
has a fatal illness. Several, in fact. It would be happening
-whether humans has ever evolved or not. But our presence is
+whether humans had ever evolved or not. But our presence is
like the effect of an old|-|age patient who smokes many packs
of cigarettes per day |.| and we humans are the cigarettes. \ No newline at end of file