我创建了一个宏来使用以下代码编写 3 阶矩阵(方阵)
\newcommand{\matrixthree}[9]{$\left(\begin{matrix} #1 & #2 & #3 \\ #4 & #5 & #6 \\ #7 & #8 & #9 \end{matrix}\right)$}
但是我无法为具有 16 个元素的二阶方阵创建具有 16 个参数(元素)的宏。
有办法吗?或者更好的方法。谢谢!
答案1
我不确定是否\matrixthree{a}{b}{c}{d}{e}{f}{g}{h}{i}
真的比
\begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \end{pmatrix}
\\
无论如何,这是一个具有更简单界面的命令:行由 分隔,每行中的条目用逗号分隔。可选参数用于分隔符:(p
默认)用于括号、b
用于方括号、v
用于横线、V
用于双横线、B
用于大括号。使用 则\buildmatrix[]{1,2\\3,4}
没有分隔符。
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\buildmatrix}{O{p}m}
{
\begin{#1matrix}
% separate the rows and process each row at a time
\seq_set_split:Nnn \l_tmpa_seq { \\ } { #2 }
\seq_map_function:NN \l_tmpa_seq \__nichas_matrix_row:n
\end{#1matrix}
}
\cs_new_protected:Nn \__nichas_matrix_row:n
{
% split the row at commas
\seq_set_split:Nnn \l_tmpb_seq { , } { #1 }
% insert & between each item
\seq_use:Nn \l_tmpb_seq { & }
% end the row
\\
}
\ExplSyntaxOff
\begin{document}
\[
\buildmatrix[b]{a,b,c \\ d,e,f \\ g,h,i }\ne
\buildmatrix{1,2,3,4 \\ 5,6,7,8 \\ 9,10,11,12 \\ 13,14,15,16 }
\]
\end{document}