ConTeXt:矩阵内的 startalign/stopalign 改变指定的列对齐方式

ConTeXt:矩阵内的 startalign/stopalign 改变指定的列对齐方式

例子:

\starttext
\startformula
    \startalign[n=2,align={right,left}]
        \NC x
        \NC = a ~ long ~ sequence ~ of ~ terms
        \NR
        \NC y
        \NC = ok ~ left
        \NR
        \NC \startmatrix[left={\left\lbrack},right={\right\rbrack}]
                \NC x \NR
                \NC y \NR
            \stopmatrix
        \NC = why ~ right?
        \NR
        \NC y
        \NC = ok ~ left ~ again
        \NR
    \stopalign
\stopformula
\stoptext

矩阵之后,指定的对齐\startalign不再应用:

示例生成的 PDF 的屏幕截图

我认为这与https://mailman.ntg.nl/pipermail/ntg-context/2017/089631.html但那里的代码片段并没有解决我的问题。

使用

 \NC \omit $\displaystyle ...$ \hfill

我可以将未对齐行的内容推到左侧,但等号周围的间距就不太正确了。有没有更好的解决方案(理想情况下是可以解决整个文档的问题)?

版本:2019.03.21 21:39

答案1

这是数学矩阵代码中的一个错误,是在尝试修复先前的限制(嵌套矩阵不继承距离键)时引入的。它已在最新测试版(2018.04.04)

为了完整起见,这里是与问题中的 MWE 相对应的输出:

\starttext
\startformula
    \startalign[n=2,align={right,left}]
        \NC x
        \NC = a ~ long ~ sequence ~ of ~ terms
        \NR
        \NC y
        \NC = ok ~ left
        \NR
        \NC \startmatrix[left={\left\lbrack},right={\right\rbrack}]
                \NC x \NR
                \NC y \NR
            \stopmatrix
        \NC = why ~ right?
        \NR
        \NC y
        \NC = ok ~ left ~ again
        \NR
    \stopalign
\stopformula
\stoptext

在此处输入图片描述

答案2

您的问题看起来像是一个错误。以下是使用三列而不是两列的解决方法:

\starttext

\def\xymatrix{ \startmatrix[left={\left\lbrack},right={\right\rbrack}] \NC x \NR \NC y \NR \stopmatrix }

\startformula
    \startalign[n=3,align={right,left,left}]
        \NC \NC x               \NC = a ~ long ~ sequence ~ of ~ terms    \NR
        \NC \NC y               \NC = ok ~ left                           \NR
        \NC \xymatrix       \NC \NC = why ~ right?                        \NR
        \NC \NC y               \NC = ok ~ left ~ again                   \NR
    \stopalign
\stopformula
\stoptext

在此处输入图片描述

相关内容