# [NTG-context] mathmatrix and internal lines

Hans Hagen j.hagen at xs4all.nl
Thu Nov 26 23:23:57 CET 2020

On 11/26/2020 8:43 PM, Otared Kavian wrote:
> Hi Jean-Philippe,
>
> A few weeks ago I saw briefly the discussion about Hans' message regarding \noalign and the the new definitions of \HR and \VR that you are sending. Indeed your solution works great !
> Just for the case other people may have the same question about writing block matrix, I copy below the whole example which can be found later in the mail archive.
> (For mkiv, I don't know how to do the same thingâ€¦).

The \noaligned permits a \protected definition. Otherwise one has to do
something

\def\VR{\noalign\bgroup
<command that picks up [#1]

that command then does the rule and ends the noalign. Also, that one
cannot be \protected (a pitty in case one uses \expanded or so)

So ... a multistep approach. Plenty of that in mkiv.

> %%% begin block-matrix.tex
> % in LMTX defining \HR and \VR to create block matrices:
> \noaligned\tolerant\protected\def\HR[#1]{\noalign{\hrule #1}}
>
> \def\VR{\dosingleempty\doVR}
> \def\doVR[#1]{\NC \hskip-0.5em \vrule #1 \hskip-0.5em \NC}

given the \HR definition that should be

\tolerant\protected\def\VR[#1]{\NC ...\NC}

> \definemathmatrix[mymatrix]
> 	[left={\left(\,},
> 	right={\, \right)}]
>
> \starttext
>
> \startformula
> 	\startmymatrix
> 		\NC A \VR  B \NR
> 		\HR
> 		\NC C \VR  D \NR
> 	\stopmymatrix
> \stopformula
>
> \stoptext

Anyway, a feature like this should be in sync with other table
mechanisms, so

\definemathmatrix
[mymatrix]
[left={\left\lparent\thinspace},
right={\thinspace\right\rparent}]

\starttext

\startformula
\startmymatrix
\NC A \VL  B \NR
\HL
\NC C \VL  D \NR
\stopmymatrix
\stopformula

\startformula
\startmymatrix
\NC A \VL[3,green]  B \NR
\HL[10,red]
\NC C \VL  D \NR
\stopmymatrix
\stopformula

\stoptext

A bit more code needed but the next upload will have it. Of course you
have to wikify it.

Hans

-----------------------------------------------------------------