2010-11-23 4 views
1

Je mets xspace à la fin de la plupart de mes macros, par ex.latex: xspace ne supprime pas l'espace en combinaison avec textit

\newcommand*{\foobar}{foobar\index{foobar}\xspace} 

mais je viens de découvrir que si la macro est placé à l'intérieur textit, il ne fonctionne pas comme prévu, par exemple

Test 1: \foobar. Test 2: \textit{\foobar}. 

produit

Test 1: foobar. Test 2: foobar.

avec un espace supplémentaire avant le caractère .. Bien sûr, je pourrais faire une macro non-xspace en double pour ces cas, mais puis-je réparer cela plus correctement?

+0

Cher modérateur qui a clôturé cette question, pouvez-vous décrire de quelle manière la définition d'une macro de latex ne se rapporte pas à la programmation ou au développement de logiciel d'une manière ou d'une autre? – hlovdal

Répondre

3

Je trouve la réponse « cachée » dans /usr/share/texmf/doc/latex/tools/xspace.pdf:

Parfois \ xspace peut prendre la mauvaise décision , et ajouter un espace où c'est non requis. Il peut y avoir différentes raisons pour ce comportement mais il peut toujours être géré en suivant la macro avec {}, car cela a pour effet de supprimer l'espace.

Alors

Test 3: \textit{\foobar{}}. 

produit

Test 3: foobar.

Questions connexes