1
1

Pourquoi diantre la commande \dots mange-t-elle l'espace qui la suit ?

Je me vois obligé de la faire toujours suivre d'une tilde (~) : pourquoi l'espace postérieure n'est-elle pas intégrée à la commande \dots ?

Ouvrir dans l'éditeur
\documentclass[french]{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[oldstyle,largesmallcaps]{kpfonts}
\usepackage{babel}
\begin{document}
Pourquoi l'espace postérieure\dots n'est-elle pas intégrée à la commande ?

Oui, pourquoi l'espace postérieure\dots~n'est-elle pas intégrée à la commande ?
\end{document}

Posée 13 Déc '16, 17:32

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Modifiée 13 Déc '16, 20:55


La commande \dots est comme toutes les autres séquences de contrôle : elle ignore les espaces se trouvant après elle. C'est une règle intangible de TeX.

Pour la contourner, on peut par exemple écrire \dots{}. Utiliser l'espace insécable est plus dangereux, sauf si l'on souhaite effectivement une espace insécable.

Rien n'empêche de se fabriquer une commande perso mydots :

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\newcommand\mydots{\dots\space}
\begin{document}
    Pourquoi l'espace postérieure\mydots n'est-elle pas intégrée à la commande ?
\end{document}

On peut également se fabriquer \mydots à l'aide de l'extension xspace :

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xspace}
\newcommand\mydots{\dots\xspace}
\begin{document}
    Pourquoi l'espace postérieure\mydots n'est-elle pas intégrée à la commande ?
\end{document}
Lien permanent

Publiée 13 Déc '16, 19:24

unbonpetit's gravatar image

unbonpetit ♦♦
1.8k18
Taux d'acceptation : 68%

Modifiée 13 Déc '16, 19:27

J'écrirai donc \dots{}.

(13 Déc '16, 20:54) Pathe ♦♦ Pathe's gravatar image

Eh bien, supposons que vous fassiez une citation tronquée: Blabla [\dots] Blibli. Vous avez une espace juste avant le crocher fermant, et il faudrait mettre une espace négative.

D'autre part, quand on utilise l'encodage utf8, le caractère text ellipsis peut être tapé directement au clavier, plutôt que d'utiliser une macro.

Voici une démo, avec un patch de \dots et xspace qui (en principe) rajoute une espace à bon escient, et l'utilisation directe du caractère au clavier :

Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article}%
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[margin =2cm]{geometry}
 \usepackage[oldstyle,largesmallcaps]{kpfonts}
\usepackage{babel}
\usepackage{xspace}%
\linespread{1.1}

 \let\olddots\dots
\renewcommand\dots{\olddots{}\xspace}
\xspaceaddexceptions{]}

\begin{document}

L'espace postérieure[\dots] est maintenant intégrée à la commande, mais\dots seulement si nécessaire.

Oui, pourquoi l'espace postérieure\dots~n'est-elle pas intégrée à la commande ?

En utilisant directement le caractère \texttt{text ellipsis} : … elle n’a pas à être intégrée à la commande, à cause qu’il n’y a pas de commande.

\end{document}
Lien permanent

Publiée 13 Déc '16, 19:48

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 28 Nov '17, 01:01

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.