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 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. F.
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 -----------------------------------------------------------------
Thanks so much ! I’ll will add an entry to the wiki. Fabrice. Le 28 août 2017 à 13:29:55, Hans Hagen (pragma@wxs.nl) a écrit: 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 ___________________________________________________________________________________
participants (2)
-
Fabrice L
-
Hans Hagen