alignat 做出 3 次良好对齐和 1 次不良对齐

alignat 做出 3 次良好对齐和 1 次不良对齐

我遇到了alignat环境问题。此代码:

\begin{alignat*}{9}
&X_{12}&+X_{13}&       &       &       &       &       &       &        &=1 \\
&      & X_{13}&+X_{23}&       &       &-X_{35}&       &       &        &=0 \\
&X_{12}&       &-X_{23}&-X_{24}&-X_{25}&       &       &       &        &=0 \\
&      &       &       & X_{24}&       &       &-X_{45}&-X_{46}&        &=0 \\
&      &       &       &       & X_{25}&+X_{35}&+X_{45}&       &-X_{56} &=0 \\
&      &       &       &       &       &       &       & X_{46}&+X_{56} &=1 \\
\end{alignat*}

产生这个矩阵:

matrix image

我不明白为什么X_{25}不对齐,X_{13}X_{24}X_{46}对齐。有人能帮我理解这个问题吗,甚至能告诉我如何修复它。

答案1

该环境alignat用于将多个方程组对齐在一条线上:

abc = def   ghi = jkl
  m = n       o = p

因此每个系统有两种对齐方式,等号位于两个系统中间和之间:

abc &= def & ghi &= jkl \\
m   &= n   &   o &= p \\

等号左边的部分是右对齐的,等号后面的部分是左对齐的。你的情况可能想要右对齐,因此你需要两个&&

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\begin{alignat*}{9}
X_{12}&&{}+X_{13}&&         &&         &&         &&         &&         &&         &&          &=1 \\
      && X_{13}  &&{}+X_{23}&&         &&         &&{}-X_{35}&&         &&         &&          &=0 \\
X_{12}&&         &&{}-X_{23}&&{}-X_{24}&&{}-X_{25}&&         &&         &&         &&          &=0 \\
      &&         &&         && X_{24}  &&         &&         &&{}-X_{45}&&{}-X_{46}&&          &=0 \\
      &&         &&         &&         && X_{25}  &&{}+X_{35}&&{}+X_{45}&&         &&{}-X_{56} &=0 \\
      &&         &&         &&         &&         &&         &&         && X_{46}  &&{}+X_{56} &=1 \\
\end{alignat*}

\end{document}

Result

在一些地方,我还在{}前面+-后面添加了一个空的数学子公式&。这样 TeX 就知道+-应该设置为二元运算符(在{}和之间X),并且间距更好。

答案2

alignat交替构建右对齐和左对齐的列;您的X_{25}落在偶数列中。

因此这不是排版这些方程式的最佳方式,因为运算符号周围的间距不均匀;最好使用array

\documentclass{article}
\usepackage{amsmath}
\usepackage{array} % for extended syntax in array

\begin{document}
\begin{equation*}
\begin{array}{*{18}{@{}>{{}}l<{{}}@{}}}
X_{12}&+&X_{13}& &      & &      & &      & &      & &      & &      & &      &=1 \\
      & &X_{13}&+&X_{23}& &      & &      &-&X_{35}& &      & &      & &      &=0 \\
X_{12}& &      &-&X_{23}&-&X_{24}&-&X_{25}& &      & &      & &      & &      &=0 \\
      & &      & &      & &X_{24}& &      & &      &-&X_{45}&-&X_{46}& &      &=0 \\
      & &      & &      & &      & &X_{25}&+&X_{35}&+&X_{45}& &      &-&X_{56}&=0 \\
      & &      & &      & &      & &      & &      & &      & &X_{46}&+&X_{56}&=1 
\end{array}
\end{equation*}
\end{document}

我构建了 18 列,每列左对齐;每列将变为${}#{}$\hfil,其中#表示实际单元格条目。因此,如果条目是操作符号,例如+${}+{}$将在 周围留出正确的间距+。如果是X_{12}空组,则不执行任何操作。

enter image description here

一种不同的解决方案是使用systeme;设置并不比上面的复杂多少,尽管它需要做一些替换;然而输入却更加清晰:

\documentclass{article}
\usepackage{amsmath}
\usepackage{systeme}

\begin{document}
\begin{equation*}
\syssubstitute{%
  {x_1}{X_{12}}%
  {x_2}{X_{13}}%
  {x_3}{X_{23}}%
  {x_4}{X_{24}}%
  {x_5}{X_{25}}%
  {x_6}{X_{35}}%
  {x_7}{X_{45}}%
  {x_8}{X_{46}}%
  {x_9}{X_{56}}%
}
\sysdelim..
\systeme{
x_1+x_2                            =1,
    x_2+x_3        -x_6            =0,
x_1    -x_3-x_4-x_5                =0,
            x_4        -x_7-x_8    =0,
                x_5+x_6+x_7    -x_9=0,
                            x_8+x_9=1
}
\end{equation*}
\end{document}

enter image description here

2017 年更新

autoaligne软件包允许使用不同的解决方案。不幸的是,空位应该用+后面没有空格来表示,但经过一些扩展,我们也可以在输入中获得良好的对齐:诀窍是将空格本地设置为忽略的字符。

\documentclass{article}
\usepackage{amsmath}
\usepackage{autoaligne}

\begin{document}

\begin{equation*}
\catcode` =9 % ignore spaces
\autoaligne{%
  X_{12}+X_{13}+      +      +      +      +      +      +      =1 \\%
        +X_{13}+X_{23}+      +      -X_{35}+      +      +      =0 \\%
  X_{12}+      -X_{23}-X_{24}-X_{25}+      +      +      +      =0 \\%
        +      +      +X_{24}+      +      -X_{45}-X_{46}+      =0 \\%
        +      +      +      +X_{25}+X_{35}+X_{45}+      -X_{56}=0 \\%
        +      +      +      +      +      +      +X_{46}+X_{56}=1
}
\end{equation*}
\end{document}

enter image description here

答案3

$X_{25}$左对齐$-X_{25}$,这就是您在环境中所要求的。我建议您在每个符号周围添加对齐标签+-以实现您想要的视觉效果。

请注意,这$X_{24}$是正确对齐的,因为该列是右对齐的。该环境中的规则是:

  • 第一列右对齐
  • 第二列左对齐
  • ...
  • 第五列(X_{24})右对齐,因此按照您的理解是正确的
  • 第六列(X_{25})左对齐
  • ETC

相关内容