Ich habe bereits die Beiträge gelesen, in denen beschrieben wird, wie man Text erstellt, der keinen Platz einnimmt. Meine Frage ist, ob ich es in diesem Fall richtig mache.
\documentclass{article}
\usepackage{mathtools}
\newcommand{\n}{\makebox[0pt][r]{$-$}}
\begin{document}
Not using my custom command
\begin{alignat*}{3}
a_1 & {}-{} & a_2 & {}={} & -3\\
&& a_2 & {}={} & 8\\
&& - a_2 & {}={} & 8
\end{alignat*}
Using my custom command
\begin{alignat*}{3}
a_1 & {}-{} & a_2 & {}={} & -3\\
&& a_2 & {}={} & 8\\
&& \n a_2 & {}={} & 8
\end{alignat*}
\end{document}
Der Befehl \n
kommt mir etwas kompliziert vor, deshalb frage ich mich, ob es eine bessere Lösung für mein Problem gibt.
Antwort1
Ihre Definition ist nicht wirklich ein Hack. Sie können es etwas einfacher definieren, indem Sie Folgendes verwenden \llap
:
\newcommand\n{\llap{$-$}}
\llap
und \rlap
sind im Wesentlichen identisch mit \makebox[0pt][r]
bzw. \makebox[0pt][l]
.
Antwort2
Es gibt bessere Möglichkeiten: das Paket systeme
und autoaligne
. Ersteres hat eine einfachere Syntax, letzteres ist leistungsfähiger, aber auch etwas schwieriger, wenn Begriffe fehlen.
\documentclass{article}
\usepackage{autoaligne}
\usepackage{systeme}
\usepackage{regexpatch}
% see http://tex.stackexchange.com/questions/247070/
\makeatletter
\xpatchcmd{\SYS@makesyspreamble@i}
{$##$\hfil\null}% left alignment
{\hfil$##$\null}% right alignment
{}{}
\makeatother
\begin{document}
\[
\sysdelim..
\systeme{
a_1 - a_2 = -3,
a_2 = 8,
-a_2= -8
}
\]
\[
\autoaligne[dd]{%
a_1-a_2=-3 \\%
+a_2=8 \\
-a_2=-8
}
\]
\end{document}
Antwort3
Eine korrekte Verwendung von alignat
macht die Dinge viel einfacher. Denken Sie daran, dass n Ausrichtungsgruppen 2n – 1 Et-Zeichen erfordern. Tatsächlich reichen hier 2 Gruppen aus:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{alignat*}{2}
a_1- a_2 &={} & -3 & \\
a_2 &= & 8 & \\
- a_2 & = & 8 & %
\end{alignat*}
\end{document}