我要输入一个文档,其中需要写入许多扩展数组,我想创建一个可以很好地完成此操作的函数,但不幸的是 ´\def´ 和 ´\newcommand´ 命令都只允许 9 个参数,而我有 12 个。有人能帮帮我吗?帮帮我?
(A|b)=\left(\begin{array}{ccc|c}
2&1&-2&0\\
-1&3&1&0\\
2&1&1&z
\end{array}\right)
答案1
我不认为
\extarray{2}{1}{-2}{0}{-1}{3}{1}{0}{2}{1}{1}{z}
是可维护的。
这是我的建议。
\documentclass{article}
\usepackage{amsmath}
\newenvironment{extarray}[1][3]{%
\left(\begin{array}{@{}*{#1}{c}|c@{}}%
}{\end{array}\right)}
\begin{document}
\[
\begin{extarray}[1] A & b \end{extarray} =
\begin{extarray}
2 & 1 & -2 & 0 \\
-1 & 3 & 1 & 0 \\
2 & 1 & 1 & z
\end{extarray}
\]
\[
\begin{extarray}[1] A & b \end{extarray} =
\begin{extarray}[4]
3 & 2 & 1 & -2 & 0 \\
4 & -1 & 3 & 1 & 0 \\
5 & 2 & 1 & 1 & z \\
0 & 0 & 0 & 1 & z
\end{extarray}
\]
\end{document}
请注意间距的均匀性以及拥有任意数量的列的可能性。
使用“内联”语法:
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\extarray}{O{3}m}
{
\seq_set_split:Nnn \l_tmpa_seq { ; } { #2 }
\left(\begin{array}{@{} *{#1}{c} | c @{}}
\seq_map_function:NN \l_tmpa_seq \__zaragosa_row:n
\end{array}\right)
}
\cs_new_protected:Nn \__zaragosa_row:n { \clist_use:nn { #1 } { & } \\ }
\ExplSyntaxOff
\begin{document}
\[
\extarray[1]{A,b}=
\extarray{2,1,-2,0 ; -1,3, 1,0 ; 2,1, 1,z}
\]
\[
\extarray[1]{A,b}=
\extarray[4]{
3, 2,1,-2,0 ;
4,-1,3, 1,0 ;
5, 2,1, 1,z ;
0, 0,0, 1,z
}
\]
\end{document}
对于“增广矩阵”符号 (A|b),你可能需要定义
\newcommand{\augm}[2]{\begin{extarray}[1] #1 & #2 \end{extarray}}
首次实施
\newcommand{\augm}[2]{\extarray[1]{#1,#2}}
在任一情况下都可以expl3
使用。\augm{A}{b}
答案2
我可能会谦虚地建议spalign
您使用可以对齐中心c
、左侧l
和右侧的包r
,并获得您得到的结果。
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{spalign}
\begin{document}
\[(A\mid b)=\spalignaugmatn[c]{1}{2 1 -2 0; -1 3 1 0; 2 1 1 z}\]
\[(A\mid b)=\spalignaugmatn[l]{1}{2 1 -2 0; -1 3 1 0; 2 1 1 z}\]
\[(A\mid b)=\spalignaugmatn[r]{1}{2 1 -2 0; -1 3 1 0; 2 1 1 z}\]
\[(A\mid b)=\spalignaugmatn[r]{1}{3 2 1 -2 0; 4 -1 3 1 0; 5 2 1 1 z; 0 0 0 1 z
}\]
\[(A\mid b)=\spalignaugmatn[l]{1}{3 2 1 -2 0; 4 -1 3 1 0; 5 2 1 1 z; 0 0 0 1 z
}\]
\[(A\mid b)=\spalignaugmatn[c]{1}{3 2 1 -2 0; 4 -1 3 1 0; 5 2 1 1 z; 0 0 0 1 z
}\]
\end{document}