我尝试使用上下文\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
我加大力度distance
,2em
让差异更加明显。
\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)。该错误已修复这次提交示例中列出的代码给出以下内容: