> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/mais-topicos/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# Uma série de seis partes: Como é que as macros TeX funcionam realmente?

## Sobre esta série

Esta série de artigos tem um objetivo ambicioso: explicar, passo a passo, *como* como as macros do TeX, tais como os comandos LaTeX, realmente funcionam — explorando processos que ocorrem dentro do software do motor TeX. Tenta contar a história do comportamento de processamento do TeX:

* leitura de caracteres de entrada e uso de códigos de categoria;
* a produção de tokens de caracteres e de comandos — e as fórmulas que o TeX usa;
* como o TeX identifica e depois processa comandos TeX;
* os detalhes internos do armazenamento das definições de macros e dos argumentos de macros, como listas de tokens — usando gráficos produzidos a partir de dados internos do TeX;
* e conclui explorando o que a expansão de macros *de facto* significa — usando dados reais de dentro de um motor TeX.

No entanto, como os motores TeX são programas de software tão complexos, não podemos esperar cobrir tudo, mas tentámos abordar as características mais importantes e fundamentais das capacidades de processamento de macros do TeX.

#### Barra de navegação

Cada artigo tem a seguinte barra de navegação antes e depois do texto, para que possa saltar rapidamente para outro artigo da série:

[Parte 1](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_1?preview=true) [Parte 2](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_2?preview=true) [Parte 3](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_3?preview=true) [Parte 4](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_4?preview=true) [Parte 5](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_5?preview=true) [Parte 6](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_6?preview=true)

### Parte 1: Códigos de categoria

Este artigo examina o raciocínio por trás do conceito de códigos de categoria do TeX: o que são e como o TeX os usa para filtrar a sua entrada em conteúdo para composição tipográfica e comandos a executar.

### Parte 2: Leitura da entrada através dos “olhos” do TeX

Através de uma série de gráficos, usamos a analogia, testada pelo tempo, de o TeX ter “olhos” com os quais lê (faz a varredura de) a sua entrada. Exploramos exemplos do uso de códigos de categoria pelo TeX para criar tokens de caracteres e como o TeX reconhece e processa comandos usando o código de categoria 0 (“carácter de escape”).

### Parte 3: Do texto de entrada aos comandos

Este artigo analisa em profundidade como o TeX reconhece e processa comandos detetados na entrada. Exploramos como o TeX armazena e recupera informações sobre comandos: códigos de comando, modificadores de comando, e fazemos um levantamento de algumas variáveis internas que o TeX usa para armazenar informações sobre itens lidos da entrada. Parte do artigo é material bastante de baixo nível que pode ser omitido numa primeira leitura.

### Parte 4: A estrutura de uma macro

Apresentamos e usamos a seguinte “estrutura” para descrever a estrutura das macros:

```
<primitiva de macro do TeX><nome da macro><texto de parâmetros>{<texto de substituição>}
```

Depois exploramos uma série de exemplos para demonstrar o papel e a finalidade de `<texto de parâmetros>` de uma macro, como um “modelo de tokens” que pode ser construído através do uso de tokens que atuam como *delimitadores*.

### Parte 5: Listas de tokens e o armazenamento interno de macros do TeX

Este artigo explora, em detalhe, como o TeX usa listas de tokens para armazenar definições de macros. Usando diagramas extensos gerados com uma versão especialmente modificada do TeX, exploramos os tokens especializados que o TeX usa para identificar e processar os argumentos de macro do utilizador.

### Parte 6: Expansão e processamento de macros

Na Parte 6 usamos alguns gráficos detalhados para explicar e explorar o significado exato da expansão de macros e as consequências da tokenização, pelo TeX, dos argumentos de macro antes de os alimentar numa macro.

## Uma breve nota: usar “TeX” e não LaTeX

Como discutido no artigo [O Que Há num Nome: Um Guia para os Muitos Sabores de TeX](/latex/overleaf-learn-latex-pt/artigos-aprofundados/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) uma ampla gama de termos é usada para referenciar/descrever TeX, LaTeX e os seus derivados. Consequentemente, vale a pena esclarecer, brevemente, o nosso uso/significado de “TeX” no contexto desta série.

