矩阵中的条目对齐

矩阵中的条目对齐

我有这个pmatrixamsmath包):

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\begin{equation}
\begin{pmatrix}
\frac{a}{b}     & \frac{a}{b}     & 0  & 1-\frac{a}{b} \\ 
0               & 0               & -1 & 0             \\ 
c-\frac{a}{b}   & c-\frac{a}{b}   & 0  & \frac{a}{b}   \\ 
d+c-\frac{a}{b} & d+c-\frac{a}{b} & 0  & -\frac{a}{b}
\end{pmatrix}
\end{equation}
\end{document}

我想对齐矩阵的条目,以便所有分数都对齐。有没有办法在环境中做到这一点pmatrix,还是我必须使用\begin{array}

答案1

mathtools包允许调整矩阵元素的对齐:

\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}

\begin{document}
\begin{equation}
\begin{pmatrix*}[r]
\frac{a}{b}     & \frac{a}{b}     & 0  & 1-\frac{a}{b} \\
0               & 0               & -1 & 0             \\
c-\frac{a}{b}   & c-\frac{a}{b}   & 0  & \frac{a}{b}   \\
d+c-\frac{a}{b} & d+c-\frac{a}{b} & 0  & -\frac{a}{b}
\end{pmatrix*}
\end{equation}
\end{document}

答案2

这使用array环境

在此处输入图片描述

\documentclass[a4paper]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{amsmath}

\begin{document}

\begin{equation}
\begin{pmatrix}
\begin{array}{rrrr}
\frac{a}{b}     & \frac{a}{b}     & 0  & 1-\frac{a}{b} \\ 
0               & 0               & -1 & 0             \\ 
c-\frac{a}{b}   & c-\frac{a}{b}   & 0  & \frac{a}{b}   \\ 
d+c-\frac{a}{b} & d+c-\frac{a}{b} & 0  &-\frac{a}{b}
\end{array}
\end{pmatrix}
\end{equation}

\end{document}

答案3

一种方法是使用来\makebox确保每列都设置在相同大小的框中,并将对齐方式设置为r右对齐:

在此处输入图片描述

笔记:

  • 使用简单的hphantom{}方法插入足够的空间以使所有条目右对齐,大部分情况下都是可行的,但很难使最后一个条目正确,而且仍然具有一元负间距而不是二进制负间距。
  • 我保留了中心间距的常数——如果需要的话,也可以进行调整。

第二个问题(在评论中提到)关于在括号内居中需要在引入空格的位置和大小方面0进行更多的精心设计:\phantom\makebox

在此处输入图片描述

希望您能研究下面的代码并实现您想要的任何对齐。我不认为存在一种适用于所有情况的通用解决方案,每种情况都需要根据具体情况进行调整。

笔记:

  • 我通过 在第一行下方添加了一些垂直间距\\[0.5ex]

代码:

\documentclass{article}
\usepackage{amsmath}
\usepackage{calc}

\newcommand*{\MakeBox}[2]{\makebox[\widthof{#1}][r]{#2}}%

\newcommand{\ColumnA}[1]{\MakeBox{$d + c - \frac{1}{b}$}{$#1$}}%
\newcommand{\ColumnD}[1]{\MakeBox{$1 - \frac{1}{b}$}{$#1$}}%

\newcommand{\PhantomFrac}{\hphantom{\frac{1}{2}}}%
\newcommand{\PhantomRe}{\hphantom{\Re\text{e}}}%
\newcommand{\PhantomIm}{\hphantom{\Im\text{m}}}%
\newcommand{\CenterInAPlusB}[1]{\PhantomFrac\makebox[\widthof{$(a+b)$}][c]{$#1$}}%
\newcommand{\CenterInATimesB}[2]{#1\makebox[\widthof{$(ab)$}][c]{$#2$}}%


\begin{document}

\begin{equation}
\begin{pmatrix}{}
\ColumnA{\frac{a}{b}}    & \ColumnA{\frac{a}{b}}     & 0  & 1-\frac{a}{b} \\ 
0                        & 0                         & -1 & 0             \\ 
\ColumnA{c  -\frac{a}{b}}& \ColumnA{c  -\frac{a}{b}} & 0  & \ColumnD{\frac{a}{b}}  \\ 
         d+c-\frac{a}{b} & d+c-\frac{a}{b}           & 0  & \ColumnD{-\frac{a}{b}}
\end{pmatrix}
\end{equation}


\begin{equation}
\begin{pmatrix} 
\frac{1}{2}(a+b)   & \frac{1}{2}(a-b)   & \CenterInATimesB{\PhantomRe}{0} & \CenterInATimesB{\PhantomIm}{0} \\[0.5ex] 
\frac{1}{2}(a-b)   & \frac{1}{2}(a+b)   & \CenterInATimesB{\PhantomRe}{0} & \CenterInATimesB{\PhantomIm}{0} & 0 & \Im\text{m}(a b) & \Re\text{e}(a b)\\ 
\CenterInAPlusB{0} & \CenterInAPlusB{0} & \Re\text{e}(a b)                & \Im\text{m}(a b) 
\end{pmatrix}
\end{equation}

\end{document} 

答案4

第一个问题的一个简单解决方案是使用包中定义的矩阵*环境mathtools对于第二个问题,我稍微简化了以更简单的方式定义代码\RE并将\IM其作为数学运算符:使用包解决垂直间距问题cellspace:它确保在数组类型环境中一行底部和下一行顶部之间的最小间距;适用于 amsmath 环境 - 但不幸的是不适用于 mathtools 扩展。

    \documentclass[12pt]{article}
    \usepackage{mathtools}
    \DeclareMathOperator{\IM}{\Im{m}}
    \DeclareMathOperator{\RE}{\Re{e}}
    \usepackage[math]{cellspace}
    \cellspacetoplimit = 3pt
    \cellspacebottomlimit = 3pt

    \begin{document}

    \begin{equation}
    \begin{pmatrix*}[r]
    \dfrac{a}{b}     & \dfrac{a}{b}     & 0  & 1-\dfrac{a}{b} \\[8pt]
    0               & 0               & -1 & 0             \\[4pt]
    c-\dfrac{a}{b}   & c-\dfrac{a}{b}   & 0  & \dfrac{a}{b}   \\[12pt]
    d+c-\dfrac{a}{b} & d+c-\dfrac{a}{b} & 0  & -\dfrac{a}{b}
    \end{pmatrix*}
    \end{equation}
    \bigskip
    \begin{equation}
    \begin{pmatrix}
    \frac{1}{2}(a+b) & \frac{1}{2}(a-b) & 0 & 0 \\
    \frac{1}{2}(a-b) & \frac{1}{2}(a+b) & 0 & 0 & 0 & \IM(a b) & \RE(a b)\\
     0 & 0 & \RE(a b) & \IM(a b)
     \end{pmatrix}
    \end{equation}

    \end{document}

在此处输入图片描述

相关内容