54 votes

LaTeX met parfois trop ou pas assez d'espace après les règles

LaTeX essaie de deviner si un point termine une phrase, auquel cas il ajoute un espace supplémentaire. Voici deux exemples où l'on devine mal:

 I watched Superman III. Then I went home. 
 

(Trop peu d’espace après "Superman III.".)

 After brushing teeth etc. I went to bed.
 

(Trop d'espace après "etc.".)

Notez que le nombre d'espaces que vous utilisez dans la source LaTeX n'a pas d'importance, car LaTeX l'ignore.

83voto

dreeves Points 9130

J'ai trouvé la réponse ici: http://john.regehr.org/latex/. Extrait:

Lorsqu'une non-phrase de fin de période est suivie d'un espace, l'espace doit être explicite vide. Donc le deuxième exemple devrait être:

After brushing teeth etc.\ I went to bed.

L'inverse de ce problème se produit lorsqu'une lettre majuscule précède une phrase de fin de période dans l'entrée, comme dans le premier exemple. Dans ce cas, LaTeX suppose que la période se termine une abréviation et le suit avec inter-mot l'espace plutôt que de l'inter-phrase de l'espace. La solution est de mettre "\@" avant la période. Ainsi, le premier exemple devrait être

I watched Superman III\@. Then I went home.

Un moyen pratique pour trouver cette erreur est:

grep '[A-Z]\.' *.tex

15voto

Charles Stewart Points 7698

Vous pouvez contourner le problème d'espacement si vous préférez les espaces à la fin des phrases: mettre \frenchspacing (pour les anciennes versions de Latex c'est un fragile de commande). Knuth a la suite de l'appellation traditionnelle en l'appelant français espacement, bien que l'appel de double espacement après les phrases en français espacement est devenue dominante dans l'édition.

Dirk Margulis a écrit un joli post résumant certaines des raisons de la prévalence de l'espacement simple: l'Espace entre les phrases.

5voto

boringusername Points 21

J'aime la réponse de Dreeves et la recherche pratique qu'il suggère aussi. Je n'ai pas de "rep" Stackoverflow à commenter, mais ...

Comme les lignes de raw * .tex ont tendance à être très longues, le résultat de grep peut être écrasant (des paragraphes entiers); Je suggère une variante pour afficher uniquement les mots se terminant par '[AZ].' (suivi d'un ou plusieurs espaces suivi d'un nouveau mot en majuscule). Il est,

 grep -o -E '[A-Z]+\. +[A-Z]+[A-Za-z]+' *.tex
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X