スペースを取らないテキストを作成する方法を詳しく説明した投稿はすでに読みました。私の質問は、この場合、それを正しく行っているかどうかです。
\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}
このコマンドは\n
ちょっとハッキーな感じがするので、問題に対するもっと良い解決策があるかどうか知りたいです。
答え1
あなたの定義はそれほどハッキーではありません。次のようにしてもう少し簡単に定義できます\llap
:
\newcommand\n{\llap{$-$}}
\llap
および は、それぞれ およびと\rlap
本質的に同じです。\makebox[0pt][r]
\makebox[0pt][l]
答え2
より良い方法があります: パッケージsysteme
とautoaligne
。前者はより単純な構文を持ち、後者はより強力ですが、欠落している用語がある場合には少し難しくなります。
\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}