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 à un endroit où ne l’attend pas. Il s’agit en effet d’une commande de saut de ligne, et elle est inattendue si n’est pas en train de construire un paragraphe, par exemple après \par ou une ligne vide.

Si l’intention est d’obtenir un espace vertical supplémentaire, vous pouvez consulter la question « Comment insérer un espace vertical dans une page ? ».

1.  Cas d’une étiquette de liste#

Un cas courant de cette erreur 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 un nouvel environnement similaire à description et qui fait exactement ce que vous voulez. Pour corriger localement ce problème, vous pouvez écrire aussi ceci :

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

La commande leavevmode commence un paragraphe, ce qui permet de forcer une fin de ligne. L’extension expdlist fournit la même fonctionnalité avec sa commande \breaklabel tandis que l’extension mdwlist la fournit avec sa commande \desclabelstyle.

2.  Cas d’un espacement plus large dans un environnement center#

Vous obtenez ce message d’erreur 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. La commande \\ prend en effet 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}

Cette solution est tout aussi fastidieuse à taper que \\ avec un argument optionnel et ne peut être vraiment recommandée.


Sources