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…).
%%% begin block-matrix.tex % in LMTX defining \HR and \VR to create block matrices: \pushoverloadmode \noaligned\tolerant\protected\def\HR[#1]{\noalign{\hrule #1}} \popoverloadmode \def\VR{\dosingleempty\doVR} \def\doVR[#1]{\NC \hskip-0.5em \vrule #1 \hskip-0.5em \NC} \definemathmatrix[mymatrix] [left={\left(\,}, right={\, \right)}] \starttext \startformula \startmymatrix \NC A \VR B \NR \HR \NC C \VR D \NR \stopmymatrix \stopformula \stoptext %%% end block-matrix.tex Best regards: Otared K. > On 26 Nov 2020, at 19:46, Jean-Philippe Rey > <jean-philippe....@centralesupelec.fr> wrote: > > Hi Otared, > > Thank you very much. > > I used your example to write the following macros. They are far from perfect > but suit my needs. A few days ago, Hans warned not to use \noalign in LMTX, > so I used the trick he gave to the list even if I don't really understand it. > > === LMTX version ============ > %D \macros{HR, VR} > %D \type{\HR} draws a horizontal rule between two rows of a matrix > %D \type{\VR} is used in place of \type{\NC} to draw a vertical rule between > two columns of a matrix > %D each macro takes an optional parameter giving the rule dimensions > %D Example > %D \type{\startmatrix \NC A \VR[depth 2mm] B \NR \HR[height 0.6pt] \NC C \VR > D \NR \stopmatrix} > > \pushoverloadmode > \noaligned\tolerant\protected\def\HR[#1]{\noalign{\hrule #1}} > \popoverloadmode > > \def\VR{\dosingleempty\doVR} > \def\doVR[#1]{\NC \hskip-0.5em \vrule #1 \hskip-0.5em \NC} > =========================== > > === MkIV version ============ > %D \macros{HR, VR} > %D \type{\HR} draws a horizontal rule between two rows of a matrix > %D \type{\VR} is used in place of \type{\NC} to draw a vertical rule between > two columns of a matrix > %D it takes an optional parameter giving the rule dimensions > %D Example > %D \type{\startmatrix \NC A \VR[depth 2mm] B \NR \HR \NC C \VR D \NR > \stopmatrix} > > \def\HR{\noalign{\hrule}} > > \def\VR{\dosingleempty\doVR} > \def\doVR[#1]{\NC \hskip-0.5em \vrule #1 \hskip-0.5em \NC} > =========================== > > For the MkIV version I haven't been able to add an optional parameter to \HR > the code > > \def\HR{\dosingleempty\doHR} > \def\doHR[#1]{\noalign{\hrule #1}} > > complains about "Misplaced \noalign" > > Best regards, > > > >> Le 26 nov. 2020 à 13:40, Otared Kavian <ota...@gmail.com> a écrit : >> >> Hi Jean-Philippe, >> >> The following is better than the one I sent earlier: >> >> \definemathmatrix[mymatrix] >> [left={\left(\,}, >> right={\ \right)}] >> >> \starttext >> \startformula >> \startmymatrix >> \NC A \NC\hskip-.5em \vrule \NC\hskip-.5em B \NR >> \noalign{\hrule} >> \NC C \NC \hskip-.5em\vrule \NC \hskip-.5em D \NR >> \stopmymatrix >> \stopformula >> \stoptext >> >> Best regards: Otared K. >> >>> On 26 Nov 2020, at 10:19, Jean-Philippe Rey >>> <jean-philippe....@centralesupelec.fr> wrote: >>> >>> Dear list, >>> >>> I would like to draw matrices with internal lines as can be done with LaTeX >>> (cf pdf output) : >>> >>> ======================== >>> \documentclass{article} >>> \begin{document} >>> $M =\left( \begin{array}{c|c} >>> A & B \\ >>> \hline >>> C & D \\ >>> \end{array} \right)$ >>> \end{document} >>> ======================== >>> >>> I didn't find out how to use mathmatrix to achieve this. My best result to >>> date is >>> >>> ======================== >>> \starttext >>> $M = \left( \bTABLE[frame=off] >>> \bTR >>> \bTD[rightframe=on, bottomframe=on] $A$ \eTD >>> \bTD[bottomframe=on] $B$ \eTD >>> \eTR\bTR >>> \bTD[rightframe=on] $C$ \eTD >>> \bTD $D$ \eTD >>> \eTR >>> \eTABLE \right)$ >>> \stoptext >>> ======================== >>> >>> The code is rather ugly, and I get a spurious space at the bottom of the >>> table. >>> >>> Any hints? >>> >>> Thank you, > > -- > Jean-Philippe Rey > jean-philippe....@centralesupelec.fr > 91192 Gif-sur-Yvette Cedex - France > Empreinte PGP : 807A 5B2C 69E4 D4B5 783A 428A 1B5E E83E 261B BF51 > > ___________________________________________________________________________________ > 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 > ___________________________________________________________________________________ ___________________________________________________________________________________ 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 ___________________________________________________________________________________