Agregar {} al final de un comando vs xspace

Agregar {} al final de un comando vs xspace

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 \xspacese 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 \arnoldpara 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 \arnoldno 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.

información relacionada