我喜欢设置自定义环境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
例如;如果需要,增加计数器的值。matrix
amsmath
\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
。