Quoting WN
Hi Aditya
I tried your code and performed more tests. My first tests show your fix works. But than I added a \section{} in my test code and I am sorry to say that the math matrix alignment does not work at that point. However the extra math fonts I defined still do work.
Ok. I will test this to see what is happening. (I do not have an uptodate context on this machine).
General observation I thought from the examples like using the RSFS font on the wiki page http://wiki.contextgarden.net/rsfs that using other fonts for math should be easy. Thinking about this specific example I now understand that this example is flawed as some default math characters are also overwritten.
I am out of depths here. I do not really understand how math fonts are handled. The wiki example was modified from a suggestion from Taco. For rsfs, you can go to the plain tex way of doing things also. Aditya
PS Attached my modified test code along with the map file for the RSFS fonts. For the RSFS fonts I am using \definedfont and not using the definebodyfont.
Hi Wim,
On Tue, 31 Jul 2007, WN wrote:
see previous email
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