He leído las respuestas a
Espacio después de los comandos LaTeX
pero no se menciona la alternativa que uso actualmente:
\newcommand{\arnold}{Arnold Schwarzenegger{}}
lo cual, por supuesto, requiere menos escritura y es menos propenso a errores que agregar {}
después de invocar el comando. No he encontrado ningún problema hasta ahora; por el contrario, noté que en algunos casos complejos en los que \xspace
se inserta un espacio no deseado, {}
se hace bien.
Entonces me preguntaba por qué aparentemente nadie más está usando esto y si podría causar problemas de los que no tengo conocimiento.
Editar: Después de los comentarios me di cuenta de que siempre usaba este enfoque con un comando que tiene un parámetro, por lo que mi ejemplo debería haber sido
\newcommand{\arnold}[1]{Arnold #1 Schwarzenegger}
Eso me enseñará a comprobar siempre mis ejemplos sin importar cuán similares parezcan a mi código.
Entonces, en realidad es el argumento el que causa el espaciado correcto en lugar del {}. Si alguien me explicara por qué el argumento marca la diferencia, estaría completamente feliz.
Respuesta1
La pregunta es por qué un espacio en la fuente no produce un espacio en la salida. Se toma un espacio después \arnold
para finalizar el nombre del comando y no está tokenizado, por lo que no producirá ningún resultado. Entonces en la forma sin argumentos
\arnold text
se expande a
Arnold Schwarzenegger{}text
que se escribirá como "Arnold Schwarzeneggertext" sin {}
hacer nada útil.
Por el contrario, en la forma con un argumento, sigue siendo cierto que un espacio después \arnold
no está tokenizado, por lo que
\arnold {} text
y
\arnold{} text
se analizan de la misma manera y ambos se expanden a
Arnold␣␣Schwarzenegger␣text
por lo que el espacio después del argumento se trata simplemente como un espacio de palabras normal, pero obtendrás dos fichas de espacio entre Arnold y Schwarzenegger.