diff options
| author | Hans Hagen <pragma@wxs.nl> | 2004-08-15 00:00:00 +0200 | 
|---|---|---|
| committer | Hans Hagen <pragma@wxs.nl> | 2004-08-15 00:00:00 +0200 | 
| commit | 57f1545214ebba9625b9be722d4e4f9357dab87a (patch) | |
| tree | 29dd99fb0b08de5fca50a557e8af043ea082478a /tex | |
| parent | 599c5089a184d1967ec8dc66307de52378e911d4 (diff) | |
| download | context-57f1545214ebba9625b9be722d4e4f9357dab87a.tar.gz | |
stable 2004.08.15
Diffstat (limited to 'tex')
82 files changed, 3148 insertions, 1480 deletions
| diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex index 60be87005..e0f476a49 100644 --- a/tex/context/base/colo-ini.tex +++ b/tex/context/base/colo-ini.tex @@ -16,7 +16,7 @@  %D To do: stroke versus fill color  %D 1000 100 10 -> constants -%D Possible optimizaiton: store level in mark instead of name +%D Possible optimization: store level in mark instead of name  \unprotect @@ -232,12 +232,20 @@  \def\@@cl@@z{0}  \def\@@cl@@o{1} +% \def\@@resetcolorparameters +%   {\let\@@cl@@r\@@cl@@z\let\@@cl@@g\@@cl@@z\let\@@cl@@b\@@cl@@z +%    \let\@@cl@@c\@@cl@@z\let\@@cl@@m\@@cl@@z\let\@@cl@@y\@@cl@@z\let\@@cl@@k\@@cl@@z +%    \let\@@cl@@s\@@cl@@z\let\@@cl@@p\@@cl@@o +%    \let\@@cl@@t\@@cl@@z\let\@@cl@@a\@@cl@@z +%    \let\@@cl@@h\empty  \let\@@cl@@n\empty} +  \def\@@resetcolorparameters -  {\let\@@cl@@r\@@cl@@z\let\@@cl@@g\@@cl@@z\let\@@cl@@b\@@cl@@z -   \let\@@cl@@c\@@cl@@z\let\@@cl@@m\@@cl@@z\let\@@cl@@y\@@cl@@z -   \let\@@cl@@k\@@cl@@z\let\@@cl@@s\@@cl@@z\let\@@cl@@p\@@cl@@o -   \let\@@cl@@t\@@cl@@z\let\@@cl@@a\@@cl@@z -   \let\@@cl@@h\empty  \let\@@cl@@n\empty} +  {\let\@@cl@@r\@@cl@@z \let\@@cl@@g\@@cl@@z \let\@@cl@@b\@@cl@@z +   \let\@@cl@@c\@@cl@@z \let\@@cl@@m\@@cl@@z \let\@@cl@@y\@@cl@@z \let\@@cl@@k\@@cl@@z +   \let\@@cl@@s\@@cl@@z +   \let\@@cl@@p\@@cl@@o \let\@@cl@@n\empty \let\@@cl@@d\empty \let\@@cl@@f\@@cl@@o +   \let\@@cl@@h\empty +   \let\@@cl@@t\@@cl@@z \let\@@cl@@a\@@cl@@z}  \def\@@cl@@A{\@@cl@@a} % a hook for symbolic conversion, see below @@ -263,7 +271,10 @@  \def\colorSpattern{0S:\@@cl@@s:\@@cl@@A:\@@cl@@t}  \def\colorCpattern{0C:\@@cl@@c:\@@cl@@m:\@@cl@@y:\@@cl@@k:\@@cl@@A:\@@cl@@t}  \def\colorRpattern{0R:\@@cl@@r:\@@cl@@g:\@@cl@@b:\@@cl@@A:\@@cl@@t} -\def\colorPpattern{0P:\@@cl@@n:\@@cl@@p:\@@cl@@A:\@@cl@@t} + +%def\colorPpattern{0P:\@@cl@@n:\@@cl@@p:\@@cl@@A:\@@cl@@t} + +\def\colorPpattern{0P:\@@cl@@n:\@@cl@@f:\@@cl@@d:\@@cl@@p:\@@cl@@A:\@@cl@@t}  %D The extra 0 catches empty colors specs (needed for the  %D \type {\MPcolor} and \type {\PDFcolor} conversion (\type @@ -342,22 +353,22 @@  %D New and experimental. -\let\allspotcolors\empty +\let\allspotcolors    \empty +\let\usedspotcolors   \empty +\let\usedcolorchannels\empty  \def\definespotcolor % [name] [color] [p=,t=,a=]    {\dotripleempty\dodefinespotcolor} -\def\dodefinespotcolor[#1][#2][#3]% +\def\dodefinespotcolor[#1][#2][#3]% todo: always global    {\doifnot{#1}{#2}       {\@@resetcolorparameters        \edef\@@cl@@n{#2}%        \getparameters[\??cl @@][#3]%        \doifnothing\@@cl@@p{\let\@@cl@@p\!!plusone}%        \doglobal\addtocommalist{#2}\allspotcolors -      \setevalue{\??cr#1}{\colorPpattern}% -      \setvalue{#1}{\switchtocolor[#1]}}} - -\let\usedspotcolors\empty +      \setxvalue{\??cr#1}{\colorPpattern}% was \setevalue +      \setgvalue{#1}{\switchtocolor[#1]}}} % was \setvalue  \def\registerusedspotcolors    {\ifx\allspotcolors\empty \else @@ -370,8 +381,6 @@       \egroup     \fi} -\let\usedcolorchannels\empty -  \def\registerusedcolorchannels    {\bgroup     \doifdefinedelse{\??cs c} @@ -393,6 +402,90 @@  \def\registerusedspotcolor#1%    {\global\@EA\chardef\csname\??cs#1\endcsname\zerocount} +%D On top of spotcolors, we define multitone colors. You'd better know +%D what you're doing because invalid definitions will lead to invalid +%D documents (i.e.\ resources). + +% \definecolor [darkblue]   [c=.5,m=.5] +% \definecolor [darkyellow] [y=.5] +% +% \definemultitonecolor [whatever] [darkblue=.5,darkyellow=.5] [c=.25,m=.25,y=.25] [a=1,t=.5] +% \definemultitonecolor [another]  [darkblue=.5,darkyellow=.5] [c=.25,m=.25,y=.25] + +\def\definemultitonecolor +  {\doquadrupleempty\dodefinemultitonecolor} + +\def\dodefinemultitonecolor[#1][#2][#3][#4]% +  {\let\@@cl@@cl@@D\empty % n's +   \let\@@cl@@cl@@P\empty % p's +   \let\@@cl@@cl@@N\empty % name +   \scratchcounter\zerocount +   \processcommacommand[#2]\dododefinemultitonecolor +   \bgroup +     \lccode`\.=`\_\lccode`\,=`\_\lccode`\:=`\_\lccode`\;=`\_% +     \lccode`\+=`\_\lccode`\-=`\_\lccode`\*=`\_\lccode`\/=`\_% +     % not needed, other attribute in driver: +     % +     % \@@resetcolorparameters +     % \getparameters[#4]% +     % \ifx\@@cl@@t\@@cl@@z\else +     %   \edef\@@cl@@cl@@N{\@@cl@@cl@@N_\@@cl@@t_\@@cl@@a}% +     % \fi +     \lowercase\@EA{\@EA\xdef\@EA\multitonecolor\@EA{\@@cl@@cl@@N}}% +   \egroup +   \setxvalue{\??cl\multitonecolor\s!check}{\noexpand\docheckmultitonecolor{\@@cl@@cl@@D}}% +   \expanded{\defineglobalcolor[\multitonecolor][#3,#4]}% +   \expanded{\definespotcolor[#1][\multitonecolor][#4,f=\the\scratchcounter,p={\@@cl@@cl@@P},d={\@@cl@@cl@@D}]}} + +\def\docheckmultitonecolor#1% +  {\flushatshipout +     {\let\checkmultitonecolor\gobbleoneargument +      \def\docommand##1{\hbox{\definecolor[\s!dummy-100][##1][p=1]\color[\s!dummy-100]}}% +      \processcommalist[#1]\docommand}} + +\def\checkmultitonecolor#1% +  {\getvalue{\??cl#1\s!check}\letgvalue{\??cl#1\s!check}\relax} + +\def\dodefinespotcolor[#1][#2][#3]% todo: always global +  {\doifnot{#1}{#2} +     {\@@resetcolorparameters +      \edef\@@cl@@n{#2}% +      \getparameters[\??cl @@][#3]% +      \doifnothing\@@cl@@p{\let\@@cl@@p\!!plusone}% +      \doglobal\addtocommalist{#2}\allspotcolors +      \setxvalue{\??cr#1}{\colorPpattern}% was \setevalue +      \setgvalue{#1}{\switchtocolor[#1]}}}% was \setvalue + +\def\dododefinemultitonecolor#1% +  {\advance\scratchcounter\plusone +   \splitstring#1\at=\to\!!stringa\and\!!stringb +   \ifx\@@cl@@cl@@D\empty +     \let\@@cl@@cl@@D\!!stringa +     \let\@@cl@@cl@@P\!!stringb +     \normalizecolor\!!stringb +     \edef\@@cl@@cl@@N{\!!stringa_\!!stringb}% +   \else +     \edef\@@cl@@cl@@D{\@@cl@@cl@@D,\!!stringa}% +     \edef\@@cl@@cl@@P{\@@cl@@cl@@P,\!!stringb}% +     \normalizecolor\!!stringb +     \edef\@@cl@@cl@@N{\@@cl@@cl@@N_\!!stringa_\!!stringb}% +   \fi} + +% \def\dododefinemultitonecolor#1% a/b safe +%   {\advance\scratchcounter\plusone +%    \splitstring#1\at=\to\@@cl@@one\and\@@cl@@two +%    \ifx\@@cl@@cl@@D\empty +%      \let\@@cl@@cl@@D\@@cl@@one +%      \let\@@cl@@cl@@P\@@cl@@two +%      \normalizecolor\@@cl@@two +%      \edef\@@cl@@cl@@N{\@@cl@@one_\@@cl@@two}% +%    \else +%      \edef\@@cl@@cl@@D{\@@cl@@cl@@D,\@@cl@@one}% +%      \edef\@@cl@@cl@@P{\@@cl@@cl@@P,\@@cl@@two}% +%      \normalizecolor\@@cl@@two +%      \edef\@@cl@@cl@@N{\@@cl@@cl@@N_\@@cl@@one_\@@cl@@two}% +%    \fi} +  %D We now redefine the color definition macro so that you  %D can define both normal and spotcolors. @@ -403,7 +496,7 @@    {\ifthirdargument       \doifassignmentelse{#2}         {\dododefinecolor[#1][#2,#3]}% actually this is an error -       {\dodefinespotcolor[#1][#2][#3]}% +       {\dodefinespotcolor[#1][#2][#3]}% and this the prefered method     \else       \dodefinecolor[#1][#2]%     \fi} @@ -709,11 +802,35 @@     \doexeccolorgray     \exectransparency} -\def\doexeccolorP#1:#2:% +% \def\doexeccolorP#1:#2:% +%   {\edef\@@cl@@n{#1}% +%    \edef\@@cl@@p{#2}% +%    \registerusedspotcolor\@@cl@@n +%    \ifSPOTsupported +%      \dowithcolor\registerspotcolor\@@cl@@n +%      \dostartspotcolormode\@@cl@@n\@@cl@@p +%    \else +%      \doingspotcolortrue +%      \let\spotcolorfactor\@@cl@@p +%      \factorizecolortrue            % using counter and array +%      \dowithcolor\execcolorRCSP\@@cl@@n +%      \factorizecolorfalse +%      \let\spotcolorfactor\@@cl@@o +%      \doingspotcolorfalse +%    \fi +%    \exectransparency} + +\def\doexeccolorP#1:#2:#3:#4:%    {\edef\@@cl@@n{#1}% -   \edef\@@cl@@p{#2}% +   \edef\@@cl@@f{#2}% +   \edef\@@cl@@d{#3}% +   \edef\@@cl@@p{#4}% +   \ifx\@@cl@@d\empty +     \let\@@cl@@d\@@cl@@n +   \fi     \registerusedspotcolor\@@cl@@n     \ifSPOTsupported +     \checkmultitonecolor\@@cl@@n       \dowithcolor\registerspotcolor\@@cl@@n       \dostartspotcolormode\@@cl@@n\@@cl@@p     \else @@ -727,17 +844,19 @@     \fi     \exectransparency} -% \def\doexeccolorPP#1:#2:% -%   {\edef\@@cl@@n{#1}% -%    \edef\@@cl@@p{#2}% -%    \registerusedspotcolor\@@cl@@n -%    \ifx\@@cl@@n\currentspotcolor -%      \normalizeSPOT -%      \dostartgraycolormode\@@cl@@p % was spotcolormode -%    \else -%      \dostartgraycolormode\@@cl@@o -%    \fi -%    \exectransparency} +\def\doexeccolorPindex#1:#2:#3:#4:% +  {\edef\@@cl@@n{#1}% +   \edef\@@cl@@f{#2}% +   \edef\@@cl@@d{#3}% +   \edef\@@cl@@p{#4}% +   \ifx\@@cl@@d\empty +     \let\@@cl@@d\@@cl@@n +   \fi +   \ifSPOTsupported +     \checkmultitonecolor\@@cl@@n +     \dowithcolor\registerindexcolor\@@cl@@n +   \fi +   \noexectransparency}  \def\doexeccolorPP#1:#2:%    {\edef\@@cl@@n{#1}% @@ -840,8 +959,12 @@    {\edef\@@cl@@s{#1}%     \dohidecolor\@@cl@@s\@@cl@@o} -\def\noexeccolorP#1:#2:#3\od -  {\edef\@@cl@@p{#2}% +% \def\noexeccolorP#1:#2:#3\od +%   {\edef\@@cl@@p{#2}% +%    \dohidecolor\@@cl@@p\@@cl@@z} + +\def\noexeccolorP#1:#2:#3:#4:#5\od +  {\edef\@@cl@@p{#4}%     \dohidecolor\@@cl@@p\@@cl@@z}  %D For the sake of postprocessing (i.e.\ color separation) @@ -912,29 +1035,86 @@  %D We need to register spot colors (i.e.\ resources need to  %D be created. +% \def\registerspotcolor#1:% +%   {\ifundefined{\??cl:\c!p:\@@cl@@n}% +%      \letgvalue{\??cl:\c!p:\@@cl@@n}\empty +%      %\@EA\@EA\csname registerspotcolor#1\endcsname +%      \csname registerspotcolor#1\@EA\endcsname +%    \else +%      \@EA\dontregisterspotcolor +%    \fi} +  \def\registerspotcolor#1:%    {\ifundefined{\??cl:\c!p:\@@cl@@n}%       \letgvalue{\??cl:\c!p:\@@cl@@n}\empty       %\@EA\@EA\csname registerspotcolor#1\endcsname       \csname registerspotcolor#1\@EA\endcsname     \else -     \@EA\dontregistersplotcolor +     \@EA\dontregisterspotcolor     \fi} -\def\dontregistersplotcolor#1\od -  {} +% \def\dontregisterspotcolor         #1\od{} +% \def\registerspotcolorR   #1:#2:#3:#4\od{\doregisterrgbspotcolor \@@cl@@n{#1}{#2}{#3}} +% \def\registerspotcolorC#1:#2:#3:#4:#5\od{\doregistercmykspotcolor\@@cl@@n{#1}{#2}{#3}{#4}} +% \def\registerspotcolorS         #1:#2\od{\doregistergrayspotcolor\@@cl@@n{#1}} +% \def\registerspotcolorP      #1:#2:#3\od{\doregistergrayspotcolor\@@cl@@n{#2}} -\def\registerspotcolorR#1:#2:#3:#4\od -  {\doregisterrgbspotcolor\@@cl@@n{#1}{#2}{#3}} +\def\dontregisterspotcolor         #1\od{} +\def\registerspotcolorR   #1:#2:#3:#4\od{\doregisterrgbspotcolor \@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}} +\def\registerspotcolorC#1:#2:#3:#4:#5\od{\doregistercmykspotcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}{#4}} +\def\registerspotcolorS         #1:#2\od{\doregistergrayspotcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}} +\def\registerspotcolorP      #1:#2:#3\od{\doregistergrayspotcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#2}} -\def\registerspotcolorC#1:#2:#3:#4:#5\od -  {\doregistercmykspotcolor\@@cl@@n{#1}{#2}{#3}{#4}} +%D Experimental feature: -\def\registerspotcolorS#1:#2\od -  {\doregistergrayspotcolor\@@cl@@n{#1}} +% \definecolor [darkblue]   [c=1,m=.38,y=0,k=.64] % pantone pms 2965 uncoated m +% \definecolor [darkyellow] [c=0,m=.28,y=1,k=.06] % pantone pms  124 uncoated m +% +% \definecolor [darkblue-50]    [darkblue]   [p=.5] +% \definecolor [darkyellow-50]  [darkyellow] [p=.5] +% \definecolor [darkblue-80]    [darkblue]   [p=.8] +% \definecolor [darkyellow-80]  [darkyellow] [p=.8] +% +% \definecolor [darkblue,darkyellow]  [r=.8] +% \definecolor [darkdull-5030] [darkblue,darkyellow]  [p={.5,.3}] +% +% \setupcolors[state=start] +% +% \blackrule[width=4cm,height=3cm,color=darkblue-50] +% \blackrule[width=4cm,height=3cm,color=darkblue-80] +% \blackrule[width=4cm,height=3cm,color=darkyellow-50] +% \blackrule[width=4cm,height=3cm,color=darkyellow-80] +% \blackrule[width=4cm,height=3cm,color=darkdull-5030] + +%D Experimental too (special purpose code). + +\def\registerindexcolor#1:% +  {\ifundefined{\??cl:i:\@@cl@@n}% +     \letgvalue{\??cl:i:\@@cl@@n}\empty % signal +     \writestatus\m!colors{registering index color \@@cl@@n}% +     \@EA\@EA\csname registerindexcolor#1\endcsname +   \else +     \@EA\dontregisterindexcolor +   \fi} + +\let\dontregisterindexcolor\dontregisterspotcolor + +\def\registerindexcolorR   #1:#2:#3:#4\od{\doregisterrgbindexcolor \@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}} +\def\registerindexcolorC#1:#2:#3:#4:#5\od{\doregistercmykindexcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}{#4}} +\def\registerindexcolorS         #1:#2\od{\doregistergrayindexcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}} +\def\registerindexcolorP      #1:#2:#3\od{\doregistergrayindexcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#2}} + +\def\predefinecolor[#1]% +  {\bgroup +   \flushatshipout{\hbox{\localcolortrue\color[#1]}}% real ones +   \egroup} -\def\registerspotcolorP#1:#2:#3\od -  {\doregistergrayspotcolor\@@cl@@n{#2}} +\def\predefineindexcolor[#1]% +  {\bgroup +   \flushatshipout{\hbox{\localcolortrue\color[#1]}}% real ones +   \let\doexeccolorP\doexeccolorPindex +   \flushatshipout{\hbox{\localcolortrue\color[#1]}}% index one +   \egroup}  %D Transparency is handled similar for all three color modes. We  %D can turn transparency off with the following switch: @@ -1900,7 +2080,10 @@  \def\doformatgrayS#1:#2:#3\od    {\dodoformatcolor{#1}} -\def\doformatgrayP#1:#2:#3:#4\od +% \def\doformatgrayP#1:#2:#3:#4\od +%   {\dowithcolor\doformatcolor{#1}} + +\def\doformatgrayP#1:#2:#3:#4:#5:#6\od    {\dowithcolor\doformatcolor{#1}}  \def\doformatgray#1:% @@ -2344,11 +2527,17 @@  \def\doMPcmykN#1:#2:#3:#4:#5\end#6\end    {\doMPtransparent{\cmykASrgbMP(#1,#2,#3,#4,#6)}#5\end} -\def\doMPspotY#1:#2:#3\end#4\end -  {\doMPtransparent{\spotMP("#1",#2)}#3\end} +% \def\doMPspotY#1:#2:#3\end#4\end +%   {\doMPtransparent{\spotMP("#1",#2)}#3\end} +% +% \def\doMPspotN#1:#2:#3\end#4\end +%   {\scaledMPcolor{#2}{#1}} + +\def\doMPspotY#1:#2:#3:#4:#5\end#6\end % best make #3 same as #1 when empty +  {\doMPtransparent{multitonecolor("#1",#2,"#3","#4")}#5\end} -\def\doMPspotN#1:#2:#3\end#4\end -  {\scaledMPcolor{#2}{#1}} +\def\doMPspotN#1:#2:#3:#4:#5\end#6\end +  {\scaledMPcolor{#4}{#1}}  \def\doMPblack#1\end#2\end    {\unknownMPcolor} @@ -2361,36 +2550,55 @@  %D  %D Similar alternatives are avaliable for \PDF: -\def\PDFcolor#1% -  {\handlecolorwith\doPDFcolor\csname\??cr#1\endcsname:::::::\end} +\def\PDFcolor     #1{\handlecolorwith\doPDFcolor     \csname\??cr#1\endcsname:::::::\end} +\def\PDFcolorvalue#1{\handlecolorwith\doPDFcolorvalue\csname\??cr#1\endcsname:::::::\end} +\def\FDFcolor     #1{\handlecolorwith\doFDFcolor     \csname\??cr#1\endcsname:::::::\end} + +% \def\doPDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end +%   {\if     #1R#2 #3 #4 rg% +%    \else\if#1C#2 #3 #4 #5 k% +%    \else\if#1S#2 g% +%    \else\if#1P#3 g% todo +%    \else       0 g% +%    \fi\fi\fi\fi} +% +% \def\doPDFcolorvalue#1:#2:#3:#4:#5:#6:#7:#8\end +%   {\if     #1R#2 #3 #4% +%    \else\if#1C#2 #3 #4 #5% +%    \else\if#1S#2% +%    \else\if#1P#3% +%    \else       0% +%    \fi\fi\fi\fi} +% +% \def\doFDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end +%   {[\if     #1R#2 #3 #4% +%     \else\if#1C#2 #3 #4 #5% +%     \else\if#1S#2% +%     \else\if#1P#3% todo +%     \else       0% +%     \fi\fi\fi\fi]}  \def\doPDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end    {\if     #1R#2 #3 #4 rg%     \else\if#1C#2 #3 #4 #5 k%     \else\if#1S#2 g% -   \else\if#1P#3 g% todo +   \else\if#1P#5 g%     \else       0 g%     \fi\fi\fi\fi} -\def\PDFcolorvalue#1% -  {\handlecolorwith\doPDFcolorvalue\csname\??cr#1\endcsname:::::::\end} -  \def\doPDFcolorvalue#1:#2:#3:#4:#5:#6:#7:#8\end    {\if     #1R#2 #3 #4%     \else\if#1C#2 #3 #4 #5%     \else\if#1S#2% -   \else\if#1P#3% +   \else\if#1P#5%     \else       0%     \fi\fi\fi\fi} -\def\FDFcolor#1% -  {\handlecolorwith\doFDFcolor\csname\??cr#1\endcsname:::::::\end} -  \def\doFDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end    {[\if     #1R#2 #3 #4%      \else\if#1C#2 #3 #4 #5%      \else\if#1S#2% -    \else\if#1P#3% todo +    \else\if#1P#5%      \else       0%      \fi\fi\fi\fi]} diff --git a/tex/context/base/cont-fil.tex b/tex/context/base/cont-fil.tex index 8cd6a5639..fa4d567b9 100644 --- a/tex/context/base/cont-fil.tex +++ b/tex/context/base/cont-fil.tex @@ -26,6 +26,8 @@  %definefilesynonym [sch-base]        [sch-00]  %definefilesynonym [sch-make]        [sch-01] +\definefilesynonym [dir-make]        [dir-01] +  \definefilesynonym [xml-format]      [xml-01]  \definefilesynonym [xml-pretty]      [xml-02] diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index c156137f9..055b12317 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -21,17 +21,73 @@  \writestatus{\m!systems}{beware: some patches loaded from cont-new.tex!} -\def\doifelsefontsynonym#1% -  {\ifcsname\??ff\fontclass#1\endcsname -     \expandafter\firstoftwoarguments -   \else -     \expandafter\secondoftwoarguments -   \fi} +% \definemarkedpage[nobackgrounds] +% \markpage[nobackgrounds] +% \doifmarkedpageelse{nobackgrounds} + +\def\gettwopassdatalist#1% +  {\loadtwopassdata +   \letcscsname\twopassdatalist\csname#1:\s!list\endcsname +   \ifx\twopassdatalist\relax\let\twopassdatalist\empty\fi} + +\newcounter\nofmarkedpages + +\def\definemarkedpage[#1]% +  {\definetwopasslist{\v!pagina:#1}} -\def\expandfontsynonym#1#2% #2 := onelevelexpansion(#1) -  {\ifcsname\??ff\fontclass#2\endcsname -     \expandafter\def\expandafter#1\expandafter{\csname\??ff\fontclass#2\endcsname}% +\def\markpage[#1]% looks very much like domarginreference and doparagraphreference +  {\iftrialtypesetting\else +     \doglobal\increment\nofmarkedpages\relax +     \edef\writeparref% +       {\writeutilitycommand% +          {\twopassentry% +             {\v!pagina:#1}% +             {\nofmarkedpages}% +             {\noexpand\realfolio}}}% +     \writeparref     \fi} + +\def\doifmarkedpageelse#1% +  {\gettwopassdatalist{\v!pagina:#1}% +   \expanded{\doifinsetelse{\realfolio}{\twopassdatalist}}} + +% Just a simple and fast hanger, for usage in macros. + +\def\setuphanging +  {\dodoubleempty\getparameters[\??ha]} + +\setuphanging +  [\c!afstand=.5em] + +\def\starthanging +  {\noindent\bgroup +   \dowithnextbox +     {\setbox\nextbox\hbox{\flushnextbox\hskip\@@haafstand}% +      \hangindent\nextboxwd +      \hangafter\plusone +      \flushnextbox\ignorespaces} +   \hbox} + +\def\stophanging +  {\endgraf +   \egroup} + +\def\modevalue#1#2#3% +  {\@EA\ifx\csname\@mode@\systemmodeprefix#1\endcsname\endcsname\enabledmode#2\else#2\fi} + +\def\systemmodevalue#1% +  {\modevalue{\systemmodeprefix#1}} + +% \getmulticolumnlines -> now in cont-loc, to be tested and really needed + +\def\naturaltextext#1\relax +  {\bgroup +   \prettynaturalfont +   \def\ascii{#1}% +   \setnormalcatcodes +   \restorecatcodes +   \scantokens\expandafter{\ascii}\ifhmode\unskip\fi +   \egroup}  \long\def\startprocesscommalist[#1]#2\stopprocesscommalist    {\long\def\currentcommalistcommand##1{\def\currentcommalistitem{##1}#2}% @@ -42,88 +98,6 @@  \tracefonthandlingtrue -% \def\resetXMLelement[#1]% handy in case only singular -%   {\@EA\let\csname\@@XMLelement:#1\endcsname \donothing -%    \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing -%    \@EA\let\csname\@@XMLelement:#1/\endcsname\donothing} -% -% is the same as: - -\def\resetXMLelement[#1]{\dododefineXMLprocess{#1}} - -\let\dorecalculatelayout\recalculatelayout - -\def\recalculatelayout -  {\doifsomething{\layoutparameter\c!pagina\layoutparameter\c!papier} -     {\dododosetuppapersize[\layoutparameter\c!pagina][\layoutparameter\c!papier]}% -   \dorecalculatelayout} - -\def\dodosetuppapersize[#1][#2]% -  {\ifsecondargument -     \dododosetuppapersize[#1][#2]% -     \calculatehsizes -     \calculatevsizes -     \recalculatelogos -     \recalculatebackgrounds -     \recalculatelayout -   \else\iffirstargument -     \setuppapersize[#1][#2]% -   \else\ifx\papersize\undefined\else -     \restorepapersize -   \fi\fi\fi} - -\def\dododosetuppapersize[#1][#2]% -  {\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, 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}} - -\setuplayout -  [\c!papier=, -   \c!pagina=] -  \def\parseTR[#1][#2]% [#2] is dummy that kills spaces / no #3 argument    {\def\currentcol{0}\increment\maximumrow     \let\currentcolpos\currentcol @@ -212,52 +186,6 @@  \egroup -\def\complexdozieregister[#1]#2#3% -  {\begingroup -     \thisisnextinternal\s!ind -     \ifduplicate\getlastregisterentry{#2}\fi -     \convertexpanded{\??id\currentregister}{#2}\asciiregisterentryA -     \convertexpanded{\??id\currentregister}{#3}\asciiregisterentryB -     \makesectionformat -     \edef\schrijfwegnaarregister% -       {\writeutility% -          {r s % -           {\currentregister} % -           {\nextinternalreference} % -           {#1} % -           {\asciiregisterentryA} % -           {\asciiregisterentryB} % -           {\sectionformat}}}% -     \schrijfwegnaarregister -   \endgroup -   \registerinfo{> zie}{#2}% -   \GotoPar} - -\def\dodododoinatreference#1#2#3[#4]% \removeunwantedspaces added june 2004 -  {\ifx\next\bgroup -     \dododododoinatreference -      % fails on metafun  {\leftofreference#1\ignorespaces#3\removeunwantedspaces\rightofreference}{#2}[#4]% -       {\leftofreference#1\ignorespaces#3\rightofreference}{#2}[#4]% -   \else -     \dododododoinatreference -       {\leftofreference#1\rightofreference}{#2#3}[#4]% -   \fi} - -\dostepwiserecurse{0}{9}{1}{\setevalue{@@uc@@\recurselevel}{\recurselevel}} - -\setvalue{@@uc@@a}{A} \setvalue{@@uc@@A}{A} -\setvalue{@@uc@@b}{B} \setvalue{@@uc@@B}{B} -\setvalue{@@uc@@c}{C} \setvalue{@@uc@@C}{C} -\setvalue{@@uc@@d}{D} \setvalue{@@uc@@D}{D} -\setvalue{@@uc@@e}{E} \setvalue{@@uc@@E}{E} -\setvalue{@@uc@@f}{F} \setvalue{@@uc@@F}{F} - -\def\hexstringtonumber#1% {FF} -  {\dohexstringtonumber#1} - -\def\dohexstringtonumber#1#2% FF -  {"\csname @@uc@@#1\endcsname\csname @@uc@@#2\endcsname} -  % \def\doshowpardata#1#2{\hbox{\string#1: \the#2}\endgraf}  %  % \def\showpardata @@ -386,44 +314,6 @@  %  % \endETEX -\def\OTRONEdocheckiffloatfits % vervangen ivm downward comp -  {\ifnofloatpermitted -     \global\roomforfloatfalse -   \else -     % new per 31/5/2004, should be an option, only one column mode -     \begingroup -     \scratchdimen\pagetotal -     \advance\scratchdimen\lineheight % maybe strutheight -     \ifdim\scratchdimen>\pagegoal -       \goodbreak % hack ? needed in icare-az -     \fi -     % should be an option -     \endgroup -     \dimen0         \pagetotal -     \advance\dimen0 \ht\floatbox -     \advance\dimen0 \dp\floatbox -     \advance\dimen0 \floattopskip -     \advance\dimen0 -\pageshrink  % toegevoegd -    %\message{c:\the\mofcolumns,t:\the\pagetotal,g:\the\pagegoal}%\wait -     \dimen2\pagegoal -     \relax % needed -     \ifcase\textfloatmethod -       % method 0 : raw -     \or -       % method 1 : safe -       \dimen2 .99\pagegoal -     \or -       % method 2 : tight -       \advance\dimen0 -\onepoint -     \fi -     \relax % really needed ! ! ! ! -     \ifdim\dimen0>\dimen2 -       \global\roomforfloatfalse -     \else -       \global\roomforfloattrue -     \fi -   \fi} -  % cleaner  %  % \long\def\doMPTEXcheck#1% @@ -452,123 +342,6 @@  %      \the\MPTEXgrapicchecks\relax % \relax is end condition!  %    \fi} -\def\endmulticolumns -  {%\par -   \vskip\lineheight\vskip-\lineheight % take footnotes into account -   \dontshowcomposition -   \doflushcolumnfloat  % added recently -  %\doflushcolumnfloats % no, since it results in wrong top floats -   \flushnotes          % before start of columns -   \par -   \ifbalancecolumns -     \global\output{\continuousmulticolumnsout}% -     \goodbreak -     \global\output{\balancedmulticolumnsout}% -   \else -     \goodbreak -   \fi -   \eject               % the prevdepth is important, try e.g. toclist in -   \prevdepth\zeropoint % columns before some noncolumned text text -   \global\output\singlecolumnout -   \global\output{\the\mainoutput}% % % % % todo -   \ifvoid\precolumnbox\else -     \unvbox\precolumnbox -   \fi -   \global\precolumnboxheight\zeropoint -   \endgroup % here -   \nofcolumns\plusone -   \setvsize % the outer one! -   \synchronizeoutput % new may 2004 / we need to: \pagegoal\vsize -   \checkendcolumnfootnotes -   \dosomebreak\allowbreak -   \restoresavedfloats} - -% this one already catches both define/setup - -\def\setupbodyfontenvironment{\definebodyfontenvironment} - -% officially, but not needed (yet): -% -% \def\dosetupbodyfontenvironment[#1][#2][#3]% class size settings -%   {\ifthirdargument -%      \localbodyfontsize#2\relax -%      \normalizebodyfontsize\localbodyfontsize\to\normalizedbodyfontsize -%      \doifundefinedelse{\??ft#1\normalizedbodyfontsize\c!em} -%        {\definebodyfontenvironment[#1][#2][#3]}% -%        {\getparameters[\??ft#1\normalizedbodyfontsize][#3]}% -%    \else -%      \localbodyfontsize#1\relax -%      \normalizebodyfontsize\localbodyfontsize\to\normalizedbodyfontsize -%      \doifundefinedelse{\??ft\normalizedbodyfontsize\c!em} -%        {\definebodyfontenvironment[#1][#2]}% -%        {\getparameters[\??ft\normalizedbodyfontsize][#2]}% -%    \fi} - -\def\dogetobject#1#2#3#4#5#6#7% -  {\initializepaper -   \forgetall -   \dontshowcomposition -   \setbox\scratchbox\vbox -     {\doinsertobject{#1}{#2}}% -   \setbox\scratchbox#3% -     {\vbox to #5\scaledpoint -        {\ifdim\ht\scratchbox>#5\scaledpoint -           \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss -         \else\ifdim\wd\scratchbox>#4\scaledpoint -           \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss -         \else -           \vss\box\scratchbox -         \fi\fi}}% -   \box\scratchbox -   \elabelgroup} - -% todo: make it work in balancing -% -% \definemarking[vers][] -% \setupheadertexts -%   [\doiftext{\getmarking[vers][first]} -%      {\doiftextelse{\getmarking[vers][column:last]} -%         {\getmarking[vers][first] -- \getmarking[vers][column:last]} -%         {\getmarking[vers][first]}}] -% \starttext -%   \startcolumns[n=2,balance=no] -%     \dorecurse{10}{\expanded{\marking[vers]{\recurselevel}} \recurselevel:\dorecurse{4}{\input ward } \endgraf} -%   \stopcolumns -% \stoptext - -\letvalue{\??mk\??mk\v!kolom:\v!eerste }\getsplitfirstmark -\letvalue{\??mk\??mk\v!kolom:\v!laatste}\getsplitbottommark - -% \definemarkedpage[nobackgrounds] -% \markpage[nobackgrounds] -% \doifmarkedpageelse{nobackgrounds} - -\def\gettwopassdatalist#1% -  {\loadtwopassdata -   \letcscsname\twopassdatalist\csname#1:\s!list\endcsname -   \ifx\twopassdatalist\relax\let\twopassdatalist\empty\fi} - -\newcounter\nofmarkedpages - -\def\definemarkedpage[#1]% -  {\definetwopasslist{\v!pagina:#1}} - -\def\markpage[#1]% looks very much like domarginreference and doparagraphreference -  {\iftrialtypesetting\else -     \doglobal\increment\nofmarkedpages\relax -     \edef\writeparref% -       {\writeutilitycommand% -          {\twopassentry% -             {\v!pagina:#1}% -             {\nofmarkedpages}% -             {\noexpand\realfolio}}}% -     \writeparref -   \fi} - -\def\doifmarkedpageelse#1% -  {\gettwopassdatalist{\v!pagina:#1}% -   \expanded{\doifinsetelse{\realfolio}{\twopassdatalist}}} -  % no, wrong! never!  %  % \def\tightlayer[#1]% @@ -593,15 +366,6 @@         {\processcommacommand[.,\allinputpaths]\docommando}%     \fi} -\def\setfontstrut -  {\setcharstrut{(gplQT}} - -\def\doifXMLtextelse#1% -  {\doiftextelse{\simplifyXMLelements#1}} - -\def\doifXMLtext#1#2% -  {\doiftextelse{\simplifyXMLelements#1}{#2}\donothing} -  % todo : share symbols  % \definecolor[rollover:n][red] @@ -1274,27 +1038,6 @@    {\endgraf\verticalstrut\endgraf\kern-2\lineheight     \egroup} -% Just a simple and fast hanger, for usage in macros. - -\def\setuphanging -  {\dodoubleempty\getparameters[\??ha]} - -\setuphanging -  [\c!afstand=.5em] - -\def\starthanging -  {\noindent\bgroup -   \dowithnextbox -     {\setbox\nextbox\hbox{\flushnextbox\hskip\@@haafstand}% -      \hangindent\nextboxwd -      \hangafter\plusone -      \flushnextbox\ignorespaces} -   \hbox} - -\def\stophanging -  {\endgraf -   \egroup} -  \def\definepushbutton % name optional setup    {\dodoubleempty\dodefinepushbutton} @@ -1782,8 +1525,8 @@  %    \the\@@everyparagraphtoks}  \def\doinsertparagraphintro -  {%\begingroup -   %\everypar\emptytoks +  {\begingroup +   \everypar\emptytoks     \ifcase\everyparagraphintro\relax       % no data       \@@everyparagraphtoks\emptytoks @@ -1797,7 +1540,7 @@       \@@everyparagraphtoks\everynextparagraphintro     \fi     \the\@@everyparagraphtoks -   }%\endgroup} +   \endgroup}  \def\insertparagraphintro    {\ifcase\everyparagraphintro\else\@EA\doinsertparagraphintro\fi} diff --git a/tex/context/base/cont-usr.ori b/tex/context/base/cont-usr.ori index 22b8a63f5..6c6c2f121 100644 --- a/tex/context/base/cont-usr.ori +++ b/tex/context/base/cont-usr.ori @@ -50,7 +50,17 @@  \definefilesynonym [lang-tr.pat]  [trhyph.tex]  \definefilesynonym [lang-ua.pat]  [ukrenhyp.tex]  \definefilesynonym [lang-uk.pat]  [ukhyphen.tex] -\definefilesynonym [lang-us.pat]  [ushyph1.tex] +\definefilesynonym [lang-us.pat]  [ushyph.tex] + +%D Ah, something changed in 2003 with respect to ushyph.tex, so let's +%D fall back when needed. I first noticed this during a workshop at  the +%D practical tex conference 2004 in sf. Yet another proof of a mess in +%D filenames. + + \doiffileelse{ushyph.tex}  {\definefilesynonym[lang-us.pat][ushyph.tex]} +{\doiffileelse{ushyph1.tex} {\definefilesynonym[lang-us.pat][ushyph1.tex]} +{\doiffileelse{ushyph2.tex} {\definefilesynonym[lang-us.pat][ushyph2.tex]} +                            {\definefilesynonym[lang-us.pat][ukhyph.tex]}}}  %D When the dutch spelling changed, new patterns were  %D constructed. For long these were named \type {dutch96.pat}. @@ -60,11 +70,9 @@  %D files as well as their coding is one of the dark areas of  %D \TEX\ distributions. -\doiffileelse{nehyph96.tex} -  {\definefilesynonym[lang-nl.pat][nehyph96.tex]} -  {\doiffileelse{dutch96.pat} -     {\definefilesynonym[lang-nl.pat][dutch96.pat]} -     {\definefilesynonym[lang-nl.pat][nehyph.tex]}} + \doiffileelse{nehyph96.tex}   {\definefilesynonym[lang-nl.pat][nehyph96.tex]} +{\doiffileelse{dutch96.pat}    {\definefilesynonym[lang-nl.pat][dutch96.pat]} +                               {\definefilesynonym[lang-nl.pat][nehyph.tex]}}  %D Pattern files are (can be) encoded! And, alas, not all  %D pattern files are self contained, which is why (for the diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index e2a4ff29e..ec535265a 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -15,7 +15,7 @@  \catcode`\{=1 \catcode`\}=2 -\def\contextversion{2004.6.30} +\def\contextversion{2004.8.15}  %D Welcome to the main module. When this module is ran through  %D \type{initex} or \type{tex -i} or \type{whatevertex} using @@ -141,6 +141,7 @@  \input spec-mis.tex  \input spec-ini.tex  \input spec-def.tex +\input spec-var.tex  %D For the moment we load a lot of languages. In the future  %D we'll have to be more space conservative. diff --git a/tex/context/base/core-box.tex b/tex/context/base/core-box.tex index 9ee21e7a6..f9d30c43e 100644 --- a/tex/context/base/core-box.tex +++ b/tex/context/base/core-box.tex @@ -718,6 +718,21 @@  \setvalue{\??ab\??ab bl}{\bottomleftbox}  \setvalue{\??ab\??ab tr}{\toprightbox}  \setvalue{\??ab\??ab br}{\bottomrightbox} + +\setvalue{\??ab\??ab  m}{\middlebox} + +% The next ones were desparately needed by Vit Zyka (see +% \type {supp-box} for definitions). + +\setvalue{\??ab\??ab  g}{\baselinemiddlebox} +\setvalue{\??ab\??ab gl}{\baselineleftbox} +\setvalue{\??ab\??ab gc}{\baselinemiddlebox} +\setvalue{\??ab\??ab gr}{\baselinerightbox} + +\setvalue{\??ab\??ab \v!regel         }{\baselinemiddlebox} % \v!grid is taken +\setvalue{\??ab\??ab \v!regel\v!links }{\baselineleftbox} +\setvalue{\??ab\??ab \v!regel\v!midden}{\baselinemiddlebox} +\setvalue{\??ab\??ab \v!regel\v!rechts}{\baselinerightbox}  \def\offsetbox    {\dodoubleempty\dooffsetbox[]} diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex index 37b22bd40..143dec45b 100644 --- a/tex/context/base/core-fig.tex +++ b/tex/context/base/core-fig.tex @@ -987,18 +987,21 @@     \getparameters       [\??ef]       [\c!type=\s!unknown,\c!methode=\@@eftype,\c!symbool=\v!nee, -      \c!object=\@@exobject,\c!preset=\v!ja, +      \c!object=\@@exobject,\c!preset=\v!ja,\c!splitsen=,\c!formaat=,        \c!pagina=0,\c!sturing=\v!nee,\c!preview=\v!nee,\c!herhaal=\v!nee,        \c!maxbreedte=\@@exmaxbreedte,\c!maxhoogte=\@@exmaxhoogte,        \c!schaal=,\c!breedte=,\c!hoogte=,\c!scherm=,\c!regels=,\c!grid=,       %\c!voorgrondkleur=, -      \c!splitsen=,        \c!factor=,\c!hfactor=,\c!bfactor=]%     \doif\@@efextension\c!mov\presetfiguremov     \doif\@@efextension\c!avi\presetfigureavi     #1[#4][#5][#6]%     % lines -> height     \checkfiguresettings +   % new +   \doifinsetelse\@@efformaat{mediabox,cropbox,artbox,bleedbox,trimbox} +     {\let\@@DriverImageBox\@@efformaat}% +     {\let\@@DriverImageBox\empty}%     % new, color separation     \doifseparatingcolorselse       {\let\@@efvoorgrondkleur\empty @@ -1212,6 +1215,7 @@     \doifelse\@@efobject\v!nee       \donefalse       {\doifobjectssupportedelse\donetrue\donefalse}% +   % this (for the moment) conveniently maps onto pdf which saves mapping     \ifdone       \doifobjectfoundelse{FIG}\@@efobjectname         \donothing diff --git a/tex/context/base/core-int.tex b/tex/context/base/core-int.tex index af6dcf792..2a9899095 100644 --- a/tex/context/base/core-int.tex +++ b/tex/context/base/core-int.tex @@ -2218,11 +2218,15 @@       {\let\@@ccopen   \!!plusone}{\let\@@ccopen   \!!zerocount}%     \doifelse\@@ccoptie\v!buffer       {\let\@@cccollect\!!plusone}{\let\@@cccollect\!!zerocount}% +   \preparecommentvariables     \doinsertcomment       \@@cctitel\!!widtha\!!heighta       \@@cckleur\@@ccopen\@@ccsymbool       \@@cccollect{#1}} +\def\preparecommentvariables % more will move here as with fields +  {\let\@@DriverCommentLayer\@@cctekstlaag} +  \def\dopreparecommentaar#1#2%    {\doifassignmentelse{#1}       {\getparameters[\??cc][#1]} @@ -2355,29 +2359,62 @@       \edef\attachmentname{\attachmentname.\!!stringd}%     \fi} -\def\attachment[#1]% currently title equals newname +% \def\attachment[#1]% currently title equals newname +%   {\iflocation +%      \doifundefinedelse{\??at:#1} +%        {\writestatus\m!interactions6{#1}}% +%        {\doif\@@atstatus\v!start +%           {\bgroup +%            \getattachmentdata[#1]% +%            \doiffileelse\attachmentfile +%              {\doattachfile +%                 \attachmenttitle +%                   {1em}{\strutheight}{\strutdepth}\@@atkleur\@@atsymbool +%                 \attachmentname +%                 \attachmentfile}% +%              {\writestatus\m!interactions5\attachmentfile}% +%            \egroup}}% +%    \fi} + +\def\attachment +  {\dodoubleempty\doattachment} + +\def\doattachment[#1][#2]% currently title equals newname    {\iflocation -     \doifundefinedelse{\??at:#1} -       {\writestatus\m!interactions6{#1}}% -       {\doif\@@atstatus\v!start -          {\bgroup -           \getattachmentdata[#1]% -           \doiffileelse\attachmentfile -             {\doattachfile -                \attachmenttitle -                  {1em}{\strutheight}{\strutdepth}\@@atkleur\@@atsymbool -                \attachmentname -                \attachmentfile}% -             {\writestatus\m!interactions5\attachmentfile}% -           \egroup}}% +     \ifsecondargument +       \doifundefined{\??at:#2} +         {\writestatus\m!interactions6{#2}% +          \useattachment[#2]}% +       \doif\@@atstatus\v!start +         {\bgroup +          \getattachmentdata[#2]% +          \doiffileelse\attachmentfile +            {\setupattachments[#1]% +             \presetattachmentvariables +\struttedbox{\tbox{% +             \doattachfile +               \attachmenttitle +               {1em}\strutheight\strutdepth\@@atkleur\@@atsymbool +               \attachmentname +               \attachmentfile}% +}}% +            {\writestatus\m!interactions5\attachmentfile}% +          \egroup}% +     \else\iffirstargument +        \attachment[][#1]% +     \fi\fi     \fi} +\def\presetattachmentvariables +  {\let\@@DriverAttachmentLayer\@@attekstlaag} +  \def\setupattachments    {\dodoubleempty\getparameters[\??at]}  \setupattachments    [\c!status=\v!start,     \c!kleur=\@@iakleur, +   \c!tekstlaag=,     \c!symbool=]  % jammer, tussen/midden had erin gemoeten; \c!commando toevoegen @@ -2599,7 +2636,8 @@     \c!spatie=\v!nee,     \c!symbool=\v!normaal,     \c!plaats=\v!inmarge, -   \c!optie=] +   \c!optie=, +   \c!tekstlaag=]  \stelversiesin    % beware, @ is made active here,    [\c!nummer=1,   % therefore we set this one at the end diff --git a/tex/context/base/core-itm.tex b/tex/context/base/core-itm.tex index 69fe63dec..a67d22603 100644 --- a/tex/context/base/core-itm.tex +++ b/tex/context/base/core-itm.tex @@ -116,6 +116,7 @@        \c!kopvoor,\c!kopna,\c!voor,\c!tussen,\c!na,        \c!afsluiter,\c!plaatsafsluiter,\c!inspringen,        \c!n,\c!binnen,\c!symbool,\c!marge,\c!items, +      \c!linkermarge,\c!rechtermarge,        \c!start,\c!linkertekst,\c!rechtertekst]}  \def\setupitemgroups @@ -416,7 +417,7 @@  %         \edef\columntextwidth{\the\scratchdimen}%  %         \leftskip\zeropoint  %         % so far -%         \startkolommen +%         \startcolumns  %           [\c!n=\!!counta, % netter \??op\itemlevel\c!n  %            \c!hoogte=,  %            \c!lijn=\v!uit, @@ -533,7 +534,7 @@  %         \edef\columntextwidth{\the\scratchdimen}%  %         \leftskip\zeropoint  %         % so far -%         \startkolommen +%         \startcolumns  %           [\c!n=\!!counta, % netter \??op\itemlevel\c!n  %            \c!hoogte=,  %            \c!lijn=\v!uit, @@ -601,7 +602,9 @@     \fi     \begingroup     \ifnum\itemlevel=\plusone % NIEUW -     \doadaptleftskip{\getitemparameter1\c!marge}% +     \doadaptleftskip {\getitemparameter1\c!marge}% +     \doadaptleftskip {\getitemparameter1\c!linkermarge}% +     \doadaptrightskip{\getitemparameter1\c!rechtermarge}%     \fi     \dosetraggedcommand{\getitemparameter\itemlevel\c!uitlijnen}\raggedcommand     \doifsomething{\getitemparameter\itemlevel\c!inspringen} @@ -632,7 +635,7 @@          \edef\columntextwidth{\the\scratchdimen}%          \leftskip\zeropoint          % so far -        \startkolommen +        \startcolumns            [\c!n=\!!counta, % netter \??op\itemlevel\c!n             \c!hoogte=,             \c!lijn=\v!uit, @@ -704,7 +707,7 @@     \ifnum\itemcolumndepth=\zerocount \dolistreference \fi % beware !     \iffirstlist \else \endgroup \fi % toegevoegd, eerste \som opent groep     \ifnum\itemcolumndepth=\itemlevel\relax -     \stopkolommen +     \stopcolumns       \doglobal\newcounter\itemcolumndepth       \getitemparameter\itemlevel\c!na     \else @@ -723,7 +726,9 @@     \fi     \endgroup     \doglobal\decrement(\itemlevel,\itemincrement)% -   \egroup} +   \egroup +   % new needed in sidefloats (surfaced in volker's proceedings) +   \iftextitems\else\par\fi}  \newtoks\itemgroupcommands @@ -1010,7 +1015,9 @@  \setupitemgroups % undocumented    [\c!niveaus=6, -   \c!marge=\!!zeropoint, +   \c!marge=\zeropoint, +   \c!linkermarge=\zeropoint, +   \c!rechtermarge=\zeropoint,     \c!springvolgendein=\v!ja,     \c!breedte=1.5em,     \c!factor=0, diff --git a/tex/context/base/core-mar.tex b/tex/context/base/core-mar.tex index 1ec951f8a..bb9fc0eca 100644 --- a/tex/context/base/core-mar.tex +++ b/tex/context/base/core-mar.tex @@ -84,6 +84,23 @@  \letvalue{\??mk\??mk\v!laatste}\getbotmark  \letvalue{\??mk\??mk\v!huidige}\getcurrentmark +% todo: make it work in balancing +% +% \definemarking[vers][] +% \setupheadertexts +%   [\doiftext{\getmarking[vers][first]} +%      {\doiftextelse{\getmarking[vers][column:last]} +%         {\getmarking[vers][first] -- \getmarking[vers][column:last]} +%         {\getmarking[vers][first]}}] +% \starttext +%   \startcolumns[n=2,balance=no] +%     \dorecurse{10}{\expanded{\marking[vers]{\recurselevel}} \recurselevel:\dorecurse{4}{\input ward } \endgraf} +%   \stopcolumns +% \stoptext + +\letvalue{\??mk\??mk\v!kolom:\v!eerste }\getsplitfirstmark +\letvalue{\??mk\??mk\v!kolom:\v!laatste}\getsplitbottommark +  \ifx\decouplemarking\undefined \def\decouplemarking[#1]{} \fi  \def\dododefinemarking[#1][#2]% diff --git a/tex/context/base/core-obj.tex b/tex/context/base/core-obj.tex index 48e7b11ba..2b2fcc98b 100644 --- a/tex/context/base/core-obj.tex +++ b/tex/context/base/core-obj.tex @@ -115,7 +115,6 @@  %D clip.  \def\objectoffset{1cm} -  {}  % \def\dodosetobject#1#2#3%  %   {\bgroup @@ -177,7 +176,30 @@  %    \box\scratchbox  %    \elabelgroup} -\def\dogetobject#1#2#3#4#5#6#7% +% \def\dogetobject#1#2#3#4#5#6#7% +%   {\initializepaper +%    \forgetall +%    \dontshowcomposition +%    \setbox\scratchbox\vbox +%      {\doinsertobject{#1}{#2}}% +%    \setbox\scratchbox#3% +%      {\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\scaledpoint +%    \setbox\nextbox\hbox +%      {\hskip-\scratchdimen\lower\scratchdimen\flushnextbox}% +%    \wd\scratchbox#4\scaledpoint +%    \ht\scratchbox#5\scaledpoint +%    \dp\scratchbox#6\scaledpoint +%    \box\scratchbox +%    \elabelgroup} + +\def\dogetobject#1#2#3#4#5#6#7% don't change this, should work for dvi & pdf    {\initializepaper     \forgetall     \dontshowcomposition @@ -186,17 +208,12 @@     \setbox\scratchbox#3%       {\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\ifdim\wd\scratchbox>#4\scaledpoint             \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss           \else             \vss\box\scratchbox -         \fi}}% -   \scratchdimen#7\scaledpoint -   \setbox\nextbox\hbox -     {\hskip-\scratchdimen\lower\scratchdimen\flushnextbox}% -   \wd\scratchbox#4\scaledpoint -   \ht\scratchbox#5\scaledpoint -   \dp\scratchbox#6\scaledpoint +         \fi\fi}}%     \box\scratchbox     \elabelgroup} @@ -243,7 +260,6 @@  %D These commands are to be called by the \type{\startobject},  %D \type{\stopobject} and \type{\insertobject} specials. -  \def\objectreferenced{\global\chardef\crossreferenceobject\plusone}  \def\driverreferenced{\global\chardef\crossreferenceobject\zerocount} @@ -388,4 +404,4 @@  %D support objects while we still want to be able to use the  %D \DVI\ output. -\protect \endinput +\protect \endinput
\ No newline at end of file diff --git a/tex/context/base/core-pos.tex b/tex/context/base/core-pos.tex index c05cb68d9..2e37c8440 100644 --- a/tex/context/base/core-pos.tex +++ b/tex/context/base/core-pos.tex @@ -1750,6 +1750,29 @@  \def\backgroundvariable#1%    {\csname\??td\currenttextbackground#1\endcsname} +% \definetextbackground[more][state=start,backgroundcolor=red] % location=paragraph +% \definetextbackground[test][state=start,backgroundcolor=green] +% +% \page \placefigure[left]{}{} +% +% \starttextbackground[test] +%   \readfile{ward}{}{} +%   \starttextbackground[more] +%     \readfile{ward}{}{} +%   \stoptextbackground +%   \readfile{ward}{}{} +% \stoptextbackground +% +% \page \placefigure[right]{}{} +% +% \starttextbackground[test] +%   \readfile{ward}{}{} +%   \starttextbackground[more] +%     \readfile{ward}{}{} +%   \stoptextbackground +%   \readfile{ward}{}{} +% \stoptextbackground +  \def\dostarttextbackground[#1][#2]%    {\checktextbackgrounds     \def\currenttextbackground{#1}% diff --git a/tex/context/base/core-ref.tex b/tex/context/base/core-ref.tex index 4a1733368..67b4cf3e1 100644 --- a/tex/context/base/core-ref.tex +++ b/tex/context/base/core-ref.tex @@ -2609,9 +2609,10 @@  \let\textofreference \relax  \def\dodododoinatreference#1#2#3[#4]% \removeunwantedspaces added june 2004 -  {\ifx\next\bgroup +  {\ifx\next\bgroup                 % but removed later, fails on metafun       \dododododoinatreference -       {\leftofreference#1\ignorespaces#3\removeunwantedspaces\rightofreference}{#2}[#4]% +      % fails on metafun  {\leftofreference#1\ignorespaces#3\removeunwantedspaces\rightofreference}{#2}[#4]% +       {\leftofreference#1\ignorespaces#3\rightofreference}{#2}[#4]%     \else       \dododododoinatreference         {\leftofreference#1\rightofreference}{#2#3}[#4]% diff --git a/tex/context/base/core-reg.tex b/tex/context/base/core-reg.tex index fd046af52..33a93b25d 100644 --- a/tex/context/base/core-reg.tex +++ b/tex/context/base/core-reg.tex @@ -150,6 +150,27 @@     \def\currentregister{#1}%     \donoregister[#2]} +% \def\complexdozieregister[#1]#2#3% +%   {\begingroup +%      \thisisnextinternal\s!ind +%      \ifduplicate\getlastregisterentry{#2}\fi +%      \convertexpanded{\??id\currentregister}{#2}\asciiregisterentryA +%      \convertexpanded{\??id\currentregister}{#3}\asciiregisterentryB +%      \makesectionformat +%      \edef\schrijfwegnaarregister% +%        {\writeutility% +%           {r s % +%            {\currentregister} % +%            {\nextinternalreference} % +%            {#1} % +%            {\asciiregisterentryA} % +%            {\asciiregisterentryB} % +%            {\sectionformat}}}% +%      \schrijfwegnaarregister +%    \endgroup +%    \registerinfo{> zie}{#2}% +%    \GotoPar} +  \def\complexdozieregister[#1]#2#3%    {\begingroup       \thisisnextinternal\s!ind @@ -891,7 +912,7 @@    {\begingroup     \stelregisterin[\currentregister][#1]%     \raggedright -   \startkolommen +   \startcolumns       [\c!n=\getvalue{\??id\currentregister\c!n},        \c!balanceren=\getvalue{\??id\currentregister\c!balanceren},        \c!uitlijnen=\getvalue{\??id\currentregister\c!uitlijnen}]% @@ -899,7 +920,7 @@     \startopelkaar[\v!blanko]%     \doutilities\currentregister\jobname\currentregister\relax\par     \stopopelkaar -   \stopkolommen +   \stopcolumns     \endgroup}  % \def\complexdovolledigregister[#1]% \@EA's kunnen weg diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex index 73f432dab..202511786 100644 --- a/tex/context/base/core-rul.tex +++ b/tex/context/base/core-rul.tex @@ -2549,6 +2549,42 @@       \localhsize\hsize     \fi\fi} +% \def\dododostartframedtext[#1][#2][#3]% +%   {\doifsomething{#2}{\setvalue{\??kd#1\c!plaats}{#2}}% +%    \processaction % \v!laag en \v!diepte are already taken ! +%      [\framedtextparameter{#1}\c!plaats] +%      [  \v!links=>\letvalue{\??kd#1\c!links }\relax +%                   \letvalue{\??kd#1\c!rechts}\hfill, +%        \v!rechts=>\letvalue{\??kd#1\c!links }\hfill +%                   \letvalue{\??kd#1\c!rechts}\relax, +%        \v!midden=>\letvalue{\??kd#1\c!links }\hfill +%                   \letvalue{\??kd#1\c!rechts}\hfill, +%          \v!geen=>\letvalue{\??kd#1\c!links }\relax % new +%                   \letvalue{\??kd#1\c!rechts}\relax]% new +%    \letvalue{\??kd#1\c!plaats}\empty +%    % removed 06/2001 +%    % \forgetparindent +%    % added 06/2001 [see demo-bbv] +%    \localhsize\hsize \checkframedtext +%    % so far +%    \setbox\framebox\vbox +%      \startboxedcontent +%        \hsize\localhsize +%     %  \insidefloattrue % ? better +%        \expanded{\switchtobodyfont[\framedtextparameter{#1}\c!korps]}% +%        \startcolor[\framedtextparameter{#1}\c!kleur]% +%        \localframed[\??kd#1][\c!strut=\v!nee,#3]% +%        \bgroup +%          \let\\=\endgraf +%          \framedtextparameter{#1}\c!binnen % oud spul +%          \doifvalue{\??kd#1\c!dieptecorrectie}\v!aan % new, inside box +%            {\bgroup +%             \verticalstrut +%             \vskip-\struttotal}% +%          \doinhibitblank % \blanko[\v!blokkeer]% plaatst signal +%          \doconvertfont{\framedtextparameter{#1}\c!letter}\empty +%          \def\dostopframedtext{\dodostopframedtext{#1}{#2}}} +  \def\dododostartframedtext[#1][#2][#3]%    {\doifsomething{#2}{\setvalue{\??kd#1\c!plaats}{#2}}%     \processaction % \v!laag en \v!diepte are already taken ! @@ -2580,7 +2616,11 @@           \doifvalue{\??kd#1\c!dieptecorrectie}\v!aan % new, inside box             {\bgroup              \verticalstrut -            \vskip-\struttotal}% +            % we need \geenwitruimte in case of setups setting whitespace +            % nb, not safe, text vs \vbox as next +            \vskip-\struttotal +            \geenwitruimte % na vskip ! new 20/05/2004, fails with next content being box (\scale{..}) +            }%           \doinhibitblank % \blanko[\v!blokkeer]% plaatst signal           \doconvertfont{\framedtextparameter{#1}\c!letter}\empty           \def\dostopframedtext{\dodostopframedtext{#1}{#2}}} @@ -2661,7 +2701,7 @@  %D  %D Putting rules before and after a paragraph is very space  %D sensitive, but the next command handles that quite well. It -%D comes in to disguises: +%D comes in two disguises:  %D  %D \startbuffer  %D \textrule[boven]{fragments} @@ -2754,6 +2794,7 @@     %\witruimte % no     \@@tlvoor     \docomplextextrule{#1}% +% todo, option: \doifnothing{#1}{\ruledvskip-.5ex}     \geenwitruimte     \@@tltussen     \endgraf} @@ -2763,7 +2804,7 @@       \endgraf     \fi     \dimen0\strutdp -   \ifdim\prevdepth<\strutdp +   \ifdim\prevdepth>\strutdp\else % was <\strutdp       \ifdim\prevdepth>\zeropoint         \advance\dimen0 -\prevdepth       \fi @@ -2793,11 +2834,10 @@  \def\dounknowntextrule    {\iffirstargument -     \let\next\dotoptextrule +     \@EA\dotoptextrule     \else -     \def\next{\dobottomtextrule{}}% -   \fi -   \next} +     \@EA\dobottomtextrule\@EA\empty +   \fi}  %D The grouped commands also supports bodyfont switching: @@ -2811,7 +2851,7 @@  \def\stoptextrule    {\par     \egroup -   \dobottomtextrule{}% +   \dobottomtextrule\empty     \egroup}  %D \macros diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex index 512dd2e94..3bd26334d 100644 --- a/tex/context/base/core-sec.tex +++ b/tex/context/base/core-sec.tex @@ -392,32 +392,6 @@  % Omdat een markering kan worden herdefinieerd moeten we  % eerst testen of er wel een keten||afhankelijkheid is. -% \def\doresetsectionmarks#1% -%   {\doifdefined{\??se#1\c!markering} % skip zero level -%      {\fastresetmarkerlist[\getvalue{\??se#1\c!markering}]}% -%    \donexttracklevel{#1}} -% -% \def\resetsectionmarks#1% -%   {\doifdefinedelse{\??se#1} -%      {\let\donexttrackcommando\doresetsectionmarks -%       \donexttracklevel{#1}}% -%      {\fastresetmarker[\mainmarking{#1}]}} % redundant \mainmarking - -% \def\doresetsectionmarks#1% -%   {\ifundefined{\??se#1\c!markering}\else % skip zero level -%      \fastresetmarkerlist[\csname\??se#1\c!markering\endcsname]% -%    \fi -%    \donexttracklevel{#1}} -% -% not sure if the next one is better: - -\def\doresetsectionmarks#1% -  {\ifundefined{\??se#1\c!markering}% skip zero level -     \donexttracklevel{#1}% -   \else -     \fastresetmarkerlist[\csname\??se#1\c!markering\endcsname]% -   \fi} -  \def\resetsectionmarks#1%    {\ifundefined{\??se#1}%       \fastresetmarker[\mainmarking{#1}]% % redundant \mainmarking @@ -426,6 +400,23 @@       \donexttracklevel{#1}%     \fi} +\def\doresetsectionmarks#1% +  {\ifundefined{\??se#1\c!markering}\else % skip zero level +     \fastresetmarkerlist[\csname\??se#1\c!markering\endcsname]% +   \fi +   \donexttracklevel{#1}} + +% I'm not sure if the next one is better: +% +% \def\doresetsectionmarks#1% +%   {\ifundefined{\??se#1\c!markering}% skip zero level +%      \donexttracklevel{#1}% +%    \else +%      \fastresetmarkerlist[\csname\??se#1\c!markering\endcsname]% +%    \fi} +% +% and indeed, it isn't, actually, it does not work at all, so let's drop it. +  % packaged:  %  % \def\resetsectioncounters#1% @@ -456,10 +447,18 @@  % evt ook level gaan opslaan tbv snelle selectie -\def\makesectionformat -  {\edef\sectionformat +% \def\makesectionformat +%   {\edef\sectionformat +%      {\@@sectiontype\sectionseparator +%       \csname\lastsection\s!format\endcsname}} + +\unprotected \def\makesectionformat % we don't want eigennummers here +  {\pushmacro\@@shortsectionnumber +   \let\@@shortsectionnumber\@@sectionvalue +   \edef\sectionformat       {\@@sectiontype\sectionseparator -      \csname\lastsection\s!format\endcsname}} +      \csname\lastsection\s!format\endcsname}% +   \popmacro\@@shortsectionnumber}  \def\dobacktracklevel#1%    {\doifnot{\previoussection{#1}}\zerosection @@ -887,28 +886,56 @@  % will result in an additional last page, which needs to be  % captured at the end -\def\doaroundsectieblok#1% -  {\doifvaluesomething{\??sb#1\c!pagina} -     {\ExpandFirstAfter\pagina[\getvalue{\??sb#1\c!pagina}]}% +% \def\doaroundsectieblok#1% +%   {\doifvaluesomething{\??sb#1\c!pagina} +%      {\ExpandFirstAfter\pagina[\getvalue{\??sb#1\c!pagina}]}% +%    \resetsectioncounters\zerosection % was firstsection +%    \resetsectionmarks\zerosection} + +% \def\dostartsectieblok#1#2% +%   {\begingroup +%    \doaroundsectieblok{#1}%            % going to a new page or so +%    \getvalue{\??sb#1}%                 % set name of section block +%    \getsectieblokomgeving{#1}%         % special settings, grouped +%   %\expandafter\csname#2true\endcsname % obsolete +%    \setsystemmode{#1}%                 % can be used in conditionals +%    \getvalue{\??sb\@@sectieblok\c!voor}% this one is not to be moved! +%    \showmessage\m!structures1\@@sectieblokken} + +% \def\dostopsectieblok +%   {\showmessage\m!structures2\@@sectieblokken +%    \getvalue{\??sb\@@sectieblok\c!na}% don't move +%    \doaroundsectieblok\@@sectieblok +%    \endgroup} + +\def\doaroundsectieblok +  {\doifvaluesomething{\??sb\@@sectieblok\c!pagina} +     {\pagina[\getvalue{\??sb\@@sectieblok\c!pagina}]}%     \resetsectioncounters\zerosection % was firstsection     \resetsectionmarks\zerosection}  \def\dostartsectieblok#1#2%    {\begingroup -   \doaroundsectieblok{#1}%            % going to a new page or so -   \getvalue{\??sb#1}%                 % set name of section block -   \getsectieblokomgeving{#1}%         % special settings, grouped -  %\expandafter\csname#2true\endcsname % obsolete -   \setsystemmode{#1}%                 % can be used in conditionals -   \getvalue{\??sb\@@sectieblok\c!voor}% this one is not to be moved! +   \getvalue{\??sb#1}% +   \doaroundsectieblok +%    \doifvaluesomething{\??sb\@@sectieblok\c!pagina}{\pagina[\getvalue{\??sb\@@sectieblok\c!pagina}]}% +%    \resetsectioncounters\zerosection % was firstsection +%    \resetsectionmarks\zerosection +   \getsectieblokomgeving\@@sectieblok +   \setsystemmode\@@sectieblok +   \getvalue{\??sb\@@sectieblok\c!voor}%     \showmessage\m!structures1\@@sectieblokken}  \def\dostopsectieblok    {\showmessage\m!structures2\@@sectieblokken     \getvalue{\??sb\@@sectieblok\c!na}% don't move -   \doaroundsectieblok\@@sectieblok +   \doaroundsectieblok +%    \doifvaluesomething{\??sb\@@sectieblok\c!pagina}{\pagina[\getvalue{\??sb\@@sectieblok\c!pagina}]}% +%    \resetsectioncounters\zerosection % was firstsection +%    \resetsectionmarks\zerosection     \endgroup} +  \def\dostelsectieblokin[#1]% [#2]    {\getparameters[\??sb#1]} @@ -1003,7 +1030,7 @@       \global\paginageblokkeerdtrue     \fi} -\def\dohandelpaginaafAB#1% +\def\dohandelpaginaafAB#1% will be replaced by a more clever (signaling) mechanism (in beta)    {\flushsidefloats     \getvalue{\??ko#1\c!voor}%     %\witruimte vervangen door \noindent elders @@ -1837,13 +1864,13 @@       \hskip\dimen0 \!!plus \dimen0 \!!minus .25\dimen0       \hskip\headsignal\ignorespaces     \fi -   \ifdisplaysectionhead +   \ifdisplaysectionhead \ifvmode       \ifgridsnapping % important, font related depth, see comment         \prevdepth\strutdp       \else         \prevdepth\localheaddepth       \fi -   \fi +   \fi \fi     \stopsynchronisatie     \egroup     \egroup diff --git a/tex/context/base/core-spa.tex b/tex/context/base/core-spa.tex index efbb4890e..953e91962 100644 --- a/tex/context/base/core-spa.tex +++ b/tex/context/base/core-spa.tex @@ -75,8 +75,8 @@  \global\let\carriedoverpar\relax  \def\carryoverpar#1% -  {\expanded -     {\noexpand#1% +  {\expanded     % \scratchtoks{#1}% +     {\noexpand#1% \the\scratchtoks        \hangindent\the\hangindent        \hangafter \the\hangafter        \parskip   \the\parskip @@ -434,8 +434,9 @@  % \TestBlank[2*big,whatever]  % \TestBlank[3\lineheight] -\def\addblankskip#1#2#3% -  {\global\advance\blankoskip#1\ifgridsnapping#3\else#2\fi} +% this will be replaced/enhanced + +\def\addblankskip#1#2#3{\global\advance\blankoskip#1\ifgridsnapping#3\else#2\fi}  \def\defineblankmethod[#1]#2{\setvalue{\??bo\??bo#1}{#2}} @@ -445,10 +446,10 @@  \defineblankmethod [-\v!middel]{\addblankskip-\medskipamount   {.5\openlineheight}}  \defineblankmethod   [\v!klein]{\addblankskip+\smallskipamount{.25\openlineheight}}  \defineblankmethod  [-\v!klein]{\addblankskip-\smallskipamount{.25\openlineheight}} -\defineblankmethod     [\v!wit]{\addblankskip+\parskip\openlineheight} -\defineblankmethod    [-\v!wit]{\addblankskip-\parskip\openlineheight} -\defineblankmethod   [\v!regel]{\addblankskip+\openlineheight\openlineheight} -\defineblankmethod  [-\v!regel]{\addblankskip-\openlineheight\openlineheight} +\defineblankmethod     [\v!wit]{\addblankskip+\parskip            \openlineheight} +\defineblankmethod    [-\v!wit]{\addblankskip-\parskip            \openlineheight} +\defineblankmethod   [\v!regel]{\addblankskip+\openlineheight     \openlineheight} +\defineblankmethod  [-\v!regel]{\addblankskip-\openlineheight     \openlineheight}  \defineblankmethod [\v!formule    ]{\global\advance\blankoskip\medskipamount}  \defineblankmethod [\v!geenwit    ]{\global\blankogeenwittrue} @@ -1903,8 +1904,13 @@     \edef\strutdepth {\the\strutdp}%     \dosetstrut} +% \def\setfontstrut +%   {\setcharstrut{(}} +% +% better, since some fonts have small (but descending Q etc) +  \def\setfontstrut -  {\setcharstrut{(}} +  {\setcharstrut{(gplQT}}  \def\setcapstrut% could be M, but Q has descender    {\setcharstrut{Q}} @@ -2285,15 +2291,6 @@  \def\definieerhbox%    {\dodoubleargument\dodefinieerhbox} -\def\lrcbox#1#2#% -  {\vbox#2\bgroup -   \let\\=\endgraf -   \forgetall#1\let\next=} - -\def\lbox{\lrcbox\raggedleft} -\def\rbox{\lrcbox\raggedright} -\def\cbox{\lrcbox\raggedcenter} -  \def\iobox#1#2#3#% here #3# is not really needed    {\vbox\bgroup  % we want to return a vbox like the others       \hbox\bgroup% we need to pack the signal with the box diff --git a/tex/context/base/core-tab.tex b/tex/context/base/core-tab.tex index 2558e7d6b..93e480fd0 100644 --- a/tex/context/base/core-tab.tex +++ b/tex/context/base/core-tab.tex @@ -13,6 +13,12 @@  \writestatus{loading}{Context Core Macros / TaBlE Embedding} +% Don't change the splitter: +% +% ... \NR +% \TABLEnoalign{\page}\TABLEhead +% \NC ... +  % e-tex: reverse rows or vadjust or ... in tables  % \ifalign  % \xhrule : calls for 'special' with width @@ -493,6 +499,63 @@     \fi                                               % i.e. vtop     \box\scratchbox} +% We also need to patch away the interfering math switch: + +% \mathpunctuationtrue + +% test, test +% \starttable[|c|] +% \NC1,,10\NC\AR +% \stoptable +% test, test + +\def\!ttBeginTableA[#1]{% +  \if #1u%                  % "unboxed" table +    \ifmmode +      \def\!ttEndTable{%    % user had better be in display math mode +        \relax}%            %   and have only one table at the outer level +    \else                   % user had better be in vertical mode +      \bgroup +      \def\!ttEndTable{% +        \egroup}% +    \fi +  \else +    %\hbox\bgroup $ +    %\def\!ttEndTable{% +    %  \egroup %   for the \vtop, \vbox, or \vcenter, yet to come +    %  $%          for math mode +    %  \egroup}%   for the \hbox +    %\if #1t% +    %  \vtop +    %\else +    %  \if #1b% +    %    \vbox +    %  \else +    %    \vcenter % math mode was essential for this +    %  \fi +    %\fi +    % +    \hbox\bgroup +    \def\!ttEndTable{\egroup\egroup}% +    \if#1t% +      \vtop +    \else\if#1b% +      \vbox +    \else +      \def\!ttEndTable{\egroup$\egroup}% +      %$\vcenter +      \scratchtoks\everymath\everymath\emptytoks$\everymath\scratchtoks\vcenter +    \fi\fi +    % +    \bgroup % for the \vtop, \vbox, or \vcenter +  \fi +  \advance\!taRecursionLevel 1 % RecursionLevel governs initialization +  \let\!ttRightGlue=\relax  % This may be changed by \JustCenter, etc +  \everycr\emptytoks % ={} +  \ifnum \!taRecursionLevel=1 +    \!ttInitializeTable +  \fi} +  % (*) Try this one with \type {direction} and {girection};  % the \PPCHTEX\ manual is a nice testcase.  % @@ -976,6 +1039,9 @@  %   \catcode`\|=\@@other  %   \dodoubleargument\dodefinetabletemplate} + +% \TABLEnoalign{\page}\TABLEhead is valid +  \def\douseTABLEtemplate#1#2#3%    {\gdef\TABLEhead{\getvalue{@@TABLEhead#2}}%     \gdef\TABLEtail{\getvalue{@@TABLEtail#3}}% diff --git a/tex/context/base/core-tbl.tex b/tex/context/base/core-tbl.tex index 22ce37474..b796587c5 100644 --- a/tex/context/base/core-tbl.tex +++ b/tex/context/base/core-tbl.tex @@ -573,7 +573,7 @@    {\dontcomplain     \global\setbox\tabulatebox % % % global ? % % %       \vsplit\tablebox\tabulatecolumn to \lineheight -   \setbox\tabulatebox\vbox +   \setbox\tabulatebox\normalvbox       {\unvbox\tabulatebox}%     \setbox\tabulatebox\hbox to \wd\tabulatebox       {\hss\dotabulatehook{\box\tabulatebox}\hss}% diff --git a/tex/context/base/core-vis.tex b/tex/context/base/core-vis.tex index 01e0d1471..c4121b934 100644 --- a/tex/context/base/core-vis.tex +++ b/tex/context/base/core-vis.tex @@ -61,13 +61,13 @@     \dontcomplain     \boxrulewidth5\testrulewidth     #3#4\relax -   \setbox0\normalhbox to \scratchdimen +   \setbox\scratchbox\normalhbox to \scratchdimen       {#2{\ruledhbox to \scratchdimen             {\vrule #5 20\testrulewidth \!!width \zeropoint              \normalhss}}}% -   \smashbox0 +   \smashbox\scratchbox     \normalpenalty\!!tenthousand -   \box0 +   \box\scratchbox     \egroup}  \def\ruledhanging @@ -75,7 +75,7 @@       \ifnum\hangafter<\zerocount         \normalhbox           {\boxrulewidth5\testrulewidth -          \setbox0\ruledhbox to \hangindent +          \setbox\scratchbox\ruledhbox to \hangindent              {\scratchdimen\strutht               \advance\scratchdimen \strutdp               \vrule @@ -83,8 +83,8 @@                 \!!height \zeropoint                 \!!depth -\hangafter\scratchdimen}%            \normalhskip-\hangindent -          \smashbox0 -          \raise\strutht\box0}% +          \smashbox\scratchbox +          \raise\strutht\box\scratchbox}%       \fi     \fi} @@ -214,14 +214,14 @@             \vrule               \!!height \testrulewidth               \!!depth \testrulewidth -             \!!width 120pt} +             \!!width 120\points}        \normalvfill}%     \smashbox\scratchbox     \advance\scratchdimen \strutheightfactor\baselineskip     \setbox\scratchbox\normalhbox -     {\normalhskip -48pt -      \normalhbox to 24pt -        {\normalhss\debuggertext\ruledbaselines\normalhskip6pt}% +     {\normalhskip -48\points +      \normalhbox to 24\points +        {\normalhss\debuggertext\ruledbaselines\normalhskip6\points}%        \raise\scratchdimen\box\scratchbox}%     \smashbox\scratchbox     \box\scratchbox @@ -414,7 +414,7 @@        \boxmaxdepth\maxdimen        \offinterlineskip        \scratchdimen\cutmarklength -      \divide\scratchdimen 2 +      \divide\scratchdimen \plustwo        \hsize\ruledwidth        \setbox\scratchbox\normalvbox          {\setbox\scratchbox\normalhbox{\horizontalcuts}% @@ -526,7 +526,7 @@  \def\colorrangeB    {\hbox       {\scratchdimen-\colormarklength -      \multiply\scratchdimen 2 +      \multiply\scratchdimen \plustwo        \advance\scratchdimen \ruledwidth        \divide\scratchdimen 11        \def\docommando ##1 ##2 ##3##4##5##6% @@ -598,7 +598,7 @@     \edef\ruledwidth {\the\wd#2}%     \setbox#2\hbox       {\scratchdimen\colormarklength -      \divide\scratchdimen 2 +      \divide\scratchdimen \plustwo        \forgetall        \ssxx        \setbox\scratchbox\vbox @@ -671,7 +671,7 @@  \ifx\eTeXversion\undefined -  \let\showwhatsits\relax +  \let\showwhatsits    \relax    \let\dontshowwhatsits\relax  \else @@ -720,13 +720,8 @@          \vrule\!!width\wd\scratchbox\dostopcolormode          \hskip-\wd\scratchbox\box\scratchbox}%       \scratchdimen1ex -     \ifdone -       \setbox\scratchbox\hbox -         {\hskip#4\scratchdimen\box\scratchbox}% -     \else -       \setbox\scratchbox\hbox -         {\raise#4\scratchdimen\box\scratchbox}% -     \fi +     \setbox\scratchbox\hbox +       {\ifdone\hskip\else\raise#4\fi\scratchdimen\box\scratchbox}%       \smashbox\scratchbox       \ifdone\nointerlineskip\fi       \box\scratchbox @@ -751,7 +746,7 @@             \ifhmode               \edef\popwhatsit{\kern\the\lastkern}\unkern             \else -             \edef\popwhatsit{\kern\the\lastkern\prevdepth\the\prevdepth} +             \edef\popwhatsit{\kern\the\lastkern\prevdepth\the\prevdepth}%               \kern-\lastkern             \fi           \fi @@ -768,7 +763,7 @@         \ifhmode           \edef\popwhatsit{\hskip\the\lastskip}\unskip         \else -         \edef\popwhatsit{\vskip\the\lastskip\prevdepth\the\prevdepth} +         \edef\popwhatsit{\vskip\the\lastskip\prevdepth\the\prevdepth}%           \vskip-\lastskip         \fi       \fi} @@ -843,6 +838,6 @@  \def\coloredvtop{\coloredbox\vtop}  \def\coloredstrut -  {\color[strutcolor]{\def\strutwidth{2pt}\setstrut\strut}} +  {\color[strutcolor]{\def\strutwidth{2\points}\setstrut\strut}}  \protect \endinput
\ No newline at end of file diff --git a/tex/context/base/filt-ini.tex b/tex/context/base/filt-ini.tex index fbc46a518..6fe8a37fa 100644 --- a/tex/context/base/filt-ini.tex +++ b/tex/context/base/filt-ini.tex @@ -8,72 +8,72 @@  %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 Filter Macros (ini)} -\ifx\OmegaVersion\undefined  +% \ifx\OmegaVersion\undefined -           \let\definefiltersynonym  \gobbledoubleempty -           \let\definefiltersequence \gobbledoubleempty -\unexpanded\def\usefiltersequence   {\gobblesingleempty} -           \let\usefilter            \gobblesingleempty  -           \let\truefiltername       \gobbleoneargument +%            \let\definefiltersynonym  \gobbledoubleempty +%            \let\definefiltersequence \gobbledoubleempty +% \unexpanded\def\usefiltersequence   {\gobblesingleempty} +%            \let\usefilter            \gobblesingleempty +%            \let\truefiltername       \gobbleoneargument -  \expandafter \endinput  -\fi  +%   \expandafter \endinput +% \fi  \unprotect -%D The real work starts here.  +%D The real work starts here. -\startmessages  dutch  library: filters  +\startmessages  dutch  library: filters    title: filter        1: filter -- wordt geladen        2: onbekend filter --  \stopmessages -\startmessages  english  library: filters  +\startmessages  english  library: filters    title: filter        1: filter -- is loaded        2: unknown filter --  \stopmessages -\startmessages  german  library: filters  +\startmessages  german  library: filters    title: filter        1: filter -- is loaded        2: unknown filter --  \stopmessages -\startmessages  czech  library: filters  +\startmessages  czech  library: filters    title: filter        1: filter -- is loaded        2: unknown filter --  \stopmessages -\startmessages  italian  library: filters  +\startmessages  italian  library: filters    title: filtri        1: filtro -- caricato        2: filtro sconosciuto --  \stopmessages -%D \macros  +%D \macros  %D   {definefiltersynonym} -\def\definefiltersynonym% +\def\definefiltersynonym    {\dodoubleargument\dodefinefiltersynonym}  \def\dodefinefiltersynonym[#1][#2]%    {\setvalue{\??or#1}{#2}} -%D \macros  +%D \macros  %D   {truefiltername}  \def\truefiltername#1%    {\ifundefined{\??or#1}#1\else\truefiltername{\getvalue{\??or#1}}\fi} -%D \macros  +%D \macros  %D   {definefiltersequence}  \def\definefiltersequence% @@ -82,38 +82,61 @@  \def\dodefinefiltersequence[#1][#2]%    {\setvalue{\??ot#1}{#2}} -%D \macros  +%D \macros  %D   {usefiltersequence} +%D  \def\magicocpnumber{1} +% \def\dodousefiltersequence#1% +%   {\expandafter\ocp\csname\??or:#1\endcsname=\truefiltername{#1}\relax +%    \@EA \appendtoks +%      \@EA \addbeforeocplist \@EA \magicocpnumber \csname\??or:#1\endcsname +%    \to \scratchtoks} + +% one can do: +% +%  \definefiltersequence +%    [farsi] +%    [utf8 to unicode16=>5, +%     persian fix, +%     arabic analysis=>3, +%     arabic glyphs] +% +% so, => is used to signal a priority +  \def\dodousefiltersequence#1%    {\expandafter\ocp\csname\??or:#1\endcsname=\truefiltername{#1}\relax -   \@EA \appendtoks -     \@EA \addbeforeocplist \@EA \magicocpnumber \csname\??or:#1\endcsname -   \to {\toks0}} +   \splitstring#1\at=>\to\!!stringa\and\!!stringb +   \edef\!!stringb{\number\ifx\!!stringb\empty\magicocpnumber\else\!!stringb\fi}% +   \appendetoks +     \noexpand\addbeforeocplist +     \!!stringb\space +     \expandafter\noexpand\csname\??or:\!!stringa\endcsname +   \to \scratchtoks}  \unexpanded\def\usefiltersequence[#1]%    {\edef\currentfiltersequence{\getvalue{\??ot#1}}% -   \toks0=\emptytoks +   \scratchtoks\emptytoks     \processcommacommand[\currentfiltersequence]\dodousefiltersequence -   \expanded{\ocplist\csname\??ot:#1\endcsname=\the\toks0}\nullocplist +   % \showthe\scratchtoks +   \expanded{\ocplist\csname\??ot:#1\endcsname=\the\scratchtoks}\nullocplist     \expanded{\pushocplist\csname\??ot:#1\endcsname}\relax} -%D \macros  +%D \macros  %D   {usefilter}  \def\dousefilter#1%    {\doifundefined{\c!file\f!filterprefix#1}% -     {\setvalue{\c!file\f!filterprefix#1}{}% +     {\letvalue{\c!file\f!filterprefix#1}\empty        \makeshortfilename[\f!filterprefix#1]%        \startreadingfile -      \readsysfile{\shortfilename} -        {\showmessage{\m!filters}{1}{#1}} -        {\showmessage{\m!filters}{2}{#1}}% +      \readsysfile\shortfilename +        {\showmessage\m!filters1{#1}} +        {\showmessage\m!filters2{#1}}%        \stopreadingfile}}  \def\usefilter[#1]%    {\processcommalist[#1]\dousefilter} -\protect \endinput  +\protect \endinput
\ No newline at end of file diff --git a/tex/context/base/font-arb.tex b/tex/context/base/font-arb.tex index d468f6c28..239ca436e 100644 --- a/tex/context/base/font-arb.tex +++ b/tex/context/base/font-arb.tex @@ -1,10 +1,10 @@ -% NOT YET ADAPTED TO THE NEW FONT MACROS  +% NOT YET ADAPTED TO THE NEW FONT MACROS -% I still need to hook in some features into the setup  -% macro. I also have to (re)define farsi etc. in ways  -% similar to arab, so that we have dedicated environments.  +% I still need to hook in some features into the setup +% macro. I also have to (re)define farsi etc. in ways +% similar to arab, so that we have dedicated environments.  % -% keywords needed: vocalize transscribe  +% keywords needed: vocalize transscribe  %  % \startarabic[option=vocalize] % or vocalize=yes  % ...... @@ -20,8 +20,8 @@  %D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]  %C  %C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for  -%C details.  +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details.  \writestatus{loading}{Context Font Macros / ArabTeX support} @@ -35,40 +35,40 @@  %D Having implemented support for chinese a few weeks before,  %D I could not resist to build in support for arab and hebrew  %D too. Writing support for languages that don't give me any -%D cue on how to pronounce their script, is kind of special.  +%D cue on how to pronounce their script, is kind of special. -%D This is a beta version, since I still have to take care of some  -%D macros that conflict with existing stuff.  +%D This is a beta version, since I still have to take care of some +%D macros that conflict with existing stuff. -\unprotect  +\unprotect  \definesystemvariable{ARABTEX}  %D A few (maybe too) simple hooks into the font mechanism. The -%D hook into the language module is not yet done.   +%D hook into the language module is not yet done.  \unexpanded\def\setarabicfont#1%    {\scratchdimen=1.2\bodyfontsize     \font\arbfont=\truefontname{Arabic#1} at \currentfontscale\scratchdimen  \setx@skels -\newfonttrue  +\newfonttrue     \arbfont} -%D Just to be compatible with Arab\TEX\ we define:  +%D Just to be compatible with Arab\TEX\ we define:  \unexpanded\def\nash    {\setarabicfont\s!Regular} -\unexpanded\def\nashbf  {\setarabicfont\s!Bold   }  +\unexpanded\def\nashbf  {\setarabicfont\s!Bold   }  \unexpanded\def\pnash   {\setarabicfont\s!Regular} -\unexpanded\def\pnashbf {\setarabicfont\s!Bold   }  +\unexpanded\def\pnashbf {\setarabicfont\s!Bold   }  \unexpanded\def\xnash   {\setarabicfont\s!Regular} -\unexpanded\def\xnashbf {\setarabicfont\s!Bold   }  +\unexpanded\def\xnashbf {\setarabicfont\s!Bold   } -%D The display arabic environment (will be an installable  -%D object) uses a few conditionals. Let's do it the  +%D The display arabic environment (will be an installable +%D object) uses a few conditionals. Let's do it the  %D \CONTEXT\ way and define an anvironment that we later can -%D adapt.  +%D adapt. -\newif\if@ignore  +\newif\if@ignore  \newif\if@endpe  \def\setupARABTEXalternative[#1]% @@ -88,10 +88,10 @@       \setvalue{\e!start#1}%         {\dodoubleempty\dostartARABTEXalternative[#1]}%       \unexpanded\setvalue{#1}##1% -       {{\initializeARABTEXinternals{#1}\a@RL{##1}}}%  +       {{\initializeARABTEXinternals{#1}\a@RL{##1}}}%       \unexpanded\def\RL{\getvalue{#1}}%       \unexpanded\def\LR{\a@LR}% -     \let\R=\RL   +     \let\R=\RL       \let\L=\LR    \else       \defineARABTEXalternative[arabic]% @@ -107,15 +107,15 @@     \let      \d=\ARABTEXd     \let       |=\ARABTEXbar     \let      \,=\ARABTEXcomma -   \let\protect=\ARABTEXprotect  +   \let\protect=\ARABTEXprotect     \let\normaltx \tx \def\tx {\normaltx \setarabicfont\fontstylesuffix}%     \let\normaltxx\txx\def\txx{\normaltxx\setarabicfont\fontstylesuffix}} -\def\dostartARABTEXalternative[#1][#2]%  +\def\dostartARABTEXalternative[#1][#2]%    {\begingroup     \getparameters[\??ARABTEX#1][#2]%     \ifnum1<0\getvalue{\??ARABTEX#1\c!n}\relax -     \startkolommen +     \startcolumns     \else       \getvalue{\??ARABTEX#1\c!voor}%     \fi @@ -127,42 +127,42 @@  \def\initializeARABTEXalternative#1%    {\getvalue{\??ARABTEX#1\c!letter}} -\def\initializeARABTEXend#1% \CONTEXT\ does use \end quite differently  +\def\initializeARABTEXend#1% \CONTEXT\ does use \end quite differently    {\long\def\end##1%       {\endarabtext        \ifnum1<0\getvalue{\??ARABTEX#1\c!n}\relax -        \stopkolommen +        \stopcolumns        \else          \getvalue{\??ARABTEX#1\c!na}%        \fi        \endgroup}% -   \let\a@l@end\end  +   \let\a@l@end\end     \letvalue{\e!stop#1}=\end     \long\def\end##1%       {\endarabtext        \endgroup        \if@ignore\global\@ignorefalse\expandafter\ignorespaces\fi}} -%D Arabic verbatim.  +%D Arabic verbatim. -\def\typearab{\a@@verb}  +\def\typearab{\a@@verb}  %D Some \LATEX\ macros.  \def \makeatletter  {\unprotect} -\def \makeatother   {\protect}  +\def \makeatother   {\protect}  \def \typeout     #1{\writestatus{arabtex}{#1}}  %D We have to save some macros.  \let\ARABTEXversion=\empty -\def\startloadingARABTEX% ugly hacks  -  {\catcode`!=12   -   \catcode`?=12  +\def\startloadingARABTEX% ugly hacks +  {\catcode`!=12 +   \catcode`?=12     \pushmacro\output        \let \output        \scratchtokens -   \pushmacro\LaTeX         \let \LaTeX         \undefined  -   \pushmacro\CJK           \let \CJK           \undefined  +   \pushmacro\LaTeX         \let \LaTeX         \undefined +   \pushmacro\CJK           \let \CJK           \undefined     \pushmacro\year          \let \year          \normalyear     \pushmacro\month         \let \month         \normalmonth     \pushmacro\day           \let \day           \normalday @@ -175,11 +175,11 @@     \pushmacro\cap}  \def\stoploadingARABTEX% -  {\catcode`!=11  -   \catcode`?=11  +  {\catcode`!=11 +   \catcode`?=11     \popmacro\cap     \popmacro\emphasize -   \popmacro\theversion    +   \popmacro\theversion     \popmacro\version     \popmacro\datum     \popmacro\linewidth @@ -187,25 +187,25 @@     \popmacro\day     \popmacro\month     \popmacro\year -   \popmacro\CJK             +   \popmacro\CJK     \popmacro\LaTeX -   \popmacro\output}          +   \popmacro\output} -%D We save some macros:  +%D We save some macros:  \startloadingARABTEX -%D When loading \ARABTEX\ we have to set back the~! and~?.  +%D When loading \ARABTEX\ we have to set back the~! and~?. -\input arabtex.sty  +\input arabtex.sty -%D Since \ARABTEX\ has its own \type {\cap}, we save the  -%D new meaning. We also redefine some \PLAIN\ macros, which  -%D happen to have a different meaning in \LATEX.  +%D Since \ARABTEX\ has its own \type {\cap}, we save the +%D new meaning. We also redefine some \PLAIN\ macros, which +%D happen to have a different meaning in \LATEX. -\let\ARABTEXversion=\theversion      +\let\ARABTEXversion=\theversion -\let\ARABTEXcap=\cap  +\let\ARABTEXcap=\cap  \def\ARABTEXsh@ft#1%    {\dimen@.00#1ex @@ -220,7 +220,7 @@    {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%      \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}} -%D A few internals:  +%D A few internals:  \def \ARABTEXcomma  {\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}  \def \ARABTEXbreakA {\hfill\break} @@ -228,38 +228,38 @@  \edef\ARABTEXbar    {\string|}  \let \ARABTEXprotect \relax -%D Now we can pop the saved macros.  +%D Now we can pop the saved macros.  \stoploadingARABTEX  %D Ah, we have to get rid of some \type {\protect} stuff but -%D to permit testing we add it in the \CONTEXT\ way.  +%D to permit testing we add it in the \CONTEXT\ way.  \bgroup -\catcode`\<=\@other   +\catcode`\<=\@other  \unexpanded\gdef\a@ins% -  {\ifmmode  +  {\ifmmode       \expandafter<% -   \else  -     \leavevmode \bgroup  +   \else +     \leavevmode \bgroup       \arab@codes \set@arabfont \@waslafalse \@wasfalse -     \expandafter\arab@insert  +     \expandafter\arab@insert     \fi} -\unexpanded\gdef\<{\a@ins}  +\unexpanded\gdef\<{\a@ins}  \catcode`\<=\active  \global\let<=\a@ins  \egroup -%D We also need to register a few macros:  +%D We also need to register a few macros:  \all@w@ne\initializeARABTEXalternative % one argument, internal command -\all@wcmd\tx                           % no argument, small font   -\all@wcmd\txx                          % no argument, smaller font  +\all@wcmd\tx                           % no argument, small font +\all@wcmd\txx                          % no argument, smaller font -%D The main definitions are:  +%D The main definitions are: -\definefontsynonym [ArabicRegular] [xnsh14]    -\definefontsynonym [ArabicBold]    [xnsh14bf]  +\definefontsynonym [ArabicRegular] [xnsh14] +\definefontsynonym [ArabicBold]    [xnsh14bf]  \defineARABTEXalternative    [arabic] @@ -281,9 +281,9 @@    [\c!binnen=\setmaghribi,     \c!letter=\setarabfont\fontstylesuffix] -%D Apart from such definitions, one can adapt the settings  -%D using \type {\setupARABTEXalternative}.  -%D  +%D Apart from such definitions, one can adapt the settings +%D using \type {\setupARABTEXalternative}. +%D  %D A few years ago at the Holland Festivities, I attended {\em  %D The Cave}, one of the most impressive combinations of music  %D and video I know. This composition of Steve Reich (music) @@ -294,25 +294,25 @@  %D interviews, music, and |<|believe it or not|>| rhythmic  %D typography are the cornerstones. Remembering those big  %D screens, it strikes me that like music, \TEX\ too is a -%D perfect instrument to cross cultural and linguistic  -%D borders. So, let's:  +%D perfect instrument to cross cultural and linguistic +%D borders. So, let's: -\protect  +\protect  %D those macros, -\endinput  +\endinput  %D and use them!  % \defineconversion [abjad] [\abj@d]  %  % voetnoten verbatim lijsten indexen tabellen uitlijnen -%  +%  % \v!hoofdstuk=al-fa.slu  %    \v!inhoud=al-mu.htawayAtu  %   \v!figuren=qA'imaTu al-.suwaru  %  \v!tabellen=qA'imaTu al-^gadAwilu  % \v!grafieken=qA'imaTu al-rusUmu -%     \v!index=al-fihrisu  +%     \v!index=al-fihrisu  %   \v!bijlage=al-mul.haqu diff --git a/tex/context/base/font-chi.tex b/tex/context/base/font-chi.tex index c72f464c7..6f5f77d3b 100644 --- a/tex/context/base/font-chi.tex +++ b/tex/context/base/font-chi.tex @@ -400,7 +400,7 @@        \advance\dimen2 \@@vtafstand        \divide\dimen0 \number\dimen2        \edef\@@vtn{\number\dimen0}}% -   \startkolommen +   \startcolumns       [\c!richting=\@@vtrichting,        \c!balanceren=\@@vtbalanceren,        \c!afstand=\@@vtafstand, @@ -408,7 +408,7 @@        #1]}  \def\stopvertical -  {\stopkolommen +  {\stopcolumns     \egroup}  \setupchinese @@ -492,22 +492,22 @@  %D \def\DoIt #1 #2 %  %D   {\hbox{\hbox to 2em{\uchar{#1}{#2}\hss}#1 #2}\par}  %D -%D \startkolommen[n=5] +%D \startcolumns[n=5]  %D \DoIt 161 162 \DoIt 161 163 \DoIt 161 164 \DoIt 161 167 \DoIt 161 173  %D \DoIt 161 175 \DoIt 161 177 \DoIt 161 179 \DoIt 161 181 \DoIt 161 183  %D \DoIt 161 185 \DoIt 161 187 \DoIt 161 189 \DoIt 161 191 \DoIt 161 227  %D \DoIt 161 228 \DoIt 161 229 \DoIt 163 161 \DoIt 163 162 \DoIt 163 167  %D \DoIt 163 169 \DoIt 163 172 \DoIt 163 174 \DoIt 163 186 \DoIt 163 187  %D \DoIt 163 190 \DoIt 163 191 \DoIt 163 221 \DoIt 163 253 -%D \stopkolommen +%D \stopcolumns  %D  %D A linebreak is not permitted after the following glyphs:  %D -%D \startkolommen[n=5] +%D \startcolumns[n=5]  %D \DoIt 161 174 \DoIt 161 176 \DoIt 161 178 \DoIt 161 180 \DoIt 161 182  %D \DoIt 161 184 \DoIt 161 186 \DoIt 161 188 \DoIt 161 190 \DoIt 163 168  %D \DoIt 163 219 \DoIt 163 224 \DoIt 163 251 -%D \stopkolommen +%D \stopcolumns  %D \macros  %D   {tracechinesetrue, showchinesetracelegend} diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex index 494308489..4e5ead1f6 100644 --- a/tex/context/base/font-ini.tex +++ b/tex/context/base/font-ini.tex @@ -1456,7 +1456,8 @@  %D for helping me sort this out.  %D \macros -%D   {definefontsynonym} +%D   {definefontsynonym, doifelsefontsynonym, +%D    expandfontsynonym, truefontname, truefontdata}  %D  %D While looking for fonts, fontsynonyms are used for accessing  %D the files! @@ -1541,6 +1542,18 @@       \@EA\truefontname\csname\??ff\fontclass#1\endcsname     \fi} +\def\expandfontsynonym#1#2% #2 := onelevelexpansion(#1) +  {\@EA\ifx\csname\??ff\fontclass#2\endcsname\relax\else +     \expandafter\def\expandafter#1\expandafter{\csname\??ff\fontclass#2\endcsname}% +   \fi} + +\def\doifelsefontsynonym#1% +  {\@EA\ifx\csname\??ff\fontclass#1\endcsname\relax +     \expandafter\secondoftwoarguments +   \else +     \expandafter\firstoftwoarguments +   \fi} +  \endTEX  \beginETEX \ifcsname @@ -1569,7 +1582,20 @@       #1%     \fi\fi} +\def\expandfontsynonym#1#2% #2 := onelevelexpansion(#1) +  {\ifcsname\??ff\fontclass#2\endcsname +     \expandafter\def\expandafter#1\expandafter{\csname\??ff\fontclass#2\endcsname}% +   \fi} + +\def\doifelsefontsynonym#1% +  {\ifcsname\??ff\fontclass#1\endcsname +     \expandafter\firstoftwoarguments +   \else +     \expandafter\secondoftwoarguments +   \fi} +  \endETEX +  %D \macros  %D   {tracedfontname} @@ -2074,17 +2100,40 @@  \def\checkbodyfontenvironment[#1]%    {\definebodyfontenvironment[\fontclass][#1][]} -\def\setupbodyfontenvironment -  {\dotripleempty\dosetupbodyfontenvironment} +% original +% +% \def\setupbodyfontenvironment +%   {\dotripleempty\dosetupbodyfontenvironment} +% +% \def\dosetupbodyfontenvironment[#1][#2][#3]% class size settings +%   {\@@beginfontdef +%    \ifthirdargument +%      \getparameters[\??ft#1#2][#3]% +%    \else +%      \getparameters[\??ft#1][#2]% +%    \fi +%    \@@endfontdef} +% +% this one already catches both define/setup -\def\dosetupbodyfontenvironment[#1][#2][#3]% class size settings -  {\@@beginfontdef -   \ifthirdargument -     \getparameters[\??ft#1#2][#3]% -   \else -     \getparameters[\??ft#1][#2]% -   \fi -   \@@endfontdef} +\def\setupbodyfontenvironment{\definebodyfontenvironment} + +% officially, but not needed (yet): +% +% \def\dosetupbodyfontenvironment[#1][#2][#3]% class size settings +%   {\ifthirdargument +%      \localbodyfontsize#2\relax +%      \normalizebodyfontsize\localbodyfontsize\to\normalizedbodyfontsize +%      \doifundefinedelse{\??ft#1\normalizedbodyfontsize\c!em} +%        {\definebodyfontenvironment[#1][#2][#3]}% +%        {\getparameters[\??ft#1\normalizedbodyfontsize][#3]}% +%    \else +%      \localbodyfontsize#1\relax +%      \normalizebodyfontsize\localbodyfontsize\to\normalizedbodyfontsize +%      \doifundefinedelse{\??ft\normalizedbodyfontsize\c!em} +%        {\definebodyfontenvironment[#1][#2]}% +%        {\getparameters[\??ft\normalizedbodyfontsize][#2]}% +%    \fi}  %D Just a couple of interface macros: diff --git a/tex/context/base/hand-def.tex b/tex/context/base/hand-def.tex index 5da5b9d94..ac1c8566a 100644 --- a/tex/context/base/hand-def.tex +++ b/tex/context/base/hand-def.tex @@ -376,7 +376,7 @@  % combined variants -\definefonthandling [quality]     [hz,extended,pure] +\definefonthandling [quality]     [hz,pure]  % A special case of guillemots, beware: when used ungrouped,  % it overloads all successive (current) encoding vector diff --git a/tex/context/base/hand-ini.tex b/tex/context/base/hand-ini.tex index a8a87db7e..d9a2edddc 100644 --- a/tex/context/base/hand-ini.tex +++ b/tex/context/base/hand-ini.tex @@ -323,8 +323,12 @@    {\dotripleempty\dodefinefonthandling}  \def\dodefinefonthandling[#1][#2][#3]% -  {\setvalue{\@fha@\@fha@#1}{#2}% -   \getparameters[\@fha@\@fha@#1][\c!type=\v!hangend,\c!links=1,\c!rechts=1,\c!min=20,\c!max=20,\c!stap=5,#3]} +  {\ifthirdargument +     \setvalue{\@fha@\@fha@#1}{#2}% +     \getparameters[\@fha@\@fha@#1][\c!type=\v!hangend,\c!links=1,\c!rechts=1,\c!min=20,\c!max=20,\c!stap=5,#3]% +   \else +     \setvalue{\@fha@\@fha@\@fha@#1}{#2}% +   \fi}  \def\setupfonthandling    {\dodoubleempty\dosetupfonthandling} @@ -342,22 +346,45 @@  \def\fastenablehandling#1%    {\edef\askedfonthandling{#1}% -   \@EA\ifx\csname\@fha@\@fha@\askedfonthandling\endcsname\relax -     \expandafter\nofastenablehandling +   \@EA\ifx\csname\@fha@\@fha@\@fha@\askedfonthandling\endcsname\relax +     \@EA\ifx\csname\@fha@\@fha@\askedfonthandling\endcsname\relax +       \@EAEAEA\nofastenablehandling +     \else +       \@EAEAEA\dofastenablehandling +     \fi +   \else +     \@EA\redofastenablehandling +   \fi} + +\def\xfastenablehandling#1% +  {\edef\askedfonthandling{#1}% +   \@EA\ifx\csname\@fha@\@fha@\askedfonthandling\endcsname +     \@EA\nofastenablehandling     \else -     \expandafter\dofastenablehandling +     \@EA\dofastenablehandling     \fi}  \endTEX  \beginETEX \ifcsname -\def\fastenablehandling#1% also gets #2 passed +\def\fastenablehandling#1#2% also gets #2 passed +  {\edef\askedfonthandling{#1}% +   \edef\filoffonthandling{#2}% +   \ifcsname\@fha@\@fha@\@fha@\askedfonthandling\endcsname +     \@EA\redofastenablehandling +   \else\ifcsname\@fha@\@fha@\askedfonthandling\endcsname +     \@EAEAEA\dofastenablehandling +   \else +     \@EAEAEA\nofastenablehandling +   \fi\fi} + +\def\xfastenablehandling#1%    {\edef\askedfonthandling{#1}%     \ifcsname\@fha@\@fha@\askedfonthandling\endcsname -     \expandafter\dofastenablehandling +     \@EA\dofastenablehandling     \else -     \expandafter\nofastenablehandling +     \@EA\nofastenablehandling     \fi}  \endETEX @@ -372,14 +399,18 @@    \setfontadjusting\askedfonthandling  \to \everyenablefonthandling -\def\dofastenablehandling#1% +\def\redofastenablehandling +  {\edef\fonthandling{\csname\@fha@\@fha@\@fha@\askedfonthandling\endcsname}% +   \rawprocesscommacommand[\fonthandling]\xfastenablehandling} + +\def\dofastenablehandling    {\the\everyenablefonthandling     \edef\fonthandling{\csname\@fha@\@fha@\askedfonthandling\endcsname}% -   \checkfonthandling{#1}% +   \checkfonthandling\filoffonthandling     \rawprocesscommacommand[\fonthandling]\dodoenablehandling -   \registerfonthandling{#1}} +   \registerfonthandling\filoffonthandling} -\def\nofastenablehandling#1% +\def\nofastenablehandling    {\the\everyenablefonthandling     \let\fonthandling\askedfonthandling     \dodoenablehandling\fonthandling} @@ -404,12 +435,17 @@  %D We must not use \type {\purefontname} here (was a bug)! -\def\checkfonthandling#1% we need a fast compare -  {\doifelsevalue{#1\s!handling\c!file}{\fontname\font} -     \skiphandlingdeftrue\skiphandlingdeffalse} - -\def\registerfonthandling#1% -  {\@EA\xdef\csname#1\s!handling\c!file\endcsname{\fontname\font}} +% not robust as long as tex reuses definitions internally +% +% \def\checkfonthandling#1% we need a fast compare +%   {\doifelsevalue{#1\s!handling\c!file}{\fontname\font} +%      \skiphandlingdeftrue\skiphandlingdeffalse} +% +% \def\registerfonthandling#1% +%   {\@EA\xdef\csname#1\s!handling\c!file\endcsname{\fontname\font}} + +\def\checkfonthandling   #1{\skiphandlingdeffalse} +\let\registerfonthandling   \gobbleoneargument  %D This one makes live easier (less definitions): diff --git a/tex/context/base/m-cweb.tex b/tex/context/base/m-cweb.tex index 805ec3b77..19f6a8375 100644 --- a/tex/context/base/m-cweb.tex +++ b/tex/context/base/m-cweb.tex @@ -1259,8 +1259,8 @@           \showCWEBindexentry{\currentCWEBindexentry}}}%     \egroup} -\def\theCWEBbeforeindex {\startkolommen} -\def\theCWEBafterindex  {\stopkolommen} +\def\theCWEBbeforeindex {\startcolumns} +\def\theCWEBafterindex  {\stopcolumns}  \def\processCWEBindex #1 %    {\bgroup diff --git a/tex/context/base/m-newmat.tex b/tex/context/base/m-newmat.tex index 8179af432..32aa7783b 100644 --- a/tex/context/base/m-newmat.tex +++ b/tex/context/base/m-newmat.tex @@ -8,8 +8,8 @@  %D      copyright={PRAGMA / Taco Hoekwater}]  %C  %C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See licen-en.pdf for  -%C details.  +%C therefore copyrighted by \PRAGMA. See licen-en.pdf for +%C details.  %D This module collects macros that \TEX\ users kind of expect  %D to be available when typesetting math. Most of them @@ -17,73 +17,73 @@  %D freedom to adapt them to \CONTEXT. This module is derived  %D from the \type {m-math} module by Taco Hoekwater (partially  %D derived from AMS math modules) and adapted|/|extended by -%D Hans Hagen.  +%D Hans Hagen.  %D Here we will add code on demand. So, just let us know what -%D should go in here.  +%D should go in here.  %M \usemodule[newmat] -\unprotect  +\unprotect -%D \macros  +%D \macros  %D   {qedsymbol} -%D  +%D  %D [HH] The general Quod Erat Domonstrandum symbol is defined  %D in such a way that we can configure it. Because this symbol  %D is also used in text mode, we make it a normal text symbol -%D with special behavior.  +%D with special behavior.  \def\qedsymbol#1% -  {\ifhmode  +  {\ifhmode       \unskip~\hfill#1\par -   \else\ifmmode  +   \else\ifmmode       \eqno#1\relax % Do we really need the \eqno here?     \else       \leavevmode\hbox{}\hfill#1\par     \fi\fi} -\definesymbol [qed] [\qedsymbol{\mathematics{\square}}]  +\definesymbol [qed] [\qedsymbol{\mathematics{\square}}]  %D \macros  %D   {QED} -%D  +%D  %D [HH] For compatbility reasons we also provide the \type  %D {\QED} command. In case this command is overloaded, we still -%D have the symbol available. \symbol[qed]  +%D have the symbol available. \symbol[qed]  \def\QED{\symbol[qed]}  %D \macros  %D   {genfrac} -%D  +%D  %D [TH] The definition of \type {\genfrac} \& co. is not  %D trivial, because it allows some flexibility. This is  %D supposed to be a user||level command, but will fail quite  %D desparately if called outside math mode (\CONTEXT\ redefines -%D \type {\over})  -%D  -%D [HH] We clean up this macro a bit and (try) to make it  -%D understandable. The expansion is needed for generating  -%D the second argument to \type {\dogenfrac}, which is to  -%D be a control sequence like \type {\over}.  +%D \type {\over}) +%D +%D [HH] We clean up this macro a bit and (try) to make it +%D understandable. The expansion is needed for generating +%D the second argument to \type {\dogenfrac}, which is to +%D be a control sequence like \type {\over}.  \unexpanded\def\genfrac#1#2#3#4%    {\edef\!!stringa       {#1#2}%     \expanded -     {\dogenfrac{#4}%  +     {\dogenfrac{#4}%        \csname          \ifx @#3@% -          \ifx\!!stringa\empty  +          \ifx\!!stringa\empty              \strippedcsname\normalover -          \else  +          \else              \strippedcsname\normaloverwithdelims            \fi -        \else  -          \ifx\!!stringa\empty  +        \else +          \ifx\!!stringa\empty              \strippedcsname\normalabove -          \else  +          \else              \strippedcsname\normalabovewithdelims            \fi          \fi @@ -115,84 +115,84 @@  %D Better: -\def\frac#1#2{\mathematics{\genfrac{}{}{}\donothing{#1}{#2}}} +\unexpanded\def\frac#1#2{\mathematics{\genfrac{}{}{}\donothing{#1}{#2}}} -%D [HH] This shows up as:  +%D [HH] This shows up as:  %D  %D \startbuffer  %D $\dfrac {1}{2} \tfrac {1}{2} \frac {1}{2}$  %D $\dbinom{1}{2} \tbinom{1}{2} \binom{1}{2}$  %D \stopbuffer -%D  +%D  %D \typebuffer -%D  +%D  %D \getbuffer  %D \macros  %D   {text} -%D  +%D  %D [TH] \type {\text} is a command to typeset more or less  %D ordinary text inside of super- and sub|-|scripts. It has to  %D do a full font switch to get the sides right, so it will be  %D quite slow. \type {\text} kind of replaces \CONTEXT's \type -%D {\mathstyle} command.  +%D {\mathstyle} command. -%D [HH] This macro is now also moved to the core, but we  -%D keep it here as well for completeness.   -%D  -%D \startypen  +%D [HH] This macro is now also moved to the core, but we +%D keep it here as well for completeness. +%D +%D \startypen  %D \unexpanded\def\mathtext  %D   {\mathortext\domathtext\hbox} % {\ifmmode\@EA\dotext\else\@EA\hbox\fi} -%D  +%D  %D \def\domathtext#1%  %D   {\mathchoice  %D      {\dodomathtext\displaystyle\textface        {#1}}%  %D      {\dodomathtext\textstyle   \textface        {#1}}%  %D      {\dodomathtext\textstyle   \scriptface      {#1}}%  %D      {\dodomathtext\textstyle   \scriptscriptface{#1}}} -%D  +%D  %D \def\dodomathtext#1#2#3% no \everymath !  %D  %{\hbox{\everymath{#1}\switchtobodyfont  [#2]#3}} % 15 sec  %D   {\hbox{\everymath{#1}\setcurrentfontbody{#2}#3}} %  3 sec (no math) -%D \stoptypen  +%D \stoptypen -%D [HH] We use the following indirectness because \type {\text}  -%D is a natural candidate for user macros (actually, it is  -%D used in some modules).  +%D [HH] We use the following indirectness because \type {\text} +%D is a natural candidate for user macros (actually, it is +%D used in some modules).  %D -%D \starttypen  -%D \let\text\mathtext  -%D \stoptypen  +%D \starttypen +%D \let\text\mathtext +%D \stoptypen -%D [HH] Actually, the font switch is not that slow when  -%D typefaces are used. If needed this macro can be sped up.  -%D  +%D [HH] Actually, the font switch is not that slow when +%D typefaces are used. If needed this macro can be sped up. +%D  %D \startbuffer  %D ordinary text $x^{\text{extra ordinary text}}$  %D \stopbuffer  %D  %D \typebuffer -%D  +%D  %D \getbuffer  %D \macros  %D  {mathhexbox} -%D  +%D  %D [TH] \type {\mathhexbox} is also user||level (already  %D defined in Plain \TEX). It allows to get a math character -%D inserted as if it was a text character.  +%D inserted as if it was a text character.  \gdef\mathhexbox#1#2#3{\mathtext{$\m@th\mathchar"#1#2#3$}} -%D \macros  +%D \macros  %D   {boxed}  %D -%D [HH] Another macro that users expect (slightly adapted):  +%D [HH] Another macro that users expect (slightly adapted):  \def\boxed%    {\ifmmode\expandafter\mframed\else\expandafter\framed\fi} -%D \macros  +%D \macros  %D   {cfrac}  %D  %D [HH] Now let us see what this one does: @@ -201,9 +201,9 @@  %D $\cfrac{12}{3} \cfrac[l]{12}{3} \cfrac[c]{12}{3} \cfrac[r]{12}{3}$  %D $\cfrac{1}{23} \cfrac[l]{1}{23} \cfrac[c]{1}{23} \cfrac[r]{1}{23}$  %D \stopbuffer -%D  -%D \typebuffer  -%D  +%D +%D \typebuffer +%D  %D \getbuffer  \definecomplexorsimple\cfrac @@ -218,7 +218,7 @@        {#3}}%      \kern-\nulldelimiterspace} -%D [HH] The next alternative is nicer:  +%D [HH] The next alternative is nicer:  \def\simplecfrac     {\docfrac[cc]}  \def\complexcfrac[#1]{\docfrac[#1cc]} @@ -231,7 +231,7 @@        {\ifx r#2\hfill\fi#5\ifx l#2\hfill\fi}%      \kern-\nulldelimiterspace}} -%D [HH] Now we can align every combination we want:  +%D [HH] Now we can align every combination we want:  %D  %D \startbuffer  %D $\cfrac{12}{3} \cfrac[l]{12}{3} \cfrac[c]{12}{3} \cfrac[r]{12}{3}$ @@ -239,19 +239,19 @@  %D $\cfrac[cl]{12}{3} \cfrac[cc]{12}{3} \cfrac[cr]{12}{3}$  %D $\cfrac[lc]{1}{23} \cfrac[cc]{1}{23} \cfrac[rc]{1}{23}$  %D \stopbuffer -%D  -%D \typebuffer  -%D  +%D +%D \typebuffer +%D  %D \getbuffer -\protect \endinput  +\protect \endinput  %D \macros  %D   {startsubarray,substack,startsmallmatrix}  %D -%D [HH] I wonder what these are supposed to do. An example  -%D will be inserted later. Contrary to the original we  -%D support an optional argument between either \type {{}} or  +%D [HH] I wonder what these are supposed to do. An example +%D will be inserted later. Contrary to the original we +%D support an optional argument between either \type {{}} or  %D \type {[]}.  \def\startsubarray @@ -287,8 +287,8 @@    {\null     \,%     \vcenter\bgroup -   \baselineskip6\ex@  -   \lineskip1.5\ex@  +   \baselineskip6\ex@ +   \lineskip1.5\ex@     \lineskiplimit\lineskip     \ialign\bgroup\hfil$\m@th\scriptstyle##$\hfil&&\thickspace\hfil       $\m@th\scriptstyle##$\hfil\crcr} @@ -298,4 +298,4 @@     \egroup     \,} -\protect \endinput  +\protect \endinput diff --git a/tex/context/base/m-visual.tex b/tex/context/base/m-visual.tex new file mode 100644 index 000000000..30daf3405 --- /dev/null +++ b/tex/context/base/m-visual.tex @@ -0,0 +1,287 @@ +%D \module +%D   [       file=m-visual, +%D        version=2000.01.10, +%D          title=\CONTEXT\ Extra Modules, +%D       subtitle=Visualization and Faking, +%D         author={Hans Hagen \& Ton Otten}, +%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. + +\unprotect + +%D This module collect a few more visual debugger features. I +%D needed them for manuals and styles. The macros are documented +%D in a my way document. + +\definecolor[fakerulecolor]     [black] +\definecolor[fakebaselinecolor] [green] +\definecolor[fakeparindentcolor][blue] + +\newif\iffakebaseline \fakebaselinetrue + +\def\fakerule#1% +  {\strut +%    \startcolor[fakerulecolor]% +   \iffakebaseline +     \vrule\!!height1.25ex\!!depth-.05ex\!!width#1% +     \kern-#1% +     \vrule\!!height-.05ex\!!depth .25ex\!!width#1% +   \else +     \vrule\!!height1.25ex\!!depth .25ex\!!width#1% +   \fi +   \stopcolor +   \allowbreak} + +% can be used in hbox, so %'s are really needed + +\unexpanded\def\fakelines#1#2% min max / 3 10 +  {\fakeparindent +   \scratchdimen\hsize +   \ifindentation +     \advance\scratchdimen -\parindent +   \fi +   \fakerule\scratchdimen\break +   \getrandomcount\scratchcounter{\ifcase0#1 3\else#1\fi}{\ifcase0#2 10\else#2\fi}% +   \dorecurse\scratchcounter{\fakerule\hsize}% +   \getrandomdimen\scratchdimen{.25\hsize}\hsize +   \fakerule\scratchdimen +   \par} % indeed + +\unexpanded\def\fakewords +  {\ifvmode\fakeparindent\fi\onlyfakewords} + +\definepalet +  [fakerule] +  [fr1c=darkred, +   fr2c=darkgreen, +   fr3c=darkblue, +   fr4c=darkyellow, +   fr5c=darkgray] + +\unexpanded\def\onlyfakewords#1#2% min max / 10 40 +  {\getrandomcount\scratchcounter{\ifcase0#1 10\else#1\fi}{\ifcase0#2 40\else#2\fi}% +   \dofakewords\scratchcounter +   } % no \par + +\unexpanded\def\fakenwords#1#2% words seed +  {\fakeparindent +   \getrandomseed\fakedwordseed +   \setrandomseed{\ifcase0#2 #1\else#2\fi}% +   \dofakewords{#1}% +   \setrandomseed\fakedwordseed +   } % no \par + +\def\dofakewords#1% +  {\bgroup +   \dorecurse{#1} +     {\getrandomcount\scratchcounter{1}{5}% +      \dorecurse\scratchcounter +        {\getrandomdimen\scratchdimen{.5em}{1.25em}% +         \fakerule\scratchdimen}% +      \space}% +   \removeunwantedspaces +   \egroup} + +\def\doshowfakewords#1% +  {\bgroup +   \setuppalet[fakerule]% +   \definecolor[fakerulecolor]% +   \dorecurse{#1} +     {\getrandomcount\scratchcounter{1}{5}% +      \dorecurse\scratchcounter +        {\getrandomdimen\scratchdimen{.5em}{1.25em}% +         \color[fr\recurselevel c]{\fakerule\scratchdimen}}% +      \space}% +   \removeunwantedspaces +   \egroup} + +\def\showfakewords{\let\dofakewords\doshowfakewords} + +\def\fakeword +  {\fakewords{1}{1}} % no \plusone + +\def\fakeparindent +  {\noindent +   \ifindentation +     \ifx\dofakedroppedcaps\relax +       {\fakeparindentcolor +        \vrule +          \!!height \strutheight % not longer .5ex +          \!!depth  \strutdepth  % not longer 0pt +          \!!width  \parindent}% +     \else +       \dofakedroppedcaps \let\dofakedroppedcaps\relax +     \fi +%    \else +%      \dontleavehmode +   \fi} + +\let\dofakedroppedcaps\relax + +\unexpanded\def\fakedroppedcaps#1% +  {\ifnum#1>0 +     \def\dofakedroppedcaps +       {\setbox\scratchbox\hbox +          {\setbox\scratchbox\hbox{W}% +           \scratchdimen#1\lineheight +           \advance\scratchdimen -\lineheight +           \advance\scratchdimen \dp\strutbox +           \vrule +             \!!width#1\wd\scratchbox +             \!!height\ht\scratchbox +             \!!depth\scratchdimen}% +        \ht\scratchbox\ht\strutbox +        \dp\scratchbox\dp\strutbox +        \hangindent\wd\scratchbox +        \advance\hangindent .5em +        \wd\scratchbox\hangindent +        \hangafter-#1\noindent +        \llap{\fakeparindentcolor\box\scratchbox}}% +   \fi} + +\newcounter\noffakedfigures + +\unexpanded\def\showfakefigure +  {\donetrue\dodoubleempty\dofakefigure} + +\unexpanded\def\fakefigure +  {\donefalse\dodoubleempty\dofakefigure} + +\def\dofakefigure[#1][#2]#3#4#5#6% [] [] minwidth maxwidth minheight maxheight +  {\doglobal\increment\noffakedfigures +   \ifdone +     \endgraf +     \hbox to \hsize +      {\hss\fakeparindentcolor +       \strut\bf Figure \noffakedfigures +       \doifsomething{#1}{\space(#1)}% +       \hss} +     \endgraf +   \fi +   \getvalue{\e!plaats\v!figuur} +     [#1][#2]% +     {\freezerandomseed +      \let\endstrut\relax +      \let\begstrut\relax +      \doifinsetelse{#1}{\v!links,\v!rechts} +        {\fakewords{2}{4}} +        {\fakewords{4}{10}}}% +     {\getrandomdimen{\dimen0}{#3}{#4}% +      \getrandomdimen{\dimen2}{#5}{#6}% +      \doifinset{#1}{\v!links,\v!rechts} +        {\dimen0=.75\dimen0 +         \ifdim\dimen0>.6\hsize \dimen0=.5\hsize\fi +         \ifdim\dimen0<.3\hsize \dimen0=.3\hsize\fi}% +      \framed +        [\c!breedte=\dimen0, +         \c!hoogte=\dimen2, +         \c!kader=\ifincolor\v!uit\else\v!aan\fi, +         \c!achtergrond=\v!kleur, +         \c!achtergrondkleur=fakeparindentcolor] +        {\bf\white#1}}% +   \defrostrandomseed} + +\def\fakeformula +  {\dimen0\zeropoint +   \getrandomcount\scratchcounter{3}{6}% +   \dorecurse\scratchcounter +     {\getrandomdimen\scratchdimen{1em}{3em}% +      \mathinner{\red\fakerule\scratchdimen}% +      \ifnum\recurselevel<\scratchcounter+\fi +      \advance\scratchdimen\dimen0}% +   =\mathinner{\red\fakerule\scratchdimen}} + +\def\fakespacingformula +  {\color[fakebaselinecolor]{\ruledbaseline}\fakeformula} + +%D test \bodyfontgrid\space test +%D test \emexgrid    \space test + +\def\smashedgrid +  {\dosingleempty\dosmashedgrid} + +\def\dosmashedgrid[#1]% +  {\hsmashed +     {\setbox\scratchbox=\hbox +        {\basegrid +           [\c!nx=10,\c!ny=10,\c!dx=1,\c!dy=1, +            \c!eenheid=\bodyfontsize,#1]}% +      \hbox to \zeropoint +        {\hss\lower.5\ht\scratchbox\box\scratchbox\hss}% +      \hbox to \zeropoint +        {\hss +         \black\vrule\!!width6\linewidth\!!height3\linewidth\!!depth3\linewidth +         \hss}}} + +\def\bodyfontgrid +  {\hbox +     {{\linewidth.1pt\yellow\smashedgrid[\c!nx=30,\c!ny=30,\c!schaal=.3333]}% +      {\linewidth.2pt\green \smashedgrid[\c!nx=20,\c!ny=20,\c!schaal=.5]}% +      {\linewidth.3pt\red   \smashedgrid[\c!nx=10,\c!ny=10,\c!schaal=1]}}} + +\def\emexgrid +  {\hbox +     {{\linewidth.15pt\green\smashedgrid[\c!nx=20,\c!ny=20,\c!eenheid=ex]}% +      {\linewidth.15pt\red  \smashedgrid[\c!nx=10,\c!ny=10,\c!eenheid=em]}}} + +%D The next few macros are not really public and kind of low +%D level. They are obscure and a bit perverse. + +\definecolor[llblack][s=0.01] + +\def\lowlevelstream#1#2#3% +  {\ifinotr \else +     \dontleavehmode +     \prewordbreak +     \bgroup\bgroup % make sure aftergroup stuff is handled +    %\let#1#2\optimizetransparencyfalse\black +     \infofont\clap{\vl}\ignorespaces#3\unskip\clap{\vl}% +     \egroup\egroup +     \prewordbreak +   \fi +   #2{#3}} + +\let\normalPDFcode\PDFcode +\let\normalspecial\special + +\def\showlowlevelstream +  {\def\PDFcode{\lowlevelstream\PDFcode\normalPDFcode}% +   \def\special{\lowlevelstream\special\normalspecial}} + +\def\showlowlevelstreamonly +  {\def\PDFcode{\lowlevelstream\PDFcode\gobbleoneargument}% +   \def\special{\lowlevelstream\special\gobbleoneargument}} + +\let\normaldostartgraymode     \dostartgraymode +\let\normaldostartgraycolormode\dostartgraycolormode +\let\normaldostartrgbcolormode \dostartrgbcolormode +\let\normaldostartcmykcolormode\dostartcmykcolormode +\let\normaldostartspotcolormode\dostartspotcolormode + +\def\traceddostartgraymode#1% +  {#1\normaldostartgraymode{#1}} + +\def\traceddostartgraycolormode#1% +  {#1\normaldostartgraycolormode{#1}} + +\def\traceddostartrgbcolormode#1#2#3% +  {#1 #2 #3\normaldostartrgbcolormode{#1}{#2}{#3}} + +\def\traceddostartcmykcolormode#1#2#3#4% +  {#1 #2 #3 #4\normaldostartcmykcolormode{#1}{#2}{#3}{#4}} + +\def\traceddostartspotcolormode#1#2% +  {#1 #2\normaldostartspotcolormode{#1}{#2}} + +\def\showcolormodes +  {\let\dostartgraymode     \traceddostartgraymode +   \let\dostartgraycolormode\traceddostartgraycolormode +   \let\dostartrgbcolormode \traceddostartrgbcolormode +   \let\dostartcmykcolormode\traceddostartcmykcolormode +   \let\dostartspotcolormode\traceddostartspotcolormode} + +\protect \endinput
\ No newline at end of file diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex index 802b669ec..f348b2ffd 100644 --- a/tex/context/base/meta-ini.tex +++ b/tex/context/base/meta-ini.tex @@ -86,6 +86,10 @@    graphictextdirective "\the\everyMPTEXgraphic";  \to \MPextensions +% \appendtoks +%   textextdirective "\the\everyMPTEXgraphic"; +% \to \MPextensions +  %D A signal that we're in combines \CONTEXT||\METAFUN mode:  \appendtoks @@ -788,12 +792,7 @@  %D However, on a 1 Gig Pentium, the next alternative saves  %D us 20 seconds run time for the 300 page \METAFUN\ manual: -\def\insertMPfile#1#2% -  {\doiffileelse{./#1} -     {\ifcase\pdfoutput -        \@EA\includeMPasEPS\else\@EA\includeMPasPDF -      \fi{./#1}} -     {\message{[MP #1]}}} +\def\insertMPfile#1#2{\doinsertMPfile{#1}}  \def\includeMPasEPS#1%    {\bgroup @@ -803,7 +802,7 @@     \setbox\scratchbox\vbox to \!!heightb       {\vfill        \doinsertfile -        {\c!mps,\c!mps}{#1,\empty}{100}{100} +        {\c!mps,\c!mps}{#1,\empty}{100}{100}%          \!!widtha\!!heighta\!!widthb\!!heightb\zerocount}%     \wd\scratchbox\!!widthb     \dp\scratchbox\zeropoint diff --git a/tex/context/base/mult-com.tex b/tex/context/base/mult-com.tex index cb8dafc1a..db1435ab1 100644 --- a/tex/context/base/mult-com.tex +++ b/tex/context/base/mult-com.tex @@ -773,13 +773,13 @@ stelnummerin: stelnummerin setupnumber                       regelrechts: regelrechts                      rightaligned                                    rechtsbuendig                    zarovnanovpravo                                    allineadestra                    aliniatdreapta -                   startkolommen: startkolommen                    startcolumns +                    startcolumns: startkolommen                    startcolumns                                    startspalten                     startsloupce                                    iniziacolonne                    startcoloane -                    stopkolommen: stopkolommen                     stopcolumns +                     stopcolumns: stopkolommen                     stopcolumns                                    stopspalten                      stopsloupce                                    terminacolonne                   stopcoloane -                  stelkolommenin: stelkolommenin                   setupcolumns +                    setupcolumns: stelkolommenin                   setupcolumns                                    stellespaltenein                 nastavsloupce                                    impostacolonne                   seteazacoloane                            column: kolom                            column diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex index 587a0c9a1..a4e24f508 100644 --- a/tex/context/base/mult-con.tex +++ b/tex/context/base/mult-con.tex @@ -1307,9 +1307,12 @@ zijuitlijnen: zijuitlijnen sidealign                             objektabstand             pocitat                             lato                      parte  % new -veldlaag: veldlaag                  fieldlayer -          fieldlayer                fieldlayer -          fieldlayer                fieldlayer + veldlaag: veldlaag                  fieldlayer +           fieldlayer                fieldlayer +           fieldlayer                fieldlayer +tekstlaag: tekstlaag                 textlayer +           textlayer                 textlayer +           textlayer                 textlayer       veldachtergrondkleur: veldachtergrondkleur      fieldbackgroundcolor                             feldhintergrundfarbe      barvapozadipole                             coloresfondocampo         culoarefundalcamp diff --git a/tex/context/base/page-app.tex b/tex/context/base/page-app.tex index 6f21c82f2..e522b5673 100644 --- a/tex/context/base/page-app.tex +++ b/tex/context/base/page-app.tex @@ -74,19 +74,23 @@  \def\dostartfittingpage[#1][#2]%    {\pagina % this is kind of tricky! there can be preceding page refs     \bgroup % resulting in a zero height page; test fig-make ! +   \def\currentfittingpage{#1}%     \dontcomplain     % runs under current page regime, i.e. page variables passed to mp +   \getparameters[\currentfittingpage][\c!papier=,#2]% auto or size or nothing     \setbox\scratchbox\hbox       \bgroup -     \getparameters[#1][#2]% -     \doifvalue{#1\c!marge}{\v!pagina} +     % needed later \getparameters[\currentfittingpage][\c!papier=,#2]% auto or size or nothing +     \doifvalue{\currentfittingpage\c!marge}\v!pagina % undocumented         {\offsetbox            [\c!linkeroffset=\rugwit,             \c!rechteroffset=\snijwit,             \c!bovenoffset=\kopwit,             \c!onderoffset=\bodemwit]\hbox}%       \bgroup -     \schaal[\c!schaal=\getvalue{#1\c!schaal}]\bgroup\localframed[#1]\bgroup} +     \schaal[\c!schaal=\getvalue{\currentfittingpage\c!schaal}]% +     \bgroup\localframed[\currentfittingpage]% +     \bgroup}  \def\dostopfittingpage    {\egroup % localframed @@ -102,8 +106,12 @@       \edef\fittinght{\the\lineheight}%     \fi     \let\checkcurrentlayout\relax % else interference with odd/even layout -   \setuppapersize -     [\??fp\s!dummy][\??fp\s!dummy]% +   \processaction +     [\getvalue{\currentfittingpage\c!papier}] +     [   \v!auto=>\let\fittingpapersize\printpapersize, +      \s!unknown=>\let\fittingpapersize\commalistelement, +      \s!default=>\def\fittingpapersize{\??fp\s!dummy}]% +   \expanded{\setuppapersize[\??fp\s!dummy][\fittingpapersize]}%     \definelayout       [\v!pagina]%       [\c!plaats=\v!midden, diff --git a/tex/context/base/page-imp.tex b/tex/context/base/page-imp.tex index 3c9a899bd..7d0491e4c 100644 --- a/tex/context/base/page-imp.tex +++ b/tex/context/base/page-imp.tex @@ -164,13 +164,14 @@          \hbox % \setbox0=\box.. is nicer            {\setbox0\hbox{#1}% just in case there are objects there             \setbox\scratchbox\hbox -             {\the\everyshipout\relax -              % so, these two come *after* the main one +             {% before the main one !                \ifcase\realfolio \or                  \the\everyfirstshipout                  \global\everyfirstshipout\emptytoks                \fi -              % one page document can do both +              % the main one +              \the\everyshipout\relax +              % always last (and after the main one)                \ifnum\realpageno=\lastpage\relax                  \flushtextdata                  \the\everylastshipout @@ -1045,10 +1046,9 @@                          \@@ipboven                          \hbox to \hsize                            {\@@iplinks -\ifnum\combinedpagescounter>\@@ipstop\relax -  \globallet\@@ipn\!!zerocount -\else -                           \ifnum\combinedpagescounter>\@@ipn \else +                           \ifnum\combinedpagescounter>\@@ipstop\relax +                             \globallet\@@ipn\!!zerocount +                           \else\ifnum\combinedpagescounter>\@@ipn \else                               \externalfigure[#1]                                 [\c!object=\v!nee,                                  \c!pagina=\combinedpagescounter, @@ -1056,8 +1056,7 @@                                  \c!achtergrond=\@@ipachtergrond,                                  \c!achtergrondkleur=\@@ipachtergrondkleur,                                  \c!kader=\@@ipkader]% -                           \fi -\fi +                           \fi\fi                             \@@iprechts}                          \@@iponder}%                       \doglobal\increment\combinedpagescounter @@ -1079,13 +1078,14 @@              {\dorecurse\@@ipnx                 {\doglobal\increment\combinedpagescounter                  \ifnum\combinedpagescounter>\@@ipn \else -                   \externalfigure[#1] +                   \expanded{\externalfigure[#1]                       [\c!pagina=\combinedpagescounter, -                      \c!breedte=\!!widtha, +                      \c!breedte=\the\!!widtha,% todo \freezedimenmacro                        \c!achtergrond=\@@ipachtergrond,                        \c!achtergrondkleur=\@@ipachtergrondkleur, -                      \c!kader=\@@ipkader]% -                \fi}}% +                      \c!kader=\@@ipkader]}% +                   \hfill +                \fi}\hfillneg}%          \stopbaselinecorrection          \ifnum\combinedpagescounter<\@@ipn\relax            \@@iptussen diff --git a/tex/context/base/page-ini.tex b/tex/context/base/page-ini.tex index 2cd300ccf..37dbc8835 100644 --- a/tex/context/base/page-ini.tex +++ b/tex/context/base/page-ini.tex @@ -664,19 +664,6 @@  \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? @@ -1501,7 +1488,7 @@  \installpagebreakhandler \s!default    {} % do nothing if empty -\installpagebreakhandler  \v!reset +\installpagebreakhandler \v!reset    {% better not: \global\chardef\pageornamentstate\zerocount     \resetpagebreak} @@ -1696,14 +1683,16 @@  % We don't want spurious last pages (due to left over marks): +\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 -       \gdef\shipout -         {\writestatus\m!systems{ignoring further shipouts}% -          \dowithnextbox{\deadcycles\zerocount}}% -     \fi -   \fi} +  {\ifarrangingpages \else \ifnum\textlevel>\zerocount \else +     \globallet\shipout\noshipout +   \fi \fi}  \let\ignorerestoftext\donothing @@ -1711,9 +1700,9 @@    \globallet\ignorerestoftext\doignorerestoftext  \to \everystarttext -\appendtoks -  \ignorerestoftext -\to \everylastshipout +% \appendtoks +%   \ignorerestoftext +% \to \everylastshipout  \newif\ifgeselecteerd \geselecteerdtrue  \newif\ifselecteren   \selecterenfalse diff --git a/tex/context/base/page-lay.tex b/tex/context/base/page-lay.tex index 2f5954b62..309471878 100644 --- a/tex/context/base/page-lay.tex +++ b/tex/context/base/page-lay.tex @@ -279,9 +279,10 @@  \def\dodefinepapersize[#1][#2]%    {\ifsecondargument -     \getparameters -       [\??pp#1] % geen \c!schaal, scheelt hash ruimte -       [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte,\c!offset=\@@ppoffset,#2]% +     \doifsomething{#1} % to be sure +       {\getparameters +          [\??pp#1] % geen \c!schaal, scheelt hash ruimte +          [\c!breedte=\@@ppbreedte,\c!hoogte=\@@pphoogte,\c!offset=\@@ppoffset,#2]}%     \else       \getparameters[\??pp][#1]%       \setuppapersize @@ -352,55 +353,69 @@          {\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, 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 +%      \recalculatebackgrounds +%      \recalculatelayout +%    \else\iffirstargument +%      \setuppapersize[#1][#2]% +%    \else\ifx\papersize\undefined\else +%      \restorepapersize +%    \fi\fi\fi} +  \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, 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}% -     % +     \dododosetuppapersize[#1][#2]%       \calculatehsizes       \calculatevsizes       \recalculatelogos @@ -412,6 +427,54 @@       \restorepapersize     \fi\fi\fi} +\def\dododosetuppapersize[#1][#2]% +  {\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, 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}} +  \def\dostelpapierrichtingin#1#2#3#4#5%    {\global\chardef#2\zerocount     \global\chardef#5\zerocount @@ -453,7 +516,13 @@  % \newtoks \everybeforelayout \relax  % \newtoks \everyafterlayout  \relax +  \def\recalculatelayout +  {\doifsomething{\layoutparameter\c!pagina\layoutparameter\c!papier} +     {\dododosetuppapersize[\layoutparameter\c!pagina][\layoutparameter\c!papier]}% +   \dorecalculatelayout} + +\def\dorecalculatelayout    {%\the\everybeforelayout     \setups[\layoutparameter\c!preset]%     \global\linkermargebreedte \layoutparameter\c!linkermarge @@ -468,6 +537,11 @@     \global\kopwit             \layoutparameter\c!kopwit     \setlayoutdimensions % the rest of the `dimensions'     \doifelse\@@lygrid\v!ja\gridsnappingtrue\gridsnappingfalse +   \ifgridsnapping +     \setsystemmode\v!grid +   \else +     \resetsystemmode\v!grid +   \fi     \setups[\layoutparameter\c!setups]% depends on gridsnapping !     \simplesetupwhitespace     \simplesetupblank @@ -1247,7 +1321,9 @@      \c!rechterrandafstand=\layoutparameter\c!randafstand,             \c!rechterrand=\layoutparameter\c!rand,               \c!kopoffset=\!!zeropoint, +              \c!bodemwit=\!!zeropoint,               \c!rugoffset=\!!zeropoint, +               \c!snijwit=\!!zeropoint,            \c!tekstbreedte=, % dangerous option -> centered / local              \c!tekstmarge=, % dangerous option -> both sides            \c!tekstafstand=\!!zeropoint, % shift down on grid @@ -1265,10 +1341,10 @@                  \c!setups=\systemsetupsprefix\s!default,              \c!clipoffset=\!!zeropoint,                  \c!regels=0, +                \c!papier=, % for foxet +                \c!pagina=, % for foxet                \c!kolommen=1, -          \c!kolomafstand=\!!zeropoint, -               \c!snijwit=\!!zeropoint, -              \c!bodemwit=\!!zeropoint] +          \c!kolomafstand=\!!zeropoint]  %D First we define a whole range of (DIN) papersizes,  %D of which the A-series makes most sense. We enable checking. @@ -1293,38 +1369,50 @@     \c!links=,     \c!rechts=\hss] -\definepapersize [A0] [\c!breedte=841mm,\c!hoogte=1189mm] -\definepapersize [A1] [\c!breedte=594mm,\c!hoogte=841mm] -\definepapersize [A2] [\c!breedte=420mm,\c!hoogte=594mm] -\definepapersize [A3] [\c!breedte=297mm,\c!hoogte=420mm] -\definepapersize [A4] [\c!breedte=210mm,\c!hoogte=297mm] -\definepapersize [A5] [\c!breedte=148mm,\c!hoogte=210mm] -\definepapersize [A6] [\c!breedte=105mm,\c!hoogte=148mm] -\definepapersize [A7] [\c!breedte=74mm,\c!hoogte=105mm] -\definepapersize [A8] [\c!breedte=52mm,\c!hoogte=74mm] -\definepapersize [A9] [\c!breedte=37mm,\c!hoogte=52mm] - -\definepapersize [B0] [\c!breedte=1000mm,\c!hoogte=1414mm] -\definepapersize [B1] [\c!breedte=707mm,\c!hoogte=1000mm] -\definepapersize [B2] [\c!breedte=500mm,\c!hoogte=707mm] -\definepapersize [B3] [\c!breedte=354mm,\c!hoogte=500mm] -\definepapersize [B4] [\c!breedte=250mm,\c!hoogte=354mm] -\definepapersize [B5] [\c!breedte=177mm,\c!hoogte=250mm] -\definepapersize [B6] [\c!breedte=125mm,\c!hoogte=177mm] -\definepapersize [B7] [\c!breedte=88mm,\c!hoogte=125mm] -\definepapersize [B8] [\c!breedte=63mm,\c!hoogte=88mm] -\definepapersize [B9] [\c!breedte=44mm,\c!hoogte=63mm] - -\definepapersize [C0] [\c!breedte=917mm,\c!hoogte=1297mm] -\definepapersize [C1] [\c!breedte=649mm,\c!hoogte=917mm] -\definepapersize [C2] [\c!breedte=459mm,\c!hoogte=649mm] -\definepapersize [C3] [\c!breedte=324mm,\c!hoogte=459mm] -\definepapersize [C4] [\c!breedte=229mm,\c!hoogte=324mm] -\definepapersize [C5] [\c!breedte=162mm,\c!hoogte=229mm] -\definepapersize [C6] [\c!breedte=115mm,\c!hoogte=162mm] -\definepapersize [C7] [\c!breedte=81mm,\c!hoogte=115mm] -\definepapersize [C8] [\c!breedte=57mm,\c!hoogte=81mm] -\definepapersize [C9] [\c!breedte=40mm,\c!hoogte=57mm] +\definepapersize [A0]  [\c!breedte=841mm,\c!hoogte=1189mm] +\definepapersize [A1]  [\c!breedte=594mm,\c!hoogte=841mm] +\definepapersize [A2]  [\c!breedte=420mm,\c!hoogte=594mm] +\definepapersize [A3]  [\c!breedte=297mm,\c!hoogte=420mm] +\definepapersize [A4]  [\c!breedte=210mm,\c!hoogte=297mm] +\definepapersize [A5]  [\c!breedte=148mm,\c!hoogte=210mm] +\definepapersize [A6]  [\c!breedte=105mm,\c!hoogte=148mm] +\definepapersize [A7]  [\c!breedte=74mm,\c!hoogte=105mm] +\definepapersize [A8]  [\c!breedte=52mm,\c!hoogte=74mm] +\definepapersize [A9]  [\c!breedte=37mm,\c!hoogte=52mm] +\definepapersize [A10] [\c!breedte=26mm,\c!hoogte=37mm] + +\definepapersize [B0]  [\c!breedte=1000mm,\c!hoogte=1414mm] +\definepapersize [B1]  [\c!breedte=707mm,\c!hoogte=1000mm] +\definepapersize [B2]  [\c!breedte=500mm,\c!hoogte=707mm] +\definepapersize [B3]  [\c!breedte=353mm,\c!hoogte=500mm] % [\c!breedte=354mm,\c!hoogte=500mm] +\definepapersize [B4]  [\c!breedte=250mm,\c!hoogte=353mm] % [\c!breedte=250mm,\c!hoogte=354mm] +\definepapersize [B5]  [\c!breedte=176mm,\c!hoogte=250mm] % [\c!breedte=177mm,\c!hoogte=250mm] +\definepapersize [B6]  [\c!breedte=125mm,\c!hoogte=176mm] % [\c!breedte=125mm,\c!hoogte=177mm] +\definepapersize [B7]  [\c!breedte=88mm,\c!hoogte=125mm] +\definepapersize [B8]  [\c!breedte=62mm,\c!hoogte=88mm]   % [\c!breedte=63mm,\c!hoogte=88mm] +\definepapersize [B9]  [\c!breedte=44mm,\c!hoogte=62mm]   % [\c!breedte=44mm,\c!hoogte=63mm] +\definepapersize [B10] [\c!breedte=31mm,\c!hoogte=44mm] + +\definepapersize [C0]  [\c!breedte=917mm,\c!hoogte=1297mm] +\definepapersize [C1]  [\c!breedte=648mm,\c!hoogte=917mm] % [\c!breedte=649mm,\c!hoogte=917mm] +\definepapersize [C2]  [\c!breedte=458mm,\c!hoogte=648mm] % [\c!breedte=459mm,\c!hoogte=649mm] +\definepapersize [C3]  [\c!breedte=324mm,\c!hoogte=458mm] % [\c!breedte=324mm,\c!hoogte=459mm] +\definepapersize [C4]  [\c!breedte=229mm,\c!hoogte=324mm] +\definepapersize [C5]  [\c!breedte=162mm,\c!hoogte=229mm] +\definepapersize [C6]  [\c!breedte=114mm,\c!hoogte=162mm] % [\c!breedte=115mm,\c!hoogte=162mm] +\definepapersize [C7]  [\c!breedte=81mm,\c!hoogte=114mm]  % [\c!breedte=81mm,\c!hoogte=115mm] +\definepapersize [C8]  [\c!breedte=57mm,\c!hoogte=81mm] +\definepapersize [C9]  [\c!breedte=40mm,\c!hoogte=57mm] +\definepapersize [C10] [\c!breedte=28mm,\c!hoogte=40mm] + +%D Per August 2004 the rounding of some (seldom used) sizes +%D were corrected top the latest DIN specifications. Peter +%D Rolf came up with these and a few more missing sizes. +%D Watch out: spaces and slashes! + +\definepapersize [4 A0]  [\c!breedte=1682mm,\c!hoogte=2378mm] +\definepapersize [2 A0]  [\c!breedte=1189mm,\c!hoogte=1682mm] +\definepapersize [C6/C5] [\c!breedte=114mm,\c!hoogte=229mm]  %D Because there are no standardized screen sizes, we define  %D a bunch of sizes with $4:3$ ratios. The \type {S6} size is @@ -1376,7 +1464,8 @@  \definepapersize [envelope 14] [\c!breedte=11.5in,\c!hoogte=5.0in]  \definepapersize [monarch]     [\c!breedte=7.5in,\c!hoogte=3.88in]  \definepapersize [check]       [\c!breedte=8.58in,\c!hoogte=3.88in] -\definepapersize [DL]          [\c!breedte=220mm,\c!hoogte=110mm] +\definepapersize [DL]          [\c!breedte=110mm,\c!hoogte=220mm] % [\c!breedte=220mm,\c!hoogte=110mm] +\definepapersize [E4]          [\c!breedte=280mm,\c!hoogte=400mm]  %D We can now default to a reasonable size. We match the print  %D paper size with the typeset paper size. This setting should diff --git a/tex/context/base/page-mul.tex b/tex/context/base/page-mul.tex index 2c3e5c131..ca85bc6d4 100644 --- a/tex/context/base/page-mul.tex +++ b/tex/context/base/page-mul.tex @@ -286,9 +286,9 @@  %D  %D \startbuffer  %D \startbuffer[b] -%D \startkolommen +%D \startcolumns  %D   \input tufte -%D \stopkolommen +%D \stopcolumns  %D \stopbuffer  %D \typebuffer[b] \haalbuffer[b]  %D @@ -300,44 +300,44 @@  %D \typebuffer[b] \haalbuffer[b]  %D  %D \startbuffer[b] -%D \startkolommen \startsmaller +%D \startcolumns \startsmaller  %D   \input tufte -%D \stopsmaller \stopkolommen +%D \stopsmaller \stopcolumns  %D \stopbuffer  %D \typebuffer[b] \haalbuffer[b]  %D  %D \startbuffer[b] -%D \startsmaller \startkolommen +%D \startsmaller \startcolumns  %D   \input tufte -%D \stopkolommen \stopsmaller +%D \stopcolumns \stopsmaller  %D \stopbuffer  %D \typebuffer[b] \haalbuffer[b]  %D  %D \startbuffer[b] -%D \startkolommen \startsmaller[left] +%D \startcolumns \startsmaller[left]  %D   \input tufte -%D \stopsmaller \stopkolommen +%D \stopsmaller \stopcolumns  %D \stopbuffer  %D \typebuffer[b] \haalbuffer[b]  %D  %D \startbuffer[b] -%D \startsmaller[left] \startkolommen +%D \startsmaller[left] \startcolumns  %D   \input tufte -%D \stopkolommen \stopsmaller +%D \stopcolumns \stopsmaller  %D \stopbuffer  %D \typebuffer[b] \haalbuffer[b]  %D  %D \startbuffer[b] -%D \startsmaller \startkolommen \startsmaller +%D \startsmaller \startcolumns \startsmaller  %D   \input tufte -%D \stopsmaller\stopkolommen \stopsmaller +%D \stopsmaller\stopcolumns \stopsmaller  %D \stopbuffer  %D \typebuffer[b] \haalbuffer[b]  %D  %D \startbuffer[b] -%D \startsmaller[left] \startkolommen \startsmaller +%D \startsmaller[left] \startcolumns \startsmaller  %D   \input tufte -%D \stopsmaller\stopkolommen \stopsmaller +%D \stopsmaller\stopcolumns \stopsmaller  %D \stopbuffer  %D \typebuffer[b] \haalbuffer[b]  %D \stopbuffer @@ -492,6 +492,36 @@  %D e.g. when there is no text given between \type{\begin..}  %D and \type{\end..}. The \type{\par} is needed! +% \def\endmulticolumns +%   {%\par +%    \vskip\lineheight\vskip-\lineheight % take footnotes into account +%    \dontshowcomposition +%    \doflushcolumnfloat  % added recently +%   %\doflushcolumnfloats % no, since it results in wrong top floats +%    \flushnotes          % before start of columns +%    \par +%    \ifbalancecolumns +%      \global\output{\continuousmulticolumnsout}% +%      \goodbreak +%      \global\output{\balancedmulticolumnsout}% +%    \else +%      \goodbreak +%    \fi +%    \eject                 % the prevdepth is important, try e.g. toclist in +%    \prevdepth\zeropoint % columns before some noncolumned text text +%    \global\output\singlecolumnout +%     \global\output{\the\mainoutput}% % % % % todo +%    \ifvoid\precolumnbox\else +%      \unvbox\precolumnbox +%    \fi +%    \global\precolumnboxheight\zeropoint +%    \endgroup % here +%    \nofcolumns\plusone +%    \setvsize % the outer one! +%    \checkendcolumnfootnotes +%    \dosomebreak\allowbreak +%    \restoresavedfloats} +  \def\endmulticolumns    {%\par     \vskip\lineheight\vskip-\lineheight % take footnotes into account @@ -507,10 +537,10 @@     \else       \goodbreak     \fi -   \eject                 % the prevdepth is important, try e.g. toclist in +   \eject               % the prevdepth is important, try e.g. toclist in     \prevdepth\zeropoint % columns before some noncolumned text text     \global\output\singlecolumnout -    \global\output{\the\mainoutput}% % % % % todo +   \global\output{\the\mainoutput}% % % % % todo     \ifvoid\precolumnbox\else       \unvbox\precolumnbox     \fi @@ -518,6 +548,7 @@     \endgroup % here     \nofcolumns\plusone     \setvsize % the outer one! +   \synchronizeoutput % new may 2004 / we need to: \pagegoal\vsize     \checkendcolumnfootnotes     \dosomebreak\allowbreak     \restoresavedfloats} @@ -670,9 +701,9 @@  %D \def\postprocesscolumnline#1% or \postprocesscolumnbox  %D   {\ruledhbox{\box#1}\hss}  %D -%D \startkolommen[n=4] +%D \startcolumns[n=4]  %D \dorecurse{25}{line: \recurselevel\par} -%D \stopkolommen +%D \stopcolumns  %D \stopbuffer  %D  %D \typebuffer @@ -691,9 +722,9 @@  %D      \relax\unhbox#1\hfill  %D    \fi}  %D -%D \startkolommen[n=4] +%D \startcolumns[n=4]  %D \dorecurse{25}{line \recurselevel\par} -%D \stopkolommen +%D \stopcolumns  %D \stopbuffer  %D  %D \typebuffer @@ -1503,13 +1534,13 @@  % border case, should fit on one page  % -% \startkolommen +% \startcolumns  %  % 1 \input tufte  \par \plaatsfiguur{}{\omlijnd[breedte=\hsize,hoogte=3cm]{1}}  % 2 \input tufte  \par \plaatsfiguur{}{\omlijnd[breedte=\hsize,hoogte=3cm]{2}}  % 3 \input tufte  \par \plaatsfiguur{}{\omlijnd[breedte=\hsize,hoogte=3cm]{3}}  % -% \stopkolommen +% \stopcolumns  \newif\ifbinnenkolommen  \newif\if@@klbalanceren @@ -1517,10 +1548,10 @@  \binnenkolommenfalse -\def\stelkolommenin -  {\dodoubleargument\dostelkolommenin} +\def\setupcolumns +  {\dosingleempty\dosetupcolumns} -\def\stelkolommenin[#1]% +\def\dosetupcolumns[#1]%    {\getparameters[\??kl][#1]%     \nofcolumns\@@kln\relax     \processaction @@ -1567,14 +1598,14 @@  \let\restorecolumnsettings\relax -\definecomplexorsimpleempty\startkolommen +\definecomplexorsimpleempty\startcolumns -\def\complexstartkolommen[#1]% %% \startkolommen +\def\complexstartcolumns[#1]% %% \startcolumns    {\bgroup -   \let\stopkolommen\egroup +   \let\stopcolumns\egroup     \ifbinnenkolommen     \else -     \stelkolommenin[#1]% +     \setupcolumns[#1]%       \ifnum\@@kln>1\relax         \witruimte         \begingroup @@ -1614,12 +1645,12 @@         %         \edef\fixedcolumnheight{\@@klhoogte}%         \edef\minbalancetoplines{\@@klnboven}% -       \setuptolerance[\@@kltolerantie]%     %% \startkolommen +       \setuptolerance[\@@kltolerantie]%     %% \startcolumns         \setupblank[\@@klblanko]%         \ifdim\tussenwit>\zeropoint\relax           \setupwhitespace[\@@klblanko]%         \fi -       \def\stopkolommen +       \def\stopcolumns           {\endmulticolumns            \global\binnenkolommenfalse            \endgroup @@ -1639,7 +1670,7 @@     \vskip-\teksthoogte     \prevdepth-\thousandpoint} % signals top of column to \blanko -\stelkolommenin +\setupcolumns    [\c!n=2,     \c!nboven=1,     \c!commando=, diff --git a/tex/context/base/page-one.tex b/tex/context/base/page-one.tex index 6be6e515f..68c919e8c 100644 --- a/tex/context/base/page-one.tex +++ b/tex/context/base/page-one.tex @@ -553,10 +553,48 @@  %      \fi  %    \fi} +% \def\OTRONEdocheckiffloatfits % vervangen ivm downward comp +%   {\ifnofloatpermitted +%      \global\roomforfloatfalse +%    \else +%      \dimen0         \pagetotal +%      \advance\dimen0 \ht\floatbox +%      \advance\dimen0 \dp\floatbox +%      \advance\dimen0 \floattopskip +%      \advance\dimen0 -\pageshrink  % toegevoegd +%     %\message{c:\the\mofcolumns,t:\the\pagetotal,g:\the\pagegoal}%\wait +%      \dimen2\pagegoal +%      \relax % needed +%      \ifcase\textfloatmethod +%        % method 0 : raw +%      \or +%        % method 1 : safe +%        \dimen2 .99\pagegoal +%      \or +%        % method 2 : tight +%        \advance\dimen0 -\onepoint +%      \fi +%      \relax % really needed ! ! ! ! +%      \ifdim\dimen0>\dimen2 +%        \global\roomforfloatfalse +%      \else +%        \global\roomforfloattrue +%      \fi +%    \fi} +  \def\OTRONEdocheckiffloatfits % vervangen ivm downward comp    {\ifnofloatpermitted       \global\roomforfloatfalse     \else +     % new per 31/5/2004, should be an option, only one column mode +     \begingroup +     \scratchdimen\pagetotal +     \advance\scratchdimen\lineheight % maybe strutheight +     \ifdim\scratchdimen>\pagegoal +       \goodbreak % hack ? needed in icare-az +     \fi +     % should be an option +     \endgroup       \dimen0         \pagetotal       \advance\dimen0 \ht\floatbox       \advance\dimen0 \dp\floatbox diff --git a/tex/context/base/page-set.tex b/tex/context/base/page-set.tex index e72892a51..a77563eba 100644 --- a/tex/context/base/page-set.tex +++ b/tex/context/base/page-set.tex @@ -436,6 +436,10 @@              \fi              \dorecurse\columnmaxcells                {\setbox\scratchbox\hbox{\OTRSETgetgridcell\mofcolumns\recurselevel}% +%               {\setbox\scratchbox\hbox +%                  {\localstarttextcolor +%                   \OTRSETgetgridcell\mofcolumns\recurselevel +%                   \localstoptextcolor}%                 \ht\scratchbox\strutht                 \dp\scratchbox\strutdp                 \ifcase\columndirection diff --git a/tex/context/base/page-sid.tex b/tex/context/base/page-sid.tex index bbdc1fe9a..e83d3e17f 100644 --- a/tex/context/base/page-sid.tex +++ b/tex/context/base/page-sid.tex @@ -50,6 +50,7 @@  \newdimen\sidefloatextrashift  \newdimen\sidefloatvsize       \def\nofloatvsize{-1pt }  \newdimen\sidefloatprogress +\newdimen\sidefloatpagetotal  \newbox\floatbottom @@ -628,8 +629,6 @@  \def\tosssidefloat    {\vfill\eject} -\newdimen\sidefloatpagetotal -  \def\measuresidefloat    {\global\floatflagtrue     \global\sidefloatpagetotal \pagetotal % global diff --git a/tex/context/base/s-abr-01.tex b/tex/context/base/s-abr-01.tex index 93c8e93d4..ca3bdf5d6 100644 --- a/tex/context/base/s-abr-01.tex +++ b/tex/context/base/s-abr-01.tex @@ -21,7 +21,7 @@  \logo [ACROBAT]    {Acro\-bat}  \logo [AFM]        {afm} -\logo [ALEPH]      {Aleph} +\logo [ALEPH]      {Aleph} % {\mathematics{\aleph}}  \logo [ALGOL]      {ALGOL}  \logo [AMSLATEX]   {\AmSLaTeX}  \logo [AMSTEX]     {\AmSTeX} @@ -204,6 +204,7 @@  \logo [XPDFETEX]   {xpdfe\TeX}  \logo [XSLT]       {xslt}  \logo [XSL]        {xsl} +\logo [XSLFO]      {xsl-fo}  \logo [YandY]      {y\&y}  \def\METAFUN       {\MetaFun} diff --git a/tex/context/base/s-map-01.tex b/tex/context/base/s-map-01.tex index 9250b20ae..f64e53546 100644 --- a/tex/context/base/s-map-01.tex +++ b/tex/context/base/s-map-01.tex @@ -108,7 +108,7 @@     \c!hoofd=35pt,     \c!voet=35pt] -\stelkolommenin +\setupcolumns    [\c!afstand=1pc]  %D Later zullen we zonodig nog instellen dat de \MAPS\ op een @@ -459,7 +459,7 @@           \kern 3.5pt         \egroup       \egroup -   \ifMapsInKolommen\startkolommen\fi +   \ifMapsInKolommen\startcolumns\fi     \MapsAffiliatieB}  \def\startBijdrage% @@ -467,7 +467,7 @@     \dosingleempty\dostartBijdrage}  \def\stopBijdrage% -  {\ifMapsInKolommen\stopkolommen\fi +  {\ifMapsInKolommen\stopcolumns\fi     \stoptekst}  %D De affiliatie wordt in de marge gezet. De wat gecompliceerde diff --git a/tex/context/base/s-pre-19.tex b/tex/context/base/s-pre-19.tex index 204cb41a1..56c7c78c4 100644 --- a/tex/context/base/s-pre-19.tex +++ b/tex/context/base/s-pre-19.tex @@ -8,8 +8,8 @@  %D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]  %C  %C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for  -%C details.  +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details.  %D This style is made in the process or writing the \METAFUN\  %D manual. It exploits a few tricks, like graphics calculated @@ -17,64 +17,64 @@  %D moment) new menu list placement alternative. If you forget  %D about the definition of the button shapes, which is  %D complicated in any system, this style is not even that hard -%D to follow. Watch how the left side of the buttons follow  -%D the right side of the text graphic.  -%D  -%D While playing bit with this style, the random alternative  -%D made me think of those organic building with non equal  -%D windows (we have a few in The Netherlands), so I decided to  -%D label this style as \type {pre-organic}.  +%D to follow. Watch how the left side of the buttons follow +%D the right side of the text graphic.  %D -%D At the end of this file, there is a small test file, so  -%D when you process this file with \TEXEXEC\ and the options  -%D \type {--mode=demo} and \type {--pdf}, you will get a demo  -%D document.  +%D While playing bit with this style, the random alternative +%D made me think of those organic building with non equal +%D windows (we have a few in The Netherlands), so I decided to +%D label this style as \type {pre-organic}. +%D +%D At the end of this file, there is a small test file, so +%D when you process this file with \TEXEXEC\ and the options +%D \type {--mode=demo} and \type {--pdf}, you will get a demo +%D document. -%D We use one of the standard screen \citeer {paper} sizes, and  -%D map it onto the same size, so that we get a nicely cropped  -%D page.   +%D We use one of the standard screen \citeer {paper} sizes, and +%D map it onto the same size, so that we get a nicely cropped +%D page.  \setuppapersize    [S6][S6] -%D Like in the \METAFUN\ manual, we use the Palatino as main  -%D bodyfont. This font is quite readable on even low  -%D resolution screens, although I admit that this style is  +%D Like in the \METAFUN\ manual, we use the Palatino as main +%D bodyfont. This font is quite readable on even low +%D resolution screens, although I admit that this style is  %D developed using an $1400\times1050$ pixel LCD screen, so I -%D may be biased.  +%D may be biased.  %\startmode[asintended] \setupbodyfont[ppl] \stopmode  %D The layout specification sets up a text area and a right  %D edge area where the menus will go. Watch the rather large  %D edge distance. By setting the header and footer dimensions -%D to zero, we automatically get rid of page body ornaments,  -%D like the pagenumber.  +%D to zero, we automatically get rid of page body ornaments, +%D like the pagenumber.  \setuplayout    [topspace=48pt,     backspace=48pt,     cutspace=12pt,     width=400pt, -   margin=0cm,  +   margin=0cm,     rightedge=88pt,     rightedgedistance=48pt,     header=0cm,     footer=0cm,     height=middle] -%D We use a moderate, about a line height, interparagraph  -%D white space.   +%D We use a moderate, about a line height, interparagraph +%D white space.  \setupwhitespace    [big] -%D Of course we use colors, since on computer displays they  -%D come for free.  +%D Of course we use colors, since on computer displays they +%D come for free.  \setupcolors    [state=start] -    +  \definecolor [red]    [r=.75]  \definecolor [yellow] [r=.75,g=.75]  \definecolor [gray]   [s=.50] @@ -87,11 +87,11 @@  \definecolor [ContrastColor]    [gray]  %D This is an interactive document, so we enable interaction. -%D In this style, we disable the viewer's \citeer {highlight a  -%D hyperlink when it's clicked on} feature. We will use a  -%D menu, so we enable menus. Later we will see the contract  -%D color |<|hyperlinks gets that color when we are already on  -%D the location|>| in action.  +%D In this style, we disable the viewer's \citeer {highlight a +%D hyperlink when it's clicked on} feature. We will use a +%D menu, so we enable menus. Later we will see the contract +%D color |<|hyperlinks gets that color when we are already on +%D the location|>| in action.  \setupinteraction    [state=start, @@ -103,7 +103,7 @@  %D The menu itself is set up as follows. Because we will  %D calculate menubuttons based on their position on the page,  %D we have to keep track of the positions. Therefore, we set -%D the \type {position} variable to \type {yes}.  +%D the \type {position} variable to \type {yes}.  \setupinteractionmenu    [right] @@ -118,9 +118,9 @@     before=,     after=] -%D The menu content is rather sober: a list of topics (later  -%D we will define the command that generates topic entries),  -%D and a close button.  +%D The menu content is rather sober: a list of topics (later +%D we will define the command that generates topic entries), +%D and a close button.  \startinteractionmenu[right]    \placelist[Topic][alternative=right] @@ -134,7 +134,7 @@  %D \METAPOST\ graphic. Page backgrounds are recalculated each  %D page, opposite to the other backgrounds that are calculated  %D when a new background is defined, or when repetitive -%D calculation is turned on.  +%D calculation is turned on.  \setupbackgrounds    [page] @@ -146,141 +146,141 @@  \setupMPvariables    [page] -  [alternative=3]   +  [alternative=3]  \startuseMPgraphic{page} -  \includeMPgraphic{rightsuperbutton}  +  \includeMPgraphic{rightsuperbutton}    StartPage ;      path p, q ; pickup pencircle scaled 3pt ; -  +      p := Field[Text][Text] enlarged 36pt superellipsed .90 ; -    fill Page withcolor \MPcolor{PageColor} ;  -    fill p    withcolor \MPcolor{TextColor} ;   -    draw p    withcolor \MPcolor{OrnamentColor} ;   +    fill Page withcolor \MPcolor{PageColor} ; +    fill p    withcolor \MPcolor{TextColor} ; +    draw p    withcolor \MPcolor{OrnamentColor} ; -    p := Field[Text][Text] enlarged 48pt superellipsed .90 ;  +    p := Field[Text][Text] enlarged 48pt superellipsed .90 ; -    def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) =   -      if (pp>0) and (rr>0) :  -        q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ;  -        fill q withcolor \MPcolor{TextColor} ;  -        draw q withcolor if rr=2 : \MPcolor{ContrastColor}  -                            else : \MPcolor{InteractionColor} fi ;    -      fi ;  -    enddef ;  +    def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) = +      if (pp>0) and (rr>0) : +        q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ; +        fill q withcolor \MPcolor{TextColor} ; +        draw q withcolor if rr=2 : \MPcolor{ContrastColor} +                            else : \MPcolor{InteractionColor} fi ; +      fi ; +    enddef ; -    \MPmenubuttons{right}  +    \MPmenubuttons{right} -  StopPage ;  +  StopPage ;  \stopuseMPgraphic  \startuseMPgraphic{page} -  \includeMPgraphic{rightsuperbutton}  +  \includeMPgraphic{rightsuperbutton}    StartPage ; -    numeric alternative, seed, superness, squeezeness, randomness ;  -    path p, q ; transform t ;  +    numeric alternative, seed, superness, squeezeness, randomness ; +    path p, q ; transform t ;      alternative := \MPvar{alternative} ; -    seed        := uniformdeviate 100 ;  +    seed        := uniformdeviate 100 ; -    if alternative > 10 :  -      superness   := .85  + ((\realfolio-1)/\lastpage) * .15 ;  +    if alternative > 10 : +      superness   := .85  + ((\realfolio-1)/\lastpage) * .15 ;        squeezeness := 12pt - ((\realfolio-1)/\lastpage) * 10pt ; -    else :  +    else :        superness   := .90 ;        squeezeness := 12pt ;      fi ; -    randomness := squeezeness ;  +    randomness := squeezeness ; -    alternative := alternative mod 10 ;  +    alternative := alternative mod 10 ; -    t := identity if alternative=3: shifted (9pt,-9pt) fi ;  -  -    % first we draw the shape that surrounds the text  +    t := identity if alternative=3: shifted (9pt,-9pt) fi ; -    randomseed := seed ;  +    % first we draw the shape that surrounds the text -    p := Field[Text][Text] enlarged if  -      alternative = 1 : 36pt superellipsed superness   elseif  -      alternative = 2 : 36pt squeezed      squeezeness elseif   +    randomseed := seed ; + +    p := Field[Text][Text] enlarged if +      alternative = 1 : 36pt superellipsed superness   elseif +      alternative = 2 : 36pt squeezed      squeezeness elseif        alternative = 3 : 36pt randomized    randomness  else -                      : 36pt                           fi ;  +                      : 36pt                           fi ;      pickup pencircle scaled 3pt ; -    fill Page withcolor \MPcolor{PageColor} ;  -    fill p    withcolor \MPcolor{TextColor} ;   -    draw p    withcolor \MPcolor{OrnamentColor} ;   +    fill Page withcolor \MPcolor{PageColor} ; +    fill p    withcolor \MPcolor{TextColor} ; +    draw p    withcolor \MPcolor{OrnamentColor} ; -    % we set p to the wider shape from which we will chip off pieces  +    % we set p to the wider shape from which we will chip off pieces -    randomseed := seed ;  +    randomseed := seed ; -    p := ( Field[Text][Text] enlarged if  -      alternative = 1 : 48pt superellipsed superness   elseif  -      alternative = 2 : 48pt squeezed      squeezeness elseif   +    p := ( Field[Text][Text] enlarged if +      alternative = 1 : 48pt superellipsed superness   elseif +      alternative = 2 : 48pt squeezed      squeezeness elseif        alternative = 3 : 36pt randomized    randomness  else                        : 48pt                           fi ) transformed t ;      % calls to *_menu_button are generated automatically ... -    def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) =   -      if (pp>0) and (rr>0) :  -        q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ; % \MPw{menu:right:\realfolio}   -        fill q withcolor \MPcolor{TextColor} ;  -        draw q withcolor if rr=2 : \MPcolor{ContrastColor}  -                            else : \MPcolor{InteractionColor} fi ;    -      fi ;  -    enddef ;  +    def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) = +      if (pp>0) and (rr>0) : +        q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ; % \MPw{menu:right:\realfolio} +        fill q withcolor \MPcolor{TextColor} ; +        draw q withcolor if rr=2 : \MPcolor{ContrastColor} +                            else : \MPcolor{InteractionColor} fi ; +      fi ; +    enddef ; -    % ... and inserted when the graphic data is flushed here ...  +    % ... and inserted when the graphic data is flushed here ... -    \MPmenubuttons{right}  +    \MPmenubuttons{right} -  StopPage ;  +  StopPage ;  \stopuseMPgraphic  \startuseMPgraphic{rightsuperbutton}  vardef rightsuperbutton (expr pat, xpos, ypos, wid, hei) = -  save p, ptop, pbot, t, b, edge, shift, width, height ;  -  path p, ptop, pbot ; pair t, b ; numeric edge, shift, width, height ;  +  save p, ptop, pbot, t, b, edge, shift, width, height ; +  path p, ptop, pbot ; pair t, b ; numeric edge, shift, width, height ; -  edge  := xpos + wid ; shift := ypos + hei ;  +  edge  := xpos + wid ; shift := ypos + hei ; -  p := rightpath pat ;  +  p := rightpath pat ;    ptop := ((-infinity,shift)--(edge,shift)) ; -  pbot := ((-infinity,shift-hei)--(edge,shift-hei)) ;  +  pbot := ((-infinity,shift-hei)--(edge,shift-hei)) ; -  t := p intersectionpoint ptop ; -  b := p intersectionpoint pbot ;  +  t := p intersection_point ptop ; +  b := p intersection_point pbot ;    p := subpath(0,xpart (p intersectiontimes ptop)) of p ;    p := subpath(xpart (p intersectiontimes pbot),length(p)) of p ; -  (p --               t -- point 1 of ptop &  -        point 1 of ptop -- point 1 of pbot &  -        point 1 of pbot -- b  -     -- cycle)  +  (p --               t -- point 1 of ptop & +        point 1 of ptop -- point 1 of pbot & +        point 1 of pbot -- b +     -- cycle) -enddef ;  +enddef ;  \stopuseMPgraphic  %D Topics are identified with \type {\Topic}, which is an  %D instance of chapter headings. The number is made invisible.  %D Since it still is a numbered section header, \CONTEXT\ will -%D write the header to the table of contents.  +%D write the header to the table of contents.  \definehead    [Topic] @@ -290,19 +290,19 @@ enddef ;    [Topic]    [number=no] -%D We will use a bold font in the table of contents. We also  -%D force a complete list.  +%D We will use a bold font in the table of contents. We also +%D force a complete list.  \setuplist    [Topic]    [criterium=all,     style=bold,     before=, -   after=]  +   after=] -%D The \type {\TitlePage} macro looks horrible, because we  -%D want to keep the interface simple: a list of small  -%D sentences, separated by \type {\\}.  +%D The \type {\TitlePage} macro looks horrible, because we +%D want to keep the interface simple: a list of small +%D sentences, separated by \type {\\}.  \def\StartTitlePage    {\startstandardmakeup @@ -318,17 +318,17 @@ enddef ;  \def\TitlePage#1%    {\StartTitlePage#1\StopTitlePage} -%D A couple of goodies:   +%D A couple of goodies:  \def\Subject   {\Topic}  \def\Topics  #1{}  \def\Subjects  {} -%D For those who want to test:  +%D For those who want to test:  \doifnotmode{demo}{\endinput} -\starttext  +\starttext  \setupMPvariables[page][alternative=3] @@ -337,10 +337,10 @@ enddef ;     A Simple Style Demo\\     Hans Hagen, August 2000} -\Topic {Douglas R. Hofstadter} \input douglas \page  -\Topic {Donald  E. Knuth}      \input knuth   \page  -\Topic {Edward  R. Tufte}      \input tufte   \page  -\Topic {Hermann    Zapf}       \input zapf    \page  -%Topic {David   F. Stork}      \input stork   \page  +\Topic {Douglas R. Hofstadter} \input douglas \page +\Topic {Donald  E. Knuth}      \input knuth   \page +\Topic {Edward  R. Tufte}      \input tufte   \page +\Topic {Hermann    Zapf}       \input zapf    \page +%Topic {David   F. Stork}      \input stork   \page -\stoptext  +\stoptext diff --git a/tex/context/base/s-pre-60.tex b/tex/context/base/s-pre-60.tex index a5198b97c..060bf44c8 100644 --- a/tex/context/base/s-pre-60.tex +++ b/tex/context/base/s-pre-60.tex @@ -48,14 +48,16 @@  % todo: roll back blank +\def\StepLayer{step:\StepCounter} +  \def\StartStep    {\ifvmode       \scratchskip\lastskip       \vskip-\scratchskip -     \startproperty[step:\StepCounter]% +     \startproperty[\StepLayer]%       \vskip\scratchskip     \else -     \startproperty[step:\StepCounter]% +     \startproperty[\StepLayer]%     \fi     \ignorespaces} @@ -63,9 +65,9 @@    {\removeunwantedspaces     \stopproperty} -\def\StartSteps{\ResetStep\NextStep\StartStep} -\def\StopSteps {\StopStep\PrevStep} -\def\FlushStep {\StopStep\NextStep\StartStep} +\def\StartSteps{\iftrialtypesetting\else\ResetStep\NextStep\StartStep\fi} +\def\StopSteps {\iftrialtypesetting\else\StopStep\PrevStep\fi} +\def\FlushStep {\iftrialtypesetting\else\StopStep\NextStep\StartStep\fi}  \appendtoks    \ResetStep @@ -85,4 +87,25 @@    [text]    [background=invoke] +% bonus + +\useMPlibrary[nav] + +\definepalet +  [navplus] +  [attach=interactioncolor, +   comment=interactioncolor] + +\setupcomment +  [symbol={comment-normal,comment-down}, +   textlayer=\StepLayer, +   option=buffer, +   height=\textheight, +   width=\textwidth, +   margin=0pt] + +\setupattachments +  [symbol={attach-normal,attach-down}, +   textlayer=\StepLayer] +  \endinput
\ No newline at end of file diff --git a/tex/context/base/s-pre-61.tex b/tex/context/base/s-pre-61.tex index 5d43ac757..3e60c7c8c 100644 --- a/tex/context/base/s-pre-61.tex +++ b/tex/context/base/s-pre-61.tex @@ -42,7 +42,10 @@  \setupinteraction    [state=start,     click=off, -   menu=on] +   menu=on, +   style=, +   color=interactioncolor, +   contrastcolor=interactioncolor]  \setupinteractionscreen    [option=max] @@ -86,6 +89,8 @@  \definecolor [maincolor] [bright]  \definecolor [textcolor] [red] +\definecolor [interactioncolor] [r=.8,g=.8,b=.6] +  \setupcolors    [state=start,     textcolor=maincolor] @@ -95,6 +100,19 @@    [background=page,     backgroundcolor=textcolor] +\setupbackgrounds +  [text]% [text] +  [background={comments,text,invoke}] + +\definelayer +  [text] +  [width=\textwidth, +   height=\textheight] + +\defineoverlay +  [comments] +  [{\setlayer[text][preset=middle]{\placecomments}}] +  \defineoverlay[page][\uniqueMPgraphic{page-\ifcase\realpageno\or one\else plus\fi}]  \startuniqueMPgraphic{page-one} @@ -122,9 +140,10 @@    StopPage ;  \stopuniqueMPgraphic -\NormalizeFontHeight \HeadFont     {\setstrut\strut\quad} {1.0\headerheight} {SansBold} -\NormalizeFontHeight \TitleFont    {\setstrut\strut\quad} {2.0\headerheight} {SansBold} -\NormalizeFontHeight \SubTitleFont {\setstrut\strut\quad} {1.5\headerheight} {SansBold} +\NormalizeFontHeight \HeadFont        {\setstrut\strut\quad} {1.0\headerheight} {SansBold} +\NormalizeFontHeight \TitleFont       {\setstrut\strut\quad} {2.0\headerheight} {SansBold} +\NormalizeFontHeight \SubTitleFont    {\setstrut\strut\quad} {1.5\headerheight} {SansBold} +\NormalizeFontHeight \SubSubTitleFont {\setstrut\strut\quad} {1.0\headerheight} {SansBold}  \setuphead    [chapter] diff --git a/tex/context/base/setupb.tex b/tex/context/base/setupb.tex index 666971b4f..1aa66f16b 100644 --- a/tex/context/base/setupb.tex +++ b/tex/context/base/setupb.tex @@ -2787,7 +2787,7 @@  \startsetup    \command -    [\y!stelkolommenin] +    [\y!setupcolumns]    \type      [\c!vars!]    \variable @@ -2841,11 +2841,11 @@  \startsetup    \command -    [\y!startkolommen] +    [\y!startcolumns]    \type      [\c!opt!\c!vars!\c!stp!]    \inheritvariables -    [\y!stelkolommenin] +    [\y!setupcolumns]      []  \stopsetup @@ -3338,6 +3338,14 @@      [\c!clipoffset]      [\c!dimension!]      [\!!zeropoint] +  \variable +    [\c!pagina] +    [\c!identifier!] +    [] +  \variable +    [\c!papier] +    [\c!identifier!] +    []  \stopsetup  \startsetup @@ -5220,6 +5228,14 @@      [\v!nee,\v!standaard,\c!dimension!]      [0pt]    \variable +    [\c!linkermarge] +    [\v!nee,\v!standaard,\c!dimension!] +    [0pt] +  \variable +    [\c!rechtermarge] +    [\v!nee,\v!standaard,\c!dimension!] +    [0pt] +  \variable      [\c!breedte]      [\c!dimension!]      [1.5em] diff --git a/tex/context/base/spec-def.tex b/tex/context/base/spec-def.tex index bdcc32785..57dcb7ae5 100644 --- a/tex/context/base/spec-def.tex +++ b/tex/context/base/spec-def.tex @@ -158,9 +158,13 @@  \installspecial [\dostartspotcolormode]    [or] [2] -\installspecial [\doregistercmykspotcolor] [or] [5] -\installspecial [\doregisterrgbspotcolor]  [or] [4] -\installspecial [\doregistergrayspotcolor] [or] [2] +\installspecial [\doregisterrgbspotcolor]  [or] [7] +\installspecial [\doregistercmykspotcolor] [or] [8] +\installspecial [\doregistergrayspotcolor] [or] [5] + +\installspecial [\doregisterrgbindexcolor]  [or] [7] +\installspecial [\doregistercmykindexcolor] [or] [8] +\installspecial [\doregistergrayindexcolor] [or] [5]  \installspecial [\dostartnonecolormode]    [or] [0]  \installspecial [\doregisternonecolor]     [or] [0] @@ -169,7 +173,7 @@  %D simply call the start one with zero arguments.  %D \macros -%D   {doinsertfile} +%D   {doinsertfile,doinsertMPfile}  %D  %D Probably the most problematic special is the following  %D one. Because we want to be able to support different @@ -198,7 +202,8 @@  %D When option 1 is passed, the viewers is asked to present a  %D preview, like the first frame of a movie. -\installspecial [\doinsertfile] [or] [9] +\installspecial [\doinsertfile]   [or] [9] +\installspecial [\doinsertMPfile] [or] [1] % speed up  %D No start||stop construction is needed here, because there in  %D no further interference of \TEX. All dimensions are output diff --git a/tex/context/base/spec-dpm.tex b/tex/context/base/spec-dpm.tex index d1b6b541b..710ca70c4 100644 --- a/tex/context/base/spec-dpm.tex +++ b/tex/context/base/spec-dpm.tex @@ -228,26 +228,52 @@  %D \macros  %D  {dostartobject,dostopobject,doinsertobject} +% \definespecial\dostartobject#1#2#3#4#5% +%   {\bgroup +%    \setbox\nextbox=\hbox\bgroup +%      \dosetobjectreference{#1}{#2}{#1::#2}% +%      \scratchdimen#3\edef\width {\the\scratchdimen\space}% +%      \scratchdimen#4\edef\height{\the\scratchdimen\space}% +%      \special{pdf: bxobj @#1::#2 width \width height \height}} + +% \definespecial\dostopobject% +%   {\special{pdf: exobj}% +%    \egroup +%    \smashbox\nextbox +%    \flushatshipout{\box\nextbox}% +%    \egroup} +  \definespecial\dostartobject#1#2#3#4#5%    {\bgroup -   \setbox\nextbox=\hbox\bgroup -     \dosetobjectreference{#1}{#2}{#1::#2}% -     \scratchdimen#3\edef\width {\the\scratchdimen\space}% -     \scratchdimen#4\edef\height{\the\scratchdimen\space}% -     \special{pdf: bxobj @#1::#2 width \width height \height}} - -\definespecial\dostopobject% -  {\special{pdf: exobj}% -   \egroup -   \smashbox\nextbox -   \flushatshipout{\box\nextbox}% -   \egroup} +   \dowithnextbox +     {\dosetobjectreference{#1}{#2}{#1::#2}% +      \scratchdimen#3\edef\width {\the\scratchdimen\space}% +      \scratchdimen#4\edef\height{\the\scratchdimen\space}% +      \setbox\nextbox\vbox +        {\special{pdf: bxobj @#1::#2 width \width height \height}% +         % we need to compensate for the box offset (ugly, sigh) +         \scratchdimen\nextboxht +         \advance\scratchdimen\nextboxdp +         \advance\scratchdimen-#4\relax +         \nextboxdp\zeropoint +         \nextboxht\zeropoint +         \hbox to #3{\hss\lower.5\scratchdimen\box\nextbox\hss}% +         \special{pdf: exobj}% +         \global\let\currentPDFresources\empty}% +      \smashbox\nextbox +      \flushatshipout{\box\nextbox}% +      \egroup}% +    \hbox\bgroup} + +\definespecial\dostopobject +  {\egroup} +  \definespecial\doinsertobject#1#2%    {\hbox       {\dogetobjectreference{#1}{#2}\PDFobjectreference        \ifx\PDFobjectreference\empty \else -        \special{pdf: usexobj @\PDFobjectreference}% +        \special{pdf: usexobj @#1::#2}%        \fi}}  %D \macros diff --git a/tex/context/base/spec-dpx.tex b/tex/context/base/spec-dpx.tex index f453e08b4..f3f77ff4d 100644 --- a/tex/context/base/spec-dpx.tex +++ b/tex/context/base/spec-dpx.tex @@ -40,14 +40,14 @@  %D DVIPDFMx supports the special command \type{pdf: literal ...}  %D since the version \type{dvipdfmx-20021028}.  %D -%D 1. \type{pdf: linteral #1} puts the given PDF commands \#1 +%D 1. \type{pdf: literal #1} puts the given PDF commands \#1  %D    after changing the text matrix with \type{"1 0 0 1 x y cm"}  %D    to set the current DVI position $(x,y)$ to the origin.  %D -%D 2. \type{pdf: linteral reverse #1} puts the given PDF commands \#1 +%D 2. \type{pdf: literal reverse #1} puts the given PDF commands \#1  %D    after changing the text matrix with \type{"1 0 0 1 -x -y cm"}.  %D -%D 3. \type{pdf: linteral direct #1} puts directly the given PDF +%D 3. \type{pdf: literal direct #1} puts directly the given PDF  %D    commands \#1 without changing the text matrix.  %D  %D Literal \PDF\ inclusion is implemented as: @@ -203,18 +203,70 @@  %D Negation is not (yet) supported: +% we need resource access +%  % \definespecial\dostartnegative      {}  % \definespecial\dostopnegative       {}  % \definespecial\dostarttransparency  {}  % \definespecial\dostoptransparency   {} +\definespecial\dostarttransparency{\doPDFstarttransparency} +\definespecial\dostoptransparency {\doPDFstoptransparency} + +\PDFtransparencysupportedtrue + +\def\@@PDT{@PDT@} + +\ifx\PDFcurrenttransparency\undefined +  \newcount\PDFcurrenttransparency \PDFcurrenttransparency=0 % -1 +\fi + +\def\assignPDFtransparency#1#2% +  {\def\PDFtransparencyidentifier{/Tr#1}% +   %\def\PDFtransparencyreference{#2 0 R}} +   \def\PDFtransparencyreference{@TR:#2}} + +\def\presetPDFtransparency#1#2% +  {\initializePDFtransparency +   \executeifdefined{\@@PDT#1:#2}{\dopresetPDFtransparency{#1}{#2}}} + +\def\dopresetPDFtransparency#1#2% +  {\global\advance\PDFcurrenttransparency \plusone +   %\immediate\pdfobj{\PDFtransparancydictionary{#1}{#2}{}}% +%   \special{pdf: object @TR:\the\PDFcurrenttransparency\space \PDFtransparancydictionary{#1}{#2}{}}% +   \doPDFreserveDPXobject{TR:\the\PDFcurrenttransparency}{<< >>}% +   \special{pdf: \doPDFcheckedDPXobject{TR:\the\PDFcurrenttransparency}\PDFtransparancydictionary{#1}{#2}{}}% +   \edef\PDFtransparencyidentifier{/Tr\the\PDFcurrenttransparency}% +   %\edef\PDFtransparencyreference {\the\pdflastobj\space 0 R}% +   \edef\PDFtransparencyreference {@TR:\the\PDFcurrenttransparency}% +   \setxvalue{\@@PDT#1:#2}% +     {\noexpand\assignPDFtransparency{\the\PDFcurrenttransparency}{\the\PDFcurrenttransparency}}% +   \appendtoPDFdocumentextgstates +     {\PDFtransparencyidentifier\space +      \PDFtransparencyreference\space}} + +\def\initializePDFtransparency +  %{\immediate\pdfobj{\PDFtransparancydictionary{1}{1}{/AIS false}}% +%  {\special{pdf: object @TR:0 \PDFtransparancydictionary{1}{1}{/AIS false}}% +  {\doPDFreserveDPXobject{TR:0}{<< >>}% +   \special{pdf: \doPDFcheckedDPXobject{TR:0}\PDFtransparancydictionary{1}{1}{/AIS false}}% +   \xdef\PDFtransparencyresetidentifier{/Tr0}% +   %\xdef\PDFtransparencyresetreference{\the\pdflastobj\space 0 R}% +   \xdef\PDFtransparencyresetreference{@TR:0}% +   \setxvalue{\@@PDT0:0}% +     %{\noexpand\assignPDFtransparency{0}{\the\pdflastobj}}% +     {\noexpand\assignPDFtransparency{0}{0}}% +   \appendtoPDFdocumentextgstates +     {\PDFtransparencyresetidentifier\space +      \PDFtransparencyresetreference\space}% +   \global\let\initializePDFtransparency\relax}  %D \macros  %D   {dosetupinteraction,  %D    dosetupopenaction,dosetupcloseaction}  \definespecial\dosetupinteraction -  {\showmessage{\m!interactions}{21}{DVIPDFMx}} +  {\showmessage\m!interactions{21}{DVIPDFMx}}  \definespecial\dosetupopenaction {\doPDFsetupopenaction}  \definespecial\dosetupcloseaction{\doPDFsetupcloseaction} @@ -306,35 +358,46 @@  %D \macros  %D  {dostartobject,dostopobject,doinsertobject} +%D +%D Modified to support the color shading feature since version +%D \type{dvipdfmx-20021128}. + +% wd nextbox > #3 ivm offset  \definespecial\dostartobject#1#2#3#4#5%    {\bgroup -   \setbox\nextbox\hbox\bgroup -     \dosetobjectreference{#1}{#2}{#1::#2}% -     \scratchdimen#3\edef\width {\the\scratchdimen\space}% -     \scratchdimen#4\edef\height{\the\scratchdimen\space}% -     \special{pdf: bxobj @#1::#2 width \width height \height}} - -%D Modified to support the color shading feature since version -%D \type{dvipdfmx-20021128}. +   \dowithnextbox +     {\dosetobjectreference{#1}{#2}{@#1::#2}% +      \scratchdimen#3\edef\width {\the\scratchdimen\space}% +      \scratchdimen#4\edef\height{\the\scratchdimen\space}% +      \setbox\nextbox\vbox +        {\special{pdf: bxobj @#1::#2 width \width height \height}% +         % we need to compensate for the box offset (ugly, sigh) +         \scratchdimen\nextboxht +         \advance\scratchdimen\nextboxdp +         \advance\scratchdimen-#4\relax +         \nextboxdp\zeropoint +         \nextboxht\zeropoint +         \hbox to #3{\hss\lower.5\scratchdimen\box\nextbox\hss}% +         \ifx\currentPDFresources\empty +           \special{pdf: exobj}% +         \else +           \special{pdf: exobj <<\currentPDFresources\the\pdfpageresources>>}% +           \global\let\currentPDFresources\empty +         \fi}% +      \smashbox\nextbox +      \flushatshipout{\box\nextbox}% +      \egroup}% +    \hbox\bgroup}  \definespecial\dostopobject -  {\ifx\currentPDFresources\empty -     \special{pdf: exobj}% -   \else -     \special{pdf: exobj <<\currentPDFresources>>}% -     \global\let\currentPDFresources\empty -   \fi -   \egroup -   \smashbox\nextbox -   \flushatshipout{\box\nextbox}% -   \egroup} +  {\egroup}  \definespecial\doinsertobject#1#2%    {\hbox -     {\dogetobjectreference{#1}{#2}\PDFobjectreference +     {\doPDFgetobjectreference{#1}{#2}\PDFobjectreference        \ifx\PDFobjectreference\empty \else -        \special{pdf: usexobj @\PDFobjectreference}% +        \special{pdf: usexobj @#1::#2}%        \fi}}  %D \macros @@ -439,17 +502,44 @@     \scratchdimen#3\edef\width {\the\scratchdimen\space}%     \scratchdimen#4\edef\height{\the\scratchdimen\space}%     \special{pdf: ann @#1::#2 width \width height \height <<#5>>}% -   \dosetobjectreference{#1}{#2}{#1::#2}% +   \dosetobjectreference{#1}{#2}{@#1::#2}%     \egroup}  \def\doPDFactionobject class #1 name #2 width #3 height #4 action #5%    {\dodoPDFaction{@#1::#2}{#3}{#4}{#5}% -   \dosetobjectreference{#1}{#2}{#1::#2}} +   \dosetobjectreference{#1}{#2}{@#1::#2}}  %D \macros  %D   {doPDFaddtocatalog,doPDFaddtoinfo,  %D    doPDFpageattribute,doPDFpagesattribute} +% we could move much more to spec-fdf + +% \ifx\pdfcatalog      \undefined \newtoks\pdfcatalog       \fi +% \ifx\pdfinfo         \undefined \newtoks\pdfinfo          \fi +% \ifx\pdfpageattr     \undefined \newtoks\pdfpageattr      \fi +% \ifx\pdfpageresources\undefined \newtoks\pdfpageresources \fi +% \ifx\pdfpagesattr    \undefined \newtoks\pdfpagesattr     \fi + +% \def\doPDFaddtocatalog  #1{\expanded{\global\pdfcatalog      {#1\the\pdfcatalog      }}} +% \def\doPDFaddtoinfo     #1{\expanded{\global\pdfinfo         {#1\the\pdfinfo         }}} +% \def\doPDFpageattribute #1{\expanded{\global\pdfpageattr     {#1\the\pdfpageattr     }}} +% \def\doPDFpageresource  #1{\expanded{\global\pdfpageresources{#1\the\pdfpageresources}}} +% \def\doPDFpagesattribute#1{\expanded{\global\pdfpagesattr    {#1\the\pdfpagesattr    }}} + +% \def\doPDFresetpageattributes{\global\pdfpageattr\emptytoks} +% \def\doPDFresetpageresources {\global\pdfpageresources\emptytoks} + +% \appendtoks +%   \special{pdf: put @catalog <<#1>>}% +%   \special{pdf: docinfo      <<#1>>}% +%   \special{pdf: put @pages   <<#1>>}% +% \to \everylastshipout + +% \appendtoks +%   \special{pdf: put @thispage <<#1>>}% +% \to\everyshipout +  \def\doPDFaddtocatalog#1%    {\special{pdf: put @catalog <<#1>>}} @@ -463,7 +553,7 @@    {\special{pdf: put @pages <<#1>>}}  \def\doPDFpageresource#1% -  {\message{[skipping PDF resource]}} +  {\special{pdf: put @resources <<#1>>}}  \let\doPDFresetpageresources =\relax  \let\doPDFresetpageattributes=\relax @@ -483,21 +573,58 @@  %D \macros  %D   {doPDFdictionaryobject,doPDFarrayobject} +% Dvipdfmx can't handle +% +% \special{pdf:put @foo << /Bar @bar >>} +% \special{pdf:put @bar << /Foo @foo >>} +% +% Objects must be defined before they are used. +% +% \special{pdf:obj @foo << >>} +% \special{pdf:obj @bar << >>} +% \special{pdf:put @foo << /Bar @bar >>} +% \special{pdf:put @bar << /Foo @foo >>} +% +% However, this only works for dictionary and array. + +\def\doPDFreserveDPXobject#1#2% +  {\ifundefined{r:pdx:d:#1}% +     % we need a \flushatshipoutprep (prepended, normally appended) +     \flushatshipout{\special{pdf: object @#1 #2}}% +     \global\letvalue{r:pdx:d:#1}\empty +   \fi} + +\def\doPDFreserveDPXobjectfirst#1#2% +  {\ifundefined{r:pdx:d:#1}% +     \doglobal\prependtoks\special{pdf: object @#1 #2}\to\everyfirstshipout +     \global\letvalue{r:pdx:d:#1}\empty +   \fi} + +\def\doPDFcheckedDPXobject#1{\ifundefined{r:pdx:d:#1}object\else put\fi\space @#1\space} + +% todo when etex is fixed, \everyPDFpresets, leeg voor pdftex, nodig voor dvipdfmx + +\doPDFreserveDPXobjectfirst{FDF::docuextgstates}{<< >>} +  \def\doPDFdictionaryobject class #1 name #2 data #3% -  {\special{pdf: object @#1::#2 <<#3>>}} +  {\flushatshipout +     {\special{pdf: \doPDFcheckedDPXobject{#1::#2}<<#3>>}% +      \dosetobjectreference{#1}{#2}{@#1::#2}}}  \def\doPDFarrayobject class #1 name #2 data #3% -  {\special{pdf: object @#1::#2 [#3]}} +  {\flushatshipout +     {\special{pdf: \doPDFcheckedDPXobject{#1::#2}[#3]}% +      \dosetobjectreference{#1}{#2}{@#1::#2}}}  %D \macros  %D   {defaultobjectreference,doPDFgetobjectreference} -\def\defaultobjectreference#1#2{#1::#2} +\def\defaultobjectreference#1#2{@#1::#2}  %D \type{\doPDFgetobjectreference} in \type{spec-dpm} had a bug.  \def\doPDFgetobjectreference#1#2#3% -  {\dogetobjectreference{@#1}{#2}#3% +  {\dogetobjectreference{#1}{#2}#3%     \ifx#3\empty\else\edef#3{#3}\fi}  % \def\doPDFgetobjectpage         #1#2#3{..} @@ -578,14 +705,33 @@  %D 5. Modified codes from \type{supp-pdf} -\let\dohandleMPfshow\handleMPfshow -  \def\handleMPfshow    {\special{pdf: literal direct q}%     \special{pdf: literal reverse}%     \dohandleMPfshow     \special{pdf: literal direct Q}} +\newcounter\MPPDFcounter + +\def\setMPPDFobject#1#2% resources boxnumber / see other object macros / unchecked +  {\doglobal\increment\MPPDFcounter +   \bgroup +   \setbox\nextbox\vbox +     {\scratchdimen\wd#2\edef\width {\the\scratchdimen\space}% +      \scratchdimen\ht#2\edef\height{\the\scratchdimen\space}% +      \special{pdf: bxobj @MPPDF:\MPPDFcounter\space width \width height \height}% +      \box#2% +      \special{pdf: exobj <<\currentPDFresources>>}}% +    \smashbox\nextbox +    \flushatshipout{\box\nextbox}% +    \egroup +    \edef\getMPPDFobject{\special{pdf: usexobj @MPPDF:\MPPDFcounter}}} + +\let\getMPPDFobject\relax + +\definespecial\doinsertMPfile#1% +  {\doiffileelse{./#1}{\includeMPasPDF{./#1}}{\message{[MP #1]}}} +  %D Experimental (untested):  \definespecial\dostartfonteffect{\doPDFstartfonteffect} diff --git a/tex/context/base/spec-dvi.tex b/tex/context/base/spec-dvi.tex index 3a39e5229..52b2a421d 100644 --- a/tex/context/base/spec-dvi.tex +++ b/tex/context/base/spec-dvi.tex @@ -61,7 +61,6 @@     \hbox{\unhbox0}% the \hbox is really needed!     \egroup} -  %D \macros  %D   {dosetposition,  %D    dosetpositionwhd, diff --git a/tex/context/base/spec-fdf.tex b/tex/context/base/spec-fdf.tex index 0a4013b6f..a888fa41c 100644 --- a/tex/context/base/spec-fdf.tex +++ b/tex/context/base/spec-fdf.tex @@ -378,12 +378,24 @@       {\ifcase#6 \or\or\else /ViewerPreferences << /FitWindow true >>\fi}%     \egroup} +% not that good if we switch drivers +  \appendtoksonce % hack to prevent duplicates    \doPDFaddtocatalog{\currentPDFpagemode\currentPDFviewerprefs}%    \doPDFaddtoinfo{/Trapped /False}%    \doPDFaddtoinfo{/ConTeXt.Version (\contextversion)}%  \to \everyfirstshipout +\def\PDFversion{1.5} + +\appendtoksonce +  \def\PDFversion{1.5}% +\to \everyresetspecials + +\appendtoksonce % we catch both n and 1.n +  \doPDFaddtocatalog{/Version \ifdim\PDFversion00\points>100\points 1.\fi\PDFversion}% +\to \everylastshipout +  \def\doPDFsetupwhateverbox#1#2#3#4#5#6% watch the extra arguments    {\bgroup     \!!widtha#5% @@ -1022,11 +1034,13 @@     \startPDFsymbolappearance       \doPDFembedfile\PDFfile{#7}{#8}%       \doPDFgetembeddedfilereference\PDFfile\PDFobjectreference +     \setFDFlayer\@@DriverAttachmentLayer       \doPDFannotation width {\width} height {\totalheight} data         {/Subtype /FileAttachment          /FS \PDFobjectreference\space          /Contents (#1)          \PDFsymbol +        \FDFlayer          \PDFattributes}%     \stopPDFsymbolappearance     \egroup} @@ -1257,37 +1271,6 @@  %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 @@ -1819,7 +1802,7 @@  \def\doFDFpresetlinefield#1#2#3#4#5#6#7#8#9%    {\bgroup -   \setFDFlayer +   \setFDFlayer\@@DriverFieldLayer     \setFDFswitches[#7]%     \setFDFattributes[#6]%     \setFDFalignment[#8]% @@ -1884,7 +1867,7 @@  \def\doFDFpresetchoicefield#1#2#3#4#5#6#7#8%    {\bgroup -   \setFDFlayer +   \setFDFlayer\@@DriverFieldLayer     \setFDFswitches[#6]%     \setFDFattributes[#5]%     \setFDFvalues[#7][#4]% @@ -1949,7 +1932,7 @@  \def\doFDFpresetpushcheckfield#1#2#3#4#5#6#7#8% in acro<5 (\FDFdefault)    {\bgroup                                    % in acro>5 /\FDFdefault -   \setFDFlayer +   \setFDFlayer\@@DriverFieldLayer     \ifcase#8\relax\FDFvaluesfalse\else\FDFvaluestrue\fi     \setFDFswitches[#5]%     \setFDFactions[#7]% @@ -2030,7 +2013,7 @@  \def\doFDFpresetradiofield#1#2#3#4#5#6#7#8%    {\bgroup -   \setFDFlayer +   \setFDFlayer\@@DriverFieldLayer     \FDFvaluestrue     \setFDFswitches[#5]%     \setFDFactions[#8]% @@ -2195,13 +2178,13 @@  %D Layer support: -\def\setFDFlayer % todo : \ifx\PDFobjectreference\noPDFobjectreference ipv found +\def\setFDFlayer#1% todo : \ifx\PDFobjectreference\noPDFobjectreference ipv found    {\letempty\FDFlayer -   \doifsomething\@@DriverFieldLayer -     {\checkproperty[\@@DriverFieldLayer]% == \dodocheckproperty\@@DriverFieldLayer -      \doifobjectreferencefoundelse{PDLN}\@@DriverFieldLayer -        {\doPDFgetobjectreference{PDLN}\@@DriverFieldLayer\PDFobjectreference -         \edef\FDFlayer{/OC \PDFobjectreference}}% +   \doifsomething{#1}% +     {\checkproperty[#1]% == \dodocheckproperty\@@DriverFieldLayer +      \doifobjectreferencefoundelse{PDLN}{#1} +        {\doPDFgetobjectreference{PDLN}{#1}\!!stringa % we need to avoid a clash with other macros +         \edef\FDFlayer{/OC \!!stringa}}%          \donothing}}  %D The three appearances {\em normal}, \type{roll over} and @@ -2519,13 +2502,14 @@  \def\doPDFflushcomments    {\box\PDFsymbolbox} -\long\def\doPDFinsertcomment#1#2#3#4#5#6#7#8% +\long\def\doPDFinsertcomment#1#2#3#4#5#6#7#8% % \@@DriverCommentLayer set otherwise    {\bgroup % title width height color open symbol collect data     \presetPDFsymbolappearance{#4}{#6}{#2}{#3}\!!zeropoint% sets width/height     \doifelsenothing{#1}       {\let\PDFidentifier\empty}       {\def\PDFidentifier{/T (#1)}}%     \sanitizePDFencoding#8\to\PDFdata +   \setFDFlayer\@@DriverCommentLayer     \startPDFsymbolappearance       \ifPDFpopupcomments         \doglobal\increment\nofFDFcomments @@ -2535,22 +2519,26 @@           \donefalse         \ifdone           \setbox\scratchbox\hbox -         % pdftex (efficient) -         % {\doPDFannotation -         % generic (less efficient)             {\doPDFannotationobject class FDF name {c::\nofFDFcomments} -         % argument (common) -                 width #2 height #3 data % text window +                 width #2 height #3 data % text window, size does not work                {/Subtype /Popup                 /Parent \PDFobjectreference}}%           \ifcase#7\relax             \vbox to \height{\forgetall\vskip#3\box\scratchbox\vss}%           \else % incredible trial and error hack +           % it's quite a mess, the annot width cannot be set, well, it can +           % but the appearance and text sizes get mixed up +%            \setbox\scratchbox\vbox to \height{\forgetall\vskip#3\box\scratchbox\vss}% +%            \global\setbox\PDFsymbolbox\vbox +%              {\hsize#2% +%               \forgetall +%               \vsmash{\box\PDFsymbolbox} +%               \box\scratchbox}% +           % this may change when acrobat gets less bugged +           \setbox\scratchbox\vbox to #3{\forgetall\vss\box\scratchbox}% +           \wd\scratchbox#2%             \global\setbox\PDFsymbolbox\vbox -             {\hsize#2% -              \forgetall -              \vsmash{\box\PDFsymbolbox} -              \box\scratchbox}% +             {\startoverlay{\box\PDFsymbolbox}{\box\scratchbox}\stopoverlay}%           \fi         \fi         % generic @@ -2568,6 +2556,7 @@            \ifdone /Popup \PDFobjectreference\fi            /Contents \ifPDFunicode <\PDFdata> \else(\PDFdata) \fi            \PDFidentifier +          \FDFlayer            \PDFsymbol            \PDFattributes}%       \else @@ -2575,6 +2564,7 @@           {/Subtype /Text            \ifcase#5 \else/Open true\fi            /Contents \ifPDFunicode <\PDFdata> \else(\PDFdata) \fi +          \FDFlayer            \PDFsymbol            \PDFidentifier            \PDFattributes}% @@ -2753,8 +2743,27 @@  \def\doPDFstartgraycolormode#1%    {\PDFcode{#1 g\ifPDFstrokecolor\space#1 G\fi}} -\def\doPDFstartspotcolormode#1#2% -  {\PDFcode{/#1 CS #2 SC /#1 cs #2 sc}} +% \def\doPDFstartspotcolormode#1#2% +%   {\PDFcode{/#1 CS #2 SC /#1 cs #2 sc}} + +\def\doPDFstartspotcolormode#1#2% redefining spotcolors is not possible anyway +  {\ifundefined{pdf:scs:#2}% +     \bgroup +     \getcommacommandsize[#2]% +     \ifcase\commalistsize\or +       \setxvalue{pdf:scs:#2}{#2 SCN #2 scn}% \setxvalue{pdf:scs:#2}{#2 SC #2 sc}% +     \else +       \let\PDFspotcolorspecs\empty +       \def\dospotcolorcommand##1{\edef\PDFspotcolorspecs{\PDFspotcolorspecs##1\space}}% +       \processcommacommand[#2]\dospotcolorcommand +       \setxvalue{pdf:scs:#2}{\PDFspotcolorspecs SCN \PDFspotcolorspecs scn}% +     \fi +     \egroup +   \fi +   \PDFcode{/#1 cs /#1 CS \PDFgetspotcolorspec{#2}}} + +\def\PDFgetspotcolorspec#1% +  {\executeifdefined{pdf:scs:#1}\empty} % better no default than one with too less args  \def\doPDFstartnonecolormode    {\PDFcode{/None CS 1 SC /None cs 1 sc}} @@ -2769,27 +2778,53 @@  % /Device#2 \the\pdflastobj\space0 R]} so we use separation  % colors that work and print ok -\def\doPDFregistersomespotcolor#1#2#3#4% +\def\doPDFregistersomespotcolor#1#2#3#4% implemented in the driver    {\writestatus\m!systems{missing spot color definition}\wait}  \def\doPDFregisternonecolor % internal command    {\doPDFregistergrayspotcolor{None}{1}%     \globallet\doPDFregisternonecolor\relax} -\def\doPDFregisterrgbspotcolor#1#2#3#4% -  {\doPDFregistersomespotcolor -     {#1}{RGB}{[0.0 1.0 0.0 1.0 0.0 1.0]}% -     {{dup #2 mul exch dup #3 mul exch #4 mul}}} +% \def\doPDFregisterrgbspotcolor#1#2#3#4% +%   {\doPDFregistersomespotcolor +%      {#1}{RGB}{[0.0 1.0 0.0 1.0 0.0 1.0]}% +%      {{dup #2 mul exch dup #3 mul exch #4 mul}}} +% +% \def\doPDFregistercmykspotcolor#1#2#3#4#5% +%   {\doPDFregistersomespotcolor +%      {#1}{CMYK}{[0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0]}% +%      {{dup #2 mul exch dup #3 mul exch dup #4 mul exch #5 mul}}} +% +% \def\doPDFregistergrayspotcolor#1#2% +%   {\doPDFregistersomespotcolor +%      {#1}{Gray}{[0.0 1.0]}% +%      {{pop}}} + +\def\doPDFregisterrgbspotcolor#1#2#3#4#5#6#7% name noffractions names p's r g b +  {\doPDFregistersomespotcolor{#1}{#2}{#3}{#4}{RGB}{0.0 1.0 0.0 1.0 0.0 1.0}% +     {\ifcase#2\or dup #5 mul exch dup #6 mul exch #7 mul\else#5 #6 #7\fi}} + +\def\doPDFregistercmykspotcolor#1#2#3#4#5#6#7#8% name noffractions names p's c m y k +  {\doPDFregistersomespotcolor{#1}{#2}{#3}{#4}{CMYK}{0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0}% +     {\ifcase#2\or dup #5 mul exch dup #6 mul exch dup #7 mul exch #8 mul\else #5 #6 #7 #8\fi}} + +\def\doPDFregistergrayspotcolor#1#2#3#4#5% name noffractions names p's s +  {\doPDFregistersomespotcolor{#1}{#2}{#3}{#4}{Gray}{0.0 1.0}% +     {\ifcase#2\or pop\else#5\fi}} -\def\doPDFregistercmykspotcolor#1#2#3#4#5% -  {\doPDFregistersomespotcolor -     {#1}{CMYK}{[0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0]}% -     {{dup #2 mul exch dup #3 mul exch dup #4 mul exch #5 mul}}} +%D New and very experimental. -\def\doPDFregistergrayspotcolor#1#2% -  {\doPDFregistersomespotcolor -     {#1}{Gray}{[0.0 1.0]}% -     {{pop}}} +\def\doPDFregistercmykindexcolor#1#2#3#4#5#6#7#8% name noffractions names p's c m y k +  {\doPDFregistersomeindexcolor{#1}{#2}{#3}{#4}{CMYK}{0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0}% +     {dup #5 mul exch dup #6 mul exch dup #7 mul exch #8 mul}} + +\def\doPDFregisterrgbindexcolor#1#2#3#4#5#6#7% name noffractions names p's r g b +  {\doPDFregistersomeindexcolor{#1}{#2}{#3}{#4}{RGB}{0.0 1.0 0.0 1.0 0.0 1.0}% +     {dup #5 mul exch dup #6 mul exch #7 mul}} + +\def\doPDFregistergrayindexcolor#1#2#3#4#5% name noffractions names p's s +  {\doPDFregistersomeindexcolor{#1}{#2}{#3}{#4}{Gray}{0.0 1.0}% +     {pop}}  %D \macros  %D   {doPDFstartrotation,doPDFstoprotation} @@ -2911,6 +2946,8 @@  %D Transparency support (experimental): +\newif\ifPDFtransparencysupported +  \def\PDFtransparancydictionary#1#2#3% type fraction extras    {<</Type /ExtGState       /ca #2 /CA #2 @@ -2920,8 +2957,6 @@            Exclusion\else Compatible\fi       #3>>} -\newif\ifPDFtransparencysupported -  \def\dodoPDFstarttransparency#1#2%    {\presetPDFtransparency{#1}{#2}%     \PDFcode{\PDFtransparencyidentifier\space gs }} @@ -3008,7 +3043,7 @@        \fi        /Name (#2)}%     \doPDFgetobjectreference{PDLN}{#1}\PDFobjectreference -     \xdef\PDFtextlayers{\PDFtextlayers\space\PDFobjectreference}% +   \xdef\PDFtextlayers{\PDFtextlayers\space\PDFobjectreference}%     \doifelse{#3}\v!start       {\xdef\PDFvidelayers{\PDFvidelayers\space\PDFobjectreference}}%       {\xdef\PDFhidelayers{\PDFhidelayers\space\PDFobjectreference}}% diff --git a/tex/context/base/spec-ini.tex b/tex/context/base/spec-ini.tex index 33cae54dc..1f5a8975d 100644 --- a/tex/context/base/spec-ini.tex +++ b/tex/context/base/spec-ini.tex @@ -11,10 +11,11 @@  %C therefore copyrighted by \PRAGMA. See mreadme.pdf for  %C details. -\newif\ifsimplifyspecials \simplifyspecialstrue % see later - +% todo: make this one more plain so that i can use it in plain jobs  % todo: no args, named vars instead -% maybe also drop multiple drivers and make simply the default, then simplier defs +% maybe also drop multiple drivers and make simplify the default, then simplier defs + +\newif\ifsimplifyspecials \simplifyspecialstrue % see later  %D We will forbid loading specials after the first page is  %D shipped out. @@ -658,4 +659,4 @@       \resetspecials\processcommacommand[#1]\dosetupoutput     \fi} -\protect \endinput +\protect \endinput
\ No newline at end of file diff --git a/tex/context/base/spec-mis.tex b/tex/context/base/spec-mis.tex index 49c7d40dd..948d8fcca 100644 --- a/tex/context/base/spec-mis.tex +++ b/tex/context/base/spec-mis.tex @@ -8,13 +8,13 @@  %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 Quite some modules in this group are dedicated to supporting  %D \PDF\ directly by means of \PDFTEX or indirectly by using  %D Acrobat Distiller. This module implements some common -%D features.  +%D features.  \writestatus{loading}{Context Special Macros / Miscellaneous Macros} @@ -23,13 +23,13 @@  %D \macros  %D   {URLhash}  %D -%D A rather trivial macro:  +%D A rather trivial macro:  \expandafter\def\expandafter\URLhash\expandafter{\string#} -%D \macros  +%D \macros  %D   {ifusepagedestinations} -%D  +%D  %D In \PDF\ version 1.0 only page references were supported,  %D while in \DVIWINDO\ 1.N only named references were accepted.  %D Therefore \CONTEXT\ supports both methods of referencing. In @@ -38,55 +38,79 @@  %D therefore sometimes forces us to prefer page references. As  %D a bonus, they are faster too and have no limitations. How  %D fortunate we were having both mechanisms available when the -%D version 3.0 (\PDF\ version 1.2) viewers proved to be too  -%D bugged to support named destinations.  +%D version 3.0 (\PDF\ version 1.2) viewers proved to be too +%D bugged to support named destinations.  \newif\ifusepagedestinations -%D \macros  -%D   {ifhighlighthyperlinks}  -%D  -%D The next switch can be used to make user hyperlinks are  -%D not highlighted when clicked on.  +%D \macros +%D   {ifhighlighthyperlinks} +%D +%D The next switch can be used to make user hyperlinks are +%D not highlighted when clicked on. -\newif\ifhighlighthyperlinks  +\newif\ifhighlighthyperlinks -%D \macros  +%D \macros  %D   {ifgotonewwindow} -%D  -%D To make the {\em goto previous jump} feature more  -%D convenient when using more than one file, it makes sense  -%D to force the viewer to open a new window for each file  -%D opened.  +%D +%D To make the {\em goto previous jump} feature more +%D convenient when using more than one file, it makes sense +%D to force the viewer to open a new window for each file +%D opened. -\newif\ifgotonewwindow  +\newif\ifgotonewwindow -%D \macros  +%D \macros  %D   {ifPDFstrokecolor}  %D -%D We can reduce the filesize a bit by setting the next switch  -%D to false. The amount of reduction depends on the use of  -%D color, but don't expect more than a few percent. Zip  -%D compression is already rather efficient in itself.  +%D We can reduce the filesize a bit by setting the next switch +%D to false. The amount of reduction depends on the use of +%D color, but don't expect more than a few percent. Zip +%D compression is already rather efficient in itself.  \newif\ifPDFstrokecolor \PDFstrokecolortrue -%D \macros  +%D \macros  %D   {dodoinsertfile,dofileinsertion,  %D    definefileinsertion,doiffileinsertionsupported} -%D  +%D  %D File insertion depend on the driver or \TEX\ variant used.  %D All driver modules use the same scheme for file insertion, -%D and therefore have the next macro in common:  - -\def\dododoinsertfile[#1][#2,#3][#4,#5]% \next kan weg  -  {\def\fileinsertionclass{do#1insert}% -   \doifdefinedelse{\fileinsertionclass#3} -     {\def\next{\getvalue{\fileinsertionclass#3}}} -     {\doifdefinedelse{\fileinsertionclass#2} -        {\def\next{\getvalue{\fileinsertionclass#2}}} -        {\def\next{\gobbleninearguments}}}% -   \next{#4}{#5}} +%D and therefore have the next macro in common: + +% \def\dododoinsertfile[#1][#2,#3][#4,#5]% \next kan weg +%   {\def\fileinsertionclass{do#1insert}% +%    \doifdefinedelse{\fileinsertionclass#3} +%      {\def\next{\getvalue{\fileinsertionclass#3}}} +%      {\doifdefinedelse{\fileinsertionclass#2} +%         {\def\next{\getvalue{\fileinsertionclass#2}}} +%         {\def\next{\gobbleninearguments}}}% +%    \next{#4}{#5}} +% +% more modern +% +% \def\dododoinsertfile[#1][#2,#3][#4,#5]% +%   {\def\fileinsertionclass{do#1insert}% +%    \doifdefinedelse{\fileinsertionclass#3} +%      {\getvalue{\fileinsertionclass#3}} +%      {\doifdefinedelse{\fileinsertionclass#2} +%         {\getvalue{\fileinsertionclass#2}} +%         {\gobbleninearguments}}% +%    {#4}{#5}} +% +% more efficient +% +% \def\dododoinsertfile[#1][#2,#3][#4,#5]% +%   {\def\fileinsertionclass{do#1insert}% +%    \executeifdefined{\fileinsertionclass#3} +%      {\executeifdefined{\fileinsertionclass#2}\gobbleninearguments}% +%    {#4}{#5}} +% +% cleaner + +\def\dododoinsertfile[#1][#2,#3][#4,#5]% +  {\executeifdefined{do#1insert#3}{\executeifdefined{do#1insert#2}\gobbleninearguments}{#4}{#5}}  \def\dodoinsertfile#1#2#3%    {\dododoinsertfile[#1][#2][#3]} @@ -107,18 +131,18 @@  \def\doiffileinsertionsupportedelse#1%    {\ExpandBothAfter\doifinstringelse{#1}{\c!tex,\c!tmp,\supportedfileinsertions}} -%D This macro is called with 10 arguments, where the first  +%D This macro is called with 10 arguments, where the first  %D one specifies the driver, like \type{yy} or \type{tr}. The -%D second argument is a \type{{type,method}} pair and the  -%D third the filename.  +%D second argument is a \type{{type,method}} pair and the +%D third the filename. -%D Just in case this one is undefined (which can happen if  -%D this module is used outside \CONTEXT):  +%D Just in case this one is undefined (which can happen if +%D this module is used outside \CONTEXT):  \ifx\setreferencefilename\undefined    \def\setreferencefilename#1\to#2{\edef#2{#1}} -  +  \fi  %D When submitting forms, we need to communicate the format. @@ -127,20 +151,20 @@  \def\setsubmitoutputformat#1%    {\doifinsetelse{#1}{FDF,fdf} -     {\chardef\submitoutputformat2}  +     {\chardef\submitoutputformat2}       {\doifinsetelse{#1}{XML,xml}          {\chardef\submitoutputformat3}          {\chardef\submitoutputformat1}}% -   \relax}  +   \relax} -%D \macros  +%D \macros  %D   {escapePSstring}  %D -%D \starttypen  -%D \escapePSstring(t\e\1st)))))\to\crap \crap  -%D \stoptypen  +%D \starttypen +%D \escapePSstring(t\e\1st)))))\to\crap \crap +%D \stoptypen -% testcase: webschrift met lege regels en unbalanced ()  +% testcase: webschrift met lege regels en unbalanced ()  \bgroup @@ -188,12 +212,26 @@     \def\par{\rawcharacter{12}\rawcharacter{12}}%     \expanded{\egroup\noexpand\def\noexpand#2{#1}}} -%D \macros  +%D \macros  %D   {ifPDFunicode} -%D  +%D  %D We can use this switch to signal that content streams has -%D to be unicoded.  +%D to be unicoded.  \newif\ifPDFunicode -\protect \endinput +%D \macros +%D   {makeMPintoPDFobject, handleMPfshow, setMPPDFobject, getMPPDFobject} +%D +%D \METAPOST\ support. + +\appendtoks +  \chardef\makeMPintoPDFobject\zerocount +  \def\setMPPDFobject#1#2{\def\getMPPDFobject{\box#2}}% +\to \everyresetspecials + +\appendtoks +  \let\handleMPfshow\dohandleMPfshow +\to \everyresetspecials + +\protect \endinput
\ No newline at end of file diff --git a/tex/context/base/spec-ps.tex b/tex/context/base/spec-ps.tex index db9d82f53..df9097b08 100644 --- a/tex/context/base/spec-ps.tex +++ b/tex/context/base/spec-ps.tex @@ -219,6 +219,11 @@  \definespecial\dostopclipping    {\special{\@@insertpostscriptliteral\space restore}} +%D Some MP stuff: + +\definespecial\doinsertMPfile#1% +  {\doiffileelse{./#1}{\includeMPasEPS{./#1}}{\message{[MP #1]}}} +  \stopspecials  \endinput
\ No newline at end of file diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex index 10ab42ed3..224f7520e 100644 --- a/tex/context/base/spec-tpd.tex +++ b/tex/context/base/spec-tpd.tex @@ -125,6 +125,8 @@  \pdfoptionpdfminorversion=5 +\def\PDFversion{1.\the\pdfoptionpdfminorversion}% +  % %D Why are the Acrobat viewers so buggy? To prevent font cache  % %D mismatches, we say:  % @@ -243,7 +245,7 @@  \definespecial\dogetnofinsertpages#1%    {\xdef\nofinsertpages{1}% global     \doifvalidpdfimagefileelse{#1}% -     {\pdfximage{#1}\xdef\nofinsertpages{\the\pdflastximagepages}} +     {\pdfximage {#1}\xdef\nofinsertpages{\the\pdflastximagepages}}       {}}  %D Currently we support \type{pdf} for \PDF\ files, \type{mps} @@ -320,6 +322,7 @@          \ifdim#7>\zeropoint \!!width  #7\fi          \ifdim#8>\zeropoint \!!height #8\fi          \pdfimagepagenumber +%         \@@DriverImageBox          {#1}%        \xdef\PDFimagereference{\the\pdflastximage}%        \xdef\nofinsertpages{\the\pdflastximagepages}% @@ -370,6 +373,8 @@  %D themselves have alternatives, especially cylcic  %D dependencies. +\ifx\@@DriverImageBox\undefined \def\@@DriverImageBox{artbox} \fi +  \ifnum\pdftexversion>13  \def\checkpdfimageattributes @@ -400,8 +405,9 @@         \the\everyPDFximage         \checkpdfimagepagenumber{#3}%         \checkpdfimageattributes -       \global\setbox\foundexternalfigure\vbox -         {\immediate\pdfximage \pdfimageattributes \pdfimagepagenumber{#2}% +       \global\setbox\foundexternalfigure\hbox +         {\immediate\pdfximage +            \pdfimageattributes \pdfimagepagenumber \@@DriverImageBox {#2}%            \xdef\PDFimagereference{\the\pdflastximage}%            \xdef\nofinsertpages{\the\pdflastximagepages}%            \pdfrefximage\pdflastximage}% @@ -419,19 +425,19 @@  \else -\def\dogetTPDfiguresize#1#2#3#4#5#6#7% -  {\ifmeasureTPDfiguresize -     #4\zeropoint -     #5\zeropoint -     \doifvalidpdfimagefileelse{#2} -       {\global\setbox\foundexternalfigure\vbox{\pdfimage{#2}}% -        #6\wd\foundexternalfigure -        #7\ht\foundexternalfigure} -       {#6\zeropoint -        #7\zeropoint}% -  \else -    #1{#2}{#3}{#4}{#5}{#6}{#7}% \normaldogetfiguresize... -  \fi} +  \def\dogetTPDfiguresize#1#2#3#4#5#6#7% +    {\ifmeasureTPDfiguresize +       #4\zeropoint +       #5\zeropoint +       \doifvalidpdfimagefileelse{#2} +         {\global\setbox\foundexternalfigure\vbox{\pdfimage{#2}}% +          #6\wd\foundexternalfigure +          #7\ht\foundexternalfigure} +         {#6\zeropoint +          #7\zeropoint}% +     \else +       #1{#2}{#3}{#4}{#5}{#6}{#7}% \normaldogetfiguresize... +     \fi}  \fi @@ -510,17 +516,77 @@  \definespecial\doregisterrgbspotcolor {\doPDFregisterrgbspotcolor}  \definespecial\doregistergrayspotcolor{\doPDFregistergrayspotcolor} +\definespecial\doregistercmykindexcolor{\doPDFregistercmykindexcolor} +\definespecial\doregisterrgbindexcolor {\doPDFregisterrgbindexcolor} +\definespecial\doregistergrayindexcolor{\doPDFregistergrayindexcolor} +  \definespecial\dostartnonecolormode{\doPDFstartnonecolormode}  \definespecial\doregisternonecolor {\doPDFregisternonecolor} -\def\doPDFregistersomespotcolor#1#2#3#4% -  {\immediate \pdfobj stream attr -     {/FunctionType 4 /Domain [0.0 1.0] /Range #3}{#4}% +% \def\doPDFregistersomespotcolor#1#2#3#4% +%   {\immediate \pdfobj stream attr +%      {/FunctionType 4 /Domain [0.0 1.0] /Range #3}{#4}% +%    \immediate \pdfobj +%      {[/Separation /#1 /Device#2 \the\pdflastobj\space0 R]}% +%    \dosetobjectreference{PDFCS}{#1}{\the\pdflastobj}% +%    \appendtoPDFdocumentcolorspaces +%      {/#1 \the\pdflastobj\space0 R}} + +\def\doPDFregistersomespotcolor#1#2#3#4#5#6#7% name fractions names p's space domain function +  {\bgroup +   \let\spotpops\empty +   \ifcase#2\or +     \def\PDFspotcolornames{/Separation /#1}% +     \def\PDFspotcolordomain{0.0 1.0}% +   \else +     \dorecurse{#2}{\edef\spotpops{\spotpops pop }}% +     \let\PDFspotcolornames \empty +     \let\PDFspotcolordomain\empty +     \def\dospotcolorcommand##1% +       {\edef\PDFspotcolornames {\PDFspotcolornames/##1\space}% +        \edef\PDFspotcolordomain{\PDFspotcolordomain 0.0 1.0\space}}% +     \processcommacommand[#3]\dospotcolorcommand +     \edef\PDFspotcolornames{/DeviceN [\PDFspotcolornames]}% +   \fi +   \immediate \pdfobj stream attr +     {/FunctionType 4 /Domain [\PDFspotcolordomain] /Range [#6]}{{\spotpops#7}}%     \immediate \pdfobj -     {[/Separation /#1 /Device#2 \the\pdflastobj\space0 R]}% +     {[\PDFspotcolornames\space /Device#5 \the\pdflastobj\space0 R]}%     \dosetobjectreference{PDFCS}{#1}{\the\pdflastobj}% -   \appendtoPDFdocumentcolorspaces -     {/#1 \the\pdflastobj\space0 R}} +   \appendtoPDFdocumentcolorspaces{/#1 \the\pdflastobj\space0 R}% +   \egroup} + +%D New and very experimental. + +\def\doPDFregistersomeindexcolor#1#2#3#4#5#6#7% name fractions names p's space domain function +  {\bgroup +   \let\spotpops\empty +   \dorecurse{#2}{\edef\spotpops{\spotpops exch pop\space}}% +   \let\PDFspotcolornames \empty +   \let\PDFspotcolordomain\empty +   \def\docommand##1% +     {\edef\PDFspotcolornames {\PDFspotcolornames/##1\space}% +      \edef\PDFspotcolordomain{\PDFspotcolordomain 0.0 1.0\space}}% +   \processcommacommand[#3,None]\docommand +   \let\PDFcolorindexvector\empty +   \def\docommand##1% +     {\scratchdimen##1\points +      \scratchdimen\recurselevel\scratchdimen +      \scratchcounter\scratchdimen +      \divide\scratchcounter \maxcard +      \edef\PDFcolorindexvector{\PDFcolorindexvector\uchexnumbers\scratchcounter}}% +   \dostepwiserecurse\zerocount{255}\plusone +     {\rawprocesscommacommand[#4,1]\docommand +      \xdef\PDFcolorindexvector{\PDFcolorindexvector\space}}% +   \immediate \pdfobj stream attr +     {/FunctionType 4 /Domain [\PDFspotcolordomain] /Range [#6]}{{\spotpops#7}}% +   \immediate \pdfobj +     {[/Indexed +         [/DeviceN [\PDFspotcolornames] /Device#5 \the\pdflastobj\space0 R] % +         255 <\PDFcolorindexvector>]}% +   \dosetobjectreference{PDFIX}{#1}{\the\pdflastobj}% +   \appendtoPDFdocumentcolorspaces{/#1_INDEXED \the\pdflastobj\space0 R}% +   \egroup}  %D \macros  %D   {dostarttransparency,dostoptransparency} @@ -535,7 +601,9 @@  \def\@@PDT{@PDT@} -\newcount\PDFcurrenttransparency \PDFcurrenttransparency=0 % -1 +\ifx\PDFcurrenttransparency\undefined +  \newcount\PDFcurrenttransparency \PDFcurrenttransparency=0 % -1 +\fi  \def\assignPDFtransparency#1#2%    {\def\PDFtransparencyidentifier{/Tr#1}% @@ -1140,11 +1208,13 @@  \def\doPDFdictionaryobject class #1 name #2 data #3%    {\flushatshipout -     {\immediate\pdfobj{<< #3 >>}\dosetobjectreference{#1}{#2}{\the\pdflastobj}}} +     {\immediate\pdfobj{<< #3 >>}% +      \dosetobjectreference{#1}{#2}{\the\pdflastobj}}}  \def\doPDFarrayobject class #1 name #2 data #3%    {\flushatshipout -     {\immediate\pdfobj{[ #3 ]}\dosetobjectreference{#1}{#2}{\the\pdflastobj}}} +     {\immediate\pdfobj{[ #3 ]}% +      \dosetobjectreference{#1}{#2}{\the\pdflastobj}}}  %D \macros  %D   {defaultobjectreference,doPDFgetobjectreference} @@ -1234,6 +1304,28 @@  \definespecial\dostartfonteffect{\doPDFstartfonteffect}  \definespecial\dostopfonteffect {\doPDFstopfonteffect} +%D Some MP stuff: + +\let\handleMPfshow\dohandleMPfshow % default anyway + +\ifnum\pdftexversion<14 + +  \def\setMPPDFobject#1#2% resources boxnumber +    {\def\getMPPDFobject{\box#2}} + +\else + +  \def\setMPPDFobject#1#2% resources boxnumber +    {\immediate\pdfxform resources{#1}#2% +     \edef\getMPPDFobject{\noexpand\pdfrefxform\the\pdflastxform}} + +\fi + +\let\getMPPDFobject\relax + +\definespecial\doinsertMPfile#1% +  {\doiffileelse{./#1}{\includeMPasPDF{./#1}}{\message{[MP #1]}}} +  %D Now we can finish this module.  \stopspecials diff --git a/tex/context/base/spec-tr.tex b/tex/context/base/spec-tr.tex index 3a3f51ab9..fcf2d6727 100644 --- a/tex/context/base/spec-tr.tex +++ b/tex/context/base/spec-tr.tex @@ -62,6 +62,11 @@     \dodoinsertfile{tr}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}%     \egroup} +%D Some MP stuff: + +\definespecial\doinsertMPfile#1% +  {\doiffileelse{./#1}{\includeMPasEPS{./#1}}{\message{[MP #1]}}} +  %D \macros  %D   {dostartrotation}  %D diff --git a/tex/context/base/spec-var.tex b/tex/context/base/spec-var.tex new file mode 100644 index 000000000..390e178c4 --- /dev/null +++ b/tex/context/base/spec-var.tex @@ -0,0 +1,70 @@ +%D \module +%D   [       file=spec-var, +%D        version=2003.10.10, +%D          title=\CONTEXT\ Special Macros, +%D       subtitle=Variables, +%D         author=Hans Hagen, +%D           date=\currentdate, +%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +%D This module used to be integrated in \type {spec-ini}, +%D but testing optimization is more convenient this way. + +\writestatus{loading}{Context Special Macros / Variables} + +% new approach, 'global' variables, since we run out of +% arguments + +\unprotect + +\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 + +\ifx\undefined\@@DriverCommentLayer + +  \letempty \@@DriverCommentLayer + +\fi + +\ifx\undefined\@@DriverAttachmentLayer + +  \letempty \@@DriverAttachmentLayer + +\fi + +\ifx\undefined\@@DriverImageBox + +  \letempty \@@DriverImageBox + +\fi + +\protect \endinput
\ No newline at end of file diff --git a/tex/context/base/supp-box.tex b/tex/context/base/supp-box.tex index 847e76167..1d305dded 100644 --- a/tex/context/base/supp-box.tex +++ b/tex/context/base/supp-box.tex @@ -260,7 +260,7 @@     \futurelet\nextph@nt\doph@nt}  \def\makeph@nt#1#2#3% -  {\begingroup +  {\begingroup % why no \bgroup     \dowithnextbox       {\setbox\scratchbox\null        \ht\scratchbox\ht#1\dp\scratchbox\dp#2\wd\scratchbox\wd#3% @@ -909,6 +909,8 @@  %D These macros are slow but effective and not that hard to  %D program at all. +\ifx\scantokens\undefined \let\scantokens\firstofoneargument \fi +  \def\dohyphenateword#1#2#3%    {\bgroup     \setbox\scratchbox\normalhbox @@ -917,13 +919,15 @@        \hyphenpenalty  \zerocount        \exhyphenpenalty\zerocount        \setbox0\normalvbox -        {\hsize\zeropoint \space +        {\hsize\zeropoint +         \hskip\zeropoint % really needed           \ifnum#1=\minusone             \obeyspaces             \obeylines             \def\obeyedspace{\hskip\zeropoint\hbox to \onepoint{}\hskip\zeropoint}%             \let\obeyedline  \obeyedspace -           \def\next{#3}\scantokens{\next}% +           \def\next{#3}\scantokens\expandafter{\next}% +           % also ok: \scantokens{#3}%           \else             #3%           \fi}% @@ -1564,6 +1568,7 @@  \newif\ifalignrigidcolumns  \newif\ifstretchrigidcolumns +\newif\iftightrigidcolumns    % if true: just a vbox, no depth/noflines/gridsnap corrrections  %D De eerste switch bepaald het uitlijnen, de tweede rekt de  %D individuele kolommen op naar \type{\vsize}. @@ -1605,23 +1610,28 @@          \setbox\scratchbox\normalhbox to \savedrigidhsize            {\dorecurse\rigidcolumns               {\setbox\scratchbox\vsplit\rigidcolumnbox to \scratchdimen -              \dp\scratchbox\openstrutdepth +               \dp\scratchbox\openstrutdepth                \setbox\scratchbox\normalvtop -                \ifalignrigidcolumns to -                  \ifstretchrigidcolumns\vsize\else\scratchdimen\fi -                \fi +                 \ifalignrigidcolumns to +                   \ifstretchrigidcolumns\vsize\else\scratchdimen\fi +                 \fi                  {\unvbox\scratchbox}%                \wd\scratchbox\hsize                \box\scratchbox                \hfill}%             \hfillneg}% -       \advance\scratchdimen -\openstrutdepth -       \setbox\scratchbox\normalhbox{\raise\scratchdimen\box\scratchbox}% -       \dp\scratchbox\openstrutdepth -       \ht\scratchbox\scratchdimen +       \iftightrigidcolumns +         \setbox\scratchbox\normalhbox{\raise\dp\scratchbox\box\scratchbox}% +       \else +         \advance\scratchdimen -\openstrutdepth +         \setbox\scratchbox\normalhbox{\raise\scratchdimen\box\scratchbox}% +         \dp\scratchbox\openstrutdepth +         \ht\scratchbox\scratchdimen +       \fi         \box\scratchbox}%     \fi} +  %D \macros  %D   {startvboxtohbox,stopvboxtohbox,convertvboxtohbox}  %D @@ -2023,14 +2033,16 @@  %D middle and right. These box types can be used to typeset  %D paragraphs. -\def\lbox{\lrcbox\raggedleft} -\def\cbox{\lrcbox\raggedcenter} -\def\rbox{\lrcbox\raggedright} +\def\lbox{\makelrcbox\normalvbox\raggedleft} +\def\cbox{\makelrcbox\normalvbox\raggedcenter} +\def\rbox{\makelrcbox\normalvbox\raggedright} + +\def\ltop{\makelrcbox\normalvtop\raggedleft} +\def\ctop{\makelrcbox\normalvtop\raggedcenter} +\def\rtop{\makelrcbox\normalvtop\raggedright} -\def\lrcbox#1#2#% -  {\normalvbox#2\bgroup -   \let\\=\endgraf -   \forgetall#1\let\next=} +\def\makelrcbox#1#2#3#% +  {#1#3\bgroup \forgetall \let\\=\endgraf #2\let\next=}  %D The alternatives \type {\tbox} and \type {\bbox} can be used  %D to properly align boxes, like in: @@ -2309,6 +2321,29 @@  \def\middlebox#1%    {\normalhbox{\setbox0\placedbox{#1}\boxoffset=-.5\wd0\rightbox{\box0}}} + +\def\baselinemiddlebox#1% +  {\normalhbox +     {\setbox0\placedbox{#1}% +      \global\boxhdisplacement-.5\wd0 +      \global\advance\boxhdisplacement-\boxoffset +      \global\boxvdisplacement-\boxoffset +      \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}} + +\def\baselineleftbox#1% +  {\normalhbox +     {\setbox0\placedbox{#1}% +      \global\boxhdisplacement-\wd0 +      \global\advance\boxhdisplacement-\boxoffset +      \global\boxvdisplacement-\boxoffset +      \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}} + +\def\baselinerightbox#1% +  {\normalhbox +     {\setbox0\placedbox{#1}% +      \global\boxhdisplacement\boxoffset +      \global\boxvdisplacement-\boxoffset +      \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}  %D \macros  %D   {toplinebox} @@ -2640,9 +2675,10 @@  %D And even rawer: -\let\naturalhbox \normalhbox -\let\naturalvbox \normalvbox -%let\naturalvtop \normalvtop +\let\naturalhbox    \normalhbox +\let\naturalvbox    \normalvbox +\let\naturalvtop    \normalvtop +\let\naturalvcenter \normalvtop  \beginOMEGA dir diff --git a/tex/context/base/supp-fil.tex b/tex/context/base/supp-fil.tex index b5df1e20c..fe96069ae 100644 --- a/tex/context/base/supp-fil.tex +++ b/tex/context/base/supp-fil.tex @@ -183,12 +183,14 @@  \catcode`\/=\@@active  \catcode`\:=\@@active  \catcode`\~=\@@active +\catcode`\_=\@@active  \gdef\sanitizefilename#1\to#2%    {\bgroup     \edef/{\string/}%     \edef:{\string:}%     \edef~{\string~}% +   \edef_{\string_}%     \expanded{\xdef\noexpand\sanitizedfilename{#1}}%     \egroup     % maybe \convertcommand\sanitizedfilename\to#2% diff --git a/tex/context/base/supp-mat.tex b/tex/context/base/supp-mat.tex index 66357407c..682fe59f7 100644 --- a/tex/context/base/supp-mat.tex +++ b/tex/context/base/supp-mat.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 For practical reasons, I decided to move some math things to  -%D a support module. There is nothing spectacular here.  +%D For practical reasons, I decided to move some math things to +%D a support module. There is nothing spectacular here.  \writestatus{loading}{Context Support Macros / Math} @@ -20,33 +20,32 @@  %D \macros  %D   {mathematics, math, nomathematics, startmathmode} -%D  +%D  %D The \type{$} can be both an begin and end math character.  %D This can lead to confusing and errorprone situations when -%D macros insert \type{$}. When for instance we have defined:  -%D  +%D macros insert \type{$}. When for instance we have defined: +%D  %D \starttypen  %D \def\MyPlus{$\,+\,$}  %D \stoptypen -%D  +%D  %D the sequence \type{$x^2 \MyPlus y^2 = r^2$} will expand to: -%D  +%D  %D \starttypen  %D $x^2 $\,+\,$ y^2 = r^2$  %D \stoptypen -%D  +%D  %D Here the \type{\,} are given outside math mode and \TEX\ will -%D definitely complain about this. A more save definition would  -%D have been:  -%D  +%D definitely complain about this. A more save definition would +%D have been: +%D  %D \starttypen  %D \def\MyPlus{\mathematics{\,+\,}}  %D \stoptypen -%D  +%D  %D Which is implemented as: -\def\mathematics#1% -  {\ifmmode#1\else$#1$\fi} +\def\mathematics#1{\relax\ifmmode#1\else$#1$\fi} % lookahead bug reported by brooks  \def\startmathmode    {\ifmmode @@ -64,11 +63,11 @@  %D   {dimension, nodimension}  %D  %D The next few macros are used for typesetting dimensions in -%D such a way that spacing is acceptable. I won't spend much  -%D words on these macros, because they will be overloaded in  +%D such a way that spacing is acceptable. I won't spend much +%D words on these macros, because they will be overloaded in  %D the units module. -\newsignal\dimensionsignal  +\newsignal\dimensionsignal  \def\dimensiontypeface  {\tf}  \def\dimensionhalfspace {\,} @@ -98,13 +97,13 @@  %D \macros  %D   {super, suber}  %D -%D \TEX\ uses \type{^} and \type{_} for entering super- and  -%D subscript mode. We want however a bit more control than  -%D normally provided, and therefore provide \type {\super}  -%D and \type{\suber} (\type {\sub} is already taken).  +%D \TEX\ uses \type{^} and \type{_} for entering super- and +%D subscript mode. We want however a bit more control than +%D normally provided, and therefore provide \type {\super} +%D and \type{\suber} (\type {\sub} is already taken). -\global\let\normalsuper=^  -\global\let\normalsuber=_  +\global\let\normalsuper=^ +\global\let\normalsuber=_  \newcount\supersubmode @@ -114,10 +113,10 @@  % \def\dodosuper#1{\normalsuper{\the\everysupersub#1}}  % \def\dodosuber#1{\normalsuber{\the\everysupersub#1}} -%  +%  % \def\dosuper{\ifx\next\bgroup\expandafter\dodosuper\else\normalsuper\fi}  % \def\dosuber{\ifx\next\bgroup\expandafter\dodosuber\else\normalsuber\fi} -%  +%  % \def\super{\futurelet\next\dosuper}  % \def\suber{\futurelet\next\dosuber} @@ -126,9 +125,9 @@  %D \macros  %D   {enablesupsub} -%D  -%D We can let \type {^} and \type {_} act like \type {\super}  -%D and \type {\suber} by saying \type {\enablesupsub}.  +%D +%D We can let \type {^} and \type {_} act like \type {\super} +%D and \type {\suber} by saying \type {\enablesupsub}.  \bgroup  \catcode`\^=\@@active @@ -143,7 +142,7 @@  %D \macro  %D   {restoremathstyle}  %D -%D We can pick up the current math style by calling \type  +%D We can pick up the current math style by calling \type  %D {\restoremathstyle}.  \def\restoremathstyle diff --git a/tex/context/base/supp-mpe.tex b/tex/context/base/supp-mpe.tex index d2c8e5b6b..497f077e6 100644 --- a/tex/context/base/supp-mpe.tex +++ b/tex/context/base/supp-mpe.tex @@ -216,8 +216,11 @@    \def\normalhandleMPgraycolor      {{\checkPDFMPstrokecolor\execcolorS\gMPa1:0:0\od}} -  \def\normalhandleMPspotcolor -    {{\checkPDFMPstrokecolor\execcolorP\gMPa1:\gMPa2:0:0\od}} +%   \def\normalhandleMPspotcolor +%     {{\checkPDFMPstrokecolor\execcolorP\gMPa1:\gMPa2:0:0\od}} + +  \def\normalhandleMPspotcolor % ??? +    {{\checkPDFMPstrokecolor\execcolorP\gMPa1:\gMPa2:\gMPa3:\gMPa4:0:0\od}}  \fi @@ -597,17 +600,17 @@         \fi       \or         % 3 = rgb transparency -     %   to do +       %   to do       \or         % 4 == cmyk transparency -     % \ifMPcmykcolors -     %   to do -     % \fi +       % \ifMPcmykcolors +       %   to do +       % \fi       \or         % 5 == spot transparency -     % \ifMPspotcolors -     %   to do -     % \fi +       % \ifMPspotcolors +       %   to do +       % \fi       \fi     \else       \ifx\tempMPrvalue\tempMPgvalue @@ -738,9 +741,9 @@                  {\immediate\pdfximage\!!width\onebasepoint\!!height\onebasepoint{#7}%                   \setxvalue{mps:x:#7}{\pdfrefximage\the\pdflastximage}}%                  {\message{[reusing figure #7]}}% -              \pdfliteral{q #1 #2 #3 #4 #5 #6 cm}% +              \PDFcode{q #1 #2 #3 #4 #5 #6 cm}%                \rlap{\getvalue{mps:x:#7}}% -              \pdfliteral{Q}} +              \PDFcode{Q}}               {\message{[unknown figure #7]}}%           \fi           \hss}}} @@ -846,19 +849,38 @@  %     \setxvalue{\@@MPSP\gMPs1}{\gMPs2 \gMPs3 }%  %   \fi} +% \defineMPspecial{2} +%   {\ifMPspotcolors +%      \setxvalue{\@@MPSP\gMPs1}{\gMPs2 \gMPs3 }% +%      \checkMPspot{\gMPs2}{\gMPs3}% +%    \fi} +% +% \def\setMPspot#1 #2 % +%   {\setvalue{\@@MP01}{#1}% +%    \setvalue{\@@MP02}{#2}} +% +% \def\checkMPspot#1#2% +%   {\expanded{\resolveMPspotcolor#1 #2}\end +%    \ifx\MPspotspace\MPresolvedspace +%      \edef\MPspotspacespec{/\MPspotspace\space}% +%      \doifinstringelse\MPspotspacespec\currentMPcolorspaces +%        \donothing\registerMPcolorspace +%    \fi}  \defineMPspecial{2}    {\ifMPspotcolors -     \setxvalue{\@@MPSP\gMPs1}{\gMPs2 \gMPs3 }% -     \checkMPspot{\gMPs2}{\gMPs3}% +     \setxvalue{\@@MPSP\gMPs1}{\gMPs2 \gMPs3 \gMPs4 \gMPs5 }% space is essential +     \checkMPspot{\gMPs2}{\gMPs3}{\gMPs4}{\gMPs5}%     \fi} -\def\setMPspot#1 #2 % +\def\setMPspot#1 #2 #3 #4 %    {\setvalue{\@@MP01}{#1}% -   \setvalue{\@@MP02}{#2}} +   \setvalue{\@@MP02}{#2}% +   \setvalue{\@@MP03}{#3}% +   \setvalue{\@@MP04}{#4}} -\def\checkMPspot#1#2% -  {\expanded{\resolveMPspotcolor#1 #2}\end +\def\checkMPspot#1#2#3#4% +  {\expanded{\resolveMPspotcolor#1 #2 #3 #4}\end     \ifx\MPspotspace\MPresolvedspace       \edef\MPspotspacespec{/\MPspotspace\space}%       \doifinstringelse\MPspotspacespec\currentMPcolorspaces @@ -976,16 +998,32 @@     \edef\PDFtransparencyreference {#2}%     \edef\PDFtransparencycolorspecs{#3}} -\def\PDFtransparencyspec +% \def\PDFtransparencyspec +%   {\ifx\MPresolvedspace\MPgrayspace +%      \MPresolvedcolor\space  g \MPresolvedcolor\space  G% +%    \else\ifx\MPresolvedspace\MPrgbspace +%      \MPresolvedcolor\space rg \MPresolvedcolor\space RG% +%    \else\ifx\MPresolvedspace\MPcmykspace +%      \MPresolvedcolor\space  k \MPresolvedcolor\space  K% +%    \else\ifx\MPresolvedspace\empty\else +%     /\MPresolvedspace\space cs \MPresolvedcolor\space sc +%     /\MPresolvedspace\space CS \MPresolvedcolor\space SC% +%   \fi\fi\fi\fi} + +\def\PDFtransparencyspec % todo    {\ifx\MPresolvedspace\MPgrayspace -     \MPresolvedcolor\space  g \MPresolvedcolor\space  G% +     \MPresolvedcolor\space  g +     \MPresolvedcolor\space  G%     \else\ifx\MPresolvedspace\MPrgbspace -     \MPresolvedcolor\space rg \MPresolvedcolor\space RG% +     \MPresolvedcolor\space  rg +     \MPresolvedcolor\space  RG%     \else\ifx\MPresolvedspace\MPcmykspace -     \MPresolvedcolor\space  k \MPresolvedcolor\space  K% +     \MPresolvedcolor\space  k +     \MPresolvedcolor\space  K%     \else\ifx\MPresolvedspace\empty\else -    /\MPresolvedspace\space cs \MPresolvedcolor\space sc -    /\MPresolvedspace\space CS \MPresolvedcolor\space SC% +     /\MPresolvedspace\space cs +     /\MPresolvedspace\space CS +     \PDFgetspotcolorspec\MPresolvedcolor    \fi\fi\fi\fi}  \defineMPspecial{3} % rgb @@ -1008,25 +1046,20 @@          {\PDFtransparencyreference}%          {\PDFtransparencyspec}}} -%\defineMPspecial{5} % spot -%  {\edef\currentMPspecial{\gMPs5}% -%   \presetPDFtransparency{\gMPs1}{\gMPs2}% -%   \expanded{\resolveMPspotcolor\gMPs3 \gMPs4}\end -%   \ifx\MPspotspace\MPresolvedspace -%     \edef\MPspotspacespec{/\MPspotspace\space}% -%     \doifinstringelse\MPspotspacespec\currentMPcolorspaces -%       \donothing\registerMPcolorspace -%   \fi -%   \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug ! -%     {\noexpand\assignMPStransparency -%        {\PDFtransparencyidentifier}% -%        {\PDFtransparencyreference}% -%        {\PDFtransparencyspec}}} +% \defineMPspecial{5} % spot +%   {\edef\currentMPspecial{\gMPs5}% +%    \presetPDFtransparency{\gMPs1}{\gMPs2}% +%    \checkMPspot{\gMPs3}{\gMPs4}% +%    \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug ! +%      {\noexpand\assignMPStransparency +%         {\PDFtransparencyidentifier}% +%         {\PDFtransparencyreference}% +%         {\PDFtransparencyspec}}}  \defineMPspecial{5} % spot -  {\edef\currentMPspecial{\gMPs5}% +  {\edef\currentMPspecial{\gMPs7}%     \presetPDFtransparency{\gMPs1}{\gMPs2}% -   \checkMPspot{\gMPs3}{\gMPs4}% +   \checkMPspot{\gMPs3}{\gMPs4}{\gMPs5}{\gMPs6}%     \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug !       {\noexpand\assignMPStransparency          {\PDFtransparencyidentifier}% @@ -1247,9 +1280,17 @@       \execcolorS#1:0:0\od       \stopMPcolorresolve} -  \def\resolveMPspotcolor#1 #2\end +%   \def\resolveMPspotcolor#1 #2\end +%     {\startMPcolorresolve +%      \execcolorP#1:#2:0:0\od +%      \stopMPcolorresolve} + +  \def\resolveMPspotcolor#1 #2 #3 #4\end      {\startMPcolorresolve -     \execcolorP#1:#2:0:0\od +     \ifnum#2>\plusone +       \checkmultitonecolor{#1}% +     \fi +     \execcolorP#1:#2:#3:#4:0:0\od       \stopMPcolorresolve}  \else diff --git a/tex/context/base/supp-mps.tex b/tex/context/base/supp-mps.tex index cd795eca2..26c9d37fe 100644 --- a/tex/context/base/supp-mps.tex +++ b/tex/context/base/supp-mps.tex @@ -791,8 +791,7 @@  \fi  \def\loadMPgraphic#1#2% -  {\setbox\MPgraphicbox=\hbox -     {\ifinsertMPgraphics\insertMPfile{#1}{#2}\fi}} +  {\setbox\MPgraphicbox\hbox{\ifinsertMPgraphics\insertMPfile{#1}{#2}\fi}}  \def\MPllx{0}  \def\MPlly{0} @@ -1151,7 +1150,7 @@       \endlinechar=-1       \setMPspecials       \obeyMPspecials -     \setbox\scratchbox=\hbox +     \setbox\scratchbox\hbox         {\hskip-\maxdimen          \doprocessfile\scratchread{#1}\handleMPfont}%       \smashbox\scratchbox @@ -1614,12 +1613,14 @@    {\globallet\MPdrawingdata\empty     \global\MPdrawingdonefalse} +% why global push/pop here? +  \def\pushMPdrawing -  {\pushmacro\MPdrawingdata +  {\globalpushmacro\MPdrawingdata     \globallet\MPdrawingdata\empty}  \def\popMPdrawing -  {\popmacro\MPdrawingdata} +  {\globalpopmacro\MPdrawingdata}  \def\getMPdrawing    {\ifMPdrawingdone diff --git a/tex/context/base/supp-pdf.tex b/tex/context/base/supp-pdf.tex index e5a9dc371..718963cd2 100644 --- a/tex/context/base/supp-pdf.tex +++ b/tex/context/base/supp-pdf.tex @@ -223,24 +223,24 @@  % \newif\ifPDFmediaboxprefered -% \def\setPDFboundingbox#1#2#3#4#5#6% -%   {\dimen0=#1\dimen0=#5\dimen0 -%    \ScaledPointsToBigPoints{\number\dimen0}\PDFxoffset -%    \dimen0=#3\dimen0=#5\dimen0 -%    \xdef\PDFwidth{\the\dimen0}% -%    \dimen0=#2\dimen0=#6\dimen0 -%    \ScaledPointsToBigPoints{\number\dimen0}\PDFyoffset -%    \dimen0=#4\dimen0=#6\dimen0 -%    \xdef\PDFheight{\the\dimen0}% -%    \global\let\PDFxoffset\PDFxoffset -%    \global\let\PDFyoffset\PDFyoffset} - -% \def\setPDFmediabox#1[#2 #3 #4 #5]#6\done -%   {\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} +\def\setPDFboundingbox#1#2#3#4#5#6% +  {\dimen0=#1\dimen0=#5\dimen0 +   \ScaledPointsToBigPoints{\number\dimen0}\PDFxoffset +   \dimen0=#3\dimen0=#5\dimen0 +   \xdef\PDFwidth{\the\dimen0}% +   \dimen0=#2\dimen0=#6\dimen0 +   \ScaledPointsToBigPoints{\number\dimen0}\PDFyoffset +   \dimen0=#4\dimen0=#6\dimen0 +   \xdef\PDFheight{\the\dimen0}% +   \global\let\PDFxoffset\PDFxoffset +   \global\let\PDFyoffset\PDFyoffset} + +\def\setPDFmediabox#1[#2 #3 #4 #5]#6\done +  {\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}  % \def\checkPDFmediabox#1/MediaBox#2#3\done  %   {\ifx#2\relax \else @@ -891,7 +891,7 @@  \let\MPfshowcommand\empty -\def\handleMPfshow +\def\dohandleMPfshow    {\bgroup     \setbox\scratchbox\hbox       {\obeyMPspecials @@ -938,7 +938,7 @@           \fi           \unskip}}%    % -  % this fails in latest pdftex's +  % this fails in some versions of pdftex    %    % \dimen0=\lastMPmoveY bp    % \advance\dimen0 by \ht0 @@ -959,6 +959,8 @@     \box\scratchbox     \egroup} +\let\handleMPfshow\dohandleMPfshow % so we can overload this one later +  %D You could consider the following definition to be the most  %D natural one. @@ -1834,7 +1836,9 @@  %D The last object number used is avaliable in the macro  %D \type {\lastPDFMPobject}. -\chardef\makeMPintoPDFobject=0 \def\lastPDFMPobject{0} +\ifx\makeMPintoPDFobject\undefined \chardef\makeMPintoPDFobject=0 \fi + +\def\lastPDFMPobject{0}  %D The additional code needed can be made available in the  %D (global) macro \type {\currentPDFresources}. @@ -1936,18 +1940,6 @@  \def\finishMPgraphic    {\stopMPresources     \egroup -   % we go simple when in doubt, this macro will get a proper -   % context counterpart so that we can also cover dvipdfmx -   \ifx\pdfxform\undefined -     \chardef\makeMPintoPDFobject\zerocount % no pdftex at all -   \else\ifx\pdftexversion\undefined -     \chardef\makeMPintoPDFobject\zerocount % no pdftex at all -   \else\ifnum\pdftexversion<14 -     \chardef\makeMPintoPDFobject\zerocount % no resource support -   \fi\fi\fi -   \ifcase\makeMPintoPDFobject\or\or\ifx\currentPDFresources\empty\else -     \chardef\makeMPintoPDFobject\plusone -   \fi\fi     \setbox\scratchbox\vbox       {\forgetall        \hbox @@ -1957,35 +1949,60 @@     \ht\scratchbox\MPheight     \wd\scratchbox\MPwidth     \dp\scratchbox\zeropoint\relax +   \dopackageMPgraphic\scratchbox +   \egroup +   \endinput} + +%D Alternative for \PDFTEX. We cannot come up with something more contexy +%D because this module is also used in \LATEX. + +\def\dopackageMPgraphic#1% #1 = boxregister +  {%\ifx\pdfxform\undefined +   %  \chardef\makeMPintoPDFobject\zerocount % no pdftex at all +   %\else\ifx\pdftexversion\undefined +   %  \chardef\makeMPintoPDFobject\zerocount % no pdftex at all +   %\else\ifnum\pdftexversion<14 +   %  \chardef\makeMPintoPDFobject\zerocount % no resource support +   %\else +   %                                         % keep the default value +   %\fi\fi\fi +   \ifcase\makeMPintoPDFobject\or\or\ifx\currentPDFresources\empty\else +     % an existing value of 2 signals object support (set elsewhere) +     \chardef\makeMPintoPDFobject\plusone +   \fi\fi     \ifcase\makeMPintoPDFobject -     \box\scratchbox +     \box#1%     \or       \scratchdimen\PDFMPformoffset\relax       \ifdim\scratchdimen>\zeropoint % compensate for error -       \setbox\scratchbox\vbox spread 2\scratchdimen -         {\forgetall -          \vss -          \hbox spread 2\scratchdimen -            {\hss -             \box\scratchbox -             \hss}% -          \vss}% +       \setbox#1\vbox spread 2\scratchdimen +         {\forgetall\vss\hbox spread 2\scratchdimen{\hss\box#1\hss}\vss}%       \fi -     \immediate\pdfxform resources{\currentPDFresources}\scratchbox -     \xdef\lastPDFMPobject{\the\pdflastxform}% +     \setMPPDFobject{\currentPDFresources}{#1}%       \ifdim\scratchdimen>\zeropoint % compensate for error         \vbox to \MPheight -         {\forgetall -          \vss\hbox to \MPwidth{\hss\pdfrefxform\lastPDFMPobject\hss}\vss}% +         {\forgetall\vss\hbox to \MPwidth{\hss\getMPPDFobject\hss}\vss}%       \else -       \pdfrefxform\lastPDFMPobject +       \getMPPDFobject       \fi       \global\let\currentPDFresources\empty     \else -     \box\scratchbox -   \fi -   \egroup -   \endinput} +     \box#1% +   \fi} + +\def\setMPPDFobject#1#2% resources boxnumber +  {\ifx\pdfxform\undefined +     \def\getMPPDFobject{\box#2}% +   \else\ifx\pdftexversion\undefined +     \def\getMPPDFobject{\box#2}% +   \else\ifnum\pdftexversion<14 +     \def\getMPPDFobject{\box#2}% +   \else +     \immediate\pdfxform resources{#1}#2% +     \edef\getMPPDFobject{\noexpand\pdfrefxform\the\pdflastxform}% +   \fi\fi\fi} + +\let\getMPPDFobject\relax  %D \macros  %D   {deleteMPgraphic, diff --git a/tex/context/base/supp-vis.tex b/tex/context/base/supp-vis.tex index 93bb5126e..a3545bfc5 100644 --- a/tex/context/base/supp-vis.tex +++ b/tex/context/base/supp-vis.tex @@ -736,9 +736,9 @@  \def\setvisiblehfilbox#1\to#2#3#4%    {\setbox#1\normalhbox       {\visualvrule -        \!!width#2\testrulewidth +        \!!width #2\testrulewidth          \!!height#3\testrulewidth -        \!!depth#4\testrulewidth}% +        \!!depth #4\testrulewidth}%     \smashbox#1}  \def\doruledhfiller#1#2#3#4% @@ -846,9 +846,9 @@  \def\setvisiblevfilbox#1\to#2#3#4%    {\setbox#1\normalhbox       {\visualvrule -        \!!width#2\testrulewidth +        \!!width #2\testrulewidth          \!!height#3\testrulewidth -        \!!depth#4\testrulewidth}% +        \!!depth #4\testrulewidth}%     \smashbox#1}%  \def\doruledvfiller#1#2#3% @@ -907,20 +907,11 @@  %D Keep in mind that \type{\vfillneg} is not part of \PLAIN\  %D \TEX, but are mimmicked by a macro. -\unexpanded\def\ruledvss -  {\doruledvfiller\normalvss\normalvfilneg{2}} - -\unexpanded\def\ruledvfil -  {\doruledvfiller\normalvfil\normalvfilneg{-4}} - -\unexpanded\def\ruledvfill -  {\doruledvfiller\normalvfill\normalvfillneg{-12}} - -\unexpanded\def\ruledvfilneg -  {\doruledvfiller\normalvfilneg\normalvfil{8}} - -\unexpanded\def\ruledvfillneg -  {\doruledvfiller\normalvfillneg\normalvfill{16}} +\unexpanded\def\ruledvss     {\doruledvfiller\normalvss     \normalvfilneg   {2}} +\unexpanded\def\ruledvfil    {\doruledvfiller\normalvfil    \normalvfilneg  {-4}} +\unexpanded\def\ruledvfill   {\doruledvfiller\normalvfill   \normalvfillneg{-12}} +\unexpanded\def\ruledvfilneg {\doruledvfiller\normalvfilneg \normalvfil      {8}} +\unexpanded\def\ruledvfillneg{\doruledvfiller\normalvfillneg\normalvfill    {16}}  %D \macros  %D   {ruledhskip} @@ -1584,11 +1575,8 @@  \def\setruledpenaltybox#1#2#3#4#5#6%    {\setbox#1\normalhbox       {\ifnum#2=0 \else -        \ifnum#2>0 -          \def\sign{+}% -        \else -          \def\sign{-}% -        \fi +        \edef\sign +          {\ifnum#2>0 +\else-\fi}%          \dimen0=\ifnum\sign#2>9999                    28\else                  \ifnum\sign#2>999 @@ -1916,4 +1904,4 @@  %D lines in this two column index don't allign, then this is  %D due to some still unknown interference. -\endinput +\endinput
\ No newline at end of file diff --git a/tex/context/base/syst-con.tex b/tex/context/base/syst-con.tex index a2f2a949e..0db485c7a 100644 --- a/tex/context/base/syst-con.tex +++ b/tex/context/base/syst-con.tex @@ -152,6 +152,28 @@       370\or 371\or 372\or 373\or 374\or 375\or 376\or 377\fi}  %D \macros +%D   {hexstringtonumber} +%D +%D This macro converts a two character hexadecimal number into +%D a decimal number, thereby taking care of lowercase characters +%D as well. + +\dostepwiserecurse{0}{9}{1}{\setevalue{@@uc@@\recurselevel}{\recurselevel}} + +\setvalue{@@uc@@a}{A} \setvalue{@@uc@@A}{A} +\setvalue{@@uc@@b}{B} \setvalue{@@uc@@B}{B} +\setvalue{@@uc@@c}{C} \setvalue{@@uc@@C}{C} +\setvalue{@@uc@@d}{D} \setvalue{@@uc@@D}{D} +\setvalue{@@uc@@e}{E} \setvalue{@@uc@@E}{E} +\setvalue{@@uc@@f}{F} \setvalue{@@uc@@F}{F} + +\def\hexstringtonumber#1% {FF} +  {\dohexstringtonumber#1} + +\def\dohexstringtonumber#1#2% FF +  {"\csname @@uc@@#1\endcsname\csname @@uc@@#2\endcsname} + +%D \macros  %D   {rawcharacter}  %D  %D This conversion macro produces raw characters. We have to diff --git a/tex/context/base/syst-etx.tex b/tex/context/base/syst-etx.tex index d2821de7e..ba5fc0f3f 100644 --- a/tex/context/base/syst-etx.tex +++ b/tex/context/base/syst-etx.tex @@ -200,7 +200,9 @@  %D But, for critical editions, we may need many more, so  %D here we go again: -\chardef\@@insallocation=16 % 24 +\chardef\@@insallocation=24 +\chardef\@@insallocation=16 +\chardef\@@insallocation=8  %D My low level allocation macro now comes down to: diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex index a613847f5..5cfe86d83 100644 --- a/tex/context/base/syst-ext.tex +++ b/tex/context/base/syst-ext.tex @@ -24,9 +24,9 @@  %D A raw and dirty alternative for \type {\getparameters}; no  %D checking is done! -\def\rawgetparameters[#1][#2]% scheelt 5\% -  {\def\rawparameterprefix{#1}% -   \expandafter\rawsetparameter#2,]=,} +% \def\rawgetparameters[#1][#2]% scheelt 5\% +%   {\def\rawparameterprefix{#1}% +%    \expandafter\rawsetparameter#2,]=,}  \def\rawsetparameter#1=#2,%    {\if]#1\else @@ -34,6 +34,19 @@       \expandafter\rawsetparameter     \fi} +% the next one handles empty #1 okay: + +\def\rawgetparameters[#1][#2% some 5-10% faster +  {\ifx#2]% test is needed, else bomb on [#1][] +     \expandafter\gobbleoneargument +   \else +     \def\rawparameterprefix{#1}% +     \expandafter\dorawgetparameters +   \fi#2} + +\def\dorawgetparameters#1]% +  {\expandafter\rawsetparameter#1,]=,} +  %D \macros  %D   {doglobal,  %D    redoglobal,dodoglobal,resetglobal} @@ -1981,21 +1994,19 @@  %D a row. In both commands, the \type{n*} is optional. When this  %D specification is missing, the command executes once. -% ! ! ! obsolete ! ! ! +% this one is obsolete:  \def\dorepeat[#1]%    {\dodorepeat#1*\empty*\relax}  \long\def\dodorepeat#1*#2#3*#4\relax -  {\ifx#2\empty -     #1% -   \else -     \dorecurse{#1}{#2#3}% -   \fi} +  {\ifx#2\empty#1\else\dorecurse{#1}{#2#3}\fi}  \def\repeater    {\recurselevel} +% this one will be kept +  \def\dorepeatwithcommand[#1]%    {\dodorepeatwithcommand#1*\empty*\relax} @@ -2008,24 +2019,63 @@  %  % more complex but better: +% \long\def\dodorepeatwithcommand#1*#2#3*#4\relax#5% +%   {\ifx#2\empty +%      #5{#1}% +%    \else\ifnum#1<\zerocount +%      % a la etex +%      % \dorecurse{-\numexpr(#1)}{#5{-#2#3}}% +%      % indirect +%      %\innerrecurse#1% +%      %\expanded{\dorecurse{\number-\innerrecurse}}{#5{-#2#3}}% +%      % safer: +%      \bgroup\scratchcounter#1% +%      \expanded{\egroup\noexpand\dorecurse{\number-\scratchcounter}}{#5{-#2#3}}% +%    \else\ifx#2+% +%      \dorecurse{#1}{#5{#3}}% +%    \else +%      \dorecurse{#1}{#5{#2#3}}% +%    \fi\fi\fi} + +\def\dorepeatwithcommand[#1]% +  {\dodorepeatwithcommand#1*\empty*\relax} +  \long\def\dodorepeatwithcommand#1*#2#3*#4\relax#5% -  {\ifx#2\empty -     #5{#1}% +  {\ifx#2\empty\redorepeatwithcommand[#1]#5\else\dododorepeatwithcommand{#1}{#2}{#3}#5\fi} + +\long\def\dododorepeatwithcommand#1#2#3#4% +  {\ifx#2\empty % redundant but gives cleaner extensions +     #4{#1}%     \else\ifnum#1<\zerocount -     % a la etex -     % \dorecurse{-\numexpr(#1)}{#5{-#2#3}}% -     % indirect -     %\innerrecurse#1% -     %\expanded{\dorecurse{\number-\innerrecurse}}{#5{-#2#3}}% -     % safer:       \bgroup\scratchcounter#1% -     \expanded{\egroup\noexpand\dorecurse{\number-\scratchcounter}}{#5{-#2#3}}% +     \expanded{\egroup\noexpand\dorecurse{\number-\scratchcounter}}{#4{-#2#3}}%     \else\ifx#2+% -     \dorecurse{#1}{#5{#3}}% +     \dorecurse{#1}{#4{#3}}%     \else -     \dorecurse{#1}{#5{#2#3}}% +     \dorecurse{#1}{#4{#2#3}}%     \fi\fi\fi} +\def\redorepeatwithcommand[#1]#2% +  {#2{#1}} + +%D The extension hook permits something like: +%D +%D \starttyping +%D \bgroup +%D +%D \catcode`\*=\@@superscript +%D +%D \gdef\redorepeatwithcommand[#1]% +%D   {\redodorepeatwithcommand#1*\empty*\relax} +%D +%D \long\gdef\redodorepeatwithcommand#1*#2#3*#4\relax#5% +%D   {\dododorepeatwithcommand{#1}{#2}{#3}#5} +%D +%D \egroup +%D \stoptyping +%D +%D although one may wonder if changing the catcode of \type {*} is wise. +  %D \macros  %D   {normalbgroup,normalgroup}  %D @@ -3747,6 +3797,10 @@       {\mathsurround\zeropoint\everymath\emptytoks$ $}%     \fi \fi} +%D And now your version of \TEX\ may provide: + +\ifx\quitvmode\undefined \else \let\dontleavehmode\quitvmode \fi +  %D \macros  %D   {uppercasestring,lowercasestring}  %D diff --git a/tex/context/base/syst-gen.tex b/tex/context/base/syst-gen.tex index d732463c5..5fd300d94 100644 --- a/tex/context/base/syst-gen.tex +++ b/tex/context/base/syst-gen.tex @@ -3935,7 +3935,7 @@  %D core modules.  \def\definestartstopcommand#1#2#3#4% can be done with \expanded ot better, toks -  {\def\!stringa{#3}%              % but let's keep this unuded one crappy +  {\def\!stringa{#3}%              % but let's keep this unused one crappy     \def\!stringb{\e!start#2}%     \def\!stringc{#4}%     \def\!stringd{\e!stop#2}% diff --git a/tex/context/base/syst-omg.tex b/tex/context/base/syst-omg.tex index e01bdf371..3e5b4a536 100644 --- a/tex/context/base/syst-omg.tex +++ b/tex/context/base/syst-omg.tex @@ -74,7 +74,7 @@  \mathchardef\@@medallocation =   256  \mathchardef\@@maxallocation = 32767 -\chardef\@@insallocation=8 +\chardef\@@insallocation=24  \def\myalloc@#1#2#3#4#5%    {\global\advance\count1#1by\@ne diff --git a/tex/context/base/verb-ini.tex b/tex/context/base/verb-ini.tex index 770144263..ce859bee9 100644 --- a/tex/context/base/verb-ini.tex +++ b/tex/context/base/verb-ini.tex @@ -1318,6 +1318,12 @@  \newif\ifnaturaltextext +% \starttyping +% test /naturaltextext\hpos{word}{test}/relax test +% \stoptyping +% +% \MPxy{word} +  \beginETEX \scantokens  %\def\naturaltextext#1#2\relax @@ -1328,6 +1334,17 @@     \prettynaturalfont{\restorecatcodes\scantokens{\ignorespaces#1}}%     \egroup} +% new, test first +% +% \def\naturaltextext#1\relax +%   {\bgroup +%    \prettynaturalfont +%    \def\ascii{#1}% +%    \setnormalcatcodes +%    \restorecatcodes +%    \scantokens\expandafter{\ascii}\ifhmode\unskip\fi +%    \egroup} +  \endETEX  \beginTEX diff --git a/tex/context/base/x-res-01.tex b/tex/context/base/x-res-01.tex index 9b724411f..d28baecf4 100644 --- a/tex/context/base/x-res-01.tex +++ b/tex/context/base/x-res-01.tex @@ -91,7 +91,7 @@       background=color,       backgroundcolor=gray,       foregroundcolor=darkred, -     align=normal, +     align={lohi,middle}, % normal,       frame=off]      {\bf \XMLflush{rl:dummy}}  \stopbuffer @@ -145,14 +145,14 @@  % Ulgy: -\startnotmode[previewpage-letter,previewpage-S6] -  \enablemode[previewpage-A4] -\stopnotmode -  \startmode[letter] % downward compatible    \enablemode[previewpage-letter]  \stopmode +\startnotmode[previewpage-letter,previewpage-S6] +  \enablemode[previewpage-A4] +\stopnotmode +  %startbuffer[paper]  \startsetups[paper]  \startmode[previewpage-A4] diff --git a/tex/context/base/xtag-ext.tex b/tex/context/base/xtag-ext.tex index a700fcfae..7d50d6156 100644 --- a/tex/context/base/xtag-ext.tex +++ b/tex/context/base/xtag-ext.tex @@ -147,8 +147,8 @@  % \defineXMLdirective [flowchart] [shapes] \setupFLOWshapes % [#2=#3]  % \defineXMLdirective [flowchart] [lines] \setupFLOWlines % [#2=#3] -\defineXMLprocessor [context-begin-group] {\begingroup\gobbleoneargument} -\defineXMLprocessor [context-end-group]   {\endgroup  \gobbleoneargument} +\defineXMLprocessor [context-begin-group] {\bgroup\gobbleoneargument} +\defineXMLprocessor [context-end-group]   {\egroup\gobbleoneargument}  % \def\XMLnspart#1:#2\empty{#1} % call ...:\empty\empty  % \def\XMLidpart#1:#2#3\empty{\ifx#2\empty#1\else\XMLidpart#2#3\empty\empty\fi} @@ -207,6 +207,12 @@       \@EA\secondoftwoarguments     \fi} +\def\doifXMLtextelse#1% new +  {\doiftextelse{\simplifyXMLelements#1}} + +\def\doifXMLtext#1#2% new +  {\doiftextelse{\simplifyXMLelements#1}{#2}\donothing} +  \gdef\convertXMLelement#1\to#2%    {\ifcsname\@@XMLsave:#1\endcsname       \@EA\convertcommand\csname\@@XMLsave:#1\endcsname\to#2% diff --git a/tex/context/base/xtag-ini.tex b/tex/context/base/xtag-ini.tex index ff475e162..2968c572d 100644 --- a/tex/context/base/xtag-ini.tex +++ b/tex/context/base/xtag-ini.tex @@ -179,6 +179,7 @@  \edef\@@XMLdepth       {\@@XML dep} % used to track nesting  \edef\@@XMLdopth       {\@@XML dop} % used to track nesting  \edef\@@XMLsave        {\@@XML sav} % namespace for saved elements +\edef\@@XMLglobal      {\@@XML glb} % global assignment  \iffalse % slightly faster @@ -199,6 +200,7 @@  \edef\@@XMLdepth       {\@@XML n} % used to track nesting  \edef\@@XMLdopth       {\@@XML o} % used to track nesting  \edef\@@XMLsave        {\@@XML p} % namespace for saved elements +\edef\@@XMLglobal      {\@@XML x} % global assignment  \fi @@ -847,10 +849,13 @@  \def\beginXMLelement    {\global\advance\XMLdepth\plusone -   \global\@EA\let\csname\@@XMLdepth:\the\XMLdepth\endcsname\currentXMLelement} +   \global\@EA\let\csname\@@XMLdepth:\the\XMLdepth\endcsname\currentXMLelement +   }%\writestatus{XML TRACE}{[begin] [\the\XMLdepth] [\XMLself]}}  \def\endXMLelement -  {\global\advance\XMLdepth\minusone} +  {%\writestatus{XML TRACE}{[end] [\the\XMLdepth] [\XMLself]}% +   \global\@EA\let\csname\@@XMLdepth:\the\XMLdepth\endcsname\undefined +   \global\advance\XMLdepth\minusone}  % 0 = nothing  % 1 = unknown @@ -865,16 +870,16 @@       \ifcase\XMLancestormode\or\s!unknown\or\currentXMLelement\fi     \fi} -\def\XMLparent -  {\XMLancestor\plusone} -  \def\XMLpureancestor#1%    {\ifnum\numexpr(\XMLdepth-#1)>0       \csname\@@XMLdepth:\the\numexpr(\XMLdepth-#1)\endcsname     \fi} -\def\XMLpureparent -  {\XMLpureancestor\plusone} +\def\XMLparent{\XMLancestor\plusone} +\def\XMLself  {\XMLancestor\zerocount} + +\def\XMLpureparent{\XMLpureancestor\plusone} +\def\XMLpureself  {\XMLpureancestor\zerocount}  % \def\XMLpureancestor#1%  %   {\csname @@ -888,6 +893,87 @@  \def\XMLpureparent    {\XMLpureancestor\plusone} +% probleem: depth is vast en dus ook ancestor + +% \XMLinh{...} will backtrack definitions (given that the elements +% use begin/end, the backtracking stops when a non-empty value is +% encountered; maybe we will add some keyword (inherit) some day + +% \def\XMLinh#1% will recurse so no trickery can be used +%   {\ifcsname\@@XMLvariable:\XMLpureancestor\plusone:#1\endcsname +%      \@EA\@EA\csname\@@XMLvariable:\XMLpureancestor\plusone:#1\endcsname +%    \fi} + +\def\XMLinh#1% +  {\@EA\ifx\csname\@@XMLvariable:\currentXMLelement:#1\endcsname\empty +     \@EA\pXMLinh +   \else +     \csname\@@XMLvariable:\currentXMLelement:#1\endcsname +     \@EA\gobbletwoarguments +   \fi\XMLdepth{#1}} + +\def\pXMLinh#1% +  {\@EA\ppXMLinh\@EA{\the\numexpr(#1-\plusone)}} + +% \def\ppXMLinh#1#2% +%   {\ifcsname\@@XMLvariable:\csname\@@XMLdepth:#1\endcsname:#2\endcsname +%      \@EA\ifx\csname\@@XMLvariable:\csname\@@XMLdepth:#1\endcsname:#2\endcsname\empty +%        \@EAEAEA\pppXMLinh +%      \else +%        \csname\@@XMLvariable:\csname\@@XMLdepth:#1\endcsname:#2\endcsname +%        \@EAEAEA\gobbletwoarguments +%      \fi +%    \else +%      \@EA\pppXMLinh +%    \fi{#1}{#2}} + +% \def\pppXMLinh#1% +%   {\ifnum#1>\zerocount +%      \@EA\pXMLinh +%    \else +%      \@EA\gobbletwoarguments +%    \fi{#1}} + +\def\ppXMLinh#1#2% +  {\@EA\ifx\csname\@@XMLvariable:\csname\@@XMLdepth:#1\endcsname:#2\endcsname\empty +     \ifnum#1>\plusone +       \@EAEAEA\pXMLinh +     \else +       \@EAEAEA\gobbletwoarguments +     \fi +   \else +     \csname\@@XMLvariable:\csname\@@XMLdepth:#1\endcsname:#2\endcsname +     \@EA\gobbletwoarguments +   \fi{#1}{#2}} + +% better +% +% \def\XMLpureancestor#1% +%   {\ifcsname\@@XMLdepth:\the\numexpr(\XMLdepth-#1)\endcsname +%      \csname\@@XMLdepth:\the\numexpr(\XMLdepth-#1)\endcsname +%    \fi} + +% replaces macro in xtag-ini: ! ! ! + +\def\edefXMLop#1#2% \macro{att} +  {\edef#1% +     {\csname\ifcsname\@@XMLvariable:\ownXMLelement:#2\endcsname +        \@@XMLvariable:\ownXMLelement:#2\else\s!empty +      \fi\endcsname}} + +\def\edefXMLinh#1#2% \macro{att} +  {\edef#1{\XMLinh{#2}}} + +% \def\doifXMLopdef#1#2% \macro{att} +%   {\ifcsname\@@XMLvariable:\ownXMLelement:#1\endcsname +%      \@EA\let\@EA#1\csname\@@XMLvariable:\ownXMLelement:#1\endcsname +%      \expandafter\firstofoneargument +%    \else +%      \expandafter\gobbleoneargument +%    \fi} + +\fetchruntimecommand \tracebackXMLattribute {\f!xtagprefix\s!run} +  % \defineXMLenvironment[one]  %   {\beginXMLelement}  %   {\endXMLelement} @@ -909,7 +995,7 @@  % {fallback A: \setXMLfallbackmode 0 \processXMLbuffer}\par  % {fallback B: \setXMLfallbackmode 1 \processXMLbuffer}\par  % {fallback C: \setXMLfallbackmode 2 \processXMLbuffer}\par - +  % todo: split #1 into raws en reconstruct, set current etc, push and pop  %  % \def\beginXMLelement @@ -1285,6 +1371,7 @@  \def\dosetXMLattributeB#1%    {\ifx\@@XMLspac\originalXMLnamespace       \@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLname\endcsname{#1}% +     % maybe some day global handling here as well     \fi}  % \def\dosetXMLattributeC#1% @@ -1305,10 +1392,9 @@  %      \@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLspac:\@@XMLname\endcsname{#1}%  %    \fi} -\def\dosetXMLattributeD% +\def\dosetXMLattributeD    {\@EA\def\csname\@@XMLvariable:\@@XMLclass:\ifx\@@XMLspac -     \originalXMLnamespace\currentXMLnamespace\else\@@XMLspac\fi -       :\@@XMLname\endcsname} +     \originalXMLnamespace\currentXMLnamespace\else\@@XMLspac\fi:\@@XMLname\endcsname}  \def\setXMLattributemode#1%    {\ifcase#1\relax @@ -1466,6 +1552,22 @@  %  % the ugly alternative +% \def\dosetXMLargument#1% ugly alternative +%   {\ifXMLnamespace +%      \XMLnamespacefalse +%      \ifx\@@XMLspac\@@XMLns +%        \@EAEAEA\checkXMLnamespaceattr % xmlns:\@@XMLname="#1" +%      \else +%        \@EAEAEA\dosetXMLattribute % some:\@@XMLname="#1" +%      \fi +%    \else\ifx\@@XMLname\@@XMLns +%      \@EAEAEA\checkXMLnamespaceattr % xmlns="#1" +%    \else +%      \@EAEAEA\dodosetXMLargument +%    \fi\fi{#1}% +%    \let\dodoparseXMLarguments\doparseXMLarguments +%    \dodoparseXMLarguments} +  \def\dosetXMLargument#1% ugly alternative    {\ifXMLnamespace       \XMLnamespacefalse @@ -1479,10 +1581,22 @@     \else       \@EAEAEA\dodosetXMLargument     \fi\fi{#1}% +   \dodocopyXMLargument     \let\dodoparseXMLarguments\doparseXMLarguments     \dodoparseXMLarguments} -\def\dodosetXMLargumentA% +\let\dodocopyXMLargument\relax + +\def\dododocopyXMLargument +  {\@EA\@EA\@EA\let\@EA\@EA +     \csname\@@XMLvariable:\csname\@@XMLglobal:\currentXMLelement\endcsname:\@@XMLname\endcsname +     \csname\@@XMLvariable:\@@XMLclass                                     :\@@XMLname\endcsname} + +\def\copyXMLargumentindeed +  {\def\dodocopyXMLargument{\ifcsname\@@XMLglobal:\currentXMLelement\endcsname\dododocopyXMLargument\fi}% +   \let\copyXMLargumentindeed\relax} + +\def\dodosetXMLargumentA    {\@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLname\endcsname}  \def\dodosetXMLargumentB#1% @@ -1741,6 +1855,19 @@  \def\defineXMLnestedsave           {\dotripleempty\dodefineXMLnestedsave}  \def\defineXMLnestedenvironmentsave{\dotripleempty\dodefineXMLnestedenvironmentsave} +%D We can nill definitions with: + +\def\resetXMLelement[#1]{\dododefineXMLprocess{#1}} + +%D This is equivalent to: +%D +%D \starttypen +%D \def\resetXMLelement[#1]% handy in case only singular +%D   {\@EA\let\csname\@@XMLelement:#1\endcsname \donothing +%D    \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing +%D    \@EA\let\csname\@@XMLelement:#1/\endcsname\donothing} +%D \stoptypen +  % push is (not yet) a real push, so:  \def\defineXMLpush           {\dotripleempty\dodefineXMLsave} @@ -2181,6 +2308,11 @@  \def\expandXMLta{\expandXMLarguments\@@XMLmapmap}  \def\expandXMLtp{\expandTEXpar\@@XMLmapmap} % #1 +\def\getXMLparameters[#1]% faster than \rawgetparameters[#1][\theXMLar..] +  {\ifcsname\@@XMLmap:#1\endcsname +     \expanded{\rawgetparameters[#1][\csname\@@XMLmap:#1\endcsname]}% +   \fi} +  \def\defXMLop#1#2{\@EA\let\@EA#1\csname\@@XMLvariable:\ownXMLelement:#2\endcsname}  \def\defXMLtp#1#2{\@EA\let\@EA#1\csname\@@XMLmapmap\interfaced{#2}\endcsname} @@ -2218,7 +2350,7 @@     \protectXMLdata     \dostartXMLdata} -\long\def\dostartXMLdata#1\stopXMLdata +\long\def\dostartXMLdata#1\stopXMLdata % evt \everyeof{}    {\enableXML\scantokens{#1<gobblespacetokens/>}%     \endgroup     \ifhmode\unskip\unskip\fi} diff --git a/tex/context/base/xtag-mml.tex b/tex/context/base/xtag-mml.tex index cacdaf4e3..cb2ccaea7 100644 --- a/tex/context/base/xtag-mml.tex +++ b/tex/context/base/xtag-mml.tex @@ -399,7 +399,8 @@  \def\somespaceentity#1#2%    {\mathortext       {\mskip#1mu} -     {\unskip\hskip#2em\strut\hskip\zeropoint\ignorespaces}\relax} +     {\ifvmode\dontleavehmode\else\unskip\fi\hskip#2em\strut\hskip\zeropoint\ignorespaces}% +   \relax}  \defineXMLentity [VeryThinSpace]         {\somespaceentity {2}{.125}}  \defineXMLentity [ThinSpace]             {\somespaceentity {3}{.25}} diff --git a/tex/context/base/xtag-pre.tex b/tex/context/base/xtag-pre.tex index 1c5933f3e..71ea6d04f 100644 --- a/tex/context/base/xtag-pre.tex +++ b/tex/context/base/xtag-pre.tex @@ -312,7 +312,7 @@    {\docontextXMLdirective#1 @ @ @\end}  \def\docontextXMLdirective#1 #2 #3 #4\end % class variable value -  {\csname\@@XMLvariable:#1:#2\endcsname{#3}} +  {\expandafter\def\csname\@@XMLvariable:#1:#2\endcsname{#3}}  %D A simple processing instruction is the following. It just  %D writes a message to the screen. diff --git a/tex/context/base/xtag-run.tex b/tex/context/base/xtag-run.tex index bc88b5cc3..a1ad21bdf 100644 --- a/tex/context/base/xtag-run.tex +++ b/tex/context/base/xtag-run.tex @@ -287,4 +287,19 @@     \showXMLfile{#1}     \egroup} +%D + +\gdef\tracebackXMLattribute#1% +  {\bgroup +   \doloop +     {\ifcsname\@@XMLdepth:\recurselevel\endcsname +        \edef\!!stringa{\csname\@@XMLdepth:\recurselevel\endcsname}% +        \writestatus +          {XML TRACE} +          {[#1] [\recurselevel] [\!!stringa] [\XMLinh{#1}]}% +      \else +        \exitloop +      \fi}% +    \egroup} +  \protect \endinput
\ No newline at end of file diff --git a/tex/context/config/cont-usr.tex b/tex/context/config/cont-usr.tex index 22b8a63f5..6c6c2f121 100644 --- a/tex/context/config/cont-usr.tex +++ b/tex/context/config/cont-usr.tex @@ -50,7 +50,17 @@  \definefilesynonym [lang-tr.pat]  [trhyph.tex]  \definefilesynonym [lang-ua.pat]  [ukrenhyp.tex]  \definefilesynonym [lang-uk.pat]  [ukhyphen.tex] -\definefilesynonym [lang-us.pat]  [ushyph1.tex] +\definefilesynonym [lang-us.pat]  [ushyph.tex] + +%D Ah, something changed in 2003 with respect to ushyph.tex, so let's +%D fall back when needed. I first noticed this during a workshop at  the +%D practical tex conference 2004 in sf. Yet another proof of a mess in +%D filenames. + + \doiffileelse{ushyph.tex}  {\definefilesynonym[lang-us.pat][ushyph.tex]} +{\doiffileelse{ushyph1.tex} {\definefilesynonym[lang-us.pat][ushyph1.tex]} +{\doiffileelse{ushyph2.tex} {\definefilesynonym[lang-us.pat][ushyph2.tex]} +                            {\definefilesynonym[lang-us.pat][ukhyph.tex]}}}  %D When the dutch spelling changed, new patterns were  %D constructed. For long these were named \type {dutch96.pat}. @@ -60,11 +70,9 @@  %D files as well as their coding is one of the dark areas of  %D \TEX\ distributions. -\doiffileelse{nehyph96.tex} -  {\definefilesynonym[lang-nl.pat][nehyph96.tex]} -  {\doiffileelse{dutch96.pat} -     {\definefilesynonym[lang-nl.pat][dutch96.pat]} -     {\definefilesynonym[lang-nl.pat][nehyph.tex]}} + \doiffileelse{nehyph96.tex}   {\definefilesynonym[lang-nl.pat][nehyph96.tex]} +{\doiffileelse{dutch96.pat}    {\definefilesynonym[lang-nl.pat][dutch96.pat]} +                               {\definefilesynonym[lang-nl.pat][nehyph.tex]}}  %D Pattern files are (can be) encoded! And, alas, not all  %D pattern files are self contained, which is why (for the diff --git a/tex/latex/context/m-ch-de.sty b/tex/latex/context/m-ch-de.sty index 5988d7a53..d35f8cf2d 100644 --- a/tex/latex/context/m-ch-de.sty +++ b/tex/latex/context/m-ch-de.sty @@ -1 +1,19 @@ -\input m-ch-de.tex  \relax \endinput  +\ProvidesPackage{m-ch-de}[2004/07/30 package wrapper for m-ch-de.tex] + +\newif\ifPPCH@PSTRICKS + +\DeclareOption{pstricks}{\PPCH@PSTRICKStrue} +\DeclareOption{pictex}{\PPCH@PSTRICKSfalse} + +\ExecuteOptions{pictex} +\ProcessOptions\relax + +\ifPPCH@PSTRICKS +  \RequirePackage{pstricks,pst-plot} +\else +  \RequirePackage{m-pictex} +\fi + +\input{m-ch-de.tex} + +\endinput
\ No newline at end of file diff --git a/tex/latex/context/m-ch-en.sty b/tex/latex/context/m-ch-en.sty index f22512d05..e93a49867 100644 --- a/tex/latex/context/m-ch-en.sty +++ b/tex/latex/context/m-ch-en.sty @@ -1 +1,19 @@ -\input m-ch-en.tex  \relax \endinput  +\ProvidesPackage{m-ch-en}[2004/07/30 package wrapper for m-ch-en.tex] + +\newif\ifPPCH@PSTRICKS + +\DeclareOption{pstricks}{\PPCH@PSTRICKStrue} +\DeclareOption{pictex}{\PPCH@PSTRICKSfalse} + +\ExecuteOptions{pictex} +\ProcessOptions\relax + +\ifPPCH@PSTRICKS +  \RequirePackage{pstricks,pst-plot} +\else +  \RequirePackage{m-pictex} +\fi + +\input{m-ch-en.tex} + +\endinput
\ No newline at end of file diff --git a/tex/latex/context/m-ch-nl.sty b/tex/latex/context/m-ch-nl.sty index 29c40be30..6e2b8d43d 100644 --- a/tex/latex/context/m-ch-nl.sty +++ b/tex/latex/context/m-ch-nl.sty @@ -1 +1,19 @@ -\input m-ch-nl.tex  \relax \endinput  +\ProvidesPackage{m-ch-nl}[2004/07/30 package wrapper for m-ch-nl.tex] + +\newif\ifPPCH@PSTRICKS + +\DeclareOption{pstricks}{\PPCH@PSTRICKStrue} +\DeclareOption{pictex}{\PPCH@PSTRICKSfalse} + +\ExecuteOptions{pictex} +\ProcessOptions\relax + +\ifPPCH@PSTRICKS +  \RequirePackage{pstricks,pst-plot} +\else +  \RequirePackage{m-pictex} +\fi + +\input{m-ch-nl.tex} + +\endinput
\ No newline at end of file diff --git a/tex/latex/context/m-metapo.sty b/tex/latex/context/m-metapo.sty index c1d9f3a9f..2d568df96 100644 --- a/tex/latex/context/m-metapo.sty +++ b/tex/latex/context/m-metapo.sty @@ -1 +1,5 @@ -\input m-metapo.tex \relax \endinput  +\ProvidesPackage{m-metapo}[2004/07/30 package wrapper for m-metapo.tex] + +\input{m-metapo.tex} + +\endinput
\ No newline at end of file diff --git a/tex/latex/context/m-pictex.sty b/tex/latex/context/m-pictex.sty index be5dd8504..18630f2cc 100644 --- a/tex/latex/context/m-pictex.sty +++ b/tex/latex/context/m-pictex.sty @@ -1 +1,5 @@ -\input m-pictex.tex \relax \endinput  +\ProvidesPackage{m-pictex}[2004/07/30 package wrapper for m-pictex.tex] + +\input{m-pictex.tex} + +\endinput
\ No newline at end of file | 
