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) :

\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}

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

\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}

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).

  • On peut leur restaurer de deux façons :

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

\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}
  • soit forçant manuellement un contexte de relation ou d’opérateur binaire avec des termes vides, {}, pour que identifie correctement la classe des symboles en question :

\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}

1.  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 :

\documentclass[12pt]{article}
  \usepackage{tikz}
  \pagestyle{empty}
  \setlength{\parindent}{0pt}

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

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

Dans ce cas, vous pouvez avoir l’impression que le problème vient des parenthèses, mais il vient surtout des \(+\) et \(-\) 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. se débrouille en général bien pour identifier le contexte, mais la macro \phantom l’en empêche ici.

  • 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 à deviner les bons contextes (sûrement la solution la plus simple).

\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}