ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: WN <wneimeijer@tiscali.nl>
To: Aditya Mahajan <adityam@umich.edu>
Cc: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: extra math symbols and alignment
Date: Thu, 02 Aug 2007 23:25:05 +0200	[thread overview]
Message-ID: <46B24BB1.1020404@tiscali.nl> (raw)
In-Reply-To: <20070802122845.132djva7ks08gg0k@web.mail.umich.edu>


[-- Attachment #1.1: Type: text/plain, Size: 3245 bytes --]

Hi Aditya

I tried the new code you send me, and of course I did a quick test.
But when doing a texmfstart texexec --autopdf --pdf testalignfontnew.tex
texexec hangs ''forever''  while trying to process the \section{} command.
Actually its pdftex trying to do something.

To make sure I did not make a edit mistake, I copied my old test code into
the file testalignfontnew.tex and run a diff to see where the difference 
with the new code
are.

Looking at the code (and I am not a Tex expert, and forgive me, when I 
ask a dumb question)
I don't see where the \scratchcounter itself is defined ? Must surely be 
a global Context counter ?

Attached the new test code.
Hope it helps the debugging process and thanks for all your help sofar.

Wim

> Hi Wim,
>
> Quoting WN <wneimeijer@tiscali.nl>:
>
>   
>> 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.
>>     
>
> :-) Section modifies \!!counta so things get messed up again. Actually, 
> this really helped to narrow down the bug. Basically, dostartmatrix 
> does a test
>
> \scratchcounter=\ifnum\eqaligncolumn>\scratchcounter \eqaligncolumn 
> \else \plusone \fi
>
> which is comparing eqaligncolmn with scratch counter, but 
> scratchcounter is never initialized. Therefore, everything depends on 
> what was the value of scratchcounter, which explains, different 
> behaviour depending on when the matrix  occurred, and why you had a 
> hard time pinning down a minimal example.
>
> The fix is easy, change the scratchcounter to zerocount (or maybe just 
> change to \ifcase\eqaligncolunm). So add this to your file,
>
> \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 
> \processcommacommand[\mathmatrixparameter\c!align]{\advance\eqaligncolumn\plusone\dosetmatrixcolumn}%
>    \scratchcounter=\ifnum\eqaligncolumn>\zerocount \eqaligncolumn \else 
> \plusone \fi
>    \global\eqaligncolumn\plusone
>    \preparemathmatrix } % uses scratchcounter
> \protect
>
>
> Aditya
> ___________________________________________________________________________________
> 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
> ___________________________________________________________________________________
>
>
>   


[-- Attachment #1.2: Type: text/html, Size: 4180 bytes --]

[-- Attachment #2: testalignfontnew.tex --]
[-- Type: text/x-tex, Size: 5024 bytes --]

\tracetypescriptstrue

\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
\processcommacommand[\mathmatrixparameter\c!align]{\advance\eqaligncolumn\plusone\dosetmatrixcolumn}%
   \scratchcounter=\ifnum\eqaligncolumn>\zerocount \eqaligncolumn \else \plusone \fi
   \global\eqaligncolumn\plusone
   \preparemathmatrix } % uses scratchcounter

\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

\startmathcollection [extra]
\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

\loadmapfile[original-youngryu-tx.map]
\loadmapfile[texnansi-wim-rsfs.map]

\starttypescript [math] [modern,computer-modern,latin-modern,ams] [size]
    \definebodyfont [28pt,24pt,18pt,17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt] [mm] [mc=txexa sa 1]
\stoptypescript
\definetypeface[mainface] [rm]   [serif]  [times]     [default]  [encoding=texnansi]
\definetypeface[mainface] [mm] [math] [modern] [modern] [encoding=texnansi]
\setupbodyfont[mainface,11pt]

\def\scr#1{\text{\definedfont[texnansi-rsfs10]#1\/}}
\enablemathcollection[extra]

\definemathmatrix[mycases][left={\left\{\,},right={\,\right.}]
\definemathmatrix[aligned][n=3,align={right,left,left},distance=4pt]
\definemathmatrix[alignedfour][n=4,align={left,middle,left,right}]

\startbuffer
\startformula
\startalignedfour[left={\left\{},right={\right\}}]
\NC left \NC middle \NC  left \NC right \NR
\NC aaa \NC = \NC 0 \NC |x| > 0 \NR
\NC aaaa \NC = \NC 1 \NC |x| < 0 \NR
\NC bbb \NC = \NC 2 \NC bb \NR
\NC bb \NC = \NC 3 \NC ccc \NR
\stopalignedfour
\stopformula

\startformula
\startmycases[n=4,align={left,middle,middle,right},distance=1em]
\NC left \NC middle \NC middle \NC right \NR
\NC aaaaaa \NC baaaaaaaaa \NC cccc \NC ddddddddddddd  \NR
\NC aaaaaaaaa \NC bbb \NC c \NC ddd \NR
\stopmycases
\stopformula

\startformula
\startaligned[left={\left.},right={\right\}}]
\NC (\lambda + \mu ) \cdot a \NC = \NC \lambda \cdot a + \mu \cdot a \NR
\NC \lambda ( a + b ) \NC = \NC \lambda \cdot a + \lambda \cdot b \NR
\stopaligned
\quad
\text{(distributieve eigenschappen)}
\stopformula
\stopbuffer

\starttext
Test user defined math matrices without a section (with Aditya's fix)
\blank
Math matrix alignment works.
\getbuffer
\section{Test user defined math matrices but after a section (with Aditya's fix)}
Math matrix alignment broken
\getbuffer

\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
\startformula
{\scr{A} \scr{B} \scr{C} \scr{D} \scr{E} \scr{F} \scr{G} \scr{H} \scr{L}}
\stopformula
\type{\cal ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\startformula
{\cal ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\stopformula

\page
\section{Default math characters}
\showmathcharacters

\stoptext


[-- Attachment #3: Type: text/plain, Size: 487 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

  reply	other threads:[~2007-08-02 21:25 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-31 13:28 WN
2007-08-01  3:27 ` Aditya Mahajan
2007-08-01 11:43   ` WN
2007-08-01 16:33     ` Aditya Mahajan
2007-08-02 16:28     ` Aditya Mahajan
2007-08-02 21:25       ` WN [this message]
2007-08-02 21:33         ` Aditya Mahajan
2007-08-02 21:48           ` extra math symbols and alignment (WORKS) WN
  -- strict thread matches above, loose matches on Subject: below --
2007-07-28 20:00 extra math symbols and alignment w.neimeijer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46B24BB1.1020404@tiscali.nl \
    --to=wneimeijer@tiscali.nl \
    --cc=adityam@umich.edu \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).