自定义环境创建表格状矩阵

自定义环境创建表格状矩阵

我喜欢设置自定义环境tabularmatrix,以便在数学模式下使用它,如下所示:

\[
\begin{tabularmatrix}
    a & b & c \\
    d & e & f \\
\end{tabularmatrix}
\]

我希望得到的输出应该与从以下位置获得的输出相同:

\[
\begin{tabular}{|c|c|c|}
    \hline 
    $a$ & $b$ & $c$ \\
    \hline
    $d$ & $e$ & $f$ \\
    \hline
\end{tabular}
\]

我应该如何最佳地定义自定义命令tabularmatrix

答案1

非常简单tabularray

\documentclass{article}
\usepackage{amsmath}
\usepackage{tabularray}
\NewDocumentEnvironment{tabularmatrix}{+b}{
    \begin{tblr}{
       hlines, vlines, columns={c},
       rowsep=0.1pt, colsep=5pt,
       }
    #1
    \end{tblr}
    }{}

\begin{document}
\[
\begin{tabularmatrix}
  a & b & c \\
  d & e & f \\
\end{tabularmatrix}
\quad
\begin{tabularmatrix}
  it & works & with & any \\
  number & of & rows & or \\
  columns & a & b & c \\
  d & e & f & g
\end{tabularmatrix} 
\]
\end{document}

在此处输入图片描述

答案2

如果您不需要使用 嵌套数组或其他对象\\,则可以按如下方式进行操作。可以接受任意数量的列,只要它们最多为,MaxMatrixCols例如;如果需要,增加计数器的值。matrixamsmath

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}

\ExplSyntaxOn
\NewDocumentEnvironment{cagedmatrix}{b}
 {
  % split the input at \\
  \seq_set_split:Nnn \l_tmpa_seq { \\ } { #1 }
  % check for a missing trailing \\
  \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
  \tl_if_empty:NF \l_tmpa_tl { \seq_put_right:NV \l_tmpa_seq \l_tmpa_tl }
  % build the array, inserting \\ \hline between rows
  \array{|*{\value{MaxMatrixCols}}{c|}}\hline
  \seq_use:Nn \l_tmpa_seq { \\ \hline }
  % finish up
  \\ \hline
  \endarray
}{}
\ExplSyntaxOff

\begin{document}

\[
\begin{cagedmatrix}
  a & b & c \\
  d & e & f \\
\end{cagedmatrix}
\quad
\begin{cagedmatrix}
  a & b & c \\
  d & e & f 
\end{cagedmatrix}
\]

\end{document}

在此处输入图片描述

不过,您也许会对 感兴趣ytableau

答案3

这不是一个真正的解决方案,因为它没有使用您喜欢的环境名称,但您可以使用nicematrix。您必须编译两次。

在此处输入图片描述

\documentclass{article}

\usepackage{nicematrix}

\begin{document}

\[
\begin{NiceArray}{*{3}{c}}[hvlines]
    a & b & c \\
    d & e & f
\end{NiceArray}
\]

\end{document}

相关内容