Spalign 包:使用带边框的方括号

Spalign 包:使用带边框的方括号

我很好奇,因为我已经做过几次测试,当我使用 border with 包时,如何为第一个矩阵设置方括号spalign。我见过这个问题,但……实际上我做不到。

kbordermatrix 括号周围的间距更好

\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}

上述代码的输出

相关内容