是否可以在最后定义一个带有参数函数的新矩阵环境?

是否可以在最后定义一个带有参数函数的新矩阵环境?

是否可以在最后定义一个带有参数函数的新矩阵环境?

这是我正在尝试使用的环境

\newenvironment{amatrix}[2]{%
  $\left[\begin{array}{@{}*{#1}{c}|c@{}}
}{%
  \end{array}\right]}
\stackrel{#2}{\rightarrow}$}

这样我就可以输入这个简单的矩阵。

\begin{amatrix}{3}{r_1\leftrightarrow r_3}
-R_1    &   R_2 &   0   &   E_2-E_1 \\
0       &   R_2 &   R_3 &   E_2     \\
1       &   1   &   -1  &   0       \\
\end{amatrix}

并得到这个结果。

数据应该是什么样的?

我知道我可以分别定义环境和命令为

\newenvironment{amatrix}[2]{%
  $\left[\begin{array}{@{}*{#1}{c}|c@{}}
}{%
  \end{array}\right]}

\newcommand{\arr}{$\stackrel{#2}{\rightarrow}$}

然后我只需要输入

\begin{amatrix}{3}
-R_1    &   R_2 &   0   &   E_2-E_1 \\
0       &   R_2 &   R_3 &   E_2     \\
1       &   1   &   -1  &   0       \\
\end{amatrix}
\arr{r_1\leftrightarrow r_3}

但是是否可以将其合并到一个环境中?我该怎么做?

答案1

\end{<env>}你在这里遇到的根本问题是\newenvironment{<env>}默认情况下无法访问这些参数(请参阅为什么环境的结束代码不能包含参数?)但是还是有办法解决的……

这是建议使用的界面xparse。它允许您指定选修的构造的第二个参数amatrix(因为您可能不需要在每次迭代中使用它):

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools,xparse}

\NewDocumentEnvironment{amatrix}{ m o }
  {
    \left[\begin{array}{ @{} *{#1}{c} | c @{} }
  }{
    \end{array}\right]
    \IfValueT{#2}
      {\xrightarrow{#2}}
  }

\begin{document}

\[
  \begin{amatrix}{3}[r_1 \leftrightarrow r_3]
  -R_1    &   R_2 &   0   &   E_2-E_1 \\
  0       &   R_2 &   R_3 &   E_2     \\
  1       &   1   &   -1  &   0
  \end{amatrix}
  \begin{amatrix}{3}
  -R_1    &   R_2 &   0   &   E_2-E_1 \\
  0       &   R_2 &   R_3 &   E_2     \\
  1       &   1   &   -1  &   0
  \end{amatrix}
\]

\end{document}

答案2

我使用了 Werner 的很好的例子并添加了一些(可能是可取的)选项。

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools,xparse}

\NewDocumentEnvironment{amatrix}{ m d() o d() o D(){r} }
  {
    \left[\begin{array}{ @{} *{#1}{c} | c @{} }
  }{
    \end{array}\right]
    \IfValueT{#3}
      {\xrightarrow{\IfValueT{#2}{#2 \cdot} #6_{#3} 
    \IfValueT{#5}      
      { \IfValueTF{#4}{#4 \cdot}{\leftrightarrow} #6_{#5} } } }
  }

\begin{document}

\[
  \begin{amatrix}{3}[1][3]
  -R_1    &   R_2 &   0   &   E_2-E_1 \\
  0       &   R_2 &   R_3 &   E_2     \\
  1       &   1   &   -1  &   0
  \end{amatrix}
  \begin{amatrix}{3}
  1       &   1   &   -1  &   0       \\
  0       &   R_2 &   R_3 &   E_2     \\
  -R_1    &   R_2 &   0   &   E_2-E_1
  \end{amatrix}
\]

\[
  \begin{amatrix}{3}(2)[1](+3)[3]
  1       &   1   &   -1  &   0       \\
  0       &   R_2 &   R_3 &   E_2     \\
  -R_1    &   R_2 &   0   &   E_2-E_1
  \end{amatrix}
  \begin{amatrix}{3}
  1       &    1   &   -1  &   0       \\
  0       &    R_2 &   R_3 &   E_2     \\
  2-3R_1  & 2+3R_2 &   -2  &  3E_2-3E_1
  \end{amatrix}
\]

\[
  \begin{amatrix}{3}(4)[1]
  -R_1    &   R_2 &   0   &   E_2-E_1 \\
  0       &   R_2 &   R_3 &   E_2     \\
  1       &   1   &   -1  &   0
  \end{amatrix}
  \begin{amatrix}{3}
 -4R_1    &  4R_2 &   0   &   4E_2-4E_1 \\
  0       &   R_2 &   R_3 &   E_2     \\
  1       &   1   &   -1  &   0
  \end{amatrix}
\]

\end{document}

相关内容