Que signifie l'erreur: « There's no line here to end »?

  • Message: There's no line here to end

Cette erreur est déclenchée lorsqu'une commande \newline ou \\ est trouvée à l'extérieur d'un paragraphe (c'est-à-dire après un \par ou une ligne vide).

Si l'intention est d'obtenir un espace vertical supplémentaire, voir la page dédiée.


L'erreur

! LaTeX Error: There's no line here to end.
 
See the LaTeX manual or LaTeX Companion for explanation.

apparaît lorsque vous donnez une commande \\ à LaTeX à un moment où il ne l'attend pas ; il s'agit d'une commande de saut de ligne, et elle est inattendue si LaTeX n'est pas en train de construire un paragraphe. Un cas courant est celui où vous voulez mettre l'étiquette d'un élément de liste sur une ligne à part, en écrivant par exemple :

\begin{description}
\item[Très longue description] \\
  Texte...
\end{description}

La bonne solution est de définir une nouvelle sorte d'environnement description, qui fait exactement ce que vous voulez (le LaTeX Companion propose plusieurs solutions pour ça).

Une solution simple, qui évite l'avertissement, est d'écrire ceci :

\begin{description}
\item[Très longue description] \leavevmode \\
  Texte...
\end{description}

qui commence un paragraphe avant de forcer une fin de ligne. Le paquet expdlist fournit la même fonctionnalité avec sa commande \breaklabel, et mdwlist la fournit avec sa commande \desclabelstyle.

Un autre cas fréquent donnant ce message d'erreur est lorsque vous utilisez l'environnement center (ou flushleft ou flushright), et que vous voulez une séparation supplémentaire entre les lignes à l'intérieur de l'environnement :

\begin{center}
  Première ligne (titre)\\
  \\
  Corps du texte centré...
\end{center}

La solution est simple : utilisez la commande \\ comme elle est censée être utilisée, pour fournir plus qu'un simple espace de séparation entre les lignes. \\ prend un argument optionnel, qui spécifie combien d'espace supplémentaire il faut ajouter ; l'effet requis dans le texte ci-dessus peut être obtenu en écrivant :

\begin{center}
  Première ligne (titre)\\[\baselineskip]
  Corps du texte centré...
\end{center}

Vous pouvez aussi utiliser \leavevmode, comme ci-dessus :

\begin{center}
  Première ligne (titre)\\
  \leavevmode\\
  Corps du texte centré...
\end{center}

mais c'est tout aussi fastidieux à taper que \\ avec un argument optionnel, et ne peut être recommandé.


Sources:

2_programmation/erreurs/t/there_is_no_line_here_to_end.txt · Dernière modification: 2021/02/14 19:34 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0