gmatrix 中的列对齐和行间距

gmatrix 中的列对齐和行间距

如何右对齐列并增加行间距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环境,它接受一个带有一组键值对的可选参数:

  • typegmatrix对应于设置围栏的可选参数

  • 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} 

在此处输入图片描述

相关内容