“TeX” é, de forma algo confusa, tanto o nome de um programa executável como o nome de uma linguagem de composição tipográfica. Para distinguir entre os dois, o termo *motor TeX* é usado para diferenciar entre um programa TeX executável e a linguagem de composição tipográfica. Alguns dos dados, informações e detalhes específicos usados nesta série derivam de um exame detalhado do código-fonte do software TeX original de Knuth, mas os princípios descritos são comuns a todos os motores TeX. Assim, ao longo da nossa discussão, o uso de “TeX” deve ser entendido como significando um dos motores TeX executáveis — como o TeX original de Knuth, pdfTeX, XeTeX ou LuaTeX.

Dentro dos artigos, usamos o comando primitivo TeX `\def` para definir os nossos exemplos de macros: não usamos o comando LaTeX `\newcommand` que é quase de certeza mais familiar para a maioria dos utilizadores do Overleaf. Há uma muito boa razão para isso: o nosso objetivo é compreender os princípios fundamentais subjacentes ao comportamento das macros do TeX, mas para isso precisamos usar os comandos nucleares (primitivos) incorporados no software TeX. Comandos LaTeX, como `\newcommand`, são eles próprios macros: comandos com comportamento programado específico e que, em última análise, são construídos a partir de camadas de comandos primitivos TeX de nível inferior. Para compreender melhor o comportamento fundamental do TeX, temos de usar primitivas TeX, não macros LaTeX.

## Exemplos e gráficos

Em vez de depender apenas de um conjunto de macros de exemplo concebidas para demonstrar várias funcionalidades, casos-limite e comportamentos do TeX, também usamos uma vasta gama de gráficos para espreitar dentro do próprio TeX e ver *como* e *porquê* como o seu processamento de macros funciona da maneira que funciona. Muitos dos gráficos (diagramas de listas de tokens/nós) foram preparados usando uma versão especialmente modificada do TeX original de Knuth.

A versão personalizada do TeX da Overleaf adaptou o TeX de Knuth com código adicional (escrito em C) que “faz gancho” no processamento de macros do TeX e explora dados e estruturas de dados que normalmente são inacessíveis aos utilizadores. Sempre que uma macro é chamada, o motor TeX modificado gera ficheiros de saída adicionais contendo dados num formato que pode ser processado usando [Graphviz](https://www.graphviz.org/), um programa de visualização de grafos de código aberto. O resultado final são gráficos (diagramas de listas de nós) que mostram exatamente como o TeX armazena a definição de uma macro, juntamente com uma representação gráfica de quaisquer argumentos fornecidos pelo utilizador quando a macro foi chamada.

Necessariamente, os objetivos desta série exigem a discussão de uma vasta gama de tópicos, muitos dos quais são bastante de baixo nível e, inicialmente, podem parecer estar muito distantes da tarefa de compor os seus documentos. Esperamos que, depois de uma análise mais aprofundada, saia com uma base para construir uma melhor compreensão que, no final, lhe poupará muito tempo e, talvez, também minimize os níveis de frustração. É também nossa esperança que os gráficos especialmente gerados que acompanham esta série ofereçam uma visão única e valiosa para ajudar e apoiar quaisquer leitores na sua busca por compreender melhor as macros TeX.

## A versão personalizada do TeX da Overleaf

O vídeo dá uma breve demonstração da versão modificada do TeX da Overleaf, adaptada para gerar diagramas de nós do Graphviz (`.gv` files)—nenhum outro aspeto do comportamento do TeX é afetado por essas alterações. Os `.gv` ficheiros contêm representações das listas de tokens do TeX usadas para armazenar definições de macros e argumentos de macros. A visualização do Graphviz é exportada para SVG, que é então importada para [Inkscape](https://inkscape.org/) para anotação adicional antes de incorporar o gráfico num artigo.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/40EAwKxZnNwgxwe9SpAwNY/5bce5de21509f3324bc50527ec6815e7/texdemo.mp4>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/mais-topicos/01-a-six-part-series-how-do-tex-macros-actually-work.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
