> 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/it/altri-argomenti/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# Una serie in sei parti: come funzionano davvero le macro TeX?

## Informazioni su questa serie

Questa serie di articoli ha un obiettivo ambizioso: spiegare, passo dopo passo, *come* come funzionano davvero le macro di TeX, come i comandi LaTeX, esplorando i processi che hanno luogo all'interno del software del motore TeX. Cerca di raccontare la storia del comportamento di elaborazione di TeX:

* leggendo i caratteri di input e utilizzando i codici di categoria;
* la produzione di token di carattere e di comando — e le formule che TeX utilizza;
* come TeX identifica, quindi elabora, i comandi TeX;
* i dettagli interni della memorizzazione delle definizioni delle macro e degli argomenti delle macro come liste di token — usando grafici prodotti da dati interni di TeX;
* e si conclude esplorando che cosa l'espansione delle macro *effettivamente* significa — utilizzando dati reali provenienti dall'interno di un motore TeX.

Tuttavia, poiché i motori TeX sono programmi software così complessi non possiamo sperare di coprire tutto, ma abbiamo cercato di affrontare le caratteristiche fondamentali e più importanti delle capacità di elaborazione delle macro di TeX.

#### Barra di navigazione

Ogni articolo presenta la seguente barra di navigazione prima e dopo il testo, così da poter saltare rapidamente a un altro articolo della serie:

[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: Codici di categoria

Questo articolo esamina il ragionamento alla base del concetto di codici di categoria di TeX: cosa sono e come TeX li usa per filtrare il proprio input in contenuti da impaginare e in comandi da eseguire.

### Parte 2: Leggere l'input attraverso gli “occhi” di TeX

Attraverso una serie di grafici utilizziamo l'analogia, collaudata dal tempo, di TeX che ha “occhi” con cui leggere (scandire) il proprio input. Esploriamo esempi dell'uso dei codici di categoria da parte di TeX per creare token di carattere e di come TeX riconosce ed elabora i comandi utilizzando il codice di categoria 0 (“carattere di escape”).

### Parte 3: Dal testo di input ai comandi

Questo articolo esamina in profondità come TeX riconosce ed elabora i comandi rilevati nell'input. Esploriamo come TeX memorizza e recupera informazioni sui comandi: codici di comando, modificatori di comando e diamo uno sguardo ad alcune variabili interne che TeX usa per memorizzare informazioni sugli elementi letti dall'input. Parte dell'articolo è materiale piuttosto di basso livello che può essere saltato a una prima lettura.

### Parte 4: La struttura di una macro

Introduciamo e utilizziamo il seguente “framework” per descrivere la struttura delle macro:

```
<primitive della macro TeX><nome della macro><testo dei parametri>{<testo di sostituzione>}
```

Esploriamo quindi una serie di esempi per dimostrare il ruolo e lo scopo di una macro `<testo dei parametri>` come un “modello di token” che può essere costruito mediante l'uso di token che agiscono come *delimitatori*.

### Parte 5: Liste di token e memorizzazione interna delle macro in TeX

Questo articolo esplora, in dettaglio, come TeX usa le liste di token per memorizzare le definizioni delle macro. Utilizzando ampi diagrammi generati con una versione appositamente modificata di TeX, esploriamo i token specializzati che TeX usa per identificare ed elaborare gli argomenti delle macro dell'utente.

### Parte 6: Espansione ed elaborazione delle macro

Nella Parte 6 utilizziamo alcuni grafici dettagliati per spiegare ed esplorare il significato esatto dell'espansione delle macro e le conseguenze della tokenizzazione da parte di TeX degli argomenti delle macro prima di passarli in una macro .

## Una breve nota: usare “TeX” e non LaTeX

Come discusso nell'articolo [Che cosa c'è in un nome: una guida alle molte sfumature di TeX](/latex/it/articoli-approfonditi/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) si usa una vasta gamma di termini per fare riferimento a/descrivere TeX, LaTeX e le loro derivate. Di conseguenza, vale la pena chiarire brevemente il nostro uso/significato di “TeX” nel contesto di questa serie.

