2010-11-23 7 views
1

Ich lege xspace am Ende der meisten meiner Makros, z.latex: xspace unterdrückt nicht Leerzeichen in Kombination mit textit

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

aber ich gerade entdeckt, dass, wenn sich das Makro in textit platziert wird, ist es nicht wie erwartet funktioniert, z.B.

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

produziert

Test 1: foobar. Test 2: foobar.

mit einem zusätzlichen Leerzeichen vor dem . Zeichen. Natürlich könnte ich für diesen Fall ein dupliziertes Nicht-Xspace-Makro erstellen, aber kann ich das in irgendeiner Weise besser korrigieren?

+0

Sehr geehrter Moderator, der diese Frage geschlossen hat, können Sie bitte beschreiben, auf welche Weise die Definition eines Latex-Makros nicht "mit Programmierung oder Softwareentwicklung in irgendeiner Weise" zusammenhängt? – hlovdal

Antwort

3

fand ich die Antwort "versteckt" in /usr/share/texmf/doc/latex/tools/xspace.pdf:

Manchmal \ xspace, kann die falsche Entscheidung treffen und ein Leerzeichen, wenn Es ist nicht erforderlich. Es kann verschiedene Gründe für dieses Verhalten geben, aber es kann immer gehandhabt werden, indem man dem Makro mit {} folgt, weil dies den Effekt des Unterdrückens des Raumes hat.

So

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

produziert

Test 3: foobar.

Verwandte Themen