On Wed, 27 Mar 2019, Hans Hagen wrote:
On 3/27/2019 4:56 PM, Aditya Mahajan wrote:
Hi,
It was reported on TeX.SE[1] that there is a bug when math matrix is used
inside a math align:
\starttext
\startformula
\startalign[n=2,align={right,left}]
\NC x
\NC = a ~ long ~ sequence ~ of ~ terms
\NR
\NC y
\NC = ok ~ left
\NR
\NC \startmatrix[left={\left\lbrack},right={\right\rbrack}]
\NC x \NR
\NC y \NR
\stopmatrix
\NC = why ~ right?
\NR
\NC y
\NC = ok ~ left ~ again
\NR
\stopalign
\stopformula
\stoptext
gives
https://i.stack.imgur.com/ZTAp3.png
It appears that \startmatrix globally resets \NC. I haven't looked into
the code yet to see why this is happening.
you can play with
\unprotect
\newcount\c_math_eqalign_column_saved
\newcount\c_math_eqalign_first_saved
\unexpanded\def\math_matrix_start#1%
{\begingroup
\c_math_eqalign_column_saved\c_math_eqalign_column
\c_math_eqalign_first_saved \c_math_eqalign_first
\edef\currentmathmatrix{#1}%
\dosingleempty\math_matrix_start_indeed}
\def\math_matrix_stop
{\math_matrix_stop_processing
\global\c_math_eqalign_column\c_math_eqalign_column_saved
\global\c_math_eqalign_first\c_math_eqalign_first_saved
\endgroup}
\protect
Yes, this works. But we still need \globalpushmacro\c_math_matrix_first,
otherwise nested matrices have wrong distance.
https://mailman.ntg.nl/pipermail/ntg-context/2017/089631.html
So, the following appears to work correctly:
\unprotect
\newcount\c_math_eqalign_column_saved
\newcount\c_math_eqalign_first_saved
\unexpanded\def\math_matrix_start#1%
{\begingroup
\globalpushmacro\c_math_matrix_first
\c_math_eqalign_column_saved\c_math_eqalign_column
\c_math_eqalign_first_saved \c_math_eqalign_first
\edef\currentmathmatrix{#1}%
\dosingleempty\math_matrix_start_indeed}
\def\math_matrix_stop
{\math_matrix_stop_processing
\global\c_math_eqalign_column\c_math_eqalign_column_saved
\global\c_math_eqalign_first\c_math_eqalign_first_saved
\globalpopmacro\c_math_matrix_first
\endgroup}
\protect
I am not sure why the assignments in math_matrix_start are not global but
those in math_matrix_stop are global.
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://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________