From 94d0527506ced512de9c2ee13e160d81414191e7 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Fri, 27 Jan 2006 13:58:00 +0100 Subject: stable 2006.01.27 13:58 --- tex/context/base/colo-ini.tex | 18 +- tex/context/base/cont-fil.tex | 5 + tex/context/base/cont-new.tex | 2 +- tex/context/base/context.tex | 9 +- tex/context/base/core-buf.tex | 20 +- tex/context/base/core-fil.tex | 2 +- tex/context/base/core-ini.tex | 2 +- tex/context/base/core-int.tex | 2 +- tex/context/base/core-itm.tex | 4 +- tex/context/base/core-mat.tex | 666 +++++++++++++++++++++++++++++++++++++- tex/context/base/core-mis.tex | 346 ++++++++++---------- tex/context/base/core-ntb.tex | 83 ++--- tex/context/base/core-obj.tex | 2 +- tex/context/base/core-ref.tex | 12 +- tex/context/base/core-rul.tex | 119 ++----- tex/context/base/core-sec.tex | 4 +- tex/context/base/core-sys.tex | 12 + tex/context/base/core-tbl.tex | 6 +- tex/context/base/enco-chi.tex | 2 +- tex/context/base/enco-ini.tex | 19 +- tex/context/base/filt-ini.tex | 2 +- tex/context/base/font-chi.tex | 72 +++-- tex/context/base/font-ini.tex | 12 +- tex/context/base/font-jap.tex | 59 ++-- tex/context/base/font-uni.tex | 205 +++++------- tex/context/base/hand-ini.tex | 2 +- tex/context/base/java-ini.tex | 2 +- tex/context/base/lang-chi.tex | 4 +- tex/context/base/lang-ini.tex | 14 +- tex/context/base/lang-jap.tex | 12 +- tex/context/base/m-gnuplot.tex | 2 +- tex/context/base/m-units.tex | 2 +- tex/context/base/math-pln.tex | 86 ++--- tex/context/base/meta-ini.tex | 2 +- tex/context/base/mult-com.tex | 8 + tex/context/base/mult-con.tex | 19 +- tex/context/base/mult-sys.tex | 7 +- tex/context/base/page-bck.tex | 2 +- tex/context/base/page-flt.tex | 22 +- tex/context/base/page-ini.tex | 59 ++-- tex/context/base/regi-uni.tex | 3 +- tex/context/base/regi-utf.tex | 2 + tex/context/base/s-chi-00.tex | 6 +- tex/context/base/s-jap-00.tex | 23 ++ tex/context/base/spec-ini.tex | 8 +- tex/context/base/supp-fil.tex | 10 +- tex/context/base/supp-fun.tex | 2 +- tex/context/base/supp-mat.tex | 15 +- tex/context/base/syst-ext.tex | 14 + tex/context/base/syst-gen.tex | 21 +- tex/context/base/syst-pln.tex | 26 +- tex/context/base/type-enc.tex | 55 +++- tex/context/base/type-pre.tex | 1 + tex/context/base/type-syn.tex | 120 ++++++- tex/context/base/unic-chi.tex | 26 -- tex/context/base/unic-cjk.tex | 16 + tex/context/base/unic-exp.tex | 44 ++- tex/context/base/unic-ext.tex | 35 -- tex/context/base/unic-ini.tex | 81 ++++- tex/context/base/x-set-11.tex | 12 +- tex/context/base/xtag-ext.tex | 17 +- tex/context/base/xtag-ini.tex | 9 +- tex/context/base/xtag-stk.tex | 166 ++++++++++ tex/context/interface/cont-cz.xml | 29 +- tex/context/interface/cont-de.xml | 29 +- tex/context/interface/cont-en.xml | 29 +- tex/context/interface/cont-fr.xml | 29 +- tex/context/interface/cont-it.xml | 29 +- tex/context/interface/cont-nl.xml | 29 +- tex/context/interface/cont-ro.xml | 29 +- tex/context/interface/keys-cz.xml | 9 +- tex/context/interface/keys-de.xml | 9 +- tex/context/interface/keys-en.xml | 9 +- tex/context/interface/keys-fr.xml | 9 +- tex/context/interface/keys-it.xml | 9 +- tex/context/interface/keys-nl.xml | 9 +- tex/context/interface/keys-ro.xml | 9 +- 77 files changed, 1936 insertions(+), 970 deletions(-) create mode 100644 tex/context/base/s-jap-00.tex delete mode 100644 tex/context/base/unic-chi.tex create mode 100644 tex/context/base/unic-cjk.tex delete mode 100644 tex/context/base/unic-ext.tex create mode 100644 tex/context/base/xtag-stk.tex (limited to 'tex') diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex index c5f220dd5..d8b057f11 100644 --- a/tex/context/base/colo-ini.tex +++ b/tex/context/base/colo-ini.tex @@ -182,18 +182,18 @@ \startmessages french library: colors title: color - 1: le système -- est globalement activé - 2: le système -- est localement activé - 3: -- n'est pas défini -- - 4: le système -- est chargé - 5: système -- inconnu + 1: le système -- est globalement activé + 2: le système -- est localement activé + 3: -- n'est pas défini -- + 4: le système -- est chargé + 5: système -- inconnu 6: la palette -- est disponible 7: le palette -- n'est pas disponible - 8: la spécification -- de la couleur -- devient noire - 9: l'espace de couleur -- n'est pas supporté - 10: -- l'espace de couleur est supporté + 8: la spécification -- de la couleur -- devient noire + 9: l'espace de couleur -- n'est pas supporté + 10: -- l'espace de couleur est supporté 11: la couleur est convertie en niveau de gris - 12: -- est enregistré + 12: -- est enregistré \stopmessages %D We use a couple of local registers. That way we don't have diff --git a/tex/context/base/cont-fil.tex b/tex/context/base/cont-fil.tex index a28647b07..6988f57f0 100644 --- a/tex/context/base/cont-fil.tex +++ b/tex/context/base/cont-fil.tex @@ -96,9 +96,14 @@ \definefilesynonym [abr-smallcaps] [abr-02] \definefilesynonym [chinese] [chi-00] +\definefilesynonym [japanese] [jap-00] + %definefilesynonym [chi-simplified] [chi-01] %definefilesynonym [chi-traditional] [chi-02] \definefilesynonym [greek] [grk-00] +\definefilesynonym [unic-chi] [unic-cjk] +\definefilesynonym [unic-jap] [unic-cjk] + \endinput diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index fe6f7df02..52a83ee2b 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -24,7 +24,7 @@ \normalend}} \fi -\newcontextversion{2006.01.16 18:35} +\newcontextversion{2006.01.27 13:58} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index b4e228ae3..64b9f9134 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -31,7 +31,7 @@ %D 2004.8.30 the low level interface is english. Watch out and adapt %D your styles an modules. -\def\contextversion{2006.01.16 18:35} +\def\contextversion{2006.01.27 13:58} %D For those who want to use this: @@ -189,7 +189,7 @@ \input lang-ctx.tex \input lang-dis.tex % after lang-ctx ! \input unic-ini.tex -\input unic-ext.tex +%input unic-ext.tex % obsolete \input colo-ini.tex \input colo-ext.tex @@ -300,6 +300,7 @@ %D functionality: \input lang-chi.tex +\input lang-jap.tex %D How about fill||in fields and related stuff? @@ -325,6 +326,7 @@ \input type-ini.tex \input type-def.tex + \input prop-ini.tex \input prop-lay.tex % needs core-ref.tex \input prop-mis.tex @@ -359,7 +361,8 @@ \input xtag-ini.tex \input xtag-ext.tex \input xtag-prs.tex -\input xtag-map.tex +\input xtag-map.tex % may become obsolete +\input xtag-stk.tex \input xtag-exp.tex \input xtag-pre.tex \input xtag-xsd.tex diff --git a/tex/context/base/core-buf.tex b/tex/context/base/core-buf.tex index 56897c824..7462ea6ff 100644 --- a/tex/context/base/core-buf.tex +++ b/tex/context/base/core-buf.tex @@ -129,18 +129,18 @@ \startmessages french library: textblocks title: textblocks - 1: nouvelle version, une seconde passe est nécessaire + 1: nouvelle version, une seconde passe est nécessaire 2: ecriture des blocs vers -- 3: lecture des blocs en provenance de -- - 4: seconde passe nécessaire - 5: -- non caché - 6: -- caché et traité - 7: -- caché - 8: -- composé - 9: -- non composé - 10: -- chargé et traité - 11: -- chargé et composé - 12: -- sauté + 4: seconde passe nécessaire + 5: -- non caché + 6: -- caché et traité + 7: -- caché + 8: -- composé + 9: -- non composé + 10: -- chargé et traité + 11: -- chargé et composé + 12: -- sauté \stopmessages \unprotect diff --git a/tex/context/base/core-fil.tex b/tex/context/base/core-fil.tex index 09c91be56..e8b92221c 100644 --- a/tex/context/base/core-fil.tex +++ b/tex/context/base/core-fil.tex @@ -56,7 +56,7 @@ \startmessages french library: files title: files - 1: le synonyme de fichier -- est déjà utilisé pour -- + 1: le synonyme de fichier -- est déjà utilisé pour -- \stopmessages %D \macros diff --git a/tex/context/base/core-ini.tex b/tex/context/base/core-ini.tex index a63b0c74e..4f6e9fe1d 100644 --- a/tex/context/base/core-ini.tex +++ b/tex/context/base/core-ini.tex @@ -36,7 +36,7 @@ \appendtoks \registerparoptions \to \everypar \appendtoks \flushsyncpositions \to \everypar \appendtoks \flushpostponednodedata \to \everypar -\appendtoks \dohandlespeech \to \everypar +\appendtoks \dohandlerepeatdelimitedtext \to \everypar \appendtoks \insertparagraphintro \to \everypar \appendtoks \flushpostponedbookmark \to \neverypar diff --git a/tex/context/base/core-int.tex b/tex/context/base/core-int.tex index c1eb33f3f..90bcc23fa 100644 --- a/tex/context/base/core-int.tex +++ b/tex/context/base/core-int.tex @@ -152,7 +152,7 @@ title: version 1: @+ manquant 2: marquage des pages - 3: pages sélectionnées : -- + 3: pages sélectionnées : -- \stopmessages \unprotect diff --git a/tex/context/base/core-itm.tex b/tex/context/base/core-itm.tex index 85dff12bd..8b216190b 100644 --- a/tex/context/base/core-itm.tex +++ b/tex/context/base/core-itm.tex @@ -45,7 +45,7 @@ \stopmessages \startmessages french library: layouts - 9: pas plus de -- niveaux pour l'instant dans les élémentarisations + 9: pas plus de -- niveaux pour l'instant dans les élémentarisations \stopmessages \unprotect @@ -177,7 +177,7 @@ \v!inmargin*=>\setitemparameter{#1}\c!width{-2em}, % signal \v!atmargin*=>\doifnot{#1}{1}{\setitemparameter{#1}\c!width{0em}}, % signal \v!intext*=>\settrue\inlinelistitem, % new - \v!loose*=>\optimizeitemsfalse, + \v!loose*=>\setfalse\optimizelistitem, \v!paragraph*=>\settrue\paragraphlistitem \packitems, \v!joinedup*=>\dosetuppackeditemgroup{#1}% diff --git a/tex/context/base/core-mat.tex b/tex/context/base/core-mat.tex index 4e716cffe..603f18d62 100644 --- a/tex/context/base/core-mat.tex +++ b/tex/context/base/core-mat.tex @@ -268,7 +268,8 @@ \fi \advance\displaywidth-\displayindent \advance\displaywidth-\rightdisplayskip - \advance\displaywidth-\rightdisplaymargin} + \advance\displaywidth-\rightdisplaymargin + \hsize\displaywidth} % new, else overfull in itemize \newif\ifoptimizedisplayspacing @@ -294,7 +295,12 @@ \switchtoformulabodyfont[#2]% \parskip\formulaparskip \def\currentformula{#1}% - \doifsomething{\formulaparameter\c!margin}% so we test first +% may look better in itemizations +\doif{\formulaparameter\c!option}\v!middle + {\def\leftdisplayskip{\zeropoint}% + \def\rightdisplayskip{\zeropoint}}% +% this was an experiment + \doif{\formulaparameter\c!margin}% so we test first {\dosetleftskipadaption{\formulaparameter\c!margin}% \edef\leftdisplaymargin{\the\leftskipadaption}}% overloaded \long\def\dostartformula##1{\bgroup\let\dostopformula\egroup}% @@ -549,30 +555,80 @@ {\setfalse\incrementformulanumber \dodoubleempty\doplaceformula} +% \def\doplaceformula[#1][#2]% #2 = dummy, gobbles spaces +% {\def\redoplaceformula +% {\bgroup\def\dostartformula####1{\relax}% +% \ifx\next\bgroup +% \@EA\moreplaceformula % [ref]{} +% \else +% \expandafter\convertargument\e!start\to\asciiA % actually, \next's meaning is \dostartformula +% \expandafter\convertargument\next \to\asciiB +% \ExpandBothAfter\doifincsnameelse\asciiA\asciiB +% {\egroup \@EA\dodoplaceformula}% [ref]\start +% {\egroup \@EA\dispplaceformula}% [ref]$$ +% \fi[#1]{}}% +% \futurelet\next\redoplaceformula} +% +% \long\def\moreplaceformula[#1]#2#3#4% #2 dummy #4 gobbles spaces +% {\def\redoplaceformula +% {\expandafter\convertargument\e!start\to\asciiA +% \expandafter\convertargument\next \to\asciiB +% \ExpandBothAfter\doifincsnameelse\asciiA\asciiB +% {\egroup \dodoplaceformula}% [ref]\start +% {\egroup \dispplaceformula}% [ref]$$ +% [#1]{#3}}% +% \futurelet\next\redoplaceformula#4} +% +% BEGIN OF PATCH (CORE-MAT.TEX) + \def\doplaceformula[#1][#2]% #2 = dummy, gobbles spaces {\def\redoplaceformula - {\bgroup\def\dostartformula####1{\relax}% + {\bgroup \ifx\next\bgroup - \@EA\moreplaceformula % [ref]{} + \egroup \@EA\moreplaceformula % [ref]{} \else - \expandafter\convertargument\e!start\to\asciiA - \expandafter\convertargument\next \to\asciiB - \ExpandBothAfter\doifincsnameelse\asciiA\asciiB - {\egroup \@EA\dodoplaceformula}% [ref]\start - {\egroup \@EA\dispplaceformula}% [ref]$$ + \def\nextnext{$}% + \ifx\next\nextnext + \egroup \@EAEAEA\dispplaceformula % [ref]$$ + \else + \egroup \@EAEAEA\dodoplaceformula % [ref]\start + \fi \fi[#1]{}}% \futurelet\next\redoplaceformula} \long\def\moreplaceformula[#1]#2#3#4% #2 dummy #4 gobbles spaces {\def\redoplaceformula - {\expandafter\convertargument\e!start\to\asciiA - \expandafter\convertargument\next \to\asciiB - \ExpandBothAfter\doifincsnameelse\asciiA\asciiB - {\egroup \dodoplaceformula}% [ref]\start - {\egroup \dispplaceformula}% [ref]$$ + {\bgroup + \def\nextnext{$}% + \ifx\next\nextnext + \egroup \@EA\dispplaceformula % [ref]$$ + \else + \egroup \@EA\dodoplaceformula % [ref]\start + \fi [#1]{#3}}% \futurelet\next\redoplaceformula#4} +% END OF PATCH + +\def\startformulas#1\stopformulas % new / to be internationalized + {\bgroup + \forgetdisplayskips + \startdisplaymath + \setlocalhsize + \long\def\startformula##1\stopformula{\advance\scratchcounter\plusone}% + \scratchcounter\zerocount #1% preroll + \divide \hsize \scratchcounter + \hbox to \localhsize \bgroup + \hss + \def\normalstartformula{\vskip-\strutdepth$$}% i hate this + \def\normalstopformula {$$}% + \def\startformula{$\vcenter\bgroup\normalstartformula}% + \def\stopformula {\normalstopformula\egroup$\hss}% + #1% + \egroup + \stopdisplaymath + \egroup} + \def\dispplaceformula[#1]#2$$#3$$% {\dodoplaceformula[#1]{#2}\dostartformula{}#3\dostopformula} @@ -1421,6 +1477,588 @@ \appendtoks \let\text\mathtext \to \everymathematics +%D \macros +%D {\definemathalignment, setupmathalignment, startmathalignment} +%D +%D Modules may provide additional alignment features. The following +%D mechanisms are provided by the core. + +% n>1 #### needed, strange # interaction in recurse + +\def\presetdisplaymath{\displ@y} % some day i will relocate the plain stuff + +\def\buildeqalign + {\scratchtoks\emptytoks + \dorecurse{\mathalignmentparameter\c!m} + {\ifnum\recurselevel>\plusone + \appendtoks + \tabskip\mathalignmentparameter\c!distance&\tabskip\zeropoint + \to\scratchtoks + \fi + \expanded{\scratchtoks{\the\scratchtoks\the\!!toksa}}% + \dorecurse{\numexpr\mathalignmentparameter\c!n-\plusone\relax} + {\expanded{\scratchtoks{\the\scratchtoks\the\!!toksb}}}}% + \expanded{\scratchtoks{\the\scratchtoks\the\!!toksc}}} + +\def\forgetalign + {\tabskip\zeropoint\everycr\emptytoks} + +\let\firstineqalign\empty +\let\nextineqalign \empty +\let\leftofeqalign \empty +\let\rightofeqalign\empty + +\def\mathineqalign#1{$\forgetalign\displaystyle{{}#1{}}$} +\def\textineqalign#1{$\forgetalign#1$} + +\def\eqalign#1% why no halign here, probably because of displaywidth + {\!!toksa{\strut\hfil$\displaystyle{##}$}% + \!!toksb{&$\displaystyle{{}##{}}$\hfil}% + \!!toksc\emptytoks + \buildeqalign + \null\,\vcenter + {\openup{.25\bodyfontsize}% was: \openup\jot + \mathsurround\zeropoint + \expandafter \ialign \expandafter {\the\scratchtoks\crcr#1\crcr}% + }\,} + +% preamble is scanned for tabskips so we need the span to prevent an error message + +\def\prepareeqalignno + {\!!toksa{\strut\firstineqalign\hfil\leftofeqalign\span\mathineqalign{##}\rightofeqalign\tabskip\zeropoint}% + \!!toksb{&\nextineqalign\leftofeqalign\span\mathineqalign{##}\rightofeqalign\tabskip\zeropoint}% + \!!toksc{\hfil\tabskip\centering&\llap{\span\textineqalign{##}}\tabskip\zeropoint}% + \buildeqalign + \presetdisplaymath + \tabskip\centering} + +\def\prepareleqalignno + {\!!toksa{\strut\firstineqalign\hfil\leftofeqalign\span\mathineqalign{##}\rightofeqalign\tabskip\zeropoint}% + \!!toksb{&\nextineqalign\leftofeqalign\span\mathineqalign{##}\rightofeqalign\tabskip\zeropoint}% + \!!toksc{\hfil\tabskip\centering&\kern-\displaywidth\rlap{\span\textineqalign{##}}\tabskip\displaywidth}% + \buildeqalign + \presetdisplaymath + \tabskip\centering} + +\chardef\eqalignmode=1 + +\def\eqalignno#1% + {\prepareeqalignno + \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA {\the\scratchtoks\crcr#1\crcr}} + +\def\leqalignno#1% + {\prepareleqaligno + \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA {\the\scratchtoks\crcr#1\crcr}} + +\def\aligneqalignno + {\prepareeqalignno + \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA \bgroup\the\scratchtoks\crcr} + +\def\alignleqalignno + {\prepareleqalignno + \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA \bgroup\the\scratchtoks\crcr} + +\def\finishalignno + {\crcr\egroup} + +%D Here we implement teh user interface part. + +\def\setupmathalignment + {\dodoubleempty\dosetupmathalignment} + +\def\dosetupmathalignment[#1][#2]% + {\ifsecondargument + \getparameters[\??eq#1][#2]% + \else + \getparameters[\??eq][#1]% + \fi} + +\let\currentmathalignment\empty + +\def\mathalignmentparameter#1% + {\executeifdefined{\??eq\currentmathalignment#1}{\executeifdefined{\??eq#1}\empty}} + +\setupmathalignment + [\c!n=2, + \c!m=1, + \c!distance=1em] + +\def\numberedeqalign + {\doifelse\@@fmlocation\v!left\alignleqalignno\aligneqalignno} + +\def\doxxdoubleempty#1#2% + {\ifx#2[\expandafter\dodoxxdoubleempty\else\expandafter\noxxdoubleempty\fi#1#2} + +\def\dodoxxdoubleempty#1[#2]#3% + {\ifx#3[\else\expandafter\nonoxxdoubleempty\fi#1[#2]#3} + +\def\noxxdoubleempty #1{#1[][]} +\def\nonoxxdoubleempty#1[#2]{#1[#2][]} + +\newcount\eqaligncolumn + +\def\firstineqalign{\global\eqaligncolumn\plusone} +\def\nextineqalign {\global\advance\eqaligncolumn\plusone} +\def\leftofeqalign {\getvalue{\??eq:\v!left :\number\eqaligncolumn}} +\def\rightofeqalign{\getvalue{\??eq:\v!right:\number\eqaligncolumn}} + +\def\doseteqaligncolumn#1% + {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\empty + \letvalue{\??eq:\v!right:\number\eqaligncolumn}\empty + \doif{#1}\v!left {\letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfill}% + \doif{#1}\v!right {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfill}% + \doif{#1}\v!middle{\letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfill + \letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfill}} + +\def\dodoalignNC + {\gdef\doalignNC##1{&##1}} + +\def\doalignNR[#1][#2]% + {\doifsomething{#1} + {\doifelse{#1}{+} + {\doformulanumber[][#2][]{}} + {\doformulanumber[#1][#2][]{}}}% + \crcr} + +% todo: pop in cell + +\def\dostartmathalignment[#1][#2]% + {\begingroup + \pushmacro\doalignNC + \edef\currentmathalignment{#1}% + \doifassignmentelse{#2}{\setupmathalignment[#1][#2]}\donothing + \def\NC{\doalignNC}% + \global\let\doalignNC\dodoalignNC + \def\EQ{&=}% + \def\NR{&\global\let\doalignNC\dodoalignNC\doxxdoubleempty\doalignNR}% + % amstex compatibility mode: (ugly, will disappear) + \def\notag{\def\\{&\crcr}}% + \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}% + % end of compatibility mode + \eqaligncolumn\zerocount + \processcommacommand[\mathalignmentparameter\c!align]{\advance\eqaligncolumn\plusone\doseteqaligncolumn}% + % the real action + \global\eqaligncolumn\plusone + \numberedeqalign} + +\def\dostopmathalignment + {\finishalignno + \popmacro\doalignNC + \endgroup} + +\def\definemathalignment + {\dodoubleempty\dodefinemathalignment} + +\def\dodefinemathalignment[#1]% [#2]% + {\setvalue{\e!start#1}{\dodoubleempty\dostartmathalignment[#1]}% + \setvalue{\e!stop #1}{\dostopmathalignment}% + \setupmathalignment[#1]}% [#2] + +%D For the moment we only provide english commands. + +\definemathalignment[align] % default case (this is what amstex users expect) +\definemathalignment[\v!mathalignment] % prefered case (this is cleaner, less clashing) + +% \def\startsplit +% {\startalign[*]} % no number by default +% +% \def\stopsplit +% {&\doalignNR[+][]\crcr % for a number on last line +% \stopalign} + +%D \startbuffer +%D \placeformula \startformula \eqalignno { +%D a &= b & \formulanumber \cr +%D c &= d \cr +%D &= e \cr +%D &= f & \formulanumber +%D } \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign +%D \NC a \EQ b \NR[+] +%D \NC c \EQ d \NR +%D \NC \EQ f \NR[for:demo-a-1] +%D \NC \EQ g \NR[for:demo-a-2][a] +%D \NC \EQ h \NR[for:demo-a-3][b] +%D \NC \EQ i \NR +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign +%D \NC a \EQ b \NR[+] +%D \NC c \EQ d \NR +%D \NC \EQ f \NR +%D \NC \EQ g \NR +%D \NC \EQ h \NR +%D \NC \EQ i \NR[+] +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign +%D a &= b \\ +%D c &= d \notag \\ +%D &= e \notag \\ +%D &= f \\ +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign +%D \NC a \NC \eq b \NR[+] +%D \NC c \NC \neq d \NR +%D \NC \NC \neq f \NR[for:demo-b-1] +%D \NC \NC \geq g \NR[for:demo-b-2][a] +%D \NC \NC \leq h \NR[for:demo-b-3][b] +%D \NC \NC \neq i \NR +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign[*] +%D a &= b \\ +%D c &= d \\ +%D &= e \\ +%D &= f \\ +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign +%D x &= y \\ +%D a &= b \\ +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign[m=3] +%D x &= y & x &= y & z &= t \\ +%D a &= b & p &= q & w &= s \\ +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign[m=3,distance=0pt] +%D x &= y &= x &= y &= z &= t \\ +%D a &= b &= p &= q &= w &= s \\ +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign[n=5,distance=0pt] +%D x &= yy &= xx &= yy &= zz \\ +%D a &= b &= p &= q &= w \\ +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign[n=3,align={left,middle,right}] +%D \NC l \NC = \NC r \NR +%D \NC left \NC = \NC right \NR +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign[n=3,align={right,middle,left}] +%D \NC l \NC = \NC r \NR +%D \NC left \NC = \NC right \NR +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startalign[n=3,align={middle,middle,middle}] +%D \NC l \NC = \NC r \NR +%D \NC left \NC = \NC right \NR +%D \stopalign \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula +%D \startformula +%D \startalign[n=3,align={middle,middle,middle}] +%D \NC a \NC = \NC b \NR[+] +%D \NC 2a \NC = \NC 2b \NR +%D \stopalign +%D \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula +%D \startformulas +%D \setupmathalignment[n=3,align={middle,middle,middle}]% +%D \startformula +%D \startalign +%D \NC a \NC = \NC b \NR[+] +%D \NC 2a \NC = \NC 2b \NR +%D \stopalign +%D \stopformula +%D \startformula +%D \startalign +%D \NC a \NC = \NC b \NR[+] +%D \NC 2a \NC = \NC 2b \NR +%D \stopalign +%D \stopformula +%D \stopformulas +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula +%D \startformulas +%D \dorecurse{5}{\startformula +%D \startalign[n=3,align={middle,middle,middle}] +%D \NC a \NC = \NC b \NR[+] +%D \NC 2a \NC = \NC 2b \NR +%D \stopalign +%D \stopformula} +%D \stopformulas +%D \stopbuffer +%D +%D \typebuffer \getbuffer + +%D \macros +%D {definemathcases, setupmathcases, startmathcases} +%D +%D Another wish \unknown + +\def\setupmathcases + {\dodoubleempty\dosetupmathcases} + +\def\dosetupmathcases[#1][#2]% + {\ifsecondargument + \getparameters[\??ce#1][#2]% + \else + \getparameters[\??ce][#1]% + \fi} + +\let\currentmathcases\empty + +\def\mathcasesparameter#1% + {\executeifdefined{\??ce\currentmathcases#1}{\executeifdefined{\??ce#1}\empty}} + +\setupmathcases + [\c!distance=1em, + \c!numberdistance=2.5em, + \c!left={\left\{\,}, + \c!right={\right.}] + +\def\dodocasesNC + {\gdef\docasesNC{\endmath&}} + +\let\docasesNR\doalignNR + +\def\dostartmathcases[#1][#2]% + {\begingroup + \edef\currentmathcases{#1}% + \doifassignmentelse{#2}{\setupmathcases[#1][#2]}\donothing + \mathcasesparameter\c!left + \vcenter\bgroup + \pushmacro\docasesNC + \let\endmath\relax + \def\NC{\docasesNC}% + \def\MC{\docasesNC\ifmmode\else$\def\endmath{$}\fi}% + \global\let\docasesNC\dodocasesNC + \def\NR{\endmath&\global\let\docasesNC\dodocasesNC\doxxdoubleempty\docasesNR}% + \normalbaselines + \mathsurround\zeropoint + \everycr\emptytoks + \tabskip\zeropoint + \global\eqaligncolumn\plusone + \halign\bgroup + $##$\hfil + &\hskip\mathcasesparameter\c!distance\relax\popmacro\docasesNC##\hfil + &\hskip\mathcasesparameter\c!numberdistance\relax\span\textineqalign{##}% + \crcr} % todo: number + +\def\dostopmathcases + {\crcr + \egroup + \popmacro\docasesNC + \egroup + \mathcasesparameter\c!right + \endgroup} + +\def\definemathcases + {\dodoubleempty\dodefinemathcases} + +\def\dodefinemathcases[#1]% [#2]% + {\setvalue{\e!start#1}{\dodoubleempty\dostartmathcases[#1]}% + \setvalue{\e!stop #1}{\dostopmathcases}% + \setupmathcases[#1]}% [#2] + +\definemathcases[cases] +\definemathcases[\v!mathcases] + +%D \startbuffer +%D \placeformula \startformula \startcases +%D \NC 2 \NC $ y > 0 $ \NR +%D \NC 7 \NC $ x = 7 $ \NR[+] +%D \NC 4 \NC otherwise \NR +%D \stopcases \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula x \startcases +%D \NC 2 \NC $ y > 0 $ \NR[+] +%D \NC 7 \NC $ x = 7 $ \NR +%D \NC 4 \NC otherwise \NR +%D \stopcases \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula \startcases +%D \NC 2 \NC $ y > 0 $ \NR +%D \NC 7 \NC $ x = 7 $ \NR +%D \NC 4 \NC otherwise \NR +%D \stopcases \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \startbuffer +%D \placeformula \startformula x \startcases +%D \NC 2 \NC $ y > 0 $ \NR +%D \NC 7 \NC $ x = 7 $ \NR +%D \NC 4 \NC otherwise \NR +%D \stopcases \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer + +%D \macros +%D {definemathmatrix, setupmathmatrix, startmathmatrix} +%D +%D Yet another one \unknown + +\def\setupmathmatrix + {\dodoubleempty\dosetupmathmatrix} + +\def\dosetupmathmatrix[#1][#2]% + {\ifsecondargument + \getparameters[\??mx#1][#2]% + \else + \getparameters[\??mx][#1]% + \fi} + +\let\currentmathmatrix\empty + +\def\mathmatrixparameter#1% + {\executeifdefined{\??mx\currentmathmatrix#1}{\executeifdefined{\??mx#1}\empty}} + +\setupmathmatrix + [\c!distance=1em, + \c!left=, + \c!right=] + +\def\definemathmatrix + {\dodoubleempty\dodefinemathmatrix} + +\def\dodefinemathmatrix[#1]% [#2]% + {\setvalue{\e!start#1}{\dodoubleempty\dostartmathmatrix[#1]}% + \setvalue{\e!stop #1}{\dostopmathmatrix}% + \setupmathmatrix[#1]}% [#2] + +\definemathmatrix[matrix] +\definemathmatrix[\v!mathmatrix] + +\def\dodomatrixNC + {\gdef\domatrixNC{\endmath&}} + +% \let\domatrixNR\doalignNR + +\def\dostartmathmatrix[#1][#2]% + {\begingroup + \edef\currentmathmatrix{#1}% + \doifassignmentelse{#2}{\setupmathmatrix[#1][#2]}\donothing + \null + \mathmatrixparameter\c!left + \vcenter\bgroup + \pushmacro\domatrixNC + \let\endmath\relax + \def\NC{\domatrixNC}% + \def\MC{\domatrixNC\ifmmode\else$\def\endmath{$}\fi}% + \global\let\domatrixNC\dodomatrixNC + %\def\NR{\endmath&\global\let\domatrixNC\dodomatrixNC\doxxdoubleempty\domatrixNR}% + \def\NR{\endmath\global\let\domatrixNC\dodomatrixNC\crcr}% + \normalbaselines + \mathsurround\zeropoint + \everycr\emptytoks + \tabskip\zeropoint + \global\eqaligncolumn\plusone + \halign\bgroup + \hfil$##$\hfil + &&\hskip\mathmatrixparameter\c!distance\relax\hfil$##$\hfil\crcr + \mathstrut\crcr + \noalign{\kern-\baselineskip}} + +\def\dostopmathmatrix + {\crcr + \mathstrut\crcr + \noalign{\kern-\baselineskip}% + \egroup + \popmacro\domatrixNC + \egroup + \mathmatrixparameter\c!right + \endgroup} + +%D \startbuffer +%D \placeformula \startformula[-] \startmatrix +%D \NC 1 \NC x \NC a \NR +%D \NC 2 \NC y \NC b \NR +%D \NC 3 \NC z \NC c \NR +%D \stopmatrix \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer +%D +%D \definemathmatrix[bmatrix][left={\left[\,},right={\,\right]}] +%D +%D \startbuffer +%D \placeformula \startformula[-] \startbmatrix +%D \NC 1 \NC x \NC a \NR +%D \NC 2 \NC y \NC b \NR +%D \NC 3 \NC z \NC c \NR +%D \stopbmatrix \stopformula +%D \stopbuffer +%D +%D \typebuffer \getbuffer + %D \macros %D {frac, xfrac, xxfrac} %D diff --git a/tex/context/base/core-mis.tex b/tex/context/base/core-mis.tex index 830d2b5a9..475383ea6 100644 --- a/tex/context/base/core-mis.tex +++ b/tex/context/base/core-mis.tex @@ -716,100 +716,99 @@ [\c!middlespeech] [\leftboundarycharacter\c!middlespeech{speech}] -%%%%% will be replaced by delimitedtext %%%%% - -\def\leftquotationmark - {\setbox\scratchbox\hbox{\symbol[\c!leftquotation]}% - \doif\@@cilocation\v!margin{\hskip-\wd\scratchbox}% - \box\scratchbox} - -\def\rightquotationmark - {\hsmash{\symbol[\c!rightquotation]}} - -\newsignal\quotationsignal - -\def\setupquote - {\dodoubleargument\getparameters[\??ci]} - -% \def\setuoquotation -% {\setupquote} - -\def\startquotation - {\bgroup\dosingleempty\dostartquotation} - -\def\dostartquotation[#1]% - {\@@cibefore - \doifelsenothing{#1} - {\let\dostopquotation\relax} - {\startnarrower[#1]% - \let\dostopquotation\stopnarrower}% - \dostartattributes\??ci\c!style\c!color\empty - \leftquotationmark - \ignorespaces} - -\def\stopquotation - {\removeunwantedspaces - \removelastskip - \rightquotationmark - \dostopattributes - \dostopquotation - \@@ciafter - \egroup} - -\def\dohandlequotation#1#2% - {\ifdim\lastskip=\quotationsignal - \unskip\hskip\hspaceamount\currentlanguage{interquotation}% - \else - #2% - \fi - \ifhmode % else funny pagebeaks - \penalty\!!tenthousand\hskip\zeropoint % == \prewordbreak - \fi - \strut % new, needed below - \symbol[#1]% - \penalty\!!tenthousand\hskip\quotationsignal} % +- \prewordbreak - -\def\handlequotation#1% - {\dohandlequotation{#1}\relax} - -\unexpanded\def\quotation - {\groupedcommand - {\dohandlequotation\c!leftquotation \relax} - {\dohandlequotation\c!rightquotation\removelastskip}} - -\unexpanded\def\quote - {\doifelse\@@cistyle\v!normal\doquotedcite\doattributedcite} - -\def\doquotedcite - {\groupedcommand - {\dohandlequotation\c!leftquote \relax} - {\dohandlequotation\c!rightquote\removelastskip}} - -\def\doattributedcite - {\groupedcommand - {\dostartattributes\??ci\c!style\c!color} - {\dostopattributes}} +% has been replaced by delimitedtext +% +% \def\leftquotationmark +% {\setbox\scratchbox\hbox{\symbol[\c!leftquotation]}% +% \doif\@@cilocation\v!margin{\hskip-\wd\scratchbox}% +% \box\scratchbox} +% +% \def\rightquotationmark +% {\hsmash{\symbol[\c!rightquotation]}} +% +% \newsignal\quotationsignal +% +% \def\setupquote +% {\dodoubleargument\getparameters[\??ci]} +% +% \def\startquotation +% {\bgroup\dosingleempty\dostartquotation} +% +% \def\dostartquotation[#1]% +% {\@@cibefore +% \doifelsenothing{#1} +% {\let\dostopquotation\relax} +% {\startnarrower[#1]% +% \let\dostopquotation\stopnarrower}% +% \dostartattributes\??ci\c!style\c!color\empty +% \leftquotationmark +% \ignorespaces} +% +% \def\stopquotation +% {\removeunwantedspaces +% \removelastskip +% \rightquotationmark +% \dostopattributes +% \dostopquotation +% \@@ciafter +% \egroup} +% +% \def\dohandlequotation#1#2% +% {\ifdim\lastskip=\quotationsignal +% \unskip\hskip\hspaceamount\currentlanguage{interquotation}% hardcoded +% \else +% #2% +% \fi +% \ifhmode % else funny pagebeaks +% \penalty\!!tenthousand\hskip\zeropoint % == \prewordbreak +% \fi +% \strut % new, needed below +% \symbol[#1]% +% \penalty\!!tenthousand\hskip\quotationsignal} % +- \prewordbreak +% +% \def\handlequotation#1% +% {\dohandlequotation{#1}\relax} +% +% \unexpanded\def\quotation +% {\groupedcommand +% {\dohandlequotation\c!leftquotation \relax} +% {\dohandlequotation\c!rightquotation\removelastskip}} +% +% \unexpanded\def\quote +% {\doifelse\@@cistyle\v!normal\doquotedcite\doattributedcite} +% +% \def\doquotedcite +% {\groupedcommand +% {\dohandlequotation\c!leftquote \relax} +% {\dohandlequotation\c!rightquote\removelastskip}} +% +% \def\doattributedcite +% {\groupedcommand +% {\dostartattributes\??ci\c!style\c!color} +% {\dostopattributes}} %D The previous one fails in \placefloat[left]{}{}, so instead %D we use the next alternative, where the first one is handled %D outside group. Watch the strut. -\unexpanded\def\quotation - {\dohandlequotation\c!leftquotation\relax - \groupedcommand \donothing - {\dohandlequotation\c!rightquotation\removelastskip}} - -\def\doquotedcite - {\dohandlequotation\c!leftquote\relax - \groupedcommand \donothing - {\dohandlequotation\c!rightquote\removelastskip}} - -\setupquote - [\c!location=\v!margin, - \c!style=\v!normal, - \c!color=, - \c!before=\startnarrower, - \c!after=\stopnarrower] +% has been replaced by delimitedtext +% +% \unexpanded\def\quotation +% {\dohandlequotation\c!leftquotation\relax +% \groupedcommand \donothing +% {\dohandlequotation\c!rightquotation\removelastskip}} +% +% \def\doquotedcite +% {\dohandlequotation\c!leftquote\relax +% \groupedcommand \donothing +% {\dohandlequotation\c!rightquote\removelastskip}} +% +% \setupquote +% [\c!location=\v!margin, +% \c!style=\v!normal, +% \c!color=, +% \c!before=\startnarrower, +% \c!after=\stopnarrower] \appendtoks\def\quotation#1{"#1"}\to\simplifiedcommands \appendtoks\def\quote #1{'#1'}\to\simplifiedcommands @@ -822,38 +821,38 @@ %D closing symbols are defined per language. Italian is an %D example of a language that has them set. -%%%%% will be replaced by delimitedtext %%%%% - -\newcounter\speechlevel \newconditional\insidespeech - -\def\startspeech - {\doglobal\increment\speechlevel\relax - \dohandlequotation\c!leftspeech\relax - \global\settrue\insidespeech - \ignorespaces} - -\def\stopspeech - {\dohandlequotation\c!rightspeech\removelastskip - \doglobal\decrement\speechlevel\relax - \ifcase\speechlevel\relax \global\setfalse\insidespeech \fi} - -\def\dohandlespeech % indirect since called in everypar - {\relax % still needed? - \ifcase\speechlevel\or\dodohandlespeech\fi} - -\def\dodohandlespeech - {\ifconditional\insidespeech - \dohandlequotation\c!middlespeech\relax - \else - \global\settrue\insidespeech - \fi} - -\unexpanded\def\speech - {\doglobal\increment\speechlevel\relax - \dohandlequotation\c!leftspeech\relax - \groupedcommand \ignorespaces - {\dohandlequotation\c!rightspeech\removelastskip - \doglobal\decrement\speechlevel\relax}} +% has been be replaced by delimitedtext +% +% \newcounter\speechlevel \newconditional\insidespeech +% +% \def\startspeech +% {\doglobal\increment\speechlevel\relax +% \dohandlequotation\c!leftspeech\relax +% \global\settrue\insidespeech +% \ignorespaces} +% +% \def\stopspeech +% {\dohandlequotation\c!rightspeech\removelastskip +% \doglobal\decrement\speechlevel\relax +% \ifcase\speechlevel\relax \global\setfalse\insidespeech \fi} +% +% \def\dohandlespeech % indirect since called in everypar +% {\relax % still needed? +% \ifcase\speechlevel\or\dodohandlespeech\fi} +% +% \def\dodohandlespeech +% {\ifconditional\insidespeech +% \dohandlequotation\c!middlespeech\relax +% \else +% \global\settrue\insidespeech +% \fi} +% +% \unexpanded\def\speech +% {\doglobal\increment\speechlevel\relax +% \dohandlequotation\c!leftspeech\relax +% \groupedcommand \ignorespaces +% {\dohandlequotation\c!rightspeech\removelastskip +% \doglobal\decrement\speechlevel\relax}} % \appendtoks \dohandlespeech \to \everypar @@ -887,6 +886,7 @@ \c!right=, \c!level=0, \c!repeat=\v!no, + \c!method=\s!font, #2]}% {\doifdefined{#2} {\copyparameters[\??ci#1][\??ci#2] @@ -913,13 +913,20 @@ \dohandledelimitedtext\c!middle \fi} +\let\dohandlerepeatdelimitedtext\relax + \def\startdelimitedtext[#1]% {\bgroup \def\currentdelimitedtext{#1}% - \doif{\delimitedtextparameter\c!repeat}\v!yes - {\appendtoks \dorepeatdelimitedtext \to \everypar}% - \doifinsetelse{\delimitedtextparameter\c!location}{\v!paragraph,\v!margin}% - {\dosingleempty\dostartdelimitedtextpar}\dostartdelimitedtexttxt} + \doifelse{\delimitedtextparameter\c!method}\s!font + {\doglobal\decrementvalue{\??ci\currentdelimitedtext\c!level}% + \def\dostopdelimitedtext{\nohandledelimitedtext\c!right}% + \nohandledelimitedtext\c!left} + {\doifelse{\delimitedtextparameter\c!repeat}\v!yes + {\let\dohandlerepeatdelimitedtext\dorepeatdelimitedtext}% + {\let\dohandlerepeatdelimitedtext\relax}% + \doifinsetelse{\delimitedtextparameter\c!location}{\v!paragraph,\v!margin}% + {\dosingleempty\dostartdelimitedtextpar}\dostartdelimitedtexttxt}} \def\dostartdelimitedtextpar[#1]% {\let\dostopdelimitedtext\dostopdelimitedtextpar @@ -971,8 +978,10 @@ \def\delimitedtext[#1]% {\pushmacro\currentdelimitedtext \def\currentdelimitedtext{#1}% - \doifinsetelse{\delimitedtextparameter\c!location}{\v!paragraph,\v!margin}% - \dodelimitedtextpar\dodelimitedtexttxt} + \doifelse{\delimitedtextparameter\c!method}\s!font + {\dofontdrivendelimited} + {\doifinsetelse{\delimitedtextparameter\c!location}{\v!paragraph,\v!margin}% + \dodelimitedtextpar\dodelimitedtexttxt}} % shortcuts @@ -990,8 +999,8 @@ {\hsmash{\delimitedtextparameter\c!right}} \def\dohandledelimitedtext#1#2% - {\bgroup - \setbox\scratchbox\hbox{#1}% + {\begingroup + \setbox\scratchbox\hbox{\delimitedtextparameter#1}% \ifdim\wd\scratchbox>\zeropoint \ifdim\lastskip=\delimitedtextsignal \unskip\hskip\hspaceamount\currentlanguage{interquotation}% @@ -1002,10 +1011,13 @@ \penalty\!!tenthousand\hskip\zeropoint % == \prewordbreak \fi \strut % new, needed below - \delimitedtextparameter#1% + \delimitedtextparameter#1% unhbox\scratchbox \penalty\!!tenthousand\hskip\delimitedtextsignal % +- \prewordbreak \fi - \egroup} + \endgroup} + +\def\nohandledelimitedtext#1#2% + {\delimitedtextparameter#1} \def\handledelimitedtext#1% {\dohandledelimitedtext{#1}\relax} @@ -1033,32 +1045,38 @@ {\dostartattributes{\??ci\currentdelimitedtext}\c!style\c!color} {\dostopattributes \popmacro\currentdelimitedtext}} + +\def\dofontdrivendelimited + {\groupedcommand + {\dohandledelimitedtext\c!left\relax} + {\dohandledelimitedtext\c!right\relax + \popmacro\currentdelimitedtext}} -% \definedelimitedtext -% [\v!quotation] -% [\c!left={\symbol[\c!leftquotation]}, -% \c!right={\symbol[\c!rightquotation]}, -% \c!leftmargin=\v!standard] -% -% \definedelimitedtext -% [\v!quote][\v!quotation] -% -% \setupdelimitedtext -% [\v!quote] -% [\c!location=\v!text, -% \c!left={\symbol[\c!leftquote]}, -% \c!right={\symbol[\c!rightquote]}] -% -% \definedelimitedtext -% [\v!speech][\v!quotation] -% -% \setupdelimitedtext -% [\v!speech] -% [\c!repeat=\v!yes, -% \c!left={\symbol[\c!leftspeech]}, -% \c!middle={\symbol[\c!middlespeech]}, -% \c!right={\symbol[\c!rightspeech]}] -% +\definedelimitedtext + [\v!quotation] + [\c!left={\symbol[\c!leftquotation]}, + \c!right={\symbol[\c!rightquotation]}, + \c!leftmargin=\v!standard] + +\definedelimitedtext + [\v!quote][\v!quotation] + +\setupdelimitedtext + [\v!quote] + [\c!location=\v!text, + \c!left={\symbol[\c!leftquote]}, + \c!right={\symbol[\c!rightquote]}] + +\definedelimitedtext + [\v!speech][\v!quotation] + +\setupdelimitedtext + [\v!speech] + [\c!repeat=\v!yes, + \c!left={\symbol[\c!leftspeech]}, + \c!middle={\symbol[\c!middlespeech]}, + \c!right={\symbol[\c!rightspeech]}] + % how do we call an tight quote % % \definedelimitedtext @@ -1068,9 +1086,9 @@ % [\v!quotation] % [\c!indentnext=\v!no, % \c!spacebefore=\v!nowhite] -% -% \def\setupquotation{\setupdelimitedtext[\v!quotation]} -% \def\setupquote {\setupdelimitedtext[\v!quote]} + +\def\setupquotation{\setupdelimitedtext[\v!quotation]} +\def\setupquote {\setupdelimitedtext[\v!quote]} % seldom used, move from kernel to run time module @@ -1775,15 +1793,15 @@ \getparameters[\??co][#1]% \fi} -\def\startcombination - {\dodoubleempty\dostartcombination} - \def\combinationparameter#1% {\csname\??co\currentcombination#1\endcsname}% +\def\startcombination + {\bgroup % so we can grab a group + \dodoubleempty\dostartcombination} + \def\dostartcombination[#1][#2]% - {\bgroup - \global\setsystemmode{combination}% + {\global\setsystemmode{combination}% \ifsecondargument \def\currentcombination{#1}% \else diff --git a/tex/context/base/core-ntb.tex b/tex/context/base/core-ntb.tex index ff0252069..1e607eabb 100644 --- a/tex/context/base/core-ntb.tex +++ b/tex/context/base/core-ntb.tex @@ -62,11 +62,11 @@ %D and following white space. \def\bTBLCELL % why not \doinhibitblank - {\inhibitblank\doconvertfont\tbltblstyle\empty\everypar{\begstrut}} + {\inhibitblank\doconvertfont\tbltblstyle\empty\everypar{\delayedbegstrut}} \def\eTBLCELL {\ifhmode - \endstrut + \delayedendstrut \else \par \ifdim\prevdepth<\zeropoint % =-1000pt ? @@ -259,9 +259,9 @@ \executeifdefined{\@@tblprefix\v!header#2}\donothing \fi \executeifdefined{\@@tblprefix\c!y#1}\donothing -\getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax % new, see x-fo + \getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax % new, see x-fo \executeifdefined{\@@tblprefix\c!x#2}\donothing -\getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax % new, see x-fo + \getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax % new, see x-fo \executeifdefined{\@@tblprefix\c!x#2\c!y#1}\donothing \global\letcscsname\@@tblsplitafter\csname\@@tbl\@@tbl\c!after\endcsname \relax} @@ -347,7 +347,7 @@ \increment\col}% \increment\row}% % check max column - \decrement\col + \decrement\col\relax \ifnum\col>\maximumcol\relax \let\maximumcol\col \fi @@ -567,22 +567,24 @@ \doifnottblcol\row\col{\settblcol\row\col\!!zerocount}% \doifnottbltag\row\col{\settbltag\row\col\tblnone}}}% % check and do - \startTBLprocessing - \begTBL - \dorecurse\maximumrow - {\bTBL - \let\row\recurselevel - \dorecurse\maximumcol - {\let\col\recurselevel - \expanded{\doTBL{\row}{\col}}}% - \eTBL}% - \removeunwantedspaces % only if hmode - \endTBL - \stopTBLprocessing - % wrong ! ! ! better to have an auto-offset-overlay - % \ifnum\TBLlevel>1 - % \vskip-\strutdp - % \fi + \ifcase\maximumcol\else + \startTBLprocessing + \begTBL + \dorecurse\maximumrow + {\bTBL + \let\row\recurselevel + \dorecurse\maximumcol + {\let\col\recurselevel + \expanded{\doTBL{\row}{\col}}}% + \eTBL}% + \removeunwantedspaces % only if hmode + \endTBL + \stopTBLprocessing + % wrong ! ! ! better to have an auto-offset-overlay + % \ifnum\TBLlevel>1 + % \vskip-\strutdp + % \fi + \fi \egroup \popTBL} @@ -825,24 +827,26 @@ \fi\fi{\the\tbltoks}} \def\stretchtblwidths - {\!!dimend\zeropoint - \!!dimene\hsize - \dorecurse\maximumcol - {\advance\!!dimend \gettblwid\recurselevel - \advance\!!dimend \tbltblcolumndistance - \advance\!!dimene-\gettbldis\recurselevel}% - \advance\!!dimend-\tbltblcolumndistance - \advance\!!dimend\tbltblleftmargindistance - \advance\!!dimend\tbltblrightmargindistance - % distribute width (stretch) - \ifdim\!!dimend<\!!dimene - \advance\!!dimend-\!!dimene - \!!dimend-\!!dimend - \divide\!!dimend\maximumcol + {\ifcase\maximumcol\else % else division by zero + \!!dimend\zeropoint + \!!dimene\hsize \dorecurse\maximumcol - {\scratchdimen\gettblwid\recurselevel - \advance\scratchdimen\!!dimend - \settblwid\recurselevel{\the\scratchdimen}}% + {\advance\!!dimend \gettblwid\recurselevel + \advance\!!dimend \tbltblcolumndistance + \advance\!!dimene-\gettbldis\recurselevel}% + \advance\!!dimend-\tbltblcolumndistance + \advance\!!dimend\tbltblleftmargindistance + \advance\!!dimend\tbltblrightmargindistance + % distribute width (stretch) + \ifdim\!!dimend<\!!dimene + \advance\!!dimend-\!!dimene + \!!dimend-\!!dimend + \divide\!!dimend\maximumcol + \dorecurse\maximumcol + {\scratchdimen\gettblwid\recurselevel + \advance\scratchdimen\!!dimend + \settblwid\recurselevel{\the\scratchdimen}}% + \fi \fi} \newbox\finaltblbox @@ -1365,7 +1369,8 @@ \c!style=, \c!headstyle=\v!bold, \c!headcolor=, - \c!strut=\v!no, + \c!strut=\v!yes, + \c!autostrut=\v!no, \c!aligncharacter=\v!no, \c!alignmentcharacter={,}, \c!option=, % \v!stretch diff --git a/tex/context/base/core-obj.tex b/tex/context/base/core-obj.tex index 93c21e269..d9e51911c 100644 --- a/tex/context/base/core-obj.tex +++ b/tex/context/base/core-obj.tex @@ -52,7 +52,7 @@ \startmessages french library: references 30: objet -- inconnu - 31: objet -- dupliqué + 31: objet -- dupliqué \stopmessages %D \macros diff --git a/tex/context/base/core-ref.tex b/tex/context/base/core-ref.tex index 17474a0b4..eada84ce1 100644 --- a/tex/context/base/core-ref.tex +++ b/tex/context/base/core-ref.tex @@ -121,13 +121,13 @@ \startmessages french library: references title: references - 1: réference -- inconnue - 2: réference -- dupliquée à la page -- - 3: type -- de réference inconnu - 4: réference -- inconnue - 21: document -- chargé + 1: réference -- inconnue + 2: réference -- dupliquée à la page -- + 3: type -- de réference inconnu + 4: réference -- inconnue + 21: document -- chargé 22: le document -- n'est pas interactif - 23: reference -- indéterminé (préfixe=--) + 23: reference -- indéterminé (préfixe=--) \stopmessages %D This module deals with referencing. In \CONTEXT\ referencing diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex index a617559f2..88fcb8cb2 100644 --- a/tex/context/base/core-rul.tex +++ b/tex/context/base/core-rul.tex @@ -587,6 +587,8 @@ %D start with defining some booleans. These give an impression %D of what we are going to take into account. +% todo: chardefs + \newif\ifboxhasoffset \newif\ifboxhaswidth \newif\ifboxhasheight @@ -594,6 +596,7 @@ \newif\ifboxhasstrut \newif\ifboxisoverlaid \newif\ifboxhasframe +\newif\ifdelayedstrut %D We also need a few \DIMENSIONS: @@ -644,7 +647,7 @@ \c!topframe,\c!bottomframe,\c!leftframe,\c!rightframe,% \c!rulethickness,\c!frameoffset,\c!background,\c!component,% \c!backgroundoffset,\c!backgroundscreen,\c!backgroundcolor,% - \c!align,\c!bottom,\c!top,\c!strut,\c!location,\c!setups,\c!extras]% + \c!align,\c!bottom,\c!top,\c!strut,\c!autostrut,\c!location,\c!setups,\c!extras]% \copyparameters[#1\c!background][#1]% [\c!radius,\c!corner,\c!depth]% \copyparameters[#1\c!frame][#1]% @@ -733,6 +736,7 @@ \edef\localformat{\framedparameter\c!align}% \edef\localstrut {\framedparameter\c!strut}% % these are not + \edef\@@localautostrut {\framedparameter\c!autostrut}% \edef\@@localframing {\framedparameter\c!frame}% \edef\@@locallocation {\framedparameter\c!location}% \edef\@@localorientation{\framedparameter\c!orientation}% @@ -843,6 +847,7 @@ \setstrut \else\ifx\localstrut\v!local \setfontstrut + \else \fi\fi\fi \ifboxhasstrut \setstrut @@ -854,10 +859,22 @@ \let\localendstrut\pseudoendstrut % was: \relax \let\localstrut \pseudostrut % was: \relax %\ifboxhasheight\ifdim\!!heighta<\strutht % saveguard - % \let\localbegstrut\relax % but not that - % \let\localstrut \relax % save afterall + % \let\localbegstrut\relax % but not that + % \let\localstrut \relax % save after all %\fi\fi \fi + \ifx\@@localautostrut\v!yes + \let\delayedbegstrut\relax + \let\delayedendstrut\relax + \let\delayedstrut \relax + \else + \let\delayedbegstrut\localbegstrut + \let\delayedendstrut\localendstrut + \let\delayedstrut \localstrut + \let\localbegstrut \relax + \let\localendstrut \relax + \let\localstrut \relax + \fi \ifboxhasheight \let\\\vboxednewline \ifboxhaswidth @@ -1473,99 +1490,6 @@ %D or free widths and heights. Each combination gets its own %D macro. -% \def\dopresetformatbox -% {\forgetall -% \oninterlineskip} - -% \def\doformatboxSomeFormat -% {\vbox to \!!heighta -% \bgroup -% \dopresetformatbox -% \hsize\!!widtha -% \vsize\!!heighta -% \raggedcommand -% \dobeforeframedbox -% \bgroup -% \localbegstrut -% \aftergroup\localendstrut -% \aftergroup\doafterframedbox -% \aftergroup\egroup -% \let\next=} - -% \def\doformatboxNoFormat -% {\vbox to \!!heighta -% \bgroup -% \dopresetformatbox -% \hsize\!!widtha -% \vsize\!!heighta -% \raggedcenter -% \vss -% \bgroup -% \localbegstrut -% \aftergroup\localendstrut -% \aftergroup\vss -% \aftergroup\egroup -% \let\next=} - -% \def\doformatboxHeight -% {\vbox to \!!heighta -% \bgroup -% \dopresetformatbox -% \raggedcommand -% \vss -% \bgroup -% \aftergroup\localendstrut -% \aftergroup\vss -% \aftergroup\egroup -% \localbegstrut -% \let\next=} - -% \def\doformatboxWidth -% {\vbox -% \bgroup -% \dopresetformatbox -% \hsize\!!widtha -% \raggedcommand -% \dobeforeframedbox -% \bgroup -% \localbegstrut -% \aftergroup\localendstrut -% \aftergroup\doafterframedbox -% \aftergroup\egroup -% \let\next=} - -% \def\doformatboxVSize -% {\vbox to \!!heighta -% \bgroup -% \forgetall -% \vsize\!!heighta -% \vss -% \bgroup -% \aftergroup\vss -% \aftergroup\egroup -% \hbox -% \bgroup -% \aftergroup\egroup -% \localstrut -% \let\next=} - -% \def\doformatboxHSize -% {\hbox to \!!widtha -% \bgroup -% \forgetall -% \hss -% \localstrut -% \bgroup -% \aftergroup\hss -% \aftergroup\egroup -% \let\next=} - -% \def\doformatboxNoSize -% {\hbox -% \bgroup -% \localstrut -% \let\next=} - \def\doformatboxSomeFormat {\vbox to \!!heighta \bgroup @@ -2675,7 +2599,7 @@ % \insidefloattrue % ? better \expanded{\switchtobodyfont[\framedtextparameter{#1}\c!bodyfont]}% \startcolor[\framedtextparameter{#1}\c!color]% - \localframed[\??kd#1][\c!strut=\v!no,#3]% + \localframed[\??kd#1][\c!strut=\v!no,#3]% todo: use delayedstrut \bgroup \let\\=\endgraf \framedtextparameter{#1}\c!inner % oud spul @@ -3409,6 +3333,7 @@ \c!bottom=\vss, \c!top=, \c!strut=\v!yes, + \c!autostrut=\v!yes, \c!location=\v!normal, \c!orientation=, \c!setups=] diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex index 555c5fcee..69b7f26cc 100644 --- a/tex/context/base/core-sec.tex +++ b/tex/context/base/core-sec.tex @@ -67,9 +67,9 @@ 2: sfarsit de bloc sectiune -- \stopmessages -\startmessages english library: structures +\startmessages french library: structures title: structure - 1: début de blocsection -- + 1: début de blocsection -- 2: fin de blocsection -- \stopmessages diff --git a/tex/context/base/core-sys.tex b/tex/context/base/core-sys.tex index c65ef64c2..f606b1ad7 100644 --- a/tex/context/base/core-sys.tex +++ b/tex/context/base/core-sys.tex @@ -303,6 +303,8 @@ \installexpander\v!yes {\convertmeaning } \installexpander\v!yes {\convertmeaning } % something lost ? \installexpander\v!strict {\reduceargument } +\installexpander {utf} {\reducetoutf} +%installexpander {xml} {see xtag-ext} \def\convertmeaning#1\to % watch the double expansion ! {\bgroup @@ -318,6 +320,16 @@ \reducetocoding[raw]% \edef\ascii{#1}% \expandafter\endgroup\expandafter\edef\expandafter#2\expandafter{\ascii}} + +% \setupindex[expansion=utf]\index{\eacute} + +\def\reducetoutf#1\to#2% + {\begingroup + \reducetocoding[uc]% + \let\uchar\uchartoutf + \let\unicodechar\numbertoutf + \edef\ascii{#1}% + \expandafter\endgroup\expandafter\edef\expandafter#2\expandafter{\ascii}} % \setvalue{statevalue\v!stop }{0} % \setvalue{statevalue\v!start }{1} diff --git a/tex/context/base/core-tbl.tex b/tex/context/base/core-tbl.tex index c3be264bd..4c2f238da 100644 --- a/tex/context/base/core-tbl.tex +++ b/tex/context/base/core-tbl.tex @@ -961,9 +961,9 @@ \globallet\tabulateruleheight\!!zeropoint \ExpandFirstAfter\processaction % use \setalignmentswitch instead [\getvalue{\??tt\currenttabulate\c!align}] - [\v!normal=>\def\@@tabulatealign{0},% = default value - \v!right=>\def\@@tabulatealign{1},% chardefs gebruiken - \v!left=>\def\@@tabulatealign{2},% + [ \v!normal=>\def\@@tabulatealign{0},% = default value + \v!right=>\def\@@tabulatealign{1},% chardefs gebruiken + \v!left=>\def\@@tabulatealign{2},% \v!middle=>\def\@@tabulatealign{3},% \s!default=>\def\@@tabulatealign{0},% \s!unknown=>\def\@@tabulatealign{0}]% diff --git a/tex/context/base/enco-chi.tex b/tex/context/base/enco-chi.tex index 1aaf5b235..9d77893a0 100644 --- a/tex/context/base/enco-chi.tex +++ b/tex/context/base/enco-chi.tex @@ -22,7 +22,7 @@ % untested, probably wrong -\startencoding[c-uni] +\startencoding[cjk-uni] \defineuclass 1 32 24 \defineuclass 1 32 28 diff --git a/tex/context/base/enco-ini.tex b/tex/context/base/enco-ini.tex index 53cec0d9d..befed9e05 100644 --- a/tex/context/base/enco-ini.tex +++ b/tex/context/base/enco-ini.tex @@ -118,7 +118,7 @@ \startmessages french library: encodings title: encoding 1: encodage -- - 2: l'encodage -- est chargé + 2: l'encodage -- est chargé 3: encodage -- inconnu \stopmessages @@ -1184,8 +1184,9 @@ \def\definecharacter#1 #2 % {\ifundefined{#1}\setvalue{#1}{\dohandlecharacter{#1}}\fi +% \doifnumberelse{\string#2} \doifnumberelse{\string#2} - {\setevalue{\characterprefix\characterencoding\string#1}{\dochar{#2}}% + {\setvalue{\characterprefix\characterencoding\string#1}{\dochar{#2}}% \doautosetregime{#1}{#2}} {\setvalue{\characterprefix\characterencoding\string#1}{#2}}} @@ -1654,7 +1655,19 @@ %D The next few macros are experimental and needed for unicoded %D chinese characters. -\def\defineuclass #1 #2 #3 {\setvalue{uc#2#3}{#1}} +\beginETEX + \def\defineuclass #1 #2 #3 % + {\setvalue{uc\the\numexpr#2*256+#3\relax}{#1}} +\endETEX + +\beginTEX + \def\defineuclass #1 #2 #3 % + {\scratchcounter256\relax + \multiply\scratchcounter#2\relax + \advance\scratchcounter#3\relax + \setvalue{uc\the\scratchcounter}{#1}} +\endTEX + \def\defineudigit #1 #2 #3 {\setvalue{\characterencoding uc#1}{\uchar{#2}{#3}}} %D It may look strange, but for the moment, we want the encoding diff --git a/tex/context/base/filt-ini.tex b/tex/context/base/filt-ini.tex index f9edc73dc..3df7da946 100644 --- a/tex/context/base/filt-ini.tex +++ b/tex/context/base/filt-ini.tex @@ -60,7 +60,7 @@ \startmessages french library: filters title: filter - 1: le filtre -- est chargé + 1: le filtre -- est chargé 2: filtre -- inconnu \stopmessages diff --git a/tex/context/base/font-chi.tex b/tex/context/base/font-chi.tex index 5d3e20f27..cf30470d7 100644 --- a/tex/context/base/font-chi.tex +++ b/tex/context/base/font-chi.tex @@ -12,6 +12,8 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +\ifx\handlechineseunicodeglyph\undefined \else \endinput \fi + % NOT YET ADAPTED TO THE NEW FONT MACROS %D The first implementation (most of which is here) is based on @@ -111,6 +113,8 @@ %D There are a few variables, that can be (re|)|set %D depending on the current font. They default to: +% hm, why don't we use the normal unicodestrut mechanism? + \def\chineseunicodescale {1.00} % not smaller than .85 \def\chineseunicodeheight {1.00} \def\chineseunicodedepth {1.00} @@ -164,25 +168,25 @@ \chardef\plusfour=4 \def\analyzechineseunicodeglyph % beware, no zerocount ! - {\chardef\chineseSstatus0\getvalue{uc\the\unicodeposition}\relax} + {\chardef\chineseSstatus0\getvalue{uc\number\unicodeposition}\relax} \def\analyzechineseunicodeenviroment {% left - \ifx (\nextglyph \chardef\chineseAstatus\plusone \else - \ifx [\nextglyph \chardef\chineseAstatus\plusone \else + \ifx (\nextutoken \chardef\chineseAstatus\plusone \else + \ifx [\nextutoken \chardef\chineseAstatus\plusone \else % right - \ifx ,\nextglyph \chardef\chineseAstatus\plustwo \else - \ifx .\nextglyph \chardef\chineseAstatus\plustwo \else - \ifx ?\nextglyph \chardef\chineseAstatus\plustwo \else - \ifx ;\nextglyph \chardef\chineseAstatus\plustwo \else - \ifx :\nextglyph \chardef\chineseAstatus\plustwo \else - \ifx !\nextglyph \chardef\chineseAstatus\plustwo \else - \ifx )\nextglyph \chardef\chineseAstatus\plustwo \else - \ifx ]\nextglyph \chardef\chineseAstatus\plustwo \else + \ifx ,\nextutoken \chardef\chineseAstatus\plustwo \else + \ifx .\nextutoken \chardef\chineseAstatus\plustwo \else + \ifx ?\nextutoken \chardef\chineseAstatus\plustwo \else + \ifx ;\nextutoken \chardef\chineseAstatus\plustwo \else + \ifx :\nextutoken \chardef\chineseAstatus\plustwo \else + \ifx !\nextutoken \chardef\chineseAstatus\plustwo \else + \ifx )\nextutoken \chardef\chineseAstatus\plustwo \else + \ifx ]\nextutoken \chardef\chineseAstatus\plustwo \else % space - \ifx\nextglyph\blankspace \chardef\chineseAstatus\plusthree \else - \ifx\nextglyph\space \chardef\chineseAstatus\plusthree \else - \chardef\chineseAstatus\zerocount + \ifx\nextutoken\blankspace \chardef\chineseAstatus\plusthree \else + \ifx\nextutoken\space \chardef\chineseAstatus\plusthree \else + \chardef\chineseAstatus\zerocount % unknown \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi % maybe save the last skip? @@ -209,15 +213,15 @@ \def\horizontalchineseunicodeglyph {\relax \ifhmode\else\dontleavehmode\fi % added - \setunicodescale\chineseunicodescale - \setunicodestrut\chineseunicodeheight\chineseunicodedepth + \setunicodescale\chineseunicodescale % redundant + \setunicodestrut\chineseunicodeheight\chineseunicodedepth % redundant \ifprocessingverbatim \iftracechinese \ruledhbox{\insertunicodeglyph}% \else \insertunicodeglyph \fi - \else\ifx\nextglyph\relax + \else\ifx\nextutoken\relax \insertunicodeglyph \else \analyzechineseunicodeglyph @@ -294,9 +298,9 @@ \ifprocessingverbatim % to do \horizontalchineseunicodeglyph \else - \setunicodescale\chineseunicodescale - \setunicodestrut\chineseunicodeheight\chineseunicodedepth - \ifx\nextglyph\relax + \setunicodescale\chineseunicodescale % redundant + \setunicodestrut\chineseunicodeheight\chineseunicodedepth % redundant + \ifx\nextutoken\relax \insertchineseglyph \ifvmode % catches \hbox{...}, actually \hbox should be \vbox -) \nointerlineskip @@ -848,12 +852,14 @@ \setupunicodefont [chinese] - [ \c!scale=\chineseunicodescale, - \c!height=\chineseunicodeheight, - \c!depth=\chineseunicodedepth, - \c!conversion=\chinesenumber, - \c!commands=\setchineseencoding, % needed for digits - \c!command=\handlechineseunicodeglyph] + [ \c!scale=\chineseunicodescale, + \c!height=\chineseunicodeheight, + \c!depth=\chineseunicodedepth, + \c!strut=\v!yes, + \c!interlinespace=\v!yes, + \c!conversion=\chinesenumber, + \c!commands=\setchineseencoding, % needed for digits + \c!command=\handlechineseunicodeglyph] %D For the moment, this encoding is implemented rather ugly. The %D trick is to move the encoding value from the current font @@ -902,8 +908,6 @@ \doifelse \currentregime {utf} { - \useunicodevector[chi] - \definefontsynonym [SimplifiedChineseRegular] [ChineseRegular] \definefontsynonym [SimplifiedChineseSlanted] [ChineseSlanted] \definefontsynonym [SimplifiedChineseItalic] [ChineseItalic] @@ -918,12 +922,12 @@ \definefontsynonym [TraditionalChineseBoldSlanted][ChineseBoldSlanted] \definefontsynonym [TraditionalChineseBoldItalic] [ChineseBoldItalic] - \definefontsynonym [ChineseRegular] [uni-htsong-][encoding=c-uni] - \definefontsynonym [ChineseSlanted] [uni-htsong-][encoding=c-uni] - \definefontsynonym [ChineseItalic] [uni-htsong-][encoding=c-uni] - \definefontsynonym [ChineseBold] [uni-hthei-] [encoding=c-uni] - \definefontsynonym [ChineseBoldSlanted][uni-hthei-] [encoding=c-uni] - \definefontsynonym [ChineseBoldItalic] [uni-hthei-] [encoding=c-uni] + \definefontsynonym [ChineseRegular] [uni-htsong-][encoding=cjk-uni] + \definefontsynonym [ChineseSlanted] [uni-htsong-][encoding=cjk-uni] + \definefontsynonym [ChineseItalic] [uni-htsong-][encoding=cjk-uni] + \definefontsynonym [ChineseBold] [uni-hthei-] [encoding=cjk-uni] + \definefontsynonym [ChineseBoldSlanted][uni-hthei-] [encoding=cjk-uni] + \definefontsynonym [ChineseBoldItalic] [uni-hthei-] [encoding=cjk-uni] \loadmapfile[uni-htsong.map] \loadmapfile[uni-htfs.map] diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex index 74384e88a..a352564ed 100644 --- a/tex/context/base/font-ini.tex +++ b/tex/context/base/font-ini.tex @@ -229,16 +229,16 @@ \startmessages french library: fonts title: bodyfont 1: encodage -- - 2: la variante -- est chargée + 2: la variante -- est chargée 3: variante -- inconnue - 4: policecorps -- n'est pas définie - 5: le style -- n'est pas défini - 6: -- est chargé + 4: policecorps -- n'est pas définie + 5: le style -- n'est pas défini + 6: -- est chargé 7: format -- inconnu 8: style -- defini % 9: mapping -- is loaded 10: fichier de police -- inconnu - 14: policecorps -- est défini (une définition globale pourrait être plus adéquat) + 14: policecorps -- est défini (une définition globale pourrait être plus adéquat) \stopmessages %D This module is one of the oldest modules of \CONTEXT. The @@ -863,7 +863,7 @@ %D defining it here, we have at least an safeguard for utility %D file reading. -\unexpanded\def\uchar#1#2{[#1,#2]} +\ifx\uchar\undefined \unexpanded\def\uchar#1#2{[#1,#2]} \fi %D We define some (very private) constants to improve speed, %D memory usage and consistency. diff --git a/tex/context/base/font-jap.tex b/tex/context/base/font-jap.tex index 4c84f1b88..6bb813ccc 100644 --- a/tex/context/base/font-jap.tex +++ b/tex/context/base/font-jap.tex @@ -12,6 +12,9 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +\ifx\handlejapaneseunicodeglyph\undefined \else \endinput \fi +\ifx\handlechineseunicodeglyph \undefined \input font-chi.tex \fi + \writestatus{loading}{Context Font Macros / Japanese} \unprotect @@ -26,44 +29,46 @@ \let\japaneseencoding\currentfontfileencoding \fi} -\def\japaneseunicodescale {1.00} -\def\japaneseunicodeheight {1.00} -\def\japaneseunicodedepth {1.00} +\def\japaneseunicodescale {\chineseunicodescale } +\def\japaneseunicodeheight {\chineseunicodeheight } +\def\japaneseunicodedepth {\chineseunicodedepth } +\def\japaneseinterglyphskip{\chineseinterglyphskip} +\def\japanesesurroundskip {\chinesesurroundskip } \setupunicodefont [japanese] - [ \c!scale=\japaneseunicodescale, - \c!height=\japaneseunicodeheight, - \c!depth=\japaneseunicodedepth, - \c!conversion=\japanesenumber, - \c!commands=\setjapaneseencoding, % needed for digits - \c!command=\handlejapaneseunicodeglyph] + [ \c!scale=\japaneseunicodescale, + \c!height=\japaneseunicodeheight, + \c!depth=\japaneseunicodedepth, + \c!strut=\v!yes, + \c!interlinespace=\v!yes, + \c!conversion=\japanesenumber, + \c!commands=\setjapaneseencoding, % needed for digits + \c!command=\handlejapaneseunicodeglyph] \def\japanesenumber{\numbers} \def\handlejapaneseunicodeglyph - {\relax - \ifhmode\else\dontleavehmode\fi - \setunicodescale\japaneseunicodescale - \setunicodestrut\japaneseunicodeheight\japaneseunicodedepth - \iftracejapanese - \ruledhbox{\insertunicodeglyph}% - \else - \insertunicodeglyph - \fi - \allowbreak - \ignorespaces} + {\begingroup +% \let\chineseunicodescale \japaneseunicodescale +% \let\chineseunicodeheight \japaneseunicodeheight +% \let\chineseunicodedepth \japaneseunicodedepth +% \let\chineseinterglyphskip\japaneseinterglyphskip +% \let\chinesesurroundskip \japanesesurroundskip + \iftracejapanese\tracechinesetrue\else\tracechinesefalse\fi + \handlechineseunicodeglyph + \endgroup} \doifelse \currentregime {utf} { % todo: typescripts - \definefontsynonym [JapaneseRegular] [uni-cybercjk-][encoding=j-uni] - \definefontsynonym [JapaneseSlanted] [uni-cybercjk-][encoding=j-uni] - \definefontsynonym [JapaneseItalic] [uni-cybercjk-][encoding=j-uni] - \definefontsynonym [JapaneseBold] [uni-cybercjk-][encoding=j-uni] - \definefontsynonym [JapaneseBoldSlanted][uni-cybercjk-][encoding=j-uni] - \definefontsynonym [JapaneseBoldItalic] [uni-cybercjk-][encoding=j-uni] + \definefontsynonym [JapaneseRegular] [uni-cybercjk-][encoding=cjk-uni] + \definefontsynonym [JapaneseSlanted] [uni-cybercjk-][encoding=cjk-uni] + \definefontsynonym [JapaneseItalic] [uni-cybercjk-][encoding=cjk-uni] + \definefontsynonym [JapaneseBold] [uni-cybercjk-][encoding=cjk-uni] + \definefontsynonym [JapaneseBoldSlanted][uni-cybercjk-][encoding=cjk-uni] + \definefontsynonym [JapaneseBoldItalic] [uni-cybercjk-][encoding=cjk-uni] \loadmapfile[uni-cybercjk.map] @@ -73,4 +78,6 @@ \writestatus{Japanese}{No fonts defined} } +\Japanese + \protect \endinput diff --git a/tex/context/base/font-uni.tex b/tex/context/base/font-uni.tex index 6a53aa782..a0d393025 100644 --- a/tex/context/base/font-uni.tex +++ b/tex/context/base/font-uni.tex @@ -46,7 +46,7 @@ \stopmessages \startmessages french library: fonts - 21: l'utilisation de (pdf)eTeX est plus économe (more save) + 21: l'utilisation de (pdf)eTeX est plus économe (more save) \stopmessages \unprotect @@ -97,7 +97,7 @@ %D %D \starttyping %D \def\handleunicodeglyph -%D {take actions based on \unicodeone-two-position cq. \nextglyph +%D {take actions based on \unicodeone-two-position cq. \nextutoken %D redefine \unicodecharcommand if needed %D expand \insertunicodeglyph %D take some final actions} @@ -105,84 +105,41 @@ \newcount\unicodeposition -% \def\handleunicodeflowglyph#1#2% -% {\def\dohandleunicodeflowglyph{\dodohandleunicodeflowglyphA{#1}{#2}}% -% \futurelet\nextglyph\dohandleunicodeflowglyph} -% -% %D The first alternative (A) takes a character as second -% %D argument and is used in the primary handler introduced -% %D earlier. -% -% \def\dodohandleunicodeflowglyphA#1#2% -% {\bgroup -% \def\unicodeone{#1}% -% \edef\unicodetwo{\number\expandafter`\string#2}% takes also <128 ! -% \unicodeposition=\unicodeone\unicodetwo\relax -% \handleunicodeglyph -% \egroup} -% -% %D The second alternative (B) takes numbers and is used in -% %D the \type {\uchar} command. This command takes two -% %D decimal numbers. -% -% \def\dodohandleunicodeflowglyphB#1#2% -% {\bgroup -% \def\unicodeone{#1}% -% \def\unicodetwo{#2}% -% \unicodeposition=\unicodeone\unicodetwo\relax -% \handleunicodeglyph -% \egroup} -% -% \unexpanded\def\uchar% -% {\let\nextglyph\relax -% \dodohandleunicodeflowglyphB} - %D The multistep approach is needed to pick up the second %D token, since this token can have any value and any %D catcode. -%\def\handleunicodeflowglyph#1% -% {\bgroup -% \edef\unicodeone{#1}% -% \@EA\afterassignment\@EA\dohandleunicodeflowglyph -% \@EA\chardef\@EA\nexttoken\@EA`\string} -% -%\def\dohandleunicodeflowglyph -% {\futurelet\nextglyph\dodohandleunicodeflowglyph} -% -%\def\dodohandleunicodeflowglyph% -% {\edef\unicodetwo{\the\nexttoken}% -% \unicodeposition\unicodeone\unicodetwo\relax -% \handleunicodeglyph -% \egroup} - % the \relax trick prevents eating up the space (needed for % korean \def\handleunicodeflowglyph#1#2% - {\bgroup + {\begingroup \edef\unicodeone{#1}% - \@EA\afterassignment\@EA\dohandleunicodeflowglyph + \@EA\afterassignment\@EA\dohandleunicodeflowglyph % two redundant ea's \@EA\chardef\@EA\nexttoken\@EA`\string#2\relax} \def\dohandleunicodeflowglyph\relax - {\futurelet\nextglyph\dodohandleunicodeflowglyph} + {\futurelet\nextutoken\dodohandleunicodeflowglyph} -\def\dodohandleunicodeflowglyph +\def\dodohandleunicodeflowglyph % todo tex (or maybe no longer) {\edef\unicodetwo{\the\nexttoken}% - \unicodeposition\unicodeone\unicodetwo\relax + \unicodeposition\numexpr\unicodeone*256+\unicodetwo\relax \handleunicodeglyph - \egroup} + \endgroup} \unexpanded\def\uchar#1#2% use as standalone glyph - {\bgroup - % wrong: \let\nextglyph\relax % needed for lookahead chinese + {\begingroup \edef\unicodeone{#1}% \edef\unicodetwo{#2}% -% \unicodeposition=\unicodeone\unicodetwo\relax - \unicodeposition\unicodeone\unicodetwo\relax + \unicodeposition\numexpr\unicodeone*256+\unicodetwo\relax \handleunicodeglyph - \egroup} + \endgroup} + +\let\nextutoken\relax + +\unexpanded\def\lookaheaduchar#1#2% + {\def\dolookaheaduchar{\uchar{#1}{#2}\let\nextutoken\relax}% + \futurelet\nextutoken\dolookaheaduchar} %D In \XETEX, unicode support is straightforward, so we %D simply output a \type {\char} with a 16||bit number. @@ -198,63 +155,20 @@ \endXETEX \def\dohandleucflowglyph -% {\unicodeposition=\unicodeone\unicodetwo\relax - {\unicodeposition\unicodeone\unicodetwo\relax + {\unicodeposition\numexpr\unicodeone*256+\unicodetwo\relax \handleunicodeglyph - \egroup} + \endgroup} \unexpanded\def\uc#1#2% used in tricky situations - {\bgroup + {\begingroup \edef\unicodeone{#1}% \edef\unicodetwo{#2}% - \futurelet\nextglyph\dohandleucflowglyph} - -% Alternative, handles [char >127]{number} too. -% -% \def\handleunicodeflowglyph#1% -% {\bgroup -% \edef\unicodeone{#1}% -% \futurelet\nexttoken\dohandleunicodeflowglyph} -% -% \def\dohandleunicodeflowglyph% -% {\ifx\nexttoken\bgroup -% \expandafter\dohandleunicodeflowglyphA -% \else -% \expandafter\dohandleunicodeflowglyphB -% \fi} -% -% \def\dohandleunicodeflowglyphA#1% -% {\chardef\nexttoken=#1\relax -% \dodohandleunicodeflowglyph} -% -% \def\dohandleunicodeflowglyphB% -% {\@EA\afterassignment\@EA\dodohandleunicodeflowglyph -% \@EA\chardef\@EA\nexttoken\@EA=\@EA`\string} -% -% \def\dodohandleunicodeflowglyph% -% {\futurelet\nextglyph\dododohandleunicodeflowglyph} -% -% \def\dododohandleunicodeflowglyph% -% {\edef\unicodetwo{\the\nexttoken}% -% \unicodeposition=\unicodeone\unicodetwo\relax -% \handleunicodeglyph -% \egroup} -% -% Can be used with (the less byte hungry alternative): -% -% sub unirecode -% { my ($a,$b) = @_ ; -% if ((ord($b)<0x80)&&($b !~ /[a-zA-Z0-9]/)) -% { print "$b" ; ++$recoded ; -% #return "\\uc\{" . ord($a) . "\}\{". ord($b) . "\}" } -% return "$a\{". ord($b) . "\}" } -% else -% { return "$a$b" } } + \futurelet\nextutoken\dohandleucflowglyph} \def\insertunicodeglyph {\unicodeglyph\unicodeone\unicodetwo} -\let\handleunicodeglyph=\insertunicodeglyph +\let\handleunicodeglyph\insertunicodeglyph %D One can use the \type {\unicodeposition} in the macros %D that handle pre and post material. @@ -307,22 +221,43 @@ \let\unicodecharcommand\firstofoneargument -% \unexpanded\def\unicodeglyph#1#2% watch the double mapping -% {\bgroup -% \bodyfontsize=\unicodescale\bodyfontsize -% \font\unicodefont=\truefontname{\truefontname\unicodestyle\lchexnumbers{#1}} -% at \currentfontscale\bodyfontsize -% \unicodestrut\unicodefont\unicodecharcommand{\char#2\relax}% -% \egroup} - \unexpanded\def\unicodeglyph#1#2% watch the double mapping - {\bgroup - \getvalue{@@\currentucharmapping\strippedcsname\uchar}{#1}{#2}% + {\begingroup + \getvalue{@@\currentucharmapping\strippedcsname\uchar}{#1}{#2}% map to a to hex font range \bodyfontsize\unicodescale\bodyfontsize - \font\unicodefont=\truefontname{\truefontname\unicodestyle\unicodeone} - at \currentfontscale\bodyfontsize - \unicodestrut\unicodefont\unicodecharcommand{\char\unicodetwo\relax}% - \egroup} + % readable: + % \doifelsefontsynonym{\unicodestyle\unicodeone} + % {\font\unicodefont=\truefontname{\unicodestyle\unicodeone} + % at \currentfontscale\bodyfontsize} + % {\font\unicodefont=\truefontname{\truefontname\unicodestyle\unicodeone} + % at \currentfontscale\bodyfontsize}% + % unreadable but more efficient: + \font\unicodefont=\truefontname{\doifelsefontsynonym{\unicodestyle + \unicodeone}\empty\truefontname\unicodestyle\unicodeone} + at \currentfontscale\bodyfontsize + \unicodestrut % off by default + \unicodefont\unicodecharcommand{\char\unicodetwo\relax}% + \endgroup} + +%D This handler is used by default, for instance in: +%D +%D \starttyping +%D \defineunicodefont [MySwitch] [MyFont] % [strut=no,command=\insertunicodeglyph] +%D +%D \definefontsynonym [MyFontRegular40] [Sans] +%D \definefontsynonym [MyFontBold40] [SansBold] +%D +%D {\MySwitch \uchar{"40}{`a}} +%D {\MySwitch \bf \uchar{"40}{`a}} +%D \stoptyping +%D +%D \starttyping +%D \definefontsynonym [MyFontRegular] [Sans] +%D \definefontsynonym [MyFontBold] [SansBold] +%D \stoptyping +%D +%D Is also possible, but in that case the number is appended to the raw font +%D name! %D \macros %D {currentucharmapping,defineucharmapping} @@ -357,15 +292,13 @@ \def\dorepositionunicode {\dosetdivision\unicodeposition{256}\scratchcounter - %\DoDiv\unicodeposition by256to\scratchcounter \advance\scratchcounter \plusone \edef\unicodeone{\ifnum\scratchcounter<10 0\fi\the\scratchcounter}% \dosetmodulo\unicodeposition{256}\scratchcounter - %\DoMod\unicodeposition by256to\scratchcounter \edef\unicodetwo{\the\scratchcounter}} %D \macros -%D {setunicodestrut, setunicodescale, nextglyph, +%D {setunicodestrut, setunicodescale, nextutoken, %D handleunicodeglyph, insertunicodeglyph} %D %D A careful analysis of the previous macros, learns that the @@ -405,15 +338,22 @@ \let\unicodestrut\empty \fi\fi} +\def\resetunicodestrut + {\let\unicodestrut\empty} + %D The additional scaling and strut default to: \setunicodescale{1} \setunicodestrut{1}{1} +%D But better is not to have a strut added by default: + +\resetunicodestrut + %D The actual code for the additional actions as well as %D specific spacing is handled outside these routines. The %D character after the two that are under treatment is -%D available in \type {\nextglyph}. +%D available in \type {\nextutoken}. %D \macros %D {defineunicodefont, setupunicodefont} @@ -475,7 +415,7 @@ {\setupunicodefont[#1][#3]} {\copyparameters [\??uc#1][\??uc#3] - [\c!height,\c!depth,\c!scale,\c!commands, + [\c!height,\c!depth,\c!scale,\c!commands,\c!strut, \c!interlinespace,\c!command,\c!conversion]}}% \doifelsenothing{#2} {\setvalue{#1}{[uc font #1 undefined]}} @@ -495,7 +435,7 @@ {\doifundefined{\??uc#1\c!command} {\copyparameters [\??uc#1][\??uc\s!default] - [\c!height,\c!depth,\c!scale,\c!commands, + [\c!height,\c!depth,\c!scale,\c!commands,\v!strut, \c!interlinespace,\c!command,\c!conversion]}% \getparameters[\??uc#1][#2]} @@ -508,7 +448,11 @@ \def\handleunicodeglyph {\getvalue{\??uc#1\c!command}}% \doifnot\currentregime{utf}{\enableregime[unicode]}% % the following \relax's are realy needed - \doifvalue{\??uc#1\c!interlinespace}\v!yes\setupinterlinespace\relax + \doifvalue{\??uc#1\c!interlinespace}\v!yes + \setupinterlinespace\relax + \doifvalue{\??uc#1\c!strut}\v!yes + {\setunicodestrut\unicodeheight\unicodedepth} + {\resetunicodestrut}% \getvalue{\??uc#1\c!commands}\relax} %D \macros @@ -533,7 +477,8 @@ [\c!height=1, \c!depth=1, \c!scale=1, - \c!interlinespace=\v!yes, + \c!strut=\v!no, + \c!interlinespace=\v!no, \c!command=\insertunicodeglyph, \c!conversion=\number] diff --git a/tex/context/base/hand-ini.tex b/tex/context/base/hand-ini.tex index 1ce0259e3..19f99f7d2 100644 --- a/tex/context/base/hand-ini.tex +++ b/tex/context/base/hand-ini.tex @@ -72,7 +72,7 @@ \startmessages french library: handlings title: handling 1: manipulation -- de police - 2: la manipulation -- de police est chargée + 2: la manipulation -- de police est chargée 3: manipulation -- inconnue de police \stopmessages diff --git a/tex/context/base/java-ini.tex b/tex/context/base/java-ini.tex index 6135c9941..d2821162e 100644 --- a/tex/context/base/java-ini.tex +++ b/tex/context/base/java-ini.tex @@ -78,7 +78,7 @@ \startmessages french library: javascript title: javascript 1: chargement du jeu de script -- - 2: préambule -- inconnu + 2: préambule -- inconnu \stopmessages diff --git a/tex/context/base/lang-chi.tex b/tex/context/base/lang-chi.tex index a743c800b..7458268f7 100644 --- a/tex/context/base/lang-chi.tex +++ b/tex/context/base/lang-chi.tex @@ -96,7 +96,7 @@ \unexpanded\def\cnencoding{\enableencoding[\chineseencoding]} % ugly and temporary -\startencoding[c-uni] +\startencoding[cjk-uni] \definecommand cnleftsentence {\uchar{32}{20}\uchar{32}{20}} \definecommand cnrightsentence {\uchar{32}{20}\uchar{32}{20}} \definecommand cnleftsubsentence {\uchar{32}{20}\uchar{32}{20}} @@ -263,7 +263,7 @@ % Traditional Chinese characters (only where they differ to the % simplified ones) for lang-chi.tex and font-chi.tex. -% \startencoding[c-uni] +% \startencoding[cjk-uni] % \defineudigit 10000 132 44 % \defineudigit 100000000 81 4 diff --git a/tex/context/base/lang-ini.tex b/tex/context/base/lang-ini.tex index f0b200a29..d3295128a 100644 --- a/tex/context/base/lang-ini.tex +++ b/tex/context/base/lang-ini.tex @@ -124,16 +124,16 @@ \startmessages french library: linguals title: language - 1: les motifs -- pour -- sont chargés (n=--,e=--,m=--) + 1: les motifs -- pour -- sont chargés (n=--,e=--,m=--) 2: pas de motifs -- pour -- (n=--,e=--,m=--) (--,--) - 3: hyphenations -- pour -- chargés (n=--,e=--,m=--) + 3: hyphenations -- pour -- chargés (n=--,e=--,m=--) 4: pas d'hyphenations -- pour -- (n=--,e=--,m=--) - 5: les motifs pour -- ne sont pas chargés - 6: langue -- non définie - 7: les options spécifiques de langue [--] introduisent un -- saut - 8: les options spécifiques de langue [--] sont ajoutés en douceur + 5: les motifs pour -- ne sont pas chargés + 6: langue -- non définie + 7: les options spécifiques de langue [--] introduisent un -- saut + 8: les options spécifiques de langue [--] sont ajoutés en douceur 9: la langue -- est active - 10: motifs -- chargés + 10: motifs -- chargés \stopmessages %D When loading hyphenation patterns, \TEX\ assign a number to diff --git a/tex/context/base/lang-jap.tex b/tex/context/base/lang-jap.tex index 7023bd646..ffb53ea70 100644 --- a/tex/context/base/lang-jap.tex +++ b/tex/context/base/lang-jap.tex @@ -59,8 +59,6 @@ %D Why are these languagespecifics ? -% \startlanguagespecifics[\s!ja] - \setuplabeltext [\s!ja] [\v!january=1] \setuplabeltext [\s!ja] [\v!february=2] \setuplabeltext [\s!ja] [\v!march=3] @@ -82,15 +80,13 @@ \setuplabeltext [\s!ja] [\v!friday=\jaencoding\jaencodedfriday ] \setuplabeltext [\s!ja] [\v!saturday=\jaencoding\jaencodedsaturday ] -% \stoplanguagespecifics - % Hardcoded - \japaneseencoding should be defined similarly to \chineseencoding -\unexpanded\def\jaencoding{\enableencoding[j-uni]} +\unexpanded\def\jaencoding{\enableencoding[cjk-uni]} %D This list is taken from DocBook XSL stylesheets (http://docbook.sourceforge.net/). -\startencoding[j-uni] +\startencoding[cjk-uni] \definecommand jaencodedabstract {\uchar{105}{130}\uchar{137}{129}} \definecommand jaencodedand {\uchar{48}{1}} @@ -185,7 +181,7 @@ %D Taken from Chinese (will be investigated yet...) -\startencoding[j-uni] +\startencoding[cjk-uni] \definecommand jaencodedleftsentence {\uchar{32}{20}\uchar{32}{20}} \definecommand jaencodedrightsentence {\uchar{32}{20}\uchar{32}{20}} @@ -196,7 +192,7 @@ %D Special thanxx to Eizo Tsuchihashi (eizo@arcbrain.jp) for the following stuff -\startencoding[j-uni] +\startencoding[cjk-uni] \definecommand jaencodedchristiandate {\uchar{137}{127}\uchar{102}{166}} diff --git a/tex/context/base/m-gnuplot.tex b/tex/context/base/m-gnuplot.tex index 5345cdb4e..8da9317b6 100644 --- a/tex/context/base/m-gnuplot.tex +++ b/tex/context/base/m-gnuplot.tex @@ -95,7 +95,7 @@ {\edef\GNUPLOTnumber{\getvalue{gpg:n:#1}}% \edef\GNUPLOTfile {\bufferprefix gnuplot-\GNUPLOTnumber}% \bgroup - \the\everyGNUplotgraphic + \the\everyGNUPLOTgraphic \immediate\openout\scratchwrite=\GNUPLOTfile.gpd \immediate\write\scratchwrite{set terminal \@@GNUPLOToutput\space\@@GNUPLOToption}% \doifnotempty diff --git a/tex/context/base/m-units.tex b/tex/context/base/m-units.tex index 8e0883a78..949297686 100644 --- a/tex/context/base/m-units.tex +++ b/tex/context/base/m-units.tex @@ -61,7 +61,7 @@ \startmessages french library: units title: units - 1: utilisez \string\Degrees\space\string\Celsius\space à la place de \string\Celsius ! + 1: utilisez \string\Degrees\space\string\Celsius\space à la place de \string\Celsius ! \stopmessages \unprotect diff --git a/tex/context/base/math-pln.tex b/tex/context/base/math-pln.tex index 73c12c973..b8148491f 100644 --- a/tex/context/base/math-pln.tex +++ b/tex/context/base/math-pln.tex @@ -1,6 +1,6 @@ %D \module %D [ file=math-pln, -%D version=2001.11.16, +%D version=2001.11.16, %D title=\CONTEXT\ System Macros, %D subtitle=Efficient \PLAIN\ \TEX\ loading, %D author=Hans Hagen, @@ -8,17 +8,17 @@ %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 is a temporary module, some of this code will move to -%D the other math modules. +%D This is a temporary module, some of this code will move to +%D the other math modules. -\unprotect +\unprotect \def\m@th{\mathsurround\z@} -\newbox\rootbox +\newbox\rootbox \def\root#1\of% {\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}% @@ -27,7 +27,7 @@ \def\r@@t#1#2% will be overloaded {\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}\dimen@\ht\z@ \advance\dimen@-\dp\z@ - \mkern5mu\raise.6\dimen@\copy\rootbox + \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu\box\z@} \def\mathhexbox#1#2#3% @@ -38,13 +38,13 @@ {\leavevmode \vtop {\baselineskip\z@skip \lineskip.25ex% - \ialign{##\crcr#1\crcr}}} + \ialign{##\crcr#1\crcr}}} \def\o@lign {\lineskiplimit\z@ \oalign} \def\ooalign % chars over each other - {\lineskiplimit-\maxdimen + {\lineskiplimit-\maxdimen \oalign} {\catcode`p=12 \catcode`t=12 \gdef\\#1pt{#1}} \let\getf@ctor=\\ @@ -52,9 +52,9 @@ \def\sh@ft#1% kern by #1 times the current slant {\dimen@#1% \kern\expandafter\getf@ctor\the\fontdimen1\font - \dimen@} + \dimen@} -% \def\copyright % will be overloaded +% \def\copyright % will be overloaded % {{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\Orb}}} \def\dots @@ -76,11 +76,11 @@ \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill \mkern-7mu\smash-$} -% must go to math-tex +% must go to math-tex -\mathchardef\braceld="37A +\mathchardef\braceld="37A \mathchardef\bracerd="37B -\mathchardef\bracelu="37C +\mathchardef\bracelu="37C \mathchardef\braceru="37D \def\downbracefill @@ -95,7 +95,7 @@ \def\bye{\par\vfill\supereject\end} -\let\sp=^ +\let\sp=^ \let\sb=_ \def\,{\mskip\thinmuskip} \def\>{\mskip\medmuskip} @@ -110,14 +110,14 @@ % \def\pr@m@s % {\ifx'\next -% \let\nxt\pr@@@s +% \let\nxt\pr@@@s % \else % \ifx^\next % \let\nxt\pr@@@t % \else % \let\nxt\egroup % \fi -% \fi +% \fi % \nxt} \def\pr@m@s @@ -130,7 +130,7 @@ \fi\fi} \def\pr@@@s#1% - {\prim@s} + {\prim@s} \def\pr@@@t#1#2% {#2\egroup} @@ -258,7 +258,7 @@ % \setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left ( \def\bordermatrix#1% - {\begingroup + {\begingroup \m@th \setbox\z@\vbox {\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}% @@ -279,18 +279,30 @@ \vbox{\kern\ht\@ne\box\tw@}% \endgroup} -\def\openup{\afterassignment\@penup\dimen@=} +% \def\openup{\afterassignment\@penup\dimen@=} +% +% \def\@penup{\advance\lineskip\dimen@ +% \advance\baselineskip\dimen@ +% \advance\lineskiplimit\dimen@} -\def\@penup{\advance\lineskip\dimen@ - \advance\baselineskip\dimen@ - \advance\lineskiplimit\dimen@} +\def\openup + {\afterassignment\doopenup\scratchdimen=} + +\def\doopenup + {\advance\lineskip \scratchdimen + \advance\baselineskip \scratchdimen + \advance\lineskiplimit\scratchdimen} + +% \def\jot{.25\bodyfontsize} % plain tex: 3 pt (todo: better name and configurable) + +\def\displayopenupvalue{.25\bodyfontsize} \def\eqalign#1% {\null \,% \vcenter - {\openup - \jot\m@th + {\openup\displayopenupvalue % was \openup\jot + \m@th \ialign {\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\crcr #1\crcr}}% @@ -300,32 +312,32 @@ \def\displ@y {\global\dt@ptrue - \openup\jot\m@th + \openup\displayopenupvalue % was \openup\jot \everycr {\noalign - {\ifdt@p - \global\dt@pfalse + {\ifdt@p + \global\dt@pfalse \ifdim\prevdepth>-1000\p@ - \vskip-\lineskiplimit - \vskip\normallineskiplimit + \vskip-\lineskiplimit + \vskip\normallineskiplimit \fi - \else - \penalty\interdisplaylinepenalty + \else + \penalty\interdisplaylinepenalty \fi}}} \def\@lign % restore inside \displ@y {\tabskip\z@skip - \everycr{}} + \everycr{}} \def\displaylines#1% - {\displ@y + {\displ@y \tabskip\z@skip \halign {\hbox to \displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr #1\crcr}} \def\eqalignno#1% - {\displ@y + {\displ@y \tabskip\centering \halign to \displaywidth {\hfil$\@lign\displaystyle{##}$\tabskip\z@skip @@ -334,7 +346,7 @@ #1\crcr}} \def\leqalignno#1% - {\displ@y + {\displ@y \tabskip\centering \halign to \displaywidth {\hfil$\@lign\displaystyle{##}$\tabskip\z@skip diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex index 16dc96138..6995201cb 100644 --- a/tex/context/base/meta-ini.tex +++ b/tex/context/base/meta-ini.tex @@ -57,7 +57,7 @@ \startmessages french library: metapost title: metapost - 1: chargement de la bibliothèque metapost -- + 1: chargement de la bibliothèque metapost -- \stopmessages %D This module extends the functionality of the support module diff --git a/tex/context/base/mult-com.tex b/tex/context/base/mult-com.tex index 05e7c66e5..0582c3472 100644 --- a/tex/context/base/mult-com.tex +++ b/tex/context/base/mult-com.tex @@ -2411,6 +2411,14 @@ determineregistercharacteristics: bepaalregisterkenmerken determineregi definecolumnbreak definecolumnbreak definecolumnbreak definecolumnbreak definitsautdecolonne + definemathalignment: definieerwiskundeuitlijnen definemathalignment + definemathalignment definemathalignment + definemathalignment definemathalignment + definemathalignment + setupmathalignment: stelwiskundeuitlijnenin setupmathalignment + setupmathalignment setupmathalignment + setupmathalignment setupmathalignment + setupmathalignment \stopcommands diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex index 518b36aca..cf3da58b2 100644 --- a/tex/context/base/mult-con.tex +++ b/tex/context/base/mult-con.tex @@ -499,6 +499,18 @@ subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsub aufzaehlung vycet elenco enumerare lister + mathalignment: wiskundeuitlijnen mathalignment + mathalignment mathalignment + mathalignment mathalignment + mathalignment + mathcases: mathcases mathcases + mathcases mathcases + mathcases mathcases + mathcases + mathmatrix: wiskundematrix mathmatrix + mathmatrix mathmatrix + mathmatrix mathmatrix + mathmatrix \stopvariables @@ -1945,6 +1957,10 @@ subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsub textdistance textdistance distanzatesto textdistance distancetexte + numberdistance: nummerafstand numberdistance + numberdistance numberdistance + numberdistance numberdistance + numberdistance textmargin: tekstmarge textmargin textmargin textmargin textmargin textmargin @@ -3185,6 +3201,7 @@ subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsub vfil: vfil hfil: hfil strut: strut + autostrut: autostrut reset: reset set: set escape: escape @@ -3814,8 +3831,6 @@ subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsub \stopvariables -%D \stopcompressdefinitions - \stoplogginginterface \endinput diff --git a/tex/context/base/mult-sys.tex b/tex/context/base/mult-sys.tex index 7db143f97..2e02bbf07 100644 --- a/tex/context/base/mult-sys.tex +++ b/tex/context/base/mult-sys.tex @@ -410,6 +410,7 @@ \definesystemvariable {by} % Per \definesystemvariable {cb} % CollectBox \definesystemvariable {cc} % Comment +\definesystemvariable {ce} % CasEs \definesystemvariable {ci} % CItaat \definesystemvariable {cl} % kleur (CoLor setup) \definesystemvariable {cn} % CollumN @@ -433,6 +434,7 @@ \definesystemvariable {ec} % EnCoding \definesystemvariable {en} % ENvironments \definesystemvariable {ep} % ExternfiguurPreset +\definesystemvariable {eq} % EQalign \definesystemvariable {er} % external resources \definesystemvariable {ex} % ExterneFiguren \definesystemvariable {ht} % HiddenText @@ -496,6 +498,7 @@ \definesystemvariable {mt} % inline MaTh \definesystemvariable {mo} % Math Options \definesystemvariable {nm} % Nummering +\definesystemvariable {mx} % MatriX \definesystemvariable {np} % NaastPlaatsen \definesystemvariable {nr} % Nummeren \definesystemvariable {of} % OFfset @@ -830,8 +833,8 @@ \startmessages french library: check title: check - 1: missing or ungrouped '=' manquant ou dégroupé après '--' à la ligne -- - 2: -- argument(s) attendu(s) à la ligne -- + 1: missing or ungrouped '=' manquant ou dégroupé après '--' à la ligne -- + 2: -- argument(s) attendu(s) à la ligne -- 3: -- -- remplace une macro, utilisez des MAJUSCULES ! \stopmessages diff --git a/tex/context/base/page-bck.tex b/tex/context/base/page-bck.tex index d69281d63..22596001d 100644 --- a/tex/context/base/page-bck.tex +++ b/tex/context/base/page-bck.tex @@ -44,7 +44,7 @@ \stopmessages \startmessages french library: layouts - 8: calcul des arrières-plans + 8: calcul des arrières-plans \stopmessages %D \macros diff --git a/tex/context/base/page-flt.tex b/tex/context/base/page-flt.tex index 3ceabc2e2..a19c326a3 100644 --- a/tex/context/base/page-flt.tex +++ b/tex/context/base/page-flt.tex @@ -162,18 +162,18 @@ \startmessages french library: floatblocks title: floatblocks - 1: -- renuméroté / -- => -- - 2: -- sauvegardé - 3: -- déplacé - 4: -- placé - 5: ordre adapté - 6: n flottants de haut de page limité à -- - 7: n flottants de bas de page limité à -- + 1: -- renuméroté / -- => -- + 2: -- sauvegardé + 3: -- déplacé + 4: -- placé + 5: ordre adapté + 6: n flottants de haut de page limité à -- + 7: n flottants de bas de page limité à -- 8: moins de -- lignes - 9: ordre perturbé - 10: -- limité - 11: pas de bloc donné - 12: indéfini + 9: ordre perturbé + 10: -- limité + 11: pas de bloc donné + 12: indéfini \stopmessages \def\setupfloats diff --git a/tex/context/base/page-ini.tex b/tex/context/base/page-ini.tex index 09c5368e7..55442fd5e 100644 --- a/tex/context/base/page-ini.tex +++ b/tex/context/base/page-ini.tex @@ -245,31 +245,31 @@ \startmessages french library: systems title: system - 1: chargement de fichier utilitaire reporté (typemode) - 2: -- chargé + 1: chargement de fichier utilitaire reporté (typemode) + 2: -- chargé % 3: try LaTeX - 4: la commande -- est déjà définie - 5: module -- chargé - 6: module -- non trouvé - 7: module -- déjà chargé - 8: nouvelle version de fichier utilitaire, seconde passe nécessaire - 9: -- non trouvé/traité + 4: la commande -- est déjà définie + 5: module -- chargé + 6: module -- non trouvé + 7: module -- déjà chargé + 8: nouvelle version de fichier utilitaire, seconde passe nécessaire + 9: -- non trouvé/traité 10: n'utilisez pas em dans -- 11: construction util simple - 12: le fichier utilitaire n'est pas trié, utilise texutil + 12: le fichier utilitaire n'est pas trié, utilise texutil 13: marquage -- defini -- - 14: nouvellepage forcée dans la liste à -- + 14: nouvellepage forcée dans la liste à -- 15: sauvegarde du tampon (buffer) -- 16: composition du tampon (buffer) -- 17: composition textuelle du tampon (buffer) -- 18: le synonyme -- -- n'existe pas - 19: signification (synonymes) de -- chargée - 20: signification (tris) de -- chargée - 21: pas de données utilitaires chargées + 19: signification (synonymes) de -- chargée + 20: signification (tris) de -- chargée + 21: pas de données utilitaires chargées 22: utilise un fichier utilitaire valide - 23: -- arrangé à -- + 23: -- arrangé à -- 24: blocsflottants - 25: Réferences + 25: Réferences 26: Registres 27: Version \stopmessages @@ -374,12 +374,12 @@ \startmessages french library: layouts title: layout - 1: hauteurtexte adaptée avec -- à la page -- + 1: hauteurtexte adaptée avec -- à la page -- 2: -- times postponed text placed 3: -- times text postponed 4: blocsmarge actifs 5: blocsmarge inactifs - 6: jeu de souspage -- traité (taille --) + 6: jeu de souspage -- traité (taille --) % 7: calculating logospace % 8: calculating backgrounds 10: -- and -- don't add up to 1.0 @@ -611,17 +611,17 @@ title: columns 1: seules -- colonnes possibles 2: utilisez \string\filbreak\space en tant qu'alternative - 3: problèmes, désactive l'équilibrage - 4: flottant en partie supérieure pas encore supporté - 5: flottant en partie inférieure pas encore supporté - 6: -- flottant(s) reporté(s)postponed - 7: équilibrage abandonné après 100 pas - 8: équilibré en -- pas - 9: vérification des irrégularités + 3: problèmes, désactive l'équilibrage + 4: flottant en partie supérieure pas encore supporté + 5: flottant en partie inférieure pas encore supporté + 6: -- flottant(s) reporté(s)postponed + 7: équilibrage abandonné après 100 pas + 8: équilibré en -- pas + 9: vérification des irrégularités 10: (moins de) 1 ligne restante - 11: flottant mis à la largeur de la colonne - 12: flottant déplacé à la colonne suivante / -- - 13: flottant large déplacé dans la partie supérieure de la colonne + 11: flottant mis à la largeur de la colonne + 12: flottant déplacé à la colonne suivante / -- + 13: flottant large déplacé dans la partie supérieure de la colonne \stopmessages \ifx\dosetuplayout\undefined % overloaded in page-lay ! @@ -1557,8 +1557,7 @@ % was: \resetsectionmarks\firstsection, zie \handlepagebreak -\def\page {\pagebreak} % the short form of \pagebreak (mult-com one) -\def\page{\pagebreak} % for the moment, keep this one +\def\page{\pagebreak} % the short form of \pagebreak (mult-com one) \def\resetpagebreak {\global\paginageblokkeerdfalse} @@ -1586,7 +1585,7 @@ % {\flushnotes % see head's; watch how we group % \doifsomething{#1}{\bgroup\executepagebreakhandlers{#1}\egroup}} -\def\pagebreak +\unexpanded\def\pagebreak {\dosingleempty\dopagebreak} \def\dopagebreak[#1]% so, page ornaments are reset after a pagebreak command, unless set diff --git a/tex/context/base/regi-uni.tex b/tex/context/base/regi-uni.tex index 4d694383a..c4d9521e9 100644 --- a/tex/context/base/regi-uni.tex +++ b/tex/context/base/regi-uni.tex @@ -12,7 +12,8 @@ %C details. %D This module activates all characters in the upper range -%D and sets them to the basic unicodehandler. +%D and sets them to the basic unicodehandler. Beware, this is +%D a special purpose handler (esp for chinese encodings). \startregime[unicode] diff --git a/tex/context/base/regi-utf.tex b/tex/context/base/regi-utf.tex index b529406e1..96f1a4061 100644 --- a/tex/context/base/regi-utf.tex +++ b/tex/context/base/regi-utf.tex @@ -23,6 +23,8 @@ \unprotect +% beware, this may change: \utftwouniglyph rawchar + \startregime[utf] \dostepwiserecurse{192}{223}{1} diff --git a/tex/context/base/s-chi-00.tex b/tex/context/base/s-chi-00.tex index 956f362b7..add0b333b 100644 --- a/tex/context/base/s-chi-00.tex +++ b/tex/context/base/s-chi-00.tex @@ -1,5 +1,5 @@ %D \module -%D [ file=s-chi-00, +%D [ file=s-chi-00, %D version=1999.12.21, %D title=\CONTEXT\ Style File, %D subtitle=Basic Chinese Style, @@ -12,9 +12,9 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\mainlanguage[cn] +\input font-chi.tex % faster than \setupbodyfont[chi] -\setupbodyfont[chi] % loads font-chi +\mainlanguage [cn] \unprotect diff --git a/tex/context/base/s-jap-00.tex b/tex/context/base/s-jap-00.tex new file mode 100644 index 000000000..28cb6c241 --- /dev/null +++ b/tex/context/base/s-jap-00.tex @@ -0,0 +1,23 @@ +%D \module +%D [ file=s-jap-00, +%D version=2006.01.19, +%D title=\CONTEXT\ Style File, +%D subtitle=Basic Japanese Style, +%D author=Hans Hagen, +%D date=\currentdate, +%D suggestions=Richard Gabriel, +%D copyright=\PRAGMA] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\input font-jap.tex % faster than \setupbodyfont[jap] + +\mainlanguage [ja] + +\unprotect + +\setuptyping[\c!tab=\v!no] + +\protect \endinput diff --git a/tex/context/base/spec-ini.tex b/tex/context/base/spec-ini.tex index 281cbe0b5..4a7299266 100644 --- a/tex/context/base/spec-ini.tex +++ b/tex/context/base/spec-ini.tex @@ -114,11 +114,11 @@ \startmessages french library: specials title: specials - 1: -- chargé + 1: -- chargé 2: pas d'imbracations plus profondes ne sont permises -- - 3: -- est remis à zéro + 3: -- est remis à zéro 4: la commande -- n'existe pas - 5: chargement du fichier de définition -- + 5: chargement du fichier de définition -- 6: l'imbrication n'est pas permise 7: pilote -- inconnu \stopmessages @@ -152,7 +152,7 @@ \stopmessages \startmessages french library: interactions - 21: -- code inseré + 21: -- code inseré \stopmessages %D \TEX\ produces files in the \DVI\ format. This format is diff --git a/tex/context/base/supp-fil.tex b/tex/context/base/supp-fil.tex index b89ba295c..63e2f3730 100644 --- a/tex/context/base/supp-fil.tex +++ b/tex/context/base/supp-fil.tex @@ -617,11 +617,17 @@ \catcode`\\=\@@escape \catcode`\{=\@@begingroup \catcode`\}=\@@endgroup - \catcode`\%=\@@comment} + \catcode`\%=\@@comment + \pushendofline + \restoreendofline} \def\stopreadingfile - {\getvalue{\string\readingfilelevel::\readingfilelevel}% + {\popendofline + \getvalue{\string\readingfilelevel::\readingfilelevel}% \doglobal\decrement\readingfilelevel} + +\let\normalstartreadingfile\startreadingfile +\let\normalstopreadingfile \stopreadingfile %D \macros %D {splitfilename} diff --git a/tex/context/base/supp-fun.tex b/tex/context/base/supp-fun.tex index 89c5f7ea8..812323826 100644 --- a/tex/context/base/supp-fun.tex +++ b/tex/context/base/supp-fun.tex @@ -135,7 +135,7 @@ {\convertargument #7\to\asciia \convertcommand \DroppedString\to\asciib \ExpandBothAfter\doifinstringelse\asciia\asciib - {\noindenting + {\noindentation \dontleavehmode %\ifhmode\hskip-\parindent\fi % sensitive for context mechanism \keeplinestogether{#6}% diff --git a/tex/context/base/supp-mat.tex b/tex/context/base/supp-mat.tex index 54ff34f01..d35dc52d3 100644 --- a/tex/context/base/supp-mat.tex +++ b/tex/context/base/supp-mat.tex @@ -45,9 +45,9 @@ %D %D Which is implemented as: -\def\mathematics#1{\relax\ifmmode#1\else$#1$\fi} % lookahead bug reported by brooks -\def\displaymath#1{\relax\ifmmode#1\else$$#1$$\fi} -\def\inlinemath #1{\relax\ifmmode#1\else$#1$\fi} +\long\def\mathematics#1{\relax\ifmmode#1\else $#1$\fi} % lookahead bug reported by brooks +\long\def\displaymath#1{\relax\ifmmode#1\else$$#1$$\fi} +\long\def\inlinemath #1{\relax\ifmmode#1\else $#1$\fi} \def\startmathmode {\ifmmode @@ -61,6 +61,15 @@ \let\math\mathematics +%D \macros +%D {displaymathematics,inlinemathematics,automathematics} +%D +%D An example of usage of the following can be found in the MathML module: + +\long\def\displaymathematics#1{\relax\ifmmode#1\else\dostartformula{}#1\dostopformula\fi} + \let\inlinemathematics \mathematics + \def\automathematics {\relax\ifhmode\@EA\inlinemathematics\else\@EA\displaymathematics\fi} + %D \macros %D {dimension, nodimension} %D diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex index f7fef569b..16f55bca4 100644 --- a/tex/context/base/syst-ext.tex +++ b/tex/context/base/syst-ext.tex @@ -1144,6 +1144,20 @@ \def\convertvalue#1\to {\expandafter\convertcommand\csname#1\endcsname\to} +%D \macros +%D {convertasciiafter} +%D +%D Sometimes we need to convert an argument to a string (letters +%D only), for instance when we compare it with another string: +%D +%D \starttyping +%D \convertasciiafter\doifinstringelse{em}{\ascii}{...} +%D \stoptyping + +\def\convertasciiafter#1#2% + {\convertargument#2\to\asciiafter + \@EA#1\@EA{\asciiafter}} + %D In \ETEX\ we can use \type {\detokenize} and gain some %D speed, but in general far less that 1\% for \type %D {\convertargument} and nil for \type {\convertcommand}. diff --git a/tex/context/base/syst-gen.tex b/tex/context/base/syst-gen.tex index 12efab2cb..fd78b2520 100644 --- a/tex/context/base/syst-gen.tex +++ b/tex/context/base/syst-gen.tex @@ -2244,7 +2244,7 @@ {\let\expandedaction\noexpandedaction} %D \macros -%D {getfirstcharacter,firstcharacter, doiffirstcharacter} +%D {getfirstcharacter, firstcharacter, remainingcharacters, doiffirstcharacter} %D %D Sometimes the action to be undertaken depends on the %D next character. This macro get this character and puts it in @@ -2258,12 +2258,13 @@ %D complicated arguments, for instance arguments that %D consist of two or more expandable tokens. -\def\dogetfirstcharacter#1#2\\% - {\def\firstcharacter{#1}} +\def\dogetfirstcharacter#1#2\relax + {\def\firstcharacter{#1}% + \def\remainingcharacters{#2}} \def\getfirstcharacter#1% {\edef\!!stringa{#1}% - \expandafter\dogetfirstcharacter\!!stringa\\} + \expandafter\dogetfirstcharacter\!!stringa\relax} \def\doiffirstcharelse#1#2% char string % kort (maar onleesbaar) @@ -4386,11 +4387,16 @@ \chardef\statuswidth=15 \chardef\statuswrite=16 -\def\writestring - {\immediate\write\statuswrite} +\newtoks\everywritestring + +\def\writestring#1% + {\begingroup + \the\everywritestring + \immediate\write\statuswrite{#1}% + \endgroup} \def\writeline - {\writestring{}} + {\immediate\write\statuswrite{}} %D First we present the normal \TEX\ variant, later we will %D show the \ETEX-way. @@ -4419,7 +4425,6 @@ \space\space\space\space\space\space\space \space\space\space\space\space\space\space \space\space\space\space\space\space\end - %\expanded{\writestring{\the\scratchtoks\space:\space#2}}% \@EA\writestring\@EA{\the\scratchtoks\space:\space#2}% \endgroup} diff --git a/tex/context/base/syst-pln.tex b/tex/context/base/syst-pln.tex index e60a73644..4259eb04e 100644 --- a/tex/context/base/syst-pln.tex +++ b/tex/context/base/syst-pln.tex @@ -374,21 +374,15 @@ %D Extra dimension parameters. -\newskip \bigskipamount -\newdimen \jot -\newskip \medskipamount -\newskip \normalbaselineskip -\newskip \normallineskip -\newdimen \normallineskiplimit -\newskip \smallskipamount - -\bigskipamount = 12pt plus 4pt minus 4pt -\jot = 3pt -\medskipamount = 6pt plus 2pt minus 2pt -\normalbaselineskip = 12pt -\normallineskip = 1pt -\normallineskiplimit = 0pt -\smallskipamount = 3pt plus 1pt minus 1pt +\newskip \bigskipamount \bigskipamount = 12pt plus 4pt minus 4pt +\newskip \medskipamount \medskipamount = 6pt plus 2pt minus 2pt +\newskip \smallskipamount \smallskipamount = 3pt plus 1pt minus 1pt + +\newskip \normalbaselineskip \normalbaselineskip = 12pt +\newskip \normallineskip \normallineskip = 1pt +\newdimen \normallineskiplimit \normallineskiplimit = 0pt + +\newdimen \jot \jot = 3pt %D The following shortcuts are rather standard: @@ -595,7 +589,7 @@ {\advance\leftskip \parindent \advance\rightskip\parindent} -%D Useful, used too, but sometimes dangerous: +%D Useful, used too, but sometimes dangerous: \def\leavevmode{\unhbox\voidb@x} diff --git a/tex/context/base/type-enc.tex b/tex/context/base/type-enc.tex index 33553e3b9..fce1ed7ab 100644 --- a/tex/context/base/type-enc.tex +++ b/tex/context/base/type-enc.tex @@ -859,17 +859,50 @@ % maybe this will change in Iwona-Math-Letters and Iwona-Math-Letters-Italic -\starttypescript [sans] [iwona,iwona-light,iwona-medium] [texnansi,ec,qx,t5] - \definefontsynonym[Iwona-Light] [\typescriptthree-iwonal] [encoding=\typescriptthree] - \definefontsynonym[Iwona-Regular] [\typescriptthree-iwonar] [encoding=\typescriptthree] - \definefontsynonym[Iwona-Medium] [\typescriptthree-iwonam] [encoding=\typescriptthree] - \definefontsynonym[Iwona-Bold] [\typescriptthree-iwonab] [encoding=\typescriptthree] - \definefontsynonym[Iwona-Heavy] [\typescriptthree-iwonah] [encoding=\typescriptthree] - \definefontsynonym[Iwona-LightItalic] [\typescriptthree-iwonali] [encoding=\typescriptthree] - \definefontsynonym[Iwona-RegularItalic] [\typescriptthree-iwonari] [encoding=\typescriptthree] - \definefontsynonym[Iwona-MediumItalic] [\typescriptthree-iwonami] [encoding=\typescriptthree] - \definefontsynonym[Iwona-BoldItalic] [\typescriptthree-iwonabi] [encoding=\typescriptthree] - \definefontsynonym[Iwona-HeavyItalic] [\typescriptthree-iwonahi] [encoding=\typescriptthree] +\starttypescript [sans] [iwona-light,iwona,iwona-medium,iwona-heavy,iwona-light-cond,iwona-cond,iwona-medium-cond,iwona-heavy-cond] [texnansi,ec,el,qx,t5] + \definefontsynonym[Iwona-Light] [\typescriptthree-iwonal] [encoding=\typescriptthree] + \definefontsynonym[Iwona-Regular] [\typescriptthree-iwonar] [encoding=\typescriptthree] + \definefontsynonym[Iwona-Medium] [\typescriptthree-iwonam] [encoding=\typescriptthree] + \definefontsynonym[Iwona-Bold] [\typescriptthree-iwonab] [encoding=\typescriptthree] + \definefontsynonym[Iwona-Heavy] [\typescriptthree-iwonah] [encoding=\typescriptthree] + \definefontsynonym[Iwona-LightItalic] [\typescriptthree-iwonali] [encoding=\typescriptthree] + \definefontsynonym[Iwona-RegularItalic] [\typescriptthree-iwonari] [encoding=\typescriptthree] + \definefontsynonym[Iwona-MediumItalic] [\typescriptthree-iwonami] [encoding=\typescriptthree] + \definefontsynonym[Iwona-BoldItalic] [\typescriptthree-iwonabi] [encoding=\typescriptthree] + \definefontsynonym[Iwona-HeavyItalic] [\typescriptthree-iwonahi] [encoding=\typescriptthree] + + \definefontsynonym[Iwona-CapsLight] [\typescriptthree-iwonalcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsRegular] [\typescriptthree-iwonarcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsMedium] [\typescriptthree-iwonamcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsBold] [\typescriptthree-iwonabcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsHeavy] [\typescriptthree-iwonahcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsLightItalic] [\typescriptthree-iwonalicap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsRegularItalic] [\typescriptthree-iwonaricap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsMediumItalic] [\typescriptthree-iwonamicap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsBoldItalic] [\typescriptthree-iwonabicap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CapsHeavyItalic] [\typescriptthree-iwonahicap] [encoding=\typescriptthree] + + \definefontsynonym[Iwona-CondLight] [\typescriptthree-iwonacl] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondRegular] [\typescriptthree-iwonacr] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondMedium] [\typescriptthree-iwonacm] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondBold] [\typescriptthree-iwonacb] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondHeavy] [\typescriptthree-iwonach] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondLightItalic] [\typescriptthree-iwonacli] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondRegularItalic] [\typescriptthree-iwonacri] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondMediumItalic] [\typescriptthree-iwonacmi] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondBoldItalic] [\typescriptthree-iwonacbi] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondHeavyItalic] [\typescriptthree-iwonachi] [encoding=\typescriptthree] + + \definefontsynonym[Iwona-CondCapsLight] [\typescriptthree-iwonaclcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsRegular] [\typescriptthree-iwonacrcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsMedium] [\typescriptthree-iwonacmcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsBold] [\typescriptthree-iwonacbcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsHeavy] [\typescriptthree-iwonachcap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsLightItalic] [\typescriptthree-iwonaclicap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsRegularItalic] [\typescriptthree-iwonacricap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsMediumItalic] [\typescriptthree-iwonacmicap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsBoldItalic] [\typescriptthree-iwonacbicap] [encoding=\typescriptthree] + \definefontsynonym[Iwona-CondCapsHeavyItalic] [\typescriptthree-iwonachicap] [encoding=\typescriptthree] \stoptypescript \starttypescript [math] [iwona] [default] diff --git a/tex/context/base/type-pre.tex b/tex/context/base/type-pre.tex index dd7feb443..ad2109a65 100644 --- a/tex/context/base/type-pre.tex +++ b/tex/context/base/type-pre.tex @@ -244,6 +244,7 @@ \starttypescriptcollection[special scripts] \starttypescript[chi] \readfile{\f!fontprefix chi}\donothing\donothing \stoptypescript + \starttypescript[jap] \readfile{\f!fontprefix jap}\donothing\donothing \stoptypescript \starttypescript[arb] \readfile{\f!fontprefix arb}\donothing\donothing \stoptypescript \starttypescript[heb] \readfile{\f!fontprefix heb}\donothing\donothing \stoptypescript diff --git a/tex/context/base/type-syn.tex b/tex/context/base/type-syn.tex index 549e560fb..e5967d2f0 100644 --- a/tex/context/base/type-syn.tex +++ b/tex/context/base/type-syn.tex @@ -452,26 +452,122 @@ \starttypescript [sans] [iwona-light] [name] \setups[font:fallback:sans] - \definefontsynonym [Sans] [Iwona-Light] [encoding=\typescriptthree] - \definefontsynonym [SansItalic] [Iwona-LightItalic] [encoding=\typescriptthree] - \definefontsynonym [SansBold] [Iwona-Medium] [encoding=\typescriptthree] - \definefontsynonym [SansBoldItalic] [Iwona-MediumItalic] [encoding=\typescriptthree] + \definefontsynonym [Sans] [Iwona-Light] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-LightItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-Medium] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-MediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansCaps] [Iwona-CapsLight] [encoding=\typescriptthree] + \definefontsynonym [SansItalicCaps] [Iwona-CapsLightItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBoldCaps] [Iwona-CapsMedium] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalicCaps] [Iwona-CapsMediumItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-light-caps] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CapsLight] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CapsLightItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CapsMedium] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CapsMediumItalic] [encoding=\typescriptthree] \stoptypescript \starttypescript [sans] [iwona] [name] \setups[font:fallback:sans] - \definefontsynonym [Sans] [Iwona-Regular] [encoding=\typescriptthree] - \definefontsynonym [SansItalic] [Iwona-RegularItalic] [encoding=\typescriptthree] - \definefontsynonym [SansBold] [Iwona-Bold] [encoding=\typescriptthree] - \definefontsynonym [SansBoldItalic] [Iwona-BoldItalic] [encoding=\typescriptthree] + \definefontsynonym [Sans] [Iwona-Regular] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-RegularItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-Bold] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-BoldItalic] [encoding=\typescriptthree] + \definefontsynonym [SansCaps] [Iwona-CapsRegular] [encoding=\typescriptthree] + \definefontsynonym [SansItalicCaps] [Iwona-CapsRegularItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBoldCaps] [Iwona-CapsBold] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalicCaps] [Iwona-CapsBoldItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-caps] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CapsRegular] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CapsRegularItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CapsBold] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CapsBoldItalic] [encoding=\typescriptthree] \stoptypescript \starttypescript [sans] [iwona-medium] [name] \setups[font:fallback:sans] - \definefontsynonym [Sans] [Iwona-Medium] [encoding=\typescriptthree] - \definefontsynonym [SansItalic] [Iwona-MediumItalic] [encoding=\typescriptthree] - \definefontsynonym [SansBold] [Iwona-Heavy] [encoding=\typescriptthree] - \definefontsynonym [SansBoldItalic] [Iwona-HeavyItalic] [encoding=\typescriptthree] + \definefontsynonym [Sans] [Iwona-Medium] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-MediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-Heavy] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-HeavyItalic] [encoding=\typescriptthree] + \definefontsynonym [SansCaps] [Iwona-CapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansItalicCaps] [Iwona-CapsMediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBoldCaps] [Iwona-CapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalicCaps] [Iwona-CapsHeavyItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-medium-caps] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CapsMediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CapsHeavyItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-light-cond] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CondLight] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CondLightItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CondMedium] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CondMediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansCaps] [Iwona-CondCapsLight] [encoding=\typescriptthree] + \definefontsynonym [SansItalicCaps] [Iwona-CondCapsLightItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBoldCaps] [Iwona-CondCapsMedium] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalicCaps] [Iwona-CondCapsMediumItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-light-cond-caps] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CondCapsLight] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CondCapsLightItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CondCapsMedium] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CondCapsMediumItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-cond] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CondRegular] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CondRegularItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CondBold] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CondBoldItalic] [encoding=\typescriptthree] + \definefontsynonym [SansCaps] [Iwona-CondCapsRegular] [encoding=\typescriptthree] + \definefontsynonym [SansItalicCaps] [Iwona-CondCapsRegularItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBoldCaps] [Iwona-CondCapsBold] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalicCaps] [Iwona-CondCapsBoldItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-cond-caps] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CondCapsRegular] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CondCapsRegularItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CondCapsBold] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CondCapsBoldItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-medium-cond] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CondMedium] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CondMediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CondHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CondHeavyItalic] [encoding=\typescriptthree] + \definefontsynonym [SansCaps] [Iwona-CondCapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansItalicCaps] [Iwona-CondCapsMediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBoldCaps] [Iwona-CondCapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalicCaps] [Iwona-CondCapsHeavyItalic] [encoding=\typescriptthree] +\stoptypescript + +\starttypescript [sans] [iwona-medium-cond-caps] [name] + \setups[font:fallback:sans] + \definefontsynonym [Sans] [Iwona-CondCapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansItalic] [Iwona-CondCapsMediumItalic] [encoding=\typescriptthree] + \definefontsynonym [SansBold] [Iwona-CondCapsHeavy] [encoding=\typescriptthree] + \definefontsynonym [SansBoldItalic] [Iwona-CondCapsHeavyItalic] [encoding=\typescriptthree] \stoptypescript \starttypescript [math] [iwona-light] [name] diff --git a/tex/context/base/unic-chi.tex b/tex/context/base/unic-chi.tex deleted file mode 100644 index b8e498690..000000000 --- a/tex/context/base/unic-chi.tex +++ /dev/null @@ -1,26 +0,0 @@ -%D \module -%D [ file=unic-chi, -%D version=2005.12.14, -%D title=\CONTEXT\ \UNICODE\ Macros, -%D subtitle=Chinese Vectors, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -% \def\chineseglyph#1#2#3% #1=hex (we know the font anyway), #2=dec, #3=chr -% {\uchar{#2}{#3}} -% -% \dostepwiserecurse{78}{159}{1} % 4E-9F -% {\expanded{\defineunicodecommand \recurselevel\space {\noexpand\chineseglyph{\lchexnumbers{\recurselevel}}}}} - -% \dostepwiserecurse{78}{159}{1}{\defineunicodecommand #1 {\uchar}} % 4E-9F - -% temp: we need proper ranges - -\dostepwiserecurse{40}{159}{1}{\defineunicodecommand #1 {\uchar}} - -\endinput diff --git a/tex/context/base/unic-cjk.tex b/tex/context/base/unic-cjk.tex new file mode 100644 index 000000000..2835e6cf1 --- /dev/null +++ b/tex/context/base/unic-cjk.tex @@ -0,0 +1,16 @@ +%D \module +%D [ file=unic-cjk, +%D version=2005.12.14, +%D title=\CONTEXT\ \UNICODE\ Macros, +%D subtitle=CJK Vectors, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\dostepwiserecurse{40}{159}{1}{\expanded{\defineunicodecommand {\recurselevel}} {\lookaheaduchar}} + +\endinput diff --git a/tex/context/base/unic-exp.tex b/tex/context/base/unic-exp.tex index 17bdaef06..6ed2ef38d 100644 --- a/tex/context/base/unic-exp.tex +++ b/tex/context/base/unic-exp.tex @@ -51,31 +51,29 @@ %D For this purpose, we need to redefine the resolver. \def\doutfunihash#1#2% - {\ifcsname\@@univector\@@univector\number#1\endcsname - \csname\@@univector\@@univector\number#1\endcsname{\utfmod{#2}}% - \else\ifcsname\@@univector\number#1\endcsname - \csname\@@univector#1\endcsname{\utfmod{#2}}% - \else - \@@unknownchar - \fi\fi} + {\csname \@@univector + \ifcsname\@@univector\@@univector#1\endcsname \@@univector#1\else + \ifcsname\@@univector #1\endcsname #1\else + \s!unknown\fi\fi + \endcsname{\utfmod{#2}}} + +\setvalue{\@@univector\s!unknown}#1% + {\@@unknownchar} + +\def\doutfunihashglyph#1#2#3% div mod raw + {\csname utf!\ifnum#3<\utf@i1\else + \ifcsname\@@unicommand#1\endcsname2\else + \ifcsname\@@univector\@@univector#1\endcsname3\else + \ifcsname\@@univector #1\endcsname4\else + 5\fi\fi\fi\fi !\endcsname{#1}{#2}} -% or: -% -% \def\doutfunihash#1#2% -% {\csname -% \ifcsname\@@univector\@@univector\number#1\endcsname -% \@@univector\@@univector\number#1% -% \else\ifcsname\@@univector\number#1\endcsname -% \@@univector#1% -% \else -% \strippedcsname\noutfunihash -% \fi\fi -% \endcsname{\utfmod{#2}}} -% -% \def\noutfunihash#1% -% {\unknowncharacter} +\setvalue{utf!1!}#1{\unicodeasciicharacter} % {#2} +\setvalue{utf!2!}#1{\csname\@@unicommand#1\endcsname} % {#2} +\setvalue{utf!3!}#1#2{\csname\csname\@@univector\@@univector#1\endcsname{#2}\endcsname} % watch the nested csname; it's a speed up +\setvalue{utf!4!}#1#2{\csname\csname\@@univector#1\endcsname{#2}\endcsname} % watch the nested csname; it's a speed up +\setvalue{utf!5!}#1#2{\unicodeunknowncharacter} -\let\utfunihash\utfunihashglyph +% \let\utfunihash\utfunihashglyph %D Let's use it: diff --git a/tex/context/base/unic-ext.tex b/tex/context/base/unic-ext.tex deleted file mode 100644 index eb483fc17..000000000 --- a/tex/context/base/unic-ext.tex +++ /dev/null @@ -1,35 +0,0 @@ -%D \module -%D [ file=unic-ini, -%D version=2006.13.01, -%D title=\CONTEXT\ \UNICODE\ Support, -%D subtitle=\UNICODE\ \& UTF-8 extras, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\writestatus{loading}{Context UNICODE Macros (ext)} - -\beginTEX \expandafter \endinput \endTEX - -\unprotect - -%D Here we hook in a lookahead mechanism. This is needed for -%D Chinese. In future versions of \PDFTEX\ we need a real -%D lookahead mechanism. - -\let\normalunicodechar\unicodechar - -\newcount\unicodecharnumber - -\def\unicodechar#1% - {\unicodecharnumber#1% - \futurelet\nextglyph\dounicodechar} - -\def\dounicodechar - {\normalunicodechar\unicodecharnumber} - -\protect \endinput diff --git a/tex/context/base/unic-ini.tex b/tex/context/base/unic-ini.tex index 479b197be..e4fea8739 100644 --- a/tex/context/base/unic-ini.tex +++ b/tex/context/base/unic-ini.tex @@ -22,6 +22,18 @@ \unprotect +% ÀÃÂÃÄÅàáâãäå +% ÆÇæç +% ÈÉÊËèéêë +% ÃŒÃÃŽÃÞìíîïþ +% Ãð +% Ññ +% ÒÓÔÕÖòóôõö +% Øø +% ÙÚÛÜùúû +% Ãýÿ +% ß + %D This module deals with unicode, and in particular with %D \UTF-8 conversion. The prelude to this module was \type %D {xtag-utf}, which is now replaced by a one||liner. The @@ -218,6 +230,8 @@ %D %D Less parsing, and therefore faster: +% beware, this may change: #1 rawchar (=> `#1 and such, saves tokens) + \def\utftwouniglph#1#2% {\@EA\unicodechar\@EA{\the\numexpr\utf@a*(#1-\utf@d)+% `#2-\utf@g\relax}} @@ -230,6 +244,23 @@ {\@EA\unicodechar\@EA{\the\numexpr\utf@c*(#1-\utf@f)+% \utf@b*(`#2-\utf@g)+\utf@a*(`#3-\utf@g)+`#4-\utf@g\relax}} +% \def\keeputfcharacters +% {\def\utftwouniglph ##1##2{\rawcharacter{##1}\string##2}% +% \def\utfthreeuniglph ##1##2##3{\rawcharacter{##1}\string##2\string##3}% +% \def\utffouruniglph ##1##2##3##4{\rawcharacter{##1}\string##2\string##3\string##4}} + +\def\keeputfcharacters + {\let\utftwouniglph \rawcharacter + \let\utfthreeuniglph\rawcharacter + \let\utffouruniglph \rawcharacter} + +\appendtoks \keeputfcharacters \to \everywritestring + +% \bgroup +% \keeputfcharacters +% \expanded{\index{\XMLflush{whatever}}} +% \egroup + %D Now we come to the unicode handler itself. We will use a few %D constants, which saves us (at least at the time of writing %D and testing these macros) another 10\%. @@ -408,19 +439,35 @@ \def\utfunihashglyph#1% {\@EA\doutfunihashglyph\@EA{\number\numexpr\utfdiv{#1}\@EA\relax\@EA}\@EA{\number\utfmod{#1}}{#1}} +% \def\doutfunihashglyph#1#2#3% div mod raw +% {\csname +% \ifnum#3<\utf@i +% \strippedcsname\unicodeasciicharacter\endcsname{#2}% +% \else\ifcsname\@@unicommand#1\endcsname +% \@@unicommand#1\endcsname{#2}% +% \else\ifcsname\@@univector#1\endcsname +% \csname\@@univector#1\endcsname{#2}\endcsname % watch the nested csname; it's a speed up +% \else +% \strippedcsname\unicodeunknowncharacter\endcsname{#2}% +% \fi\fi\fi} +% +% \def\unicodeunknowncharacter#1% +% {\unknownchar} +% +% The next one permits lookahead + \def\doutfunihashglyph#1#2#3% div mod raw - {\csname - \ifnum#3<\utf@i - \strippedcsname\unicodeasciicharacter\endcsname{#2}% - \else\ifcsname\@@unicommand#1\endcsname - \@@unicommand#1\endcsname{#2}% - \else\ifcsname\@@univector#1\endcsname - \csname\@@univector#1\endcsname{#2}\endcsname % watch the nested csname; it's a speed up - \else - \strippedcsname\unicodeunknowncharacter\endcsname{#2}% - \fi\fi\fi} + {\csname utf!\ifnum#3<\utf@i 1\else + \ifcsname\@@unicommand#1\endcsname2\else + \ifcsname\@@univector #1\endcsname3\else + 4\fi\fi\fi !\endcsname{#1}{#2}} + +\setvalue{utf!1!}#1{\unicodeasciicharacter} % {#2} +\setvalue{utf!2!}#1{\csname\@@unicommand#1\endcsname} % {#2} +\setvalue{utf!3!}#1#2{\csname\csname\@@univector#1\endcsname{#2}\endcsname} % watch the nested csname; it's a speed up +\setvalue{utf!4!}#1#2{\unicodeunknowncharacter} -\def\unicodeunknowncharacter#1% +\def\unicodeunknowncharacter {\unknownchar} %D With: @@ -569,7 +616,7 @@ \def\unidiv{0} \def\unimod{0} -\chardef\utfunihashmode=0 % 0=hash glyph 1=font glyph +\chardef\utfunihashmode=0 % 0=hash glyph / 1=font glyph \def\utfunifontglyph#1% {\xdef\unidiv{\number\utfdiv{#1}}% @@ -613,7 +660,6 @@ \def\utfunihashcommand {\ifcase\utfunihashmode - % \@EA\@EAEAEA\@EA\string\@EA\utfunihashglyph \@EA\utfunihushcommand \else \@EA\utfunifontcommand @@ -686,6 +732,9 @@ \endTEX +\def\uchartoutf#1#2% + {\expandafter\numbertoutf\expandafter{\the\numexpr#1*256+#2\relax}} + %D Goodies: \fetchruntimecommand \showunicodevector {\f!unicprefix\s!run} @@ -694,10 +743,14 @@ %D Well, let's at least preload a few familiar ones. Here we %D also load the \UTF\ regime. -\useunicodevector[0,1,2,3,4,5,30,32,33,34,39] \useregime[utf] +\useunicodevector[0,1,2,3,4,5,30,32,33,34,39] +\useunicodevector[cjk] + +\useregime[utf] % 31, text mem usage first \protect \endinput \unprotect + diff --git a/tex/context/base/x-set-11.tex b/tex/context/base/x-set-11.tex index 739c07ccf..9c24ae53d 100644 --- a/tex/context/base/x-set-11.tex +++ b/tex/context/base/x-set-11.tex @@ -383,7 +383,17 @@ \let\plaatssetup \placesetup \let\plaatselkesetup\placeeverysetup -\def\dosetup#1{{\enableXML\flushXMLelement{stp:#1}}} +\bgroup \catcode`\<=\active + +\gdef\dosetup#1% + {\bgroup + \def<<##1>>{##1}% + \edef\ascii{#1}% + \enableXML + \expanded{\flushXMLelement{stp:\ascii}}% + \egroup} + +\egroup \defineXMLenvironment [cd:command] [name=,type=,generated=,interactive=] {} diff --git a/tex/context/base/xtag-ext.tex b/tex/context/base/xtag-ext.tex index e2db5eae4..e109ce2c7 100644 --- a/tex/context/base/xtag-ext.tex +++ b/tex/context/base/xtag-ext.tex @@ -310,7 +310,7 @@ {\csname\??xp#1\endcsname} \appendtoks - \defineXMLargument[\XMLprocessingparameter\c!escape]\getXMlentity + \defineXMLargument[\XMLprocessingparameter\c!escape]\getXMLentity \to \aftersetupXMLprocessing \setupXMLprocessing @@ -325,12 +325,25 @@ \def\getXMLdeccharacter##1{\numbertoutf{##1}}% \def\getXMLentity##1{##1}% \def<{\noexpand<}% + \ifcase\xmlexpandmode + \or + % 1 = default + \or + % 2 = keep utf + \keeputfcharacters % new, needed for chinese and such + \fi + \let\uchar\relax + \let\unicodechar\relax \xdef\@@globalexpanded{#1}% \endgroup \convertcommand\@@globalexpanded\to} \egroup -\installexpander \v!xml {\expandxmlargument} +\chardef\xmlexpandmode\plusone + +\installexpander {xml} {\chardef\xmlexpandmode\plusone\expandxmlargument} +\installexpander {xml:cmd} {\chardef\xmlexpandmode\plusone\expandxmlargument} +\installexpander {xml:utf} {\chardef\xmlexpandmode\plustwo\expandxmlargument} \protect \endinput diff --git a/tex/context/base/xtag-ini.tex b/tex/context/base/xtag-ini.tex index 2b9dc8aa2..48f0c8c6f 100644 --- a/tex/context/base/xtag-ini.tex +++ b/tex/context/base/xtag-ini.tex @@ -1857,7 +1857,8 @@ \@EA\let\csname\@@XMLelement:#1/\endcsname\donothing} \long\gdef\dododefineXMLnestedenvironment#1#2#3% - {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\getXMLgroupedenvironment{#1}{#2}{#3}}} + {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\getXMLgroupedenvironment{#1}{#2}{#3}}% + \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2#3}} \long\gdef\dododefineXMLnestedargument#1#2% {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\getXMLgroupedargument{#1}{#2}}% @@ -2254,6 +2255,12 @@ \egroup \convertcommand\@@XML@@string\to#1} +\def\defXMLpar#1#2#3% to be documented + {\@EA\def\@EA#1\csname\ifcsname\@@XMLvariable:#2:#3\endcsname\@@XMLvariable:#2:#3\else\s!empty\fi\endcsname} + +\def\setvalueXMLpar#1#2#3% to be documented + {\@EA\let\csname#1\@EA\endcsname\csname\ifcsname\@@XMLvariable:#2:#3\endcsname\@@XMLvariable:#2:#3\else\s!empty\fi\endcsname} + \def\XMLshow#1% {\showvalue{\@@XMLdata:#1}} diff --git a/tex/context/base/xtag-stk.tex b/tex/context/base/xtag-stk.tex new file mode 100644 index 000000000..d879a3ace --- /dev/null +++ b/tex/context/base/xtag-stk.tex @@ -0,0 +1,166 @@ +%D \module +%D [ file=xtag-exp, +%D version=2006.01.19, +%D title=\CONTEXT\ XML Support, +%D subtitle=Stacking Data, +%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. + +\beginTEX + \writestatus{XML}{sorry, XML is only supported in (pdf)etex} + \endinput +\endTEX + +\writestatus{loading}{Context XML Macros (stacks)} + +%D This module is experimental. Don't use it (yet). It needs a +%D clean-up. The stack handler is used in the third MathML renderer. + +\unprotect + +\ifx\XMLRtoks \undefined \newtoks \XMLRtoks \fi +\ifx\XMLstacklevel\undefined \newcount\XMLstacklevel \fi + +\def\@@xmlstack{@@xmlstk} + +\let\XMLstackid\empty + +\def\resetXMLelements + {\XMLstacklevel\zerocount} + +\def\startsavingXMLelements + {\XMLstacklevel\zerocount + \let\normalexecuteXMLelement\executeXMLelement + \def\executeXMLelement{\csname\@@XMLelement:\@@xmlstack\ifcase\kindofXMLelement\or\or\or/\fi\endcsname}} + +\def\stopsavingXMLelements + {\let\executeXMLelement\normalexecuteXMLelement} + +\defineXMLnestedenvironmentsave + [xmlstack] + {} + {\pushXMLdataonstack} + +\startXMLmapping[xmlstack:test] + + \defineXMLnestedenvironmentsave + [xmlstack] + {} + {\pushXMLnameonstack} + + % in mathml handler: + % + % \defineXMLnested + % [apply] + % {\startsavingXMLelements} + % {\stopsavingXMLelements} + +\stopXMLmapping + +\def\pushXMLdataonstack + {\advance\XMLstacklevel\plusone + \letvalue {\@@xmlstack:n:\XMLstackid:\number\XMLstacklevel}\currentXMLelement + \saveXMLdata {\@@xmlstack:t:\XMLstackid:\number\XMLstacklevel} \@@xmlstack + \saveXMLdatainelement{\@@xmlstack:d:\XMLstackid:\number\XMLstacklevel}\currentXMLelement\@@xmlstack} + +\def\pushXMLnameonstack + {\advance\XMLstacklevel\plusone + \letvalue {\@@xmlstack:n:\XMLstackid:\number\XMLstacklevel}\currentXMLelement} + +\def\eraseXMLdataonstack#1% + {\letvalue{\@@xmlstack:n:\XMLstackid:\number#1}\empty + \XMLerase{\@@xmlstack:t:\XMLstackid:\number#1}% + \XMLerase{\@@xmlstack:d:\XMLstackid:\number#1}} + +\def\getXMLstackdata{\getXMLstackiddata\XMLstackid} +\def\getXMLstackname{\getXMLstackidname\XMLstackid} +\def\getXMLstacktext{\getXMLstackidtext\XMLstackid} + +\def\getXMLstackiddata#1#2{\flushXMLelement{\@@xmlstack:d:#1:\ifnum#2>\XMLstacklevel\else\number#2\fi}} +\def\getXMLstackidname#1#2{\getvalue {\@@xmlstack:n:#1:\ifnum#2>\XMLstacklevel\else\number#2\fi}} +\def\getXMLstackidtext#1#2{\flushXMLelement{\@@xmlstack:t:#1:\ifnum#2>\XMLstacklevel\else\number#2\fi}} + +\def\rawXMLstackdata{\rawXMLstackiddata\XMLstackid} +\def\rawXMLstackname{\rawXMLstackidname\XMLstackid} +\def\rawXMLstacktext{\rawXMLstackidtext\XMLstackid} + +\def\rawXMLstackiddata#1#2{\flushXMLelement{\@@xmlstack:d:#1:\number#2}} +\def\rawXMLstackidname#1#2{\getvalue {\@@xmlstack:n:#1:\number#2}} +\def\rawXMLstackidtext#1#2{\flushXMLelement{\@@xmlstack:t:#1:\number#2}} + +\def\defXMLstackiddata#1#2#3% + {\defXMLelement#1{\@@xmlstack:d:#2:\ifnum#3>\XMLstacklevel\else\number#3\fi}} + +\def\defXMLstackdata#1% #2 + {\defXMLstackiddata#1\XMLstackid} + +\def\showXMLstacknames + {[\space\dorecurse\XMLstacklevel{\getXMLstackname\recurselevel\space}]} + +\def\flushXMLstackfrom#1% + {\dostepwiserecurse{#1}\XMLstacklevel\plusone + {\getXMLstackdata\recurselevel}} + +\def\flushXMLstackwith#1#2% + {\dostepwiserecurse{#1}\XMLstacklevel\plusone + {\relax\ifnum\recurselevel>#1\relax#2\fi + \getXMLstackdata\recurselevel}} + +\def\flushXMLnamedstackwith#1#2#3% + {\dostepwiserecurse{#1}\XMLstacklevel\plusone + {\expanded{\doifinset{\getXMLstackname\recurselevel}{#2}} + {\ifnum\recurselevel>#1\relax#3\fi + \getXMLstackdata\recurselevel}}} + +\def\countXMLnamedstack#1% + {\scratchcounter\zerocount + \dorecurse\XMLstacklevel + {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}} + {\advance\scratchcounter\plusone}}} + +\def\collectXMLstack#1% + {\XMLRtoks\emptytoks + \dorecurse\XMLstacklevel + {\ifnum\recurselevel>\plusone\appendtoks#1\to\XMLRtoks\fi + \expandafter\appendtoks\expandafter\getXMLstackdata\expandafter{\recurselevel}\to\XMLRtoks}} + +\def\collectXMLstackrows#1#2% + {\XMLRtoks\emptytoks + \dostepwiserecurse{#1}\XMLstacklevel\plusone + {\ifnum\recurselevel>#1\appendtoks#2\to\XMLRtoks\fi + \expandafter\appendtoks\expandafter\getXMLstackdata\expandafter{\recurselevel}\to\XMLRtoks}} + +\def\collectXMLnamedstack#1#2% + {\XMLRtoks\emptytoks + \dorecurse\XMLstacklevel + {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}} + {\ifnum\recurselevel>\plusone\appendtoks#2\to\XMLRtoks\fi + \expandafter\appendtoks\expandafter\getXMLstackdata\expandafter{\recurselevel}\to\XMLRtoks}}} + +\def\collectXMLnamedstacknamed#1#2#3% names, inbetween, nestednames (maddness, this macro) + {\XMLRtoks\emptytoks + \!!doneafalse + \let\globalascii\empty + \dorecurse\XMLstacklevel + {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}} + {\begingroup + \startsavingXMLelements + \rawXMLstacktext\recurselevel % still on stack, raw does not test + \stopsavingXMLelements + \let\globalascii\empty + \dorecurse\XMLstacklevel + {\expanded{\doifinset{\getXMLstackname\recurselevel}{#2}} + {\xdef\globalascii{\getXMLstackdata\recurselevel}}}% + \endgroup + \ifx\globalascii\empty\else + \if!!donea\appendtoks#3\to\XMLRtoks\fi + \expandafter\appendtoks\globalascii\to\XMLRtoks + \!!doneatrue + \fi}}} + +\protect \endinput diff --git a/tex/context/interface/cont-cz.xml b/tex/context/interface/cont-cz.xml index 8cc2d7638..548f59f0a 100644 --- a/tex/context/interface/cont-cz.xml +++ b/tex/context/interface/cont-cz.xml @@ -385,20 +385,6 @@ - - - - - - - - - - - - - - @@ -4885,7 +4871,7 @@ - + @@ -5137,7 +5123,7 @@ - + @@ -5206,6 +5192,9 @@ + + + @@ -6543,7 +6532,7 @@ - + @@ -6583,7 +6572,7 @@ - + @@ -8916,7 +8905,7 @@ - + @@ -9003,7 +8992,7 @@ - + diff --git a/tex/context/interface/cont-de.xml b/tex/context/interface/cont-de.xml index 9ea60bdba..9170b8bb7 100644 --- a/tex/context/interface/cont-de.xml +++ b/tex/context/interface/cont-de.xml @@ -385,20 +385,6 @@ - - - - - - - - - - - - - - @@ -4885,7 +4871,7 @@ - + @@ -5137,7 +5123,7 @@ - + @@ -5206,6 +5192,9 @@ + + + @@ -6543,7 +6532,7 @@ - + @@ -6583,7 +6572,7 @@ - + @@ -8916,7 +8905,7 @@ - + @@ -9003,7 +8992,7 @@ - + diff --git a/tex/context/interface/cont-en.xml b/tex/context/interface/cont-en.xml index 26ff06d56..fe72edfe2 100644 --- a/tex/context/interface/cont-en.xml +++ b/tex/context/interface/cont-en.xml @@ -385,20 +385,6 @@ - - - - - - - - - - - - - - @@ -4885,7 +4871,7 @@ - + @@ -5137,7 +5123,7 @@ - + @@ -5206,6 +5192,9 @@ + + + @@ -6543,7 +6532,7 @@ - + @@ -6583,7 +6572,7 @@ - + @@ -8916,7 +8905,7 @@ - + @@ -9003,7 +8992,7 @@ - + diff --git a/tex/context/interface/cont-fr.xml b/tex/context/interface/cont-fr.xml index bacd77ec4..c177fc403 100644 --- a/tex/context/interface/cont-fr.xml +++ b/tex/context/interface/cont-fr.xml @@ -385,20 +385,6 @@ - - - - - - - - - - - - - - @@ -4885,7 +4871,7 @@ - + @@ -5137,7 +5123,7 @@ - + @@ -5206,6 +5192,9 @@ + + + @@ -6543,7 +6532,7 @@ - + @@ -6583,7 +6572,7 @@ - + @@ -8916,7 +8905,7 @@ - + @@ -9003,7 +8992,7 @@ - + diff --git a/tex/context/interface/cont-it.xml b/tex/context/interface/cont-it.xml index 5e43a59b4..0ee663431 100644 --- a/tex/context/interface/cont-it.xml +++ b/tex/context/interface/cont-it.xml @@ -385,20 +385,6 @@ - - - - - - - - - - - - - - @@ -4885,7 +4871,7 @@ - + @@ -5137,7 +5123,7 @@ - + @@ -5206,6 +5192,9 @@ + + + @@ -6543,7 +6532,7 @@ - + @@ -6583,7 +6572,7 @@ - + @@ -8916,7 +8905,7 @@ - + @@ -9003,7 +8992,7 @@ - + diff --git a/tex/context/interface/cont-nl.xml b/tex/context/interface/cont-nl.xml index 39dda6977..97b03f596 100644 --- a/tex/context/interface/cont-nl.xml +++ b/tex/context/interface/cont-nl.xml @@ -385,20 +385,6 @@ - - - - - - - - - - - - - - @@ -4885,7 +4871,7 @@ - + @@ -5137,7 +5123,7 @@ - + @@ -5206,6 +5192,9 @@ + + + @@ -6543,7 +6532,7 @@ - + @@ -6583,7 +6572,7 @@ - + @@ -8916,7 +8905,7 @@ - + @@ -9003,7 +8992,7 @@ - + diff --git a/tex/context/interface/cont-ro.xml b/tex/context/interface/cont-ro.xml index 966492e51..39823b0bf 100644 --- a/tex/context/interface/cont-ro.xml +++ b/tex/context/interface/cont-ro.xml @@ -385,20 +385,6 @@ - - - - - - - - - - - - - - @@ -4885,7 +4871,7 @@ - + @@ -5137,7 +5123,7 @@ - + @@ -5206,6 +5192,9 @@ + + + @@ -6543,7 +6532,7 @@ - + @@ -6583,7 +6572,7 @@ - + @@ -8916,7 +8905,7 @@ - + @@ -9003,7 +8992,7 @@ - + diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml index c88098322..89c927bd1 100644 --- a/tex/context/interface/keys-cz.xml +++ b/tex/context/interface/keys-cz.xml @@ -1,6 +1,6 @@ - + @@ -120,6 +120,9 @@ + + + @@ -479,6 +482,7 @@ + @@ -797,6 +801,7 @@ + @@ -1528,6 +1533,8 @@ + + diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml index 97fc05f41..81a269c5f 100644 --- a/tex/context/interface/keys-de.xml +++ b/tex/context/interface/keys-de.xml @@ -1,6 +1,6 @@ - + @@ -120,6 +120,9 @@ + + + @@ -479,6 +482,7 @@ + @@ -797,6 +801,7 @@ + @@ -1528,6 +1533,8 @@ + + diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml index 48e154948..1fb5d235d 100644 --- a/tex/context/interface/keys-en.xml +++ b/tex/context/interface/keys-en.xml @@ -1,6 +1,6 @@ - + @@ -120,6 +120,9 @@ + + + @@ -479,6 +482,7 @@ + @@ -797,6 +801,7 @@ + @@ -1528,6 +1533,8 @@ + + diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml index c728c4dce..f7d7755b1 100644 --- a/tex/context/interface/keys-fr.xml +++ b/tex/context/interface/keys-fr.xml @@ -1,6 +1,6 @@ - + @@ -120,6 +120,9 @@ + + + @@ -479,6 +482,7 @@ + @@ -797,6 +801,7 @@ + @@ -1528,6 +1533,8 @@ + + diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml index 557068f6f..09a4d499a 100644 --- a/tex/context/interface/keys-it.xml +++ b/tex/context/interface/keys-it.xml @@ -1,6 +1,6 @@ - + @@ -120,6 +120,9 @@ + + + @@ -479,6 +482,7 @@ + @@ -797,6 +801,7 @@ + @@ -1528,6 +1533,8 @@ + + diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml index ac75d0920..cb3930f26 100644 --- a/tex/context/interface/keys-nl.xml +++ b/tex/context/interface/keys-nl.xml @@ -1,6 +1,6 @@ - + @@ -120,6 +120,9 @@ + + + @@ -479,6 +482,7 @@ + @@ -797,6 +801,7 @@ + @@ -1528,6 +1533,8 @@ + + diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml index 14beaf1fc..9bba8b635 100644 --- a/tex/context/interface/keys-ro.xml +++ b/tex/context/interface/keys-ro.xml @@ -1,6 +1,6 @@ - + @@ -120,6 +120,9 @@ + + + @@ -479,6 +482,7 @@ + @@ -797,6 +801,7 @@ + @@ -1528,6 +1533,8 @@ + + -- cgit v1.2.3