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:
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.\fred
{}
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:
O comando\usepackage{xspace} ... \newcommand{\restenergy}{\ensuremath{mc^2}\xspace} ... and we find \restenergy available to us...
\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
.
This answer last edited: 2013-11-26
This question on the Web: http://latex.net.br/faq/FAQ-xspace.html
Do you have any question? Ask on: latex.net.br - we love qood questions!