Hi Wim,
On Tue, 31 Jul 2007, WN wrote:
> Hi Aditya
>
> Basically I want to include the RSFS font and some user defined symbols from
> txexa as explained in my previous email.
>
> I did some testing with the test code which I send and found the cause of the
> problem, however no solution yet.
> The cause of the problem lies in the line where I say
>
> \definetypeface[MyFace] [mm] [math] [modern] *[modern] *[encoding=ec]
>
> This will enable the user defined symbols and all the math symbols as shown
> via \showmathcharacters are correct.
>
> However all the matrix, mathmatrix environments don't adhere to the aligment
> I specify except for the first option i.e.
> when I say \startmatrix[align={right, etc .... }] everything is aligned to
> the right but the other aligment options are ignored.
>
> When I substitute *[modern]* with *[default] *as in
>
> \definetypeface[MyFace] [mm] [math] [modern] *[default] *[encoding=ec]
>
> In this instance all the aligment as specified in the matrix, mathmatrix
> environments work. However some of the
> math symbols like \Delta are incorrect. And my user defined symbols are also
> incorrect.
Phew! This was a hard to find bug. First, to illustrate the bug:
\definetypeface[mainface] [rm] [serif] [modern] [default] [encoding=texansi]
\definetypeface[mainface] [mm] [math] [modern] [modern] [encoding=texansi]
\setupbodyfont[mainface,11pt]
\loggingall
\starttext
\startformula
A = \startmatrix[align={left,right}]
\NC 11 \NC 2 \NR
\NC 2 \NC -5 \NR
\stopmatrix
\stopformula
\stoptext
Try with and without the font declarations. With the font
declarations, you lost matrix alignment. The reason is that
\startmatrix uses \scratchcounter, which gets rewritten when using a
font collection other than "default". One fix it to replace
\scractcounter in matrix constructions by some other counter, for
example \!!counta.
So, add this to your file (beware of false line breaks in email)
\unprotect
\def\dostartmathmatrix[#1][#2]%
{\begingroup
\edef\currentmathmatrix{#1}%
\doifassignmentelse{#2}{\setupmathmatrix[#1][#2]}\donothing
\null
\executeifdefined{\??mx:\mathmatrixparameter\c!location}{\getvalue{\??mx:\v!lohi}}%
\mathmatrixleft
\mathmatrixbox\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\crcr}%
\normalbaselines
\mathsurround\zeropoint
\everycr\emptytoks
\tabskip\zeropoint
\eqaligncolumn\zerocount % could be \!!counta
\processcommacommand[\mathmatrixparameter\c!align]{\advance\eqaligncolumn\plusone\dosetmatrixcolumn}%
\!!counta=\ifnum\eqaligncolumn>\!!counta \eqaligncolumn \else \plusone \fi
\global\eqaligncolumn\plusone
\preparemathmatrix } % uses !!counta
\def\buildmathmatrix % beware: etex only
{\scratchtoks\emptytoks
\expanded{\scratchtoks{\the\scratchtoks\the\!!toksa}}%
\dorecurse{\numexpr\!!counta-\plusone\relax}
{\expanded{\scratchtoks{\the\scratchtoks\the\!!toksb}}}%
\expanded{\scratchtoks{\the\scratchtoks\the\!!toksc }}}
\protect
Hans, this needs to be changed in core-mat.tex. I do not know if
something can be done to avoid such errors in future.
Wim, I am attaching a modified version of your file which gives the
correct output. (I needed to make some changes since I did not have
your map file for rsfs). You loose some symbols from the math
collection. I do not know how to add extra math symbol sets without
loosing these characters. Look at math-tim.tex to see how more
families can be supported. But I would suggest waiting for mkiv, where
the limit on font families will be removed and some of this font mess
would be cleaner.
Aditya
\unprotect
\def\dostartmathmatrix[#1][#2]%
{\begingroup
\edef\currentmathmatrix{#1}%
\doifassignmentelse{#2}{\setupmathmatrix[#1][#2]}\donothing
\null
\executeifdefined{\??mx:\mathmatrixparameter\c!location}{\getvalue{\??mx:\v!lohi}}%
\mathmatrixleft
\mathmatrixbox\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\crcr}%
\normalbaselines
\mathsurround\zeropoint
\everycr\emptytoks
\tabskip\zeropoint
\eqaligncolumn\zerocount % could be \!!counta
\processcommacommand[\mathmatrixparameter\c!align]{\advance\eqaligncolumn\plusone\dosetmatrixcolumn}%
\!!counta=\ifnum\eqaligncolumn>\!!counta \eqaligncolumn \else \plusone \fi
\global\eqaligncolumn\plusone
\preparemathmatrix } % uses !!counta
\def\buildmathmatrix % beware: etex only
{\scratchtoks\emptytoks
\expanded{\scratchtoks{\the\scratchtoks\the\!!toksa}}%
\dorecurse{\numexpr\!!counta-\plusone\relax}
{\expanded{\scratchtoks{\the\scratchtoks\the\!!toksb}}}%
\expanded{\scratchtoks{\the\scratchtoks\the\!!toksc }}}
\protect
\loadmapfile[original-youngryu-tx.map]
\starttypescript [math] [modern,computer-modern,latin-modern,ams] [size]
\definebodyfont [17.3pt,14.4pt,12pt,11pt,10pt,9pt] [mm] [mb=rsfs10 sa 1]
\definebodyfont [8pt,7pt] [mm] [mb=rsfs7 sa 1]
\definebodyfont [6pt,5pt,4pt] [mm] [mb=rsfs5 sa 1]
\definebodyfont
[28pt,24pt,18pt,17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt] [mm]
[mc=txexa sa 1]
\stoptypescript
\startmathcollection [default]
\definemathsymbol [oiint] [op] [mc] ["08] [mc] ["09]
\definemathsymbol [oiiint] [op] [mc] ["29] [mc] ["2a]
\definemathsymbol [ointctrclockwise] [op] [mc] ["0A] [mc] ["0B]
\definemathsymbol [ointclockwise] [op] [mc] ["0C] [mc] ["0D]
\definemathsymbol [varointctrclockwise] [op] [mc] ["2B] [mc] ["2C]
\definemathsymbol [varointclockwise] [op] [mc] ["2D] [mc] ["2E]
\definemathsymbol [iint] [op] [mc] ["21] [mc] ["22]
\definemathsymbol [iiint] [op] [mc] ["23] [mc] ["24]
\definemathsymbol [iiiint] [op] [mc] ["25] [mc] ["26]
\definemathsymbol [idotsint] [op] [mc] ["27] [mc] ["28]
\definemathsymbol [oiintctrclockwise] [op] [mc] ["40] [mc] ["41]
\definemathsymbol [oiintclockwise] [op] [mc] ["48] [mc] ["49]
\definemathsymbol [varoiintctrclockwise][op] [mc] ["4A] [mc] ["4B]
\definemathsymbol [varoiintclockwise] [op] [mc] ["42] [mc] ["43]
\definemathsymbol [oiiintctrclockwise] [op] [mc] ["44] [mc] ["45]
\definemathsymbol [oiiintclockwise] [op] [mc] ["4C] [mc] ["4D]
\definemathsymbol [varoiiintctrclockwise][op] [mc] ["4E] [mc] ["4F]
\definemathsymbol [varoiiintclockwise] [op] [mc] ["46] [mc] ["47]
\stopmathcollection
\definefamilysynonym [default] [scriptfamily] [mb]
\def\scr{\fam\purefamily{scriptfamily}}
\definetypeface[MyFace] [rm] [serif] [modern] [default] [encoding=texansi]
\definetypeface[MyFace] [mm] [math] [modern] [modern] [encoding=texansi]
\setupbodyfont[MyFace,11pt]
\definemathmatrix[mycases][left={\left\{\,},right={\,\right.}]
\starttext
\startformula
\Delta =
\startmatrix[n=4,align={left,middle,left,right}]
\NC -aaa \NC vvvvv \NC -wwwwwwww \NC wwwwwwww \NR
\NC aaaa \NC -vvvvv \NC wwwwwwww \NC www \NR
\NC -bbbbb \NC vv \NC -wwww \NC wwwwwwww \NR
\NC bbbbb \NC -vvvvv \NC wwwwwwww \NC wwwwwwww \NR
\stopmatrix
\stopformula
\startformula
\startmatrix[align={right, left}]
\NC aa \NC vvvv \NR
\NC vvvvv \NC -vvvvv \NR
\NC -vvvvv \NC vvvvv \NR
\NC vv \NC -vvvvv \NR
\stopmatrix
\stopformula
\startformula
\startalign[n=4,align={left,middle,middle,right}]
\NC aaa\NC b\NC cccc\NC d\NR
\NC a\NC bbb\NC c\NC ddd\NR
\stopalign
\stopformula
\startformula
\startmycases[n=4,align={left,middle,middle,right}]
\NC aaa\NC b\NC cccc\NC d\NR
\NC a\NC bbb\NC c\NC ddd\NR
\stopmycases
\stopformula
\section{Extra math symbols}
\startformula
\oiint
\oiiint
\ointctrclockwise
\ointclockwise
\varointctrclockwise
\varointclockwise
\iint
\iiint
\iiiint
\idotsint
\oiintctrclockwise
\oiintclockwise
\varoiintctrclockwise
\varoiintclockwise
\oiiintctrclockwise
\oiiintclockwise
\varoiiintctrclockwise
\varoiiintclockwise
\stopformula
\startformula
\alpha \beta \gamma \delta \mu \nu \eta \xi \sigma \epsilon \Gamma \Delta
\stopformula
\type{\scr ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\startformula
{\scr ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\stopformula
\type{\cal ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\startformula
{\cal ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\stopformula
\page
\section{Default math characters}
\showmathcharacters
\stoptext
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________