在研究线性方程组时,提醒人们系数矩阵的最后一列保存常数是很好的。这通常在书中通过在最后一列和倒数第二列之间放置一条垂直线来实现。在 LaTex 中执行此操作的好方法是什么?
答案1
实现此目的的一种方法是使用在线线性代数教科书(两种意义上都是免费的)线性代数作者为 Jim Hefferon。本书采用 LaTeX 编写,是开源的,因此可以下载本书及其附带的样式文件。其中一个名为 的文档linalgjh.sty
是关于排版常见的线性代数内容,例如增强矩阵和行归约等。增强矩阵的代码为:
\newenvironment{amatrix}[1]{%
\left(\begin{array}{@{}*{#1}{c}|c@{}}
}{%
\end{array}\right)
}
用途如下:
\begin{amatrix}{2}
1 & 2 & 3 \\ a & b & c
\end{amatrix}
(请注意,该参数比总列数少一)。我猜想@{}
开头和结尾处的 s 是为了使空格与括号对齐(TH 在对 fabikw 的类似答案的评论中提到过)。
该样式文件还有其他几个可能有用的线性代数宏。
答案2
如果您使用数组构建自己的环境,那么您就比较安全。我会扩展amsmath
使用可选参数的内部宏。
优点:
它同时扩展多个矩阵环境(
matrix
,,,,,)。pmatrix
bmatrix
Bmatrix
vmatrix
Vmatrix
这些环境的名称和含义保持不变(不是
apmatrix
等等)。间距等与 相同
amsmath
。您可以做的不仅仅是插入垂直线(使用颜色和对齐方式,例如由于减号而右对齐的列)。
如果省略可选参数,它的作用与
amsmath
环境完全相同。
警告:
- 由于您重新定义了内部宏,因此如果原始包更改其代码,它可能无法工作。但
amsmath.sty
十多年来一直没有改变。如果矩阵后来发生变化,您可以调整自己的宏。
代码:
这是重新定义,只需在加载后将其放入序言中amsmath
:
\makeatletter
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{%
\hskip -\arraycolsep
\let\@ifnextchar\new@ifnextchar
\array{#1}}
\makeatother
由于宏名称中的,我不得不使用\makeatletter
... 。可选参数是的标准参数。 中的原始定义是:\makeatother
@
amsmath
\array
amsmath
\def\env@matrix{\hskip -\arraycolsep
\let\@ifnextchar\new@ifnextchar
\array{*\c@MaxMatrixCols c}}
因此,没有太多的改变。
例子:
简单增广矩阵:
\begin{pmatrix}[cc|c]
1 & 2 & 3\\
4 & 5 & 9
\end{pmatrix}
使用更复杂,具有不同的对齐方式、间距和颜色:
\begin{bmatrix}[*2cr@{\quad}|@{\quad}>{\color{red}}r]
a & b & 1 & 4 \\
c & d & -2 & -3
\end{bmatrix}
输出:
只需删除括号中的可选参数,您就会得到标准pmatrix
或bmatrix
。
我曾在 2008 年的一篇博客文章中使用过此代码和示例:amsmath
矩阵环境的扩展。
如果您不想重新定义该内部宏,您可以给它一个不同的名称,并以与amatrix
完全相同的方式在其上构建您的环境。amsmath
pmatrix
答案3
如果你使用数组来输入矩阵,那么你只需要指定类似
\left(\begin{array}{cc|c}
2 & 0 & 1\\
0 & 1 & 1
\end{array}\right)