如何用填充对齐一组方程式?

如何用填充对齐一组方程式?

我有一组方程式想要在符号处对齐=,但我还希望其之前的部分=左对齐。

我附上了我想要的截图(通过手动添加\qquad空格实现)

\documentclass{article}
\usepackage{amsmath}
\newcommand*\xor{\oplus}

\begin{document}
\begin{align*}
  c_1\qquad &= m_1 \xor k\\
  c_2\qquad &= m_2 \xor k\\
  c_1 \xor c_2 &= m_1\xor k\xor k\xor m_2 = m_1\xor m_2
\end{align*}
\end{document}

答案1

尽管有多种方法可以实现这一点,但如果这种情况很少发生,那么只需添加适当的方法\phantom可能是最简单的。

\documentclass{article}
\usepackage{amsmath}
\newcommand*\xor{\oplus}

\begin{document}
\begin{align*}
  c_1\phantom{{}\xor c_2 } &= m_1 \xor k\\
  c_2\phantom{{}\xor c_2 } &= m_2 \xor k\\
  c_1 \xor c_2 &= m_1\xor k\xor k\xor m_2 = m_1\xor m_2
\end{align*}
\end{document}

在此处输入图片描述

如果我必须经常使用该构造,我可能会设置一个 TABstack,其中幻影不是必需的,只要每个方程不需要自己的编号即可。

\documentclass{article}
\usepackage{amsmath,tabstackengine}
\TABstackMath
\TABbinary
\setstackgap{L}{1.2\normalbaselineskip}
\newcommand*\xor{\oplus}
\begin{document}
\[
 \tabbedCenterstack[l]{
  c_1 &= m_1 \xor k\\
  c_2 &= m_2 \xor k\\
  c_1 \xor c_2 &= m_1\xor k\xor k\xor m_2 = m_1\xor m_2
}
\]
\end{document}

在此处输入图片描述

答案2

alignat

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\begin{alignat*}{3}
  & c_1           &{} = {}& m_1 \oplus k\\
  & c_2           &{} = {}& m_2 \oplus k\\
  & c_1\oplus c_2 &{} = {}& m_1\oplus k\oplus k\oplus m_2 = m_1\oplus m_2
\end{alignat*}
\end{document}

在此处输入图片描述

答案3

alignat可以生成右对齐/左对齐的列对,并且它们之间没有默认间距。

如果以关系符号开头,左对齐的列将产生正确的间距。

\documentclass{article}
\usepackage{amsmath}

\newcommand*\xor{\oplus}

\begin{document}
\begin{alignat*}{2}
& c_1          &&= m_1 \xor k \\
& c_2          &&= m_2 \xor k \\
& c_1 \xor c_2 &&= m_1 \xor k \xor k \xor m_2 = m_1 \xor m_2
\end{alignat*}

\begin{align*}
c_1          &= m_1 \xor k \\
c_2          &= m_2 \xor k \\
c_1 \xor c_2 &= m_1 \xor k \xor k \xor m_2 = m_1 \xor m_2
\end{align*}

\end{document}

我还添加了更常见的渲染。

在此处输入图片描述

答案4

您还可以使用数组来实现您想要的功能。如果您希望方程式包含数字,只需将 $$[...]$$ 替换为 \begin{equation}[...]\end{equation}。要更改任何列的对齐方式,只需将数组参数中的“l”更改为“r”或“c”。

\documentclass{article}
\usepackage{mathtools}
\newcommand*\xor{\oplus}

$$
\begin{array}{ll}
  c_1\qquad &= m_1 \xor k\\
  c_2\qquad &= m_2 \xor k\\
  c_1 \xor c_2 &= m_1\xor k\xor k\xor m_2 = m_1\xor m_2
\end{array}
$$

相关内容