“TeX” è, in modo un po' confuso, sia il nome di un programma eseguibile sia il nome di un linguaggio di composizione tipografica. Per distinguere tra i due, il termine *motore TeX* viene usato per distinguere tra un programma TeX eseguibile e il linguaggio di composizione tipografica. Alcuni dei dati, delle informazioni e dei dettagli specifici utilizzati in questa serie derivano da un esame approfondito del codice sorgente del software TeX originale di Knuth, ma i principi descritti sono comuni a tutti i motori TeX. Quindi, nel corso della nostra discussione, l'uso di “TeX” deve essere inteso come uno dei motori TeX eseguibili — come il TeX originale di Knuth, pdfTeX, XeTeX o LuaTeX.

All'interno degli articoli usiamo il comando primitivo di TeX `\def` per definire i nostri esempi di macro: non usiamo il comando LaTeX `\newcommand` che è quasi certamente più familiare alla maggior parte degli utenti di Overleaf. C'è un'ottima ragione per questo: il nostro obiettivo è comprendere i principi fondamentali alla base del comportamento delle macro di TeX, ma per farlo dobbiamo usare i comandi fondamentali (primitive) incorporati nel software TeX. I comandi LaTeX, come `\newcommand`, sono essi stessi macro: comandi con un comportamento programmato specifico e che, in ultima analisi, sono costruiti da strati di comandi primitivi TeX di livello inferiore. Per comprendere meglio il comportamento fondamentale di TeX dobbiamo usare le primitive TeX, non le macro LaTeX.

## Esempi e grafici

Invece di fare affidamento esclusivamente su una serie di macro di esempio progettate per dimostrare varie funzionalità, casi limite e comportamenti di TeX, utilizziamo anche un ampio insieme di grafici per guardare all'interno di TeX stesso e vedere *come* e *perché* come funziona il suo processo di elaborazione delle macro. Molti dei grafici (diagrammi di liste di token/nodi) sono stati preparati usando una versione appositamente modificata del TeX originale di Knuth.

Overleaf ha adattato il TeX di Knuth con codice aggiuntivo (scritto in C) che “aggancia” l'elaborazione delle macro di TeX ed esplora dati e strutture di dati normalmente inaccessibili agli utenti. Ogni volta che viene chiamata una macro, il motore TeX modificato genera ulteriori file di output contenenti dati in un formato che può essere elaborato con [Graphviz](https://www.graphviz.org/), un programma open-source per la visualizzazione di grafi. Il risultato finale sono grafici (diagrammi di liste di nodi) che mostrano esattamente come TeX memorizza la definizione di una macro, insieme a una rappresentazione grafica di eventuali argomenti forniti dall'utente quando la macro è stata chiamata.

Necessariamente, gli obiettivi di questa serie richiedono la discussione di una vasta gamma di argomenti, molti dei quali sono piuttosto di basso livello e, inizialmente, potrebbero sembrare molto lontani dal compito di impaginare i vostri documenti. Speriamo che, dopo un'immersione più profonda, ne uscirete con solide basi per costruire una comprensione migliore che, alla fine, vi farà risparmiare molto tempo e, forse, ridurrà anche il livello di frustrazione. Speriamo inoltre che i grafici appositamente generati che accompagnano questa serie offrano anche una visione unica e preziosa, utile a sostenere i lettori nella loro ricerca di una migliore comprensione delle macro di TeX.

## La versione personalizzata di TeX di Overleaf

Il video offre una breve dimostrazione della versione modificata di TeX di Overleaf, adattata per generare diagrammi di nodi di Graphviz (`.gv`  file) — nessun altro aspetto del comportamento di TeX è influenzato da tali modifiche. I `.gv`  file contengono rappresentazioni delle liste di token di TeX utilizzate per memorizzare le definizioni delle macro e gli argomenti delle macro. La visualizzazione Graphviz viene esportata in SVG, che viene poi importato in [Inkscape](https://inkscape.org/) per ulteriori annotazioni prima di incorporare il grafico in un articolo.

{% 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/it/altri-argomenti/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.
