我很好奇,因为我已经做过几次测试,当我使用 border with 包时,如何为第一个矩阵设置方括号spalign
。我见过这个问题,但……实际上我做不到。
\documentclass[a4paper,12pt]{article}
\usepackage{spalign}
\begin{document}
\[\def\spalignendline{\cr}
\spalignrun{\bordermatrix{\the\spaligntoks}}
{, \scriptstyle{1} \scriptstyle{2}; \scriptstyle{1} 0 1; \scriptstyle{2} 1 0}\times \spaligndelims{[}{]} \spalignmat{a b; c d}=\spaligndelims{\{}{\}} \spalignmat{r t; s w}\]
\end{document}
答案1
括号在 中是硬编码的\bordermatrix
。你可以明确定义一个带括号的版本,如下所示\bordermatrix 使用方括号 [ ] 代替圆括号 ( )。
或者,让我们偷懒,复制 的定义\bordermatrix
,并让xpatch
用方括号替换圆括号。
\documentclass[a4paper,12pt]{article}
\usepackage{spalign}
\usepackage{xpatch}
\let\bbordermatrix\bordermatrix
\xpatchcmd{\bbordermatrix}{(}{[}{}{}
\xpatchcmd{\bbordermatrix}{)}{]}{}{}
\begin{document}
\[
\def\spalignendline{\cr}\spaligndelims{[}{]}
\spalignrun{\bbordermatrix{\the\spaligntoks}}
{, \scriptstyle{1} \scriptstyle{2}; \scriptstyle{1} 0 1; \scriptstyle{2} 1 0}
\times
\spaligndelims{[}{]} \spalignmat{a b; c d}
=
\spaligndelims{\{}{\}} \spalignmat{r t; s w}
\]
\end{document}
答案2
有关信息,在 中nicematrix
,您可以轻松地编写一个命令\lightmatrix
来使用 的语法组成矩阵spalign
(感谢light-syntax
启发的键spalign
),并能够使用 的所有功能nicematrix
,包括外部行和列(受\bordermatrix
和启发kbordermatrix
)。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\ExplSyntaxOn
\NewDocumentCommand { \lightmatrix } { D < > { p } O { } m }
{
\group_begin:
\NiceMatrixOptions { light-syntax }
\begin { #1 NiceMatrix} [ #2 ]
#3
\end { #1 NiceMatrix }
\group_end:
}
\ExplSyntaxOff
\NiceMatrixOptions
{
code-for-first-row = \scriptstyle,
code-for-first-col = \scriptstyle,
}
$\lightmatrix<b>[first-row,first-col]{ {} 1 2 ; 1 0 1 ; 2 1 0 }
\times
\lightmatrix{a b ; c d}
=
\lightmatrix<B>{r t ; s w}$
\end{document}