Termo formal para abreviação LaTeX

Termo formal para abreviação LaTeX

É possível em LaTeX escrever expressões como \frac12, que devem ser equivalentes a expressões como \frac{1}{2}. Existe um termo formal para a primeira forma de notação?

Responder1

Não.


Isso é apenas parte da maneira normal como o TeX absorve argumentos de macro não delimitados. Se você definir

\def\foo#1{Something using #1 (or not).}

ou equivalente

\newcommand\foo[1]{Something using #1 (or not).}

quando \fooé expandido, absorve o próximo token ou grupo balanceado no fluxo de entrada como seu argumento (que está disponível como #1na definição). Assumindo códigos de categoria normais

  • um token é um único caractere (exceto \, {, }ou %um espaço ou nova linha (já que são ignorados)) ou uma sequência de comandos (algo que começa com \),
  • um grupo equilibrado começa {e termina com o primeiro }que não pertence a um grupo diferente (que começou depois). Os aparelhos são retirados do grupo após a absorção (ou seja, #1não os contém).

É por isso que \foo xe \foo{x}, \newcommand{\foo}e \newcommand\fooou \frac 12, \frac{1}{2}e \frac{1}2são \frac1 2equivalentes.

É uma boa prática escolher a versão mais clara, o que geralmente significa usar um grupo. Pessoalmente, omito explicitamente o grupo nos casos em queprecisainsira um único token, como \newcommand\foo.

Responder2

Pode valer a pena acrescentar que a distinção entre argumentos de token único e argumentos entre colchetes é mais explícita em LaTeX3/ expl3. Por convenção, todo expl3nome de macro deve terminar em :seguido por uma sequência de letras, chamadas especificadores de argumento, cada uma refletindo o tipo do argumento correspondente.

Ao lado de muitos outros temos

  • npara argumentos de grupo entre chaves ou de token único, e
  • Napenas para argumentos de token único, geralmente nomes de macro/função ou nomes de variáveis.

Esses especificadores ainda não mudam a maneira como o (La)TeX processa os argumentos individuais, mas dão uma dica ao usuário sobre como os argumentos são usados ​​dentro da macro.

Por exemplo, o l3tlpacote fornece duas funções \tl_if_empty:nTFe \tl_if_empty:NTF. Embora ambas as funções verifiquem se uma lista de tokens está vazia e executem o código condicionalmente, espera-se que a primeira seja chamada com um grupo de tokens entre chaves, enquanto a última espera uma variável de lista de tokens que é primeiro expandida antes do teste ser executado em seu conteúdo.

informação relacionada