Un défi technique! On peut éviter le problème des lettres après les espaces en regardant le catcode du caractère suivant et de voir si oui ou non il s'agit d'une lettre; cela peut être fait avec le Latex3 de expl3 macro \peek_charcode:NTF
(mon premier expl3 code!):
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\newcommand\latinabbrev[1]{
\peek_meaning:NTF . {% Same as \@ifnextchar
#1\@}%
{ \peek_catcode:NTF a {% Check whether next char has same catcode as \'a, i.e., is a letter
#1.\@ }%
{#1.\@}}}
\ExplSyntaxOff
%Omit final dot from each def.
\def\eg{\latinabbrev{e.g}}
\def\etal{\latinabbrev{et al}}
\def\etc{\latinabbrev{etc}}
\def\ie{\latinabbrev{i.e}}
\begin{document}
Maybe a list, \eg, a, b, c, and d. Which is to say (\ie) a, b, \etc. Consider Knuth, \cf The TeXbook.
\end{document}
Jukka les conseils je pense que c'est le son, cependant: je dirais que le problème se travaille avec son \etc macro, nous devrions le voir comme un bogue dans le Tex mise en œuvre de l'espacement double (will Robertson doit demander son chèque): si vous connaissez le bug est là, vous pouvez le contourner directement par la mise en \@ dans de tels cas ".)", ou vous pouvez avoir délicate code qui signifie que vous n'avez pas à penser dans ce cas, mais vous avez ajouté de la complexité de la façon dont vous composez ce qui n'est pas d'aller travailler pour vous avec le côté inattendu de pépin, on vous avez probablement vous-même introduit.
Postscript Précédente version fixe, grâce à Joseph Wright remarquer une erreur stupide, à tex.stackexchange.com.