如何从数组环境中要重复的列数中减去 1?

如何从数组环境中要重复的列数中减去 1?

我试图为增强矩阵创建一个环境,然后遇到了这个答案,这给了我这个代码

\newenvironment{amatrix}[1]{%
  \left(\begin{array}{@{}*{#1}{c}|c@{}}
}{%
  \end{array}\right)
}

用作

\begin{amatrix}{2}
   1 & 2 & 3 \\  a & b & c
 \end{amatrix}

它工作得很好,但让我抓狂的是,参数比增强矩阵的总列数少一个。我尝试将 更改为#1#1-1但似乎不起作用。我能找到的最接近的东西是包calc,但它只在某些情况下有效,而这似乎不是其中之一。

所以我的问题是:有没有办法重新定义 amatrix 环境,以便参数与增强矩阵中的总列数相匹配? 一个更好的解决方案是我根本不需要输入参数,但我不想在这里贪婪。

答案1

一个更好的解决方案是我根本不需要提出任何论点,但我不想在这里贪心。

贪心一点吧!下面是一个tabularray使用包的解决方案(没有任何参数):

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{amsmath}

\NewDocumentEnvironment{amatrix}{+b}{
    \begin{+pmatrix}[
        colsep=4pt,
        rowsep=0pt,
        vline{Y}={-}{solid},
        column{1}={leftsep=1pt},
        column{Z}={rightsep=1pt}
        ]
        #1
    \end{+pmatrix}%
}{}  

\begin{document}
    
    \[
    \begin{amatrix}
        1 & 2 & 3 \\
        a & b & c 
    \end{amatrix}
    \]
        
    \[
    \begin{amatrix}
        1 & 2 & 3 & 4\\
        a & b & c & d\\
        x & y & z & w
    \end{amatrix}
    \]
        
\end{document}

在此处输入图片描述

(感谢 samcarter 的建议)。

答案2

这满足了您指定列数的要求。从输入中\numexpr#1-1删除:1

在此处输入图片描述

\documentclass{article}

\newenvironment{amatrix}[1]{%
  \left(\begin{array}{@{} *{\numexpr#1-1}{c} | c @{}}
}{%
  \end{array}\right)
}

\begin{document}

\[
  \begin{amatrix}{3}
    1 & 2 & 3 \\
    a & b & c
  \end{amatrix}
\]

\end{document}

相关内容