在 LaTeX 中align
,我很难对齐多项式项,并假设有一种简单的方法可以做到这一点。但我找不到简单/优雅的解决方案。我想要的是这样的:
x1 + x2 ______________ = 3
x1_______________+ x3 = 4
等等,使用更多线条和变量(下划线仅用于空格/对齐)。任何帮助表示感谢。
更新这是我找到的解决方案:
\begin{alignat*}{7}
8x_1 &{}+ 4x_2 &{}+ y_1 & & & &= 160 \\
4x_1 &{}+ 6x_2 & &{}+ y_2 & & &= 120 \\
x_1 & & & &{}+ y_3 & &= 34 \\
\phantom{{}+{}x_1}&{}+x_2&& & &{}+ y_4 &= 14 \\
x_1\geq0&x_2\geq0&y_1\geq0&y_2\geq0&y_3\geq0& y_4\geq0
\end{alignat*}
结果:
答案1
您还可以使用包alignat*
中的环境 -amsmath
有关详细信息和其他示例,请参阅文档第 5 页。
请注意,如果没有,{}
您将无法在+
符号后获得正确的间距。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{4} % 4 is the number of equation columns
x_1&+x_2& & =3\\
x_1& &{}+x_3 &= 4
\end{alignat*}
\end{document}
编辑
根据 mforbes 的评论和一些额外的测试用例,为+
和添加额外的列可能更为可靠=
。例如,假设您想在某些项前面放置一些系数。
\begin{alignat*}{4}
x_1 &{}+{}&x_2 & & &{}={}&3\\
x_1 & & &{}+{} & x_3 &{}={}&4
\end{alignat*}
正如 mforbes 指出的那样,amsmath
文档中写道“计算任意行中 &s 的最大数量,加 1 并除以 2”;我发现如果得到一个分数,那么你应该向上舍入,因此{4}
而不是{3}
。
答案2
这系统软件包可以轻松实现这样的对齐:
\documentclass{minimal}
\usepackage{systeme}
\begin{document}
\sysdelim..
\systeme{x_1+x_3=6,x_2-x_3=7,x_1-x_2=4}
\end{document}
答案3
好的,这是我的最终解决方案,感谢大家的建议和指导。现在一切都很干净,并且排列整齐:
\begin{alignat*}
8x_1 &{}+{}& &4x_2 &{}+{}& y_1 &&&&&& &{}={}&160\\
4x_1 &{}+{}& &6x_2 && &{}+{}& y_2 &&&& &{}={}&120\\
x_1 && & && && &{}+{}& y_3 && &{}={}& 34\\
\phantom{{}+{}x_1}
&& &x_2 && && && &{}+{}& y_4 &{}={}&14
\end{alignat*}
我把不等式线从中分割出来了,alignat
因为它干扰了列宽。
我学会了:
- 围绕操作员
${}+{}$
&
每行使用完全相同的数量- 用于
\phantom{{}+{}x_1}
多项式头部缺失的项 - 不要在结构中放入任何其他内容(文本)。这会把事情搞乱
- 做同样的事情有很多种方法,我已经很多学习
输出如下:
答案4
一种相当直观的方法是使用\phantom
来隐藏您不想排版的方程式组件,但为其留出空间。此外,由于\phantom
如果不加改动地使用会导致一些间距问题,您需要(重新)指定+
使用的二元关系\mathrel
或原子相关使用 的组合{}
。
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{align*}
x_1+x_2\phantom{{}+{}x_3} &= 3 \\
x_1\phantom{{}+{}x_2}{}+x_3 &= 4 \\
x_1+x_2+x_3 &= 5
\end{align*}
\end{document}
或者,也可以使用array
环境来排版。但是,就优雅程度而言,我认为这不是很高。它在一定程度上降低了代码的可读性。