如何右对齐列并增加行间距gmatrix
?例如,我想在以下矩阵中执行此操作:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{gauss}
\begin{document}
\[
\begin{gmatrix}[b]
1&\frac72&\frac12\\
0&-\frac{29}2&-\frac12
\rowops
\mult{1}{\cdot \left(-\frac2{29}\right)}
\end{gmatrix}
\]
\end{document}
答案1
该gauss
包使用低级方法来排版矩阵。
这是可行的,这些设置是为了显示结果而夸张的设置。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{gauss}
\begin{document}
\[
\linespread{3}\selectfont
\addtolength{\arraycolsep}{20pt}
\begin{gmatrix}[v]
1 & 0 & 5 & 7 & 2 \\
3 & 1 & 1 & 5 & 1 \\
1 & 0 & -7 & 1 & 4 \\
4 & 3 & 6 & 5 & 4\\
1 & 7 & 9 & 4 & 3 \\
0 & 0 & 8 & 0 & -1
\rowops
\add[-3]01
\add[-1]02
\swap34
\mult5{\cdot 0}
\add[x^2-1]53
\colops
\swap01
\mult3{\cdot 1}
\add[0]24
\end{gmatrix}
\]
\end{document}
调整参数为\linespread
和参数为\addtolength
以适应。
如果要右对齐,请添加
\makeatletter\def\g@post{\relax$}\makeatother
回到之前的设置\begin{gmatrix}
。
下面是一个以更简单的方式进行设置的界面。我定义了一个新xgmatrix
环境,它接受一个带有一组键值对的可选参数:
type
gmatrix
对应于设置围栏的可选参数right
设置列的右对齐;如果未指定,则使用居中对齐spread
是\linespread
因素colsep
设置列间距
代码如下:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{gauss}
\usepackage{xparse}
\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 }
\linespread{\l_gauss_spread_tl}\selectfont
\setlength{\arraycolsep}{\l_gauss_colsep_dim}
\begin{gmatrix}[\l_gauss_type_tl]
}
{
\end{gmatrix}
}
\ExplSyntaxOff
\begin{document}
\[
\begin{xgmatrix}[spread=3,colsep=20pt,right,type=v]
1 & 0 & 5 & 7 & 2 \\
3 & 1 & 1 & 5 & 1 \\
1 & 0 & -7 & 1 & 4 \\
4 & 3 & 6 & 5 & 4\\
1 & 7 & 9 & 4 & 3 \\
0 & 0 & 8 & 0 & -1
\rowops
\add[-3]01
\add[-1]02
\swap34
\mult5{\cdot 0}
\add[x^2-1]53
\colops
\swap01
\mult3{\cdot 1}
\add[0]24
\end{xgmatrix}
\]
\end{document}
答案2
您可以使用 TABstack 来代替。矩阵条目之间的水平间隙以及行之间的垂直基线跳跃很容易指定,如 MWE 中所示。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{gauss}
\usepackage{tabstackengine}
\stackMath
\begin{document}
\centering
GMATRIX:
\[
\begin{gmatrix}[b]
1&\frac72&\frac12\\
0&-\frac{29}2&-\frac12
\rowops
\mult{1}{\cdot \left(-\frac2{29}\right)}
\end{gmatrix}
\]
TABSTACK:
\[
\setstackgap{L}{1.4\baselineskip}
\setstacktabbedgap{1.2em}
\abovebaseline[-\dp\strutbox]{\bracketMatrixstack[r]{
1&\frac72&\frac12\\
0&-\frac{29}2&-\frac12
}}
\mid\cdot\left(-\textstyle\frac2{29}\right)
\]
\end{document}
对于 OP 的第二种问题类型:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{gauss}
\usepackage{tabstackengine}[2016-10-04]
\stackMath
\newcommand\leftlooparrow[1][]{\kern3pt%
\Shortstack[r]{{\leftarrow}\mkern-7mu{-}%
\rlap{\abovebaseline[.5pt]{\scriptscriptstyle\,#1}}\\
\rule{.5pt}{1\dimexpr\Lstackgap}\mkern2mu% WHERE 1 REPLACED WITH HOW MANY ROWS
\mkern-.5mu\\
{-}\mkern-4mu{-}}%
}
\begin{document}
\centering
GMATRIX:
\[
\begin{gmatrix}[b]
1&\frac72&\frac12\\ 0&1&-\frac1{29}
\rowops \add[\cdot \left(-\frac 72\right)]{1}{0}
\end{gmatrix}
\]
TABSTACK:
\[
\setstackgap{L}{1.4\baselineskip}
\setstackgap{S}{-3.1pt}
\setstacktabbedgap{1.2em}
\abovebaseline[-\dp\strutbox]{\bracketMatrixstack[r]{
1&\frac72&\frac12\\
0&1&-\frac1{29}
}}
\leftlooparrow[+]\cdot\left(-\textstyle\frac7{2}\right)
\]
\end{document}
答案3
\vspace
在相关空间中简单的定义就足够了。您还可以在 d 中定义mygmatrix
环境(或补丁gmatrix
)以在本地重新定义\mathstrut
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{gauss}
\newenvironment{mygmatrix}{\def\mathstrut{\vphantom{\big(}}\gmatrix}{\endgmatrix}
\begin{document}%
\[\
\begin{gmatrix}[b]
1 &{\frac72} & \frac12\vspace{3pt}\\
0 & \frac{29}2 &
\rowops
\mult{1}{\cdot \bigl(-\frac2{29}\bigr)}
\end{gmatrix}
\]
\[
\begin{mygmatrix}[b]
1 &{\frac72} & \frac12\vspace{3pt}\\
0 & \frac{29}2 &
\rowops
\mult{1}{\cdot \bigl(-\frac2{29}\bigr)}
\end{mygmatrix}
\]
\end{document}