Comandos engolem espaço adjacente

As pessoas sempre ficam surpresas quando comandos simples engolem o espaço depois deles: mas é assim que é. Isso acontece por conta da maneira com que o TeX trabalha, e Lamport descreve uma solução (colocar um par de chaves depois da invocação de um comando) na descrição da sintaxe do LaTeX. Assim, o requisito é, na verdade, parte da definição do LaTeX.

Essas FAQs, por exemplo, são escritas em LaTeX para a produção de um site. O código HTML é gerado por um script que exige um par de chaves para fazer um argumento nulo, como em:

\fred{}
para quase todas as invocações de macro, independente de o espaço adjacente ser necessário: entretanto, essas FAQs não devem ser consideradas como um modelo de estilo de LaTeX.

Muitos usuários acham que todas essas chaves ficam muito tediosas muito rapidamente, e prefeririam não digitá-las.

Uma estrutura alternativa, que não viola o design do LaTeX, é dizer \fred\  — o comando \ é “autoterminante” (como \ ) e você não precisa de chaves depois dele. Assim, pode-se reduzir para um o número de caracteres extras a serem digitados.

Se um único caractere ainda for demais, o pacote xspace define o comando \xspace que adivinha se deveria haver um espaço depois dele e, se for o caso, insere o espaço. Então, “fred\xspace jim” produz “fred jim”, enquanto “fred\xspace. jim” produz “fred. jim”. Tal uso seria, evidentemente, inútil, mas você pode incorporar o \xspace em suas próprias macros:

\usepackage{xspace}
...
\newcommand{\restenergy}{\ensuremath{mc^2}\xspace}
...
and we find \restenergy available to us...
O comando \xspace deve ser a última coisa na definição da sua macro (como no exemplo); não é completamente infalível, mas resolve as situações mais óbvias de textos corridos.

O pacote xspace não ajuda muito se você usá-lo em uma macro que apareça uma vez ou outra no seu documento, e não é totalmente à prova de erros. (O autor original do pacote o escreveu porque ele sofreu com espaços perdidos. Ele não recomenda mais seu uso, simplesmente por conta da possibilidade de erro.)

De qualquer forma, tome cuidado com o uso do \xspace — ele muda sintaxes de entrada, o que pode ser confuso, principalmente para um autor colaborador (particularmente, se você criar comandos que o usam e comandos que não o usam). Nenhum comando incorporado ao LaTeX ou a qualquer classe ou pacote “padrão” utiliza o \xspace.

xspace.sty
Distributed as part of 2etools

This answer last edited: 2013-11-26


Do you have any question? Ask on: latex.net.br - we love qood questions!