使用水平和垂直线创建基于阵列的命令

使用水平和垂直线创建基于阵列的命令

我想创建一个命令,接受数组的输入,并生成一个数组,其中的条目由线分隔。我想要的数组类型的一个特殊情况如下:

\[\left[\begin{array}{c|c|c|c}
1 & 2 & 3 & 4\\
\hline 4 & 5 & 6 & 6 \end{array}\right]\]

在此处输入图片描述

一般来说,我想做类似以下的事情

\newcommand{\sgna}[1]{\left[\begin{array}{c|c|c|c}#1 \end{array}\right]}

但我不想指定要放置的“c|”的数量,而且我不知道如何让数组在不修改输入的情况下在每行后绘制水平线。我希望命令计算列数和行数并放置相应数量的垂直线和水平线。有什么办法吗?它不需要是命令。如果需要,它可能是一个环境。

这是一个最小的例子

\documentclass{article}
\newcommand{\sgna}[1]{\left[\begin{array}{c|c|c|c|c}#1 \end{array}\right]}
\begin{document}
%Particular case
\[\left[\begin{array}{c|c|c|c}
1 & 2 & 3 & 4\\
\hline 4 & 5 & 6 & 6 \end{array}\right]\]
%Resulting command if I put too many |c's
\[\sgna{1 & 2 & 3 & 4\\
4 & 5 & 6 & 6}\]
\end{document}

吸引

在此处输入图片描述

答案1

一行内容为nicematrix

\documentclass{article}
\usepackage{nicematrix}

\newcommand{\sgna}[1]{\begin{bNiceMatrix}[margin,hvlines]#1\end{bNiceMatrix}}

\begin{document}

$\sgna{1 & 2 & 3 & 4 \\ 4 & 5 & 6 & 6 }$

\end{document}

上述代码的结果

相关内容