Table des matières

Que signifie l'erreur: « Missing control sequence inserted »?

On a utilisé \newcommand ou \renewcommand sans fournir de nom de commande (commençant par une barre oblique inverse) comme premier argument.

Plus précisément

Si vous souhaitez par exemple définir la macro \L pour écrire un « 𝐋 » gras, la syntaxe correcte est:

\documentclass{article}
  \renewcommand{\L}{\textbf{L}}
 
\begin{document}
L \L
\end{document}

\documentclass{article}
  \usepackage{lmodern}
  \pagestyle{empty}
  \renewcommand{\L}{\textbf{L}}

\begin{document}
\Large L \L
\end{document}

Si vous oubliez la barre oblique dans la définition de la commande, en écrivant

  \renewcommand{L}{\textbf{L}}

Vous aurez l'erreur:

! Missing control sequence inserted.
<inserted text> 
                \inaccessible 
l.2   \renewcommand{L}{\textbf{L}}

Donc il suffit de remettre la barre oblique \L pour corriger le problème.

Avec “\def”

Si vous employez les primitives \TeX au lieu des macros fournies par \LaTeX, vous pouvez également recontrer ce message.

Ainsi, si vous avez écrit par erreur:

  \def{\L}{\textbf{L}}

vous obtiendrez:

! Missing control sequence inserted.
<inserted text> 
                \inaccessible 
l.2   \def{
           \L}{\textbf{L}}

La primitive \def attend comme premier argument le nom d'une séquence de contrôle commençant par \ ou un caractère actif. Tout autre token est invalide, et TeX essaie de s'en sortir en insérant une séquence de contrôle particulière, nommée \inaccessible.

Le message explique bien ce qui s'est passé: TeX s'est arrêté quand il a lu { après \def; le token { en question a été remis dans le flux d'entrée, et pourra éventuellement être lu de nouveau. Entre \def et {, TeX a inséré la séquence de contrôle \inaccessible. Ceci vous permettrait, si vous le souhaitiez, de corriger votre erreur immédiatement, sans interrompre la compilation: retirez le \inaccessible en tapant 1, puis saisissez i\nouvelleSeq pour insérer la bonne séquence de contrôle.

Pour être honnête, personne ne corrige ses erreurs en cours de compilation. Il vaut probablement mieux terminer la compilation en cours en tapant x, et corriger l'erreur dans votre fichier d'entrée. Pour que ça marche, retirez les parenthèses autour de l'argument de \def:

\documentclass{article}
  \def\L{\textbf{L}}
 
\begin{document}
L \L
\end{document}

\documentclass{article}
  \usepackage{lmodern}
  \pagestyle{empty}
  \def\L{\textbf{L}}

\begin{document}
\Large L \L
\end{document}

Sources: