Ya leí las publicaciones que detallan cómo crear texto que no ocupe espacio. Mi pregunta es si lo estoy haciendo correctamente en este caso.
\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}
El comando \n
me parece un poco complicado, así que me preguntaba si existe una mejor resolución para mi problema.
Respuesta1
Tu definición no es realmente complicada. Puedes definirlo un poco más simple usando \llap
:
\newcommand\n{\llap{$-$}}
\llap
y \rlap
son esencialmente iguales que \makebox[0pt][r]
y \makebox[0pt][l]
, respectivamente.
Respuesta2
Hay mejores formas: el paquete systeme
y autoaligne
. El primero tiene una sintaxis más simple, el segundo es más potente, pero también un poco más difícil cuando faltan términos.
\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}
Respuesta3
Un uso correcto de alignat
hace las cosas mucho más sencillas. Recuerde que n grupos de alineación requieren 2n – 1 signo comercial. En realidad, aquí bastan 2 grupos:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{alignat*}{2}
a_1- a_2 &={} & -3 & \\
a_2 &= & 8 & \\
- a_2 & = & 8 & %
\end{alignat*}
\end{document}