ConTeXt:是否可以使用像“块”矩阵那样嵌套的矩阵?

ConTeXt:是否可以使用像“块”矩阵那样嵌套的矩阵?

我尝试使用上下文\startmatrix/\stopmatrix嵌套预定义矩阵块。在 Latex 中,它的工作原理如下:

\documentclass{article}
\usepackage{amsmath}

\def\matOne{\begin{matrix}1 & 0 \\ 0 & 1\end{matrix}}
\def\matTwo{\begin{matrix}a\\b\end{matrix}}
\def\matThree{\begin{matrix}c & d\end{matrix}}

\begin{document}
    \begin{align*}
        \begin{pmatrix}
            \matOne & \matTwo\\
            \matThree & e\\
        \end{pmatrix}\\
        \begin{pmatrix}
            1 & 0 & a\\
            0 & 1 & b\\
            c & d & e\\
        \end{pmatrix}
    \end{align*}
\end{document}

块外的顶部矩阵看起来与底部矩阵相同。在上下文中,我尝试了以下操作:

\definemathmatrix[pmatrix][left={\left(}, right={\right)}, distance=1em]

\def\matOne{\startmatrix\NC 1 \NC 0 \NR\NC 0 \NC 1\NR\stopmatrix}
\def\matTwo{\startmatrix\NC a\NR\NC b\NR\stopmatrix}
\def\matThree{\startmatrix\NC c \NC d\NR\stopmatrix}

\starttext

\startformula
    \startpmatrix
        \NC \matOne \NC \matTwo\NR
        \NC \matThree \NC e\NR
    \stoppmatrix
\stopformula
\startformula
    \startpmatrix
        \NC 1 \NC 0 \NC a \NR
        \NC 0 \NC 1 \NC b \NR
        \NC c \NC d \NC e\NR
    \stoppmatrix
\stopformula

\stoptext

这里顶部矩阵看起来与底部矩阵不同。似乎块矩阵之后没有应用距离。有办法解决这个问题吗?

答案1

我不确定这是否会破坏其他东西,但似乎\NC没有正确恢复。报告如下:https://mailman.ntg.nl/pipermail/ntg-context/2017/089631.html

我加大力度distance2em让差异更加明显。

\unprotect

\def\math_matrix_stop
  {\crcr
 % \ifgridsnapping \else
     \mathstrut\crcr
     \noalign{\vskip-\baselineskip}%
 % \fi
   \egroup
   \gdef\math_matrix_NC{\endmath\aligntab}
   \egroup
   \mathmatrixright
   \endgroup}

\protect

\definemathmatrix[pmatrix][left={\left(}, right={\right)}, distance=2em]

\def\matOne{\startmatrix\NC 1 \NC 0 \NR\NC 0 \NC 1\NR\stopmatrix}
\def\matTwo{\startmatrix\NC a\NR\NC b\NR\stopmatrix}
\def\matThree{\startmatrix\NC c \NC d\NR\stopmatrix}

\starttext

\startformula
  \startpmatrix
    \NC \matOne \NC \matTwo \NC \matTwo \NR
    \NC \matThree \NC e \NC e\NR
  \stoppmatrix
\stopformula
\startformula
  \startpmatrix
    \NC 1 \NC 0 \NC a \NR
    \NC 0 \NC 1 \NC b \NR
    \NC c \NC d \NC e\NR
  \stoppmatrix
\stopformula

\stoptext

在此处输入图片描述

答案2

值得一提的是,嵌套矩阵目前适用于当前版本的 ConTeXt(2019.03.21)。该错误已修复这次提交示例中列出的代码给出以下内容:

在此处输入图片描述

相关内容