ConTeXt 中的增强矩阵?

ConTeXt 中的增强矩阵?

在 LaTeX 中,我可以使用:

\[
\left[\,\begin{array}{rr|r}2&-3&6\\ 3&4&-9\end{array}\,\right]
\]

但是,在 ConTeXt 中,尤其是当我想要列右对齐时,我似乎必须使用:

\startformula
  \left[\,\startmathmatrix[n=2,align={right,right}]
    \NC 2 \NC -3 \NR
    \NC 3 \NC 4 \NR
  \stopmathmatrix\;\right|
  \left.\startmathmatrix[n=2,align={right}]
    \NC 6 \NR
    \NC 9 \NR
  \stopmathmatrix\,\right]
\stopformula

它看上去非常冗长和笨拙(特别是与简洁明了的 LaTeX 相比)。

那么 - 在 ConTeXt 中排版增强矩阵的最佳方法是什么?

谢谢!

答案1

以下是一个主要供 Aditya 查看的想法的 MWA:

\unprotect
\def\dosetmatrixcolumn#1%
  {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfil
   \letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfil
   % this is new:
   \doif{#1}\v!rule  {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\relax
                      \setvalue{\??eq:\v!right:\number\eqaligncolumn}%
                               {\kern -.5\mathalignmentparameter\c!distance
                                \vrule
                                \kern -.5\mathalignmentparameter\c!distance}}%
   \doif{#1}\v!left  {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\relax
                      \letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfil}%
   \doif{#1}\v!right {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfil
                      \letvalue{\??eq:\v!right:\number\eqaligncolumn}\relax }%
   \doif{#1}\v!middle{\letvalue{\??eq:\v!left :\number\eqaligncolumn}\hfil
                      \letvalue{\??eq:\v!right:\number\eqaligncolumn}\hfil}}
\protect

\definemathmatrix
   [augmentedarray]
   [n=4,left={\left[\,},right={\,\right]},align={right,right,rule,right}]

\starttext

\startformula
  \startaugmentedarray
    \NC 2 \NC -3 \NC \NC 6 \NR
    \NC 3 \NC  4 \NC \NC 9 \NR
  \stopaugmentedarray
\stopformula

\stoptext

这段代码有两个错误:

  • 内部宏\dosetmatrixcolumn需要重新定义,这应该在上下文核心本身中完成,而不是作为文档的一部分。
  • 有点\NC \NC丑。

但它还是节省了大量的打字时间。

答案2

这不是真正的答案,但以下代码给出了相同的结果

\[
\left[\begin{array}{@{}rr|r@{}}2&-3&6\\ 3&4&-9\end{array}\right]
\]
\[
\left[\openup1\jot\offinterlineskip\vcenter{\halign{%
  \strut
  \hfil$#$\hskip\arraycolsep&
  \hskip\arraycolsep\hfil$#$\hskip\arraycolsep\kern-.2pt\vrule\kern-.2pt&
  \hskip\arraycolsep\hfil$#$\cr
  2&-3&6\cr
  3&4&-9\cr}}
\right]
\]

这只是一个教 ConTeXt 做\halign。请注意数学更喜欢分隔符间距紧密,就像在bmatrix环境中看到的那样,但这是一个品味问题。

相关内容