我遇到了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*}
产生这个矩阵:
我不明白为什么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}
在一些地方,我还在{}
前面+
或-
后面添加了一个空的数学子公式&
。这样 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}
空组,则不执行任何操作。
一种不同的解决方案是使用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}
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}
答案3
$X_{25}$
左对齐$-X_{25}$
,这就是您在环境中所要求的。我建议您在每个符号周围添加对齐标签+
,-
以实现您想要的视觉效果。
请注意,这$X_{24}$
是正确对齐的,因为该列是右对齐的。该环境中的规则是:
- 第一列右对齐
- 第二列左对齐
- ...
- 第五列(
X_{24}
)右对齐,因此按照您的理解是正确的 - 第六列(
X_{25}
)左对齐 - ETC