各位!如果这个问题已经有人问过并回答过,我很抱歉,但是我在 Google 上搜索了很久,还是找不到正确的答案。
我学习了如何使用数组编写带有断线的矩阵:
\left[ \begin{array}{ccc;{2pt/2pt}c} 1 & 2 & 3 & -2 \\
0 & 5 & 10 & -5 \\
3 & 4 & 5 & 0
\end{array} \right]
结果是这样的:
现在,我想写下这种矩阵的矩阵变换。通过搜索本网站上的一些已回答问题,我发现最好的解决方案是这样的:
\begin{gmatrix}[b]
1 & 2 & \BAR & 3 \\
4 & 5 & \BAR & 6 \\
7 & 8 & \BAR & 9
\rowops
\swap{0}{1}
\mult{0}{\cdot 7}
\add[5]{1}{2}
\end{gmatrix}
为了实现这一点,必须\usepackage{gauss}
添加
\newcommand{\BAR}{%
\hspace{-\arraycolsep}%
\strut\vrule
\hspace{-\arraycolsep}%
}
结果取决于我使用的环境。如果我使用 写下矩阵$$ $$
,我会得到整行,而它会在 内中断\begin{align*} \end{align*}
。按相应的顺序,结果是
我的目标是保留矩阵变换,但不是完整的垂直线,而是一条虚线,就像这篇文章的第一个矩阵一样。通过保留 gauss 包中的命令可以实现这一点吗?如果不能,那么最好的和最简单的解决方案是什么?
附加问题,如果我碰巧需要它(或者万一所有这些都不可能实现):如何使用将垂直线保持完整\begin{align*} \end{align*}
?我真的需要改变这些矩阵的环境吗(我需要它在多行中写入矩阵并按照我想要的方式对齐线条)?
提前谢谢您!我真心希望有人能给出一个简单的答案。
答案1
环境gmatrix
使用低级制表函数,这些函数受到当前基线跳过的影响,基线跳过在 中有所增加align
。
轻松修改https://tex.stackexchange.com/a/337481/4427解决了问题。请参阅答案以了解更多选项xgmatrix
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{gauss}
\usepackage{xparse}
\newcommand{\BAR}{%
\hspace{-\arraycolsep}%
\strut\vrule
\hspace{-\arraycolsep}%
}
\ExplSyntaxOn
\keys_define:nn { gauss }
{
type .tl_set:N = \l_gauss_type_tl,
type .initial:n = {},
right .code:n = \tl_set:cn { g@post } { \relax$ },
right .value_forbidden:n = true,
spread .tl_set:N = \l_gauss_spread_tl,
spread .initial:n = 1,
colsep .dim_set:N = \l_gauss_colsep_dim,
colsep .initial:n = \arraycolsep,
}
\NewDocumentEnvironment{xgmatrix}{O{}}
{
\keys_set:nn { gauss } { #1 }
\normalbaselines % <----------- ADDED
\linespread{\l_gauss_spread_tl}\selectfont
\setlength{\arraycolsep}{\l_gauss_colsep_dim}
\begin{gmatrix}[\l_gauss_type_tl]
}
{
\end{gmatrix}
}
\ExplSyntaxOff
\begin{document}
\[
\begin{gmatrix}[b]
1 & 2 & \BAR & 3 \\
4 & 5 & \BAR & 6 \\
7 & 8 & \BAR & 9
\rowops
\swap{0}{1}
\mult{0}{\cdot 7}
\add[5]{1}{2}
\end{gmatrix}
\]
\begin{align*}
\begin{gmatrix}[b]
1 & 2 & \BAR & 3 \\
4 & 5 & \BAR & 6 \\
7 & 8 & \BAR & 9
\rowops
\swap{0}{1}
\mult{0}{\cdot 7}
\add[5]{1}{2}
\end{gmatrix}
\end{align*}
\begin{align*}
\begin{xgmatrix}[type=b]
1 & 2 & \BAR & 3 \\
4 & 5 & \BAR & 6 \\
7 & 8 & \BAR & 9
\rowops
\swap{0}{1}
\mult{0}{\cdot 7}
\add[5]{1}{2}
\end{xgmatrix}
\end{align*}
\end{document}