> 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/es/mas-temas/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# Una serie de seis partes: ¿cómo funcionan realmente las macros de TeX?

## Acerca de esta serie

Esta serie de artículos tiene un objetivo ambicioso: explicar, paso a paso, *cómo* cómo funcionan realmente las macros de TeX, como los comandos de LaTeX, explorando los procesos que tienen lugar dentro del software del motor TeX. Intenta contar la historia del comportamiento de procesamiento de TeX:

* leyendo caracteres de entrada y usando códigos de categoría;
* la producción de tokens de caracteres y comandos, y las fórmulas que usa TeX;
* cómo TeX identifica y luego procesa los comandos de TeX;
* los detalles internos de almacenar definiciones de macros y argumentos de macros, como listas de tokens, usando gráficos producidos a partir de datos internos de TeX;
* y concluye explorando qué significa la expansión de macros *realmente* —usando datos reales del interior de un motor TeX.

Sin embargo, como los motores TeX son programas de software tan complejos, no podemos esperar abarcarlo todo, pero hemos intentado abordar las características más importantes y fundamentales de las capacidades de procesamiento de macros de TeX.

#### Barra de navegación

Cada artículo tiene la siguiente barra de navegación antes y después del texto, para que puedas saltar rápidamente a otro artículo de la 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: Códigos de categoría

Este artículo examina el razonamiento detrás del concepto de códigos de categoría de TeX: qué son y cómo los usa TeX para filtrar su entrada en contenido para la composición tipográfica y en comandos que deben ejecutarse.

### Parte 2: Lectura de la entrada a través de los “ojos” de TeX

A través de una serie de gráficos usamos la analogía, probada por el tiempo, de que TeX tiene “ojos” con los que leer (escanear) su entrada. Exploramos ejemplos del uso que hace TeX de los códigos de categoría para crear tokens de caracteres y cómo TeX reconoce y procesa comandos usando el código de categoría 0 (“carácter de escape”).

### Parte 3: Del texto de entrada a los comandos

Este artículo examina en profundidad cómo TeX reconoce y procesa los comandos detectados en la entrada. Exploramos cómo TeX almacena y recupera información sobre los comandos: códigos de comando, modificadores de comando y revisamos algunas variables internas que TeX usa para almacenar información sobre los elementos leídos de la entrada. Parte del artículo es material bastante de bajo nivel que puede omitirse en una primera lectura.

### Parte 4: La estructura de una macro

Introducimos y usamos el siguiente “marco” para describir la estructura de las macros:

```
<primitiva de macro de TeX><nombre de macro><texto de parámetros>{<texto de reemplazo>}
```

Luego exploramos una gama de ejemplos para demostrar el papel y el propósito de la `<texto de parámetros>` como una “plantilla de tokens” que puede construirse mediante el uso de tokens que actúan como *delimitadores*.

### Parte 5: Listas de tokens y el almacenamiento interno de macros de TeX

Este artículo explora, en detalle, cómo TeX usa listas de tokens para almacenar definiciones de macros. Mediante diagramas extensos generados con una versión especialmente modificada de TeX, exploramos los tokens especializados que TeX usa para identificar y procesar los argumentos de macro de un usuario.

### Parte 6: Expansión y procesamiento de macros

En la Parte 6 usamos algunos gráficos detallados para explicar y explorar el significado exacto de la expansión de macros y las consecuencias de la tokenización de los argumentos de macros por parte de TeX antes de introducirlos en una .

## Una breve nota: usar “TeX” y no LaTeX

Como se analiza en el artículo [Qué hay en un nombre: Una guía de las muchas variantes de TeX](/latex/es/articulos-en-profundidad/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) se utiliza una amplia gama de términos para referirse/describir TeX, LaTeX y sus derivados. En consecuencia, vale la pena aclarar brevemente nuestro uso/significado de “TeX” dentro del contexto de esta serie.

“TeX” es, algo confusamente, tanto el nombre de un programa ejecutable como el nombre de un lenguaje de composición tipográfica. Para distinguir entre ambos, se utiliza el término *motor TeX* para diferenciar entre un programa TeX ejecutable y el lenguaje de composición tipográfica. Algunos de los datos, la información y los detalles específicos utilizados en esta serie se derivan de un examen detallado del código fuente del software TeX original de Knuth, pero los principios descritos son comunes a todos los motores TeX. Por lo tanto, a lo largo de nuestra discusión, debe inferirse que el uso de “TeX” significa uno de los motores TeX ejecutables, como el TeX original de Knuth, pdfTeX, XeTeX o LuaTeX.

Dentro de los artículos usamos el comando primitivo de TeX `\def` para definir nuestros ejemplos de macros: no usamos el comando de LaTeX `\newcommand` que es casi con toda seguridad más familiar para la mayoría de los usuarios de Overleaf. Hay una muy buena razón para ello: nuestro objetivo es comprender los principios fundamentales que subyacen al comportamiento de las macros de TeX, pero para hacerlo necesitamos usar los comandos básicos (primitivos) integrados en el software TeX. Los comandos de LaTeX, como `\newcommand`, son en sí mismos macros: comandos con un comportamiento programado específico y que, en última instancia, están construidos a partir de capas de comandos primitivos de TeX de nivel inferior. Para comprender mejor el comportamiento fundamental de TeX tenemos que usar los primitivos de TeX, no las macros de LaTeX.

## Ejemplos y gráficos

En lugar de depender únicamente de un conjunto de macros de ejemplo diseñadas para demostrar diversas características, casos límite y comportamientos de TeX, también utilizamos una amplia variedad de gráficos para mirar dentro del propio TeX y ver *cómo* y *por qué* por qué su procesamiento de macros funciona como lo hace. Muchos de los gráficos (listas de tokens/diagramas de nodos) se han preparado utilizando una versión especialmente modificada del TeX original de Knuth.

Overleaf adaptó el TeX de Knuth con código adicional (escrito en C) que “se conecta” al procesamiento de macros de TeX y explora datos, y estructuras de datos, que normalmente son inaccesibles para los usuarios. Cada vez que se llama a una macro, el motor TeX modificado genera archivos de salida adicionales que contienen datos en un formato que puede procesarse usando [Graphviz](https://www.graphviz.org/), un programa de visualización de gráficos de código abierto. El resultado final son gráficos (diagramas de listas de nodos) que muestran exactamente cómo TeX almacena la definición de una macro, junto con una representación gráfica de cualquier argumento suministrado por el usuario cuando se llamó a la macro.

Por necesidad, los objetivos de esta serie requieren tratar una amplia gama de temas, muchos de los cuales son bastante de bajo nivel y, al principio, pueden parecer muy alejados de la tarea de componer tipográficamente sus documentos. Con suerte, después de hacer una inmersión más profunda, saldrá con una base para construir una mejor comprensión que, al final, le ahorrará mucho tiempo y, quizás, también reduzca los niveles de frustración. También esperamos que los gráficos especialmente generados que acompañan a esta serie ofrezcan una visión única y valiosa para ayudar y apoyar a cualquier lector en su búsqueda de entender mejor las macros de TeX.

## Versión personalizada de TeX de Overleaf

El video ofrece una breve demostración de la versión modificada de TeX de Overleaf, adaptada para generar diagramas de nodos de Graphiviz (`.gv` archivos)—ningún otro aspecto del comportamiento de TeX se ve afectado por esos cambios. Los `.gv` archivos contienen representaciones de las listas de tokens de TeX utilizadas para almacenar definiciones de macros y argumentos de macros. La visualización de Graphviz se exporta a SVG, que luego se importa en [Inkscape](https://inkscape.org/) para añadir anotaciones adicionales antes de incorporar el gráfico en un artículo.

{% 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/es/mas-temas/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.
