我是 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}