
Я хочу выровнять некоторые уравнения по знакам равенства, поэтому я написал это:
\begin{align}
-3z &=-9\\
z &= 3\\
-3y-3*3 &= 3\\
y &=-4\\
2x+8*(-4)+4*3 &= 2\\
x &=11
\end{align}
Однако, поскольку одно уравнение намного длиннее остальных, все уравнения отображаются в правой части страницы:
Как сделать так, чтобы знаки равенства отображались посередине, при этом все уравнения должны быть выровнены по ним?
решение1
Простым подходом было бы дублирование содержимогосамый широкийвход (слева или справа) с противоположной стороны, допускающий некоторое перекрытие:
\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\lipsum[2]
\begin{align*}
-3z &= -9 \\
z &= 3 \\
-3y-3*3 &= 3 \\
y &= -4 \\
2x+8*(-4)+4*3 &= 2 \\
x &= 11
\end{align*}
\lipsum[2]
\begin{align*}
-3z &= -9 \\
z &= 3 \\
-3y-3*3 &= 3 \\
y &= -4 \\
2x+8*(-4)+4*3 &= \rlap{2}\phantom{2x+8*(-4)+4*3} \\
x &= 11
\end{align*}
\lipsum[2]
\end{document}
В качестве альтернативы, если вас не волнует нумерация уравнений, вы можете использовать следующую конструкцию:
\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{array}% http://ctan.org/pkg/array
\newsavebox{\mymathbox}
\newcolumntype{R}{>{\begin{lrbox}{\mymathbox}$}r<{$\end{lrbox}\llap{\usebox{\mymathbox}}}}%
\newcolumntype{L}{>{\begin{lrbox}{\mymathbox}$}l<{$\end{lrbox}\rlap{\usebox{\mymathbox}}}}%
\begin{document}
\lipsum[2]
\begin{align*}
-3z &= -9 \\
z &= 3 \\
-3y-3*3 &= 3 \\
y &= -4 \\
2x+8*(-4)+4*3 &= 2 \\
x &= 11
\end{align*}
\lipsum[2]
\[
\renewcommand{\arraystretch}{1.2}
\begin{array}{R@{{}={}}L}
-3z & -9 \\
z & 3 \\
-3y-3*3 & 3 \\
y & -4 \\
2x+8*(-4)+4*3 & 2 \\
x & 11
\end{array} \]
\lipsum[2]
\end{document}
Это создает align*
в форме array
и помещает содержимое по обе стороны от знака равенства в поле нулевой ширины. Следовательно, уравнения кажутся центрированными на основе =
.
Обратите внимание, что \rlap
и \llap
использует \makebox
, который вставляет свое содержимое в текстовом режиме. Отсюда переключение обратно в математический режим через $
в автоматизированном построении типов столбцов L
и R
.
решение2
Я столкнулся с похожей проблемой, но мне также хотелось разместить свое последнее (длинное) уравнениев коробке.Для выравнивания ящиков я использовал\Aboxedиз mathtools. Используя концепцию из решения @Werner выше, я нашел решение дляпо центру, выровнен по '=', уравнение в рамке, который заключается в размещении на каждой стороне уравнения текста другой стороны как\фантомтекст. Таким образом, уравнение может стать симметричным, без использования \rlap, который портит коробку.
Я знаю, что это не совсем то, о чем говорилось в исходном посте, но я думаю, что это было бы очень полезным дополнением, поскольку не так много постов, в которых обсуждается концепция выравнивания по центру.
Кроме того, я включил в качестве дополнения простой способувеличить \Aboxed padding, который я не смог найти нигде в сети. Идея заключается в том, чтобы использовать одно правило 0-widht-rule для отступа по оси y и два правила 0-height-rule для отступа по оси x. Смещение должно быть установлено на уровне минус половины размера шрифта, в моем случае это 12pt/2=-6pt.
Что касается отступа y, 20pt возникло, потому что я хочу 4pt сверху и pt снизу. Это дает мне 4pt+4pt+12pt = 20pt, где 12pt — размер шрифта.
Вот мой MWE:
\documentclass[12pt]{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{mathtools} % for Aboxed, to box in alignat environment
\begin{document}
\lipsum[2]
\begin{align*}
-3z &= -9 \\
z &= 3 \\
-3y-3*3 &= 3 \\
y &= -4 \\
2x+8*(-4)+4*3 &= 2 \\
x &= 11
\end{align*}
\lipsum[2]
\begin{align}
-3z &= -9\nonumber \\
z &= 3\nonumber \\
-3y-3*3 &= 3\nonumber \\
y &= -4\nonumber \\
\phantom{2\implies} \Aboxed{\rule[-6pt]{4pt}{0pt}2x+8*(-4)+4*3 &=\rule[-6pt]{0pt}{20pt}2\rule[-6pt]{4pt}{0pt}}\phantom{2x+8*(-4)+4*3 \implies}
\end{align}
\end{document}
И вот результат, которого я хотел добиться: