bmatrix,如何在特定行括号[ ]后提供详细信息?

bmatrix,如何在特定行括号[ ]后提供详细信息?

我是 LaTeX 新手。我想要像bmatrix

矩阵

[1 1 1] R1=R1-R2  (Row1= Row 1 - Row 2)
 1 1 1  R2<-R1+R3
 1 1 1

我想要在矩阵 [1 1 1] 后写“R1=R1-R2”,但是当我添加它时,它会转到下一行。(我想在 [ ] 括号后写)怎么做?

答案1

这是一个可能的实现:

\documentclass{article}
\usepackage{amsmath}

\newdimen\eliminationwd

\newenvironment{elimination}
 {\global\eliminationwd=0pt\bmatrix}
 {\endbmatrix\hspace{1em}\hspace{\eliminationwd}}

\newcommand{\ops}[1]{%
  \sbox0{$#1$}%
  \ifdim\wd0>\eliminationwd
    \global\eliminationwd=\wd0
  \fi
  \hfil\makebox[0pt][l]{\hspace{1em}\box0}\hfilneg
}

\begin{document}
\[
\left|
\begin{elimination}
1 &  0 & -1 &  0 &  4 \\
0 &  1 &  2 &  0 &  1 \ops{R_2\gets R_2-2R_1} \\
0 &  2 &  4 &  1 & -1 \ops{R_3\gets R_1+R_3} \\
1 & -1 & -2 & -2 &  5 \ops{R_4\gets R_4-R_1}
\end{elimination}
\right|
\]
\end{document}

我使用了\left|\right|只是为了表明间距很好。宏\ops测量其内容,并在必要时更新存储在中的长度\eliminationwd。然后,它将参数排版在与单元格右边缘对齐并向右突出的零宽度框中。矩阵排版后,将处理必要的水平空间\endbmatrix

在此处输入图片描述

\ops如果你把的定义改为

\newcommand{\ops}[1]{%
  \sbox0{$\scriptstyle#1$}%
  \ifdim\wd0>\eliminationwd
    \global\eliminationwd=\wd0
  \fi
  \hfil\makebox[0pt][l]{\hspace{1em}\box0}\hfilneg
}

你得到

在此处输入图片描述

答案2

使用包来实现这一点的简单方法blockarray。我还将nccmath包用于其medsize环境,以便使用比主公式更小的字体显示注释/详细信息(约占 的 80% displaystyle):

\documentclass[12pt]{article}

\usepackage{mathtools, nccmath}
\usepackage{array, multirow, bigdelim}%
\usepackage{blkarray}

\begin{document}
\setlength\BAextrarowheight{3pt}
\[ \begin{blockarray}{[ccccc] >{\medsize}l <{\endmedsize}}%\rule{0pt}{2.5ex}
  1 & 0 & -1 & 0 & 4 & \\
  0 & 1 & 2 & 0 & 1 &\mathrm{R_2 = R_2-2R_1} \\
  0 & 2 & 4 & 1 & -1 & R_3 ← R_1 + R_3\\
  1 & -1 & -2 & -2 & 5 & R_4 ← R_4-R_1
  \end{blockarray} \]%

\end{document} 

在此处输入图片描述

相关内容