On 8/28/2017 6:33 PM, Fabrice L wrote:
Hi,

I’have a lot of courses notes in MKII. I’m trying to move to MKIV. I have a problem that I’m not able to resolve, to make a border matrix with brackets. In MKII, I was using a macro, found somewhere, which works great, but no longer works; here is the macro:

% Border matrix: first line and column are label
\catcode`\@=11\relax
\newdimen\p@renwd
\font\tenex=cmex10 \setbox0=\hbox{\tenex B} \p@renwd=\wd0
\def\bbordermatrix#1{\begingroup \m@th
\setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%
     \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil
       &&\quad\hfil$##$\hfil\crcr
       \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
       #1\crcr\omit\strut\cr}}%
   \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
   \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
   \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left[\kern-\wd\@ne
     \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%
     \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right]$}%
   \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}
\catcode`\@=12\relax

Such a plain macro needs to be made bodyfotn size aware and such.

but MKIV gives me the error:

\bbordermatrix #1->\begingroup \m@th

                                     \setbox \z@ \vbox {\def \cr {\crcr \noa...

l.26    i & j & k & l \cr}


16       \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}

17     \catcode`\@=12\relax


I look for solutions on the list, but did not find anything.Here is a minimal example:

\starttext
A border matrix:
\startformula
\bbordermatrix{
    a & b & c & d \cr
    e & f & G & h \cr
    i & j & k & l \cr}
\stopformula
\stoptext

As I have in my notes hundreds of such matrix, it is really difficult to change the input format.

Do you know, or can you point me, to a solution ? I’m in a dead end.. Thanks a lot.
I'll add this:

\unprotect

\unexpanded\def\math_border_matrix#1#2#3% adapted plain
  {\begingroup
   %
   \pushmacro\cr
   %
   \setbox\scratchbox\hbox\bgroup
     \mr B%
   \egroup
   \scratchdimenone\wd\scratchbox
   %
   \scratchdimentwo.2\bodyfontsize
   %
   \mathsurround\zeropoint
   %
   \setbox\scratchboxone\vbox\bgroup
     \def\cr{%
       \crcr
       \noalign\bgroup
         \kern\scratchdimentwo
         \global\let\cr\endline
       \egroup
     }%
     \ialign{%
       \startimath\alignmark\alignmark\stopimath
       \hfil
       \kern\dimexpr\scratchdimentwo+\scratchdimenone\relax
       \aligntab
       \thinspace
       \hfil
       \startimath\alignmark\alignmark\stopimath
       \hfil
       \aligntab
       \aligntab
       \quad
       \hfil
       \startimath\alignmark\alignmark\stopimath
       \hfil
       \crcr
       \omit
       \strut
       \hfil
       \crcr
       \noalign{\kern-\baselineskip}%
       #3\crcr
       \omit
       \strut
       \cr
     }%
   \egroup
   \setbox\scratchboxtwo\vbox\bgroup
     \unvcopy\scratchboxone
     \global\setbox\globalscratchbox\lastbox
   \egroup
   \setbox\scratchboxtwo\hbox\bgroup
     \unhbox\globalscratchbox
     \unskip
     \global\setbox\globalscratchbox\lastbox
   \egroup
   \setbox\scratchboxtwo\hbox\bgroup
     \startimath
     \kern\dimexpr\wd\globalscratchbox-\scratchdimenone\relax
     \left#1\relax
     \kern-\wd\globalscratchbox
     \global\setbox\globalscratchbox\vbox\bgroup
       \box\globalscratchbox
       \kern\scratchdimentwo
     \egroup
     \vcenter\bgroup
       \kern-\ht\globalscratchbox
       \unvbox\scratchboxone
       \kern-\baselineskip
     \egroup
     \thinspace
     \right#2\relax
     \stopimath
   \egroup
   \null
   \thickspace
   \vbox\bgroup
     \kern\ht\globalscratchbox
     \box\scratchboxtwo
   \egroup
   %
   \popmacro\cr
   %
   \endgroup}

\unexpanded\def\bordermatrix {\math_border_matrix()}
\unexpanded\def\bbordermatrix{\math_border_matrix[]}

\protect

\starttext

A plain border matrix:

\startformula
\bordermatrix{
   a & b & c & d \cr
   e & f & G & h \cr
   i & j & k & l \cr}
\stopformula

\startformula
\bbordermatrix{
   a & b & c & d \cr
   e & f & G & h \cr
   i & j & k & l \cr}
\stopformula

\stoptext


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
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
___________________________________________________________________________________

Reply via email to