====== Comment masquer un opérateur dans une expression mathématique? ======

La commande ''\phantom'' permet de masquer du texte, tout en disposant
le reste du document comme si le texte masqué occupait normalement sa place
(les traits rouges aident à visualiser les alignements):

<WRAP column 60ex>
<code latex>
\documentclass{article}

\begin{document}
Le chat du Cheshire est dans l'arbre.

Le chat \phantom{du Cheshire} est dans l'arbre.
\end{document}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass[12pt]{article}
  \usepackage{tikz}
  \pagestyle{empty}
  \setlength{\parindent}{0pt}

\begin{document}
Le chat\tikz[overlay]\draw[red] (0pt,1.5ex) -- ++(0ex,-5ex); du Cheshire \tikz[overlay]\draw[red] (0pt,1.5ex) -- ++(0ex,-5ex);est dans l'arbre.

Le chat \phantom{du Cheshire} est dans l'arbre.
\end{document}
</latexdoc>
</WRAP>
<WRAP clear />

Mais si vous essayez avec des opérateurs mathématiques, vous obtiendrez un résultat décevant:

<WRAP column 60ex>
<code latex>
\documentclass{article}

\begin{document}
  $aa = bb$

  $aa \phantom{=} bb$

ou

  $x = a + b$

  $x = a \phantom{+} b$
\end{document}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass[12pt]{article}
  \pagestyle{empty}
  \setlength{\parindent}{0pt}

\begin{document}
  $aa = bb$

  $aa \phantom{=} bb$

\medskip
ou
\medskip

  $x = a + b$

  $x = a \phantom{=} b$
\end{document}
</latexdoc>
</WRAP>
<WRAP clear />

En effet, à l'intérieur de ''\phantom'', les opérateurs ''='' et ''+'' n'ont pas leurs propriétés
de « relation » ou d'« opérateur binaire » (respectivement).

$\Reponse$  On peut leur restaurer de deux façons:

  * soit en utilisant ''\mathrel'' ''\mathbin'' pour forcer la classe des opérateurs:

<WRAP column 60ex>
<code latex>
\documentclass{article}

\begin{document}
  $aa = bb$

  $aa \mathrel{\phantom{=}} bb$
\bigskip

  $x = a + b$

  $x = a \mathbin{\phantom{+}} b$
\end{document}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass[12pt]{article}
  \usepackage{tikz}
  \pagestyle{empty}
  \setlength{\parindent}{0pt}

\begin{document}
$aa = bb$

$aa\tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex); \mathrel{\phantom{=}} \tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex);bb$

\bigskip

$x = a + b$

$x = a\tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex); \mathbin{\phantom{+}} \tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex);b$

\end{document}
</latexdoc>
</WRAP>
<WRAP clear />

  * soit forçant manuellement un contexte de relation ou d'opérateur binaire avec des termes vides, ''{}'', pour que LaTeX identifie correctement la classe des symboles en question:

<WRAP column 60ex>
<code latex>
\documentclass{article}

\begin{document}
  $aa = bb$

  $aa \phantom{{}={}}} bb$
\bigskip

  $x = a + b$

  $x = a \phantom{{}+{}}} b$
\end{document}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass[12pt]{article}
  \usepackage{tikz}
  \pagestyle{empty}
  \setlength{\parindent}{0pt}

\begin{document}
$aa = bb$

$aa\tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex); \phantom{{}={}} \tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex);bb$

\bigskip

$x = a + b$

$x = a\tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex); \phantom{{}+{}} \tikz[overlay]\draw[red] (0pt,4.5ex) -- ++(0ex,-5ex);b$
\end{document}
</latexdoc>
</WRAP>
<WRAP clear />


===== Comment masquer des parenthèses dans une expression mathématique? =====

Comme précédemment, si vous essayez d'utiliser ''\phantom'' dans un tel cas,
vous obtiendrez un alignement incorrect:

<WRAP column 60ex>
<code latex>
\documentclass{article}

\begin{document}
$ N = (-9) + (+5) $

$ N = \phantom{(}-9\phantom{)} + \phantom{(+}5\phantom{)} $
\end{document}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass[12pt]{article}
  \usepackage{tikz}
  \pagestyle{empty}
  \setlength{\parindent}{0pt}

\begin{document}
$ N = (-9) + (+5) $

$ N = \phantom{(}-9\phantom{)} + \phantom{(+}5\phantom{)} $
\end{document}
</latexdoc>
</WRAP>
<WRAP clear />

Dans ce cas, vous pouvez avoir l'impression que le problème vient des parenthèses,
mais il vient surtout des <latex>$+$</latex> et <latex>$-$</latex> qui,
suivant le contexte, peuvent être des opérateurs binaires (symboles de l'addition et de la soustraction),
ou des opérateurs unaires (signes de nombres). Suivant le cas, les espacements autour d'eux ne sont pas les mêmes.
LaTeX se débrouille en général bien pour identifier le contexte, mais la macro ''\phantom'' l'en empêche ici.

$\Reponse$  Vous avez de nouveau deux solutions:
  * utiliser la macro ''\mathord'' pour forcer manuellement la classe des opérateurs unaires (si besoin, il existe aussi ''\mathopen'' et ''\mathclose'' pour forcer la classe des délimiteurs ouvrants et fermants. Il se trouve que les parenthèses de cet exemple n'en ont pas besoin ici),
  * utiliser des accolades ''{}'' pour aider LaTeX à deviner les bons contextes (sûrement la solution la plus simple).

<WRAP column 60ex>
<code latex>
\documentclass{article}

\begin{document}
$ N = (-9) + (+5) $

$ N = \phantom{(}\mathord{-}9\phantom{)} + \phantom{(}\mathord{\phantom{+}}5\phantom{)} $

$ N = \phantom{(}{-}9\phantom{)} + \phantom{({+}}5\phantom{)} $
\end{document}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass[12pt]{article}
  \usepackage{tikz}
  \pagestyle{empty}
  \setlength{\parindent}{0pt}

\begin{document}
$ N = (-\tikz[overlay]\draw[red] (0pt,2ex) -- ++(0ex,-8.5ex);9) + (+\tikz[overlay]\draw[red] (0pt,2ex) -- ++(0ex,-8.5ex);5) $

$ N = \phantom{(}\mathord{-}9\phantom{)} + \phantom{(}\mathord{\phantom{+}}5\phantom{)} $

$ N = \phantom{(}{-}9\phantom{)} + \phantom{({+}}5\phantom{)} $
\end{document}
</latexdoc>
</WRAP>
<WRAP clear />


-----
//Source://
  * [[https://groups.google.com/g/gut_fr/c/jyZGu8OECMQ/m/HLodbWoQAgAJ|[gut] “\phantom{=}” en mode mathématique]],
  * [[https://tex.stackexchange.com/questions/28075/phantom-width-of-binary-operator|Phantom width of binary operator]],
  * [[https://tex.stackexchange.com/questions/330845/how-to-add-phantom-space-in-math-mode-without-losing-natural-spacing|How to add phantom space in math mode without losing “natural” spacing?]]


{{htmlmetatags>metatag-keywords=(LaTeX,faire disparaître un opérateur,simplifier une équation,\phantom et espacement,\phantom et alignement,classes de symboles mathématiques)
metatag-og:title=(Comment masquer un opérateur dans une expression mathématique?)
metatag-og:site_name=(FAQ LaTeX francophone)
}}
