[Résolu] \quad non pris en compte

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[Résolu] \quad non pris en compte

Messagepar Amphytrite » Jeudi 23 Janvier 2020, 16:08

Bonjour,

Il m'arrive fréquemment qu'un "\quad" ne soit pas pris en compte. Par exemple :
Code: Tout sélectionner
\begin{itemize}
  \item Première ligne du premier item\\
        \quad Deuxième ligne du premier item
  \item Deuxième item
\end{itemize}

ne décale pas (du tout) la deuxième ligne du premier item.

Remarque : si je mets \hspace{1em} à la place de \quad, l'absence d'effet est identique !

Auriez-vous une explication (et éventuellement une suggestion de correction) à me proposer ?
Merci d'avance pour votre aide !
Dernière édition par Amphytrite le Jeudi 23 Janvier 2020, 21:09, édité 1 fois.
Amphytrite
Hecto-utilisateur
 
Messages: 62
Inscription: Mardi 15 Mai 2007, 17:35

Publicité

Re: \quad non pris en compte

Messagepar gigiair » Jeudi 23 Janvier 2020, 16:50

Je n'en connais pas la raison précise, mais si tu ajoutes un caractère invisible avant le \quad, \strut par exemple (ou \null) , ce dernier sera pris en compte
Code: Tout sélectionner
\begin{itemize}
\item Première ligne du premier item\\
  \strut\quad Deuxième ligne du premier item\\
  \quad Troisième ligne du premier item
\item Deuxième item
\end{itemize}

Dans mon imaginaire, je me représente \quad comme ayant besoin de quelque chose pour s'appuyer dessus, autrement il sera absorbé. C'est la même chose pour toutes les macros d'espacement horizontal ou vertical. La commande \hspace possède une variante \hspace* qui permet sa prise en compte en début de ligne.
Code: Tout sélectionner
\begin{itemize}
\item Première ligne du premier item\\
  \hspace{2em} Deuxième ligne du premier item\\
  \hspace*{2em} Troisième ligne du premier item
\item Deuxième item
\end{itemize}
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2465
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: \quad non pris en compte

Messagepar un bon petit » Jeudi 23 Janvier 2020, 18:49

gigiair a écrit:Dans mon imaginaire, je me représente \quad comme ayant besoin de quelque chose pour s'appuyer dessus, autrement il sera absorbé

Cette idée est totalement fausse.

La macro \quad n'est qu'une façon d'appeler la primitive \hskip qui insère dans la liste horizontale en cours un « ressort ». Dans le cas de \quad, ce ressort est fixe (c'est-à-dire dépourvu de composantes étirables) et vaut 1em.

Ensuite, le problème vient du fait que peu de gens savent ce que fait exactement la macro \\ en mode horizontal (c'est-à-dire hors d'un tableau où elle a une autre signification). En gros, elle force une coupure de ligne en exécutant \nobreak\hfil\break. La macro \break insère une pénalité « infinie » qui force la coupure de ligne. Mais en aucun cas la macro \\ ne commence un nouveau paragraphe ; cette dernière action est effectuée par la primitive \par. Un bon conseil : utiliser la primitive \par au lieu de \\ est le plus souvent préférable.

Pour en revenir au coupures de ligne, il faut savoir que les objets « volatils », dont font partie les ressorts (et aussi les \kern) disparaissent lors de la coupure de ligne (voir TeXbook). C'est la raison pour laquelle le ressort \quad disparaît lorsque la coupure de ligne se fait juste devant lui.

On peut observer ce comportement avec ce code où a et b sont sur la même verticale, ce qui prouve que \quad disparait à cause de la coupure de ligne.
Code: Tout sélectionner
\parindent=0pt
a\nobreak\hfil\break
\quad b

En revanche, après \par, la macro \quad reste intacte et joue bien son rôle:
Code: Tout sélectionner
\parindent=0pt
a\par
\quad b

Conclusion : \par plutôt que \\
un bon petit
Giga-utilisateur
 
Messages: 759
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: \quad non pris en compte

Messagepar Amphytrite » Jeudi 23 Janvier 2020, 21:09

Merci pour ces explications détaillées !
Amphytrite
Hecto-utilisateur
 
Messages: 62
Inscription: Mardi 15 Mai 2007, 17:35

Re: [Résolu] \quad non pris en compte

Messagepar guiguiche » Samedi 25 Janvier 2020, 09:16

Petite remarque : j'utilise \hspace*{1em} en début de ligne quand j'en ai besoin (je n'utilise pas \par, j'ai sûrement tort).
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
guiguiche
Modérateur
 
Messages: 8073
Inscription: Vendredi 06 Janvier 2006, 15:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] \quad non pris en compte

Messagepar un bon petit » Samedi 25 Janvier 2020, 16:18

guiguiche a écrit:Petite remarque : j'utilise \hspace*{1em} en début de ligne quand j'en ai besoin

Lorsque suivie d'une étoile, la macro \hspace insère une \vrule d'épaisseur nulle (invisible donc) avant le \hskip : à cause de la présence du \vrule, le \hskip n'est pas juste après la coupure et n'est donc pas mangé.

guiguiche a écrit:je n'utilise pas \par, j'ai sûrement tort

Merci de le suggérer.
Je n'utilise absolument jamais \\ pour aller à la ligne, je mets tout simplement un \par. Je ne prétends pas avoir raison, mais au moins, je sais pourquoi je le fais.
un bon petit
Giga-utilisateur
 
Messages: 759
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] \quad non pris en compte

Messagepar guiguiche » Dimanche 26 Janvier 2020, 15:04

À ma décharge, j'écris dans LyX donc je ne vois pas vraiment l'intégralité du code LaTeX. Et \par me produit une indentation supplémentaire dont je ne veux pas toujours, ou du moins que je veux gérer moi-même (je n'utilise \hspace* que pour gérer l'indentation dans le code scilab que j'insère dans mes documents, la méthode fonctionnant, je n'en cherche pas d'autre).
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
guiguiche
Modérateur
 
Messages: 8073
Inscription: Vendredi 06 Janvier 2006, 15:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot], Google Adsense [Bot], Grapeshot [Crawler] et 30 invités