按符号和变量对齐方程组

按符号和变量对齐方程组

使用此代码:

\begin{flalign}
& +3x+2y-5z=+04 \\
& +2x+4y-1z=+12 \\
& -4x-8y+9z=-06 &
\end{flalign}

我产生了这个输出:

预输出

不过,我想产生类似的对齐,但没有前导 0、1 和 +。

我希望我的代码能够产生这样的效果:

后期输出

我该如何修改我的代码来产生这个效果?

答案1

变体\hphantom

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{flalign}
& \mathbin{\hphantom{+}}3x+2y-5z=\hphantom{+0}4 \\
& \mathbin{\hphantom{+}}2x+4y-\hphantom{1}z=\hphantom{+}12 \\
& -4x-8y+9z=\hphantom{0}{-}6 &
\end{flalign}
\end{document}

结果 \hphantom

  • 后面的空格=有点太大,因为所需的空格是两位数或一位带符号的数的最大值,而不是两位数带一个符号。由于符号大于一位数,所以通过 来1设置。12\llap

  • 另外,我不认为行中的第一个符号-4x应该像二元运算符那样隔开,因此下面的例子使用一元减号来代替:

例子:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{flalign}
& \hphantom{+}3x+2y-5z = \hphantom{+}4 \\
& \hphantom{+}2x+4y-\hphantom{1}z = \hphantom{+}\llap{$1$}2 \\
& {-}4x-8y+9z = {-}6 &
\end{flalign}
\end{document}

结果优化 \hphantom

答案2

正如 @vonbrand 所说,你可以很容易地使用包编写方程组systeme,但对我来说不幸的是文档是法语。

代码:

\documentclass{article}
\usepackage{systeme}

\begin{document}

\systeme{3x+2y-5z=4,2x+4y-z=12,-4x-8y+9z=-6}%Default settings

\medskip

\sysdelim{.}{.}\systeme{3x+2y-5z=4,2x+4y-z=12,-4x-8y+9z=-6}%Without the left brace

\medskip

\sysdelim{.}{.}\systeme{3x+2y-5z=4@E_{*},2x+4y-z=12,-4x-8y+9z=-6}%Equations with numbers

\end{document}

输出

在此处输入图片描述

更新

这个问题向您展示如何改变方程式右侧的对齐方式,为此,您只需重新定义命令,\SYS@makesyspreamble@i正如@egreg 所述

更新代码

\documentclass{article}
\usepackage{systeme}

\usepackage{regexpatch}

\makeatletter
\xpatchcmd{\SYS@makesyspreamble@i}
{$##$\hfil\null}% left alignment
{\hfil$##$\null}% right alignment
{}{}
\makeatother

\begin{document}

\systeme{3x+2y-5z=4,2x+4y-z=12,-4x-8y+9z=-6}

\medskip

\sysdelim{.}{.}\systeme{3x+2y-5z=4,2x+4y-z=12,-4x-8y+9z=-6}

\medskip

\sysdelim{.}{.}\systeme{3x+2y-5z=4@E_{*},2x+4y-z=12,-4x-8y+9z=-6}

\end{document}

答案3

systeme软件包(在 TeXlive 和 MikTeX 中)就是为此而设计的。不过我还没用过。

相关内容