El vocabulario de LaTeX confunde no porque las palabras sean difíciles, sino porque llevan una cara cotidiana sobre un significado distinto. Un «paquete» no es un paquete de npm, una «clase» no es una clase orientada a objetos y «glue» no es pegamento. Mejor aún: los protagonistas de este glosario —motor y formato, clase y paquete, caja, glue y kern— pueden comprobarse en la propia máquina. En TeX Live 2024, pdflatex resulta ser un simple enlace simbólico a pdftex, y latex apunta a ese mismo pdftex. Este glosario explica cada término empezando por el punto en el que los recién llegados se equivocan siempre.
Motor y formato: por qué pdflatex es pdftex
Un motor es el programa que realmente se ejecuta; un formato es un bloque de macros precargado en ese programa. No es una abstracción: se ve en el sistema de archivos. En el directorio bin de TeX Live 2024, pdflatex es un enlace simbólico a pdftex, y latex apunta a ese mismo pdftex. Igualmente xelatex → xetex, lualatex → luahbtex, y tanto platex como uplatex son euptex. Seis «comandos de LaTeX» son en realidad solo cuatro binarios. ¿Qué separa entonces latex de pdflatex? Únicamente el archivo .fmt que cada uno carga al arrancar, un volcado de macros ya digeridas. latex.fmt ocupa 8.221.690 bytes y pdflatex.fmt 8.221.444: dos objetos casi idénticos separados por 246 bytes.
# TeX Live 2024: six commands, four binaries
$ ls -l latex pdflatex xelatex lualatex platex uplatex
latex -> pdftex
pdflatex -> pdftex
xelatex -> xetex
lualatex -> luahbtex
platex -> euptex
uplatex -> euptex| Término | Significado y confusión habitual |
|---|---|
engine | El programa que se ejecuta (tex, pdftex, xetex, luatex, euptex). El formato de salida, la tecnología de fuentes y el manejo de caracteres se deciden aquí |
format | Un cuerpo de macros precargado (plain TeX, LaTeX, ConTeXt), congelado en un archivo .fmt |
.fmt | El volcado del formato, guardado en texmf-var/web2c/<motor>/ y generado por fmtutil |
pdfLaTeX | La combinación del motor pdftex con el formato LaTeX. No existe ningún programa llamado pdfLaTeX |
LaTeX2e | El LaTeX actual, vigente desde 1994. Decir «LaTeX» a secas suele referirse a este |
LaTeX3 | El proyecto de largo plazo para reescribir el núcleo. Ya viene incluido en el LaTeX actual como expl3, y muchos paquetes lo usan |
Clase y paquete: en qué se diferencian .cls y .sty
Una clase decide lo que el documento es; un paquete le añade capacidades — y un documento admite exactamente una clase pero cuantos paquetes se quiera. Ahí está toda la diferencia. Técnicamente ambos son archivos de texto llenos de definiciones de macros, y no hay distinción intrínseca entre lo que vive en un .cls y lo que vive en un .sty. Lo único que los separa es cómo se cargan, y la sintaxis enuncia la regla: \documentclass{article} una vez, \usepackage{...} tantas veces como haga falta. Así que, cuando no sepas si «dos columnas» es asunto de la clase (\documentclass[twocolumn]) o del paquete (multicol), pregúntate si cambia el tipo de documento o solo se añade una capacidad. En la misma familia: un .dtx es el manuscrito de un paquete (código y documentación entrelazados) y un .ins la receta que extrae de él el .sty.
| Extensión | Qué contiene y cuándo aparece |
|---|---|
.tex | El manuscrito que escribes. El único archivo que debe ir al control de versiones |
.cls | Una clase, cargada exactamente una vez con \documentclass |
.sty | Un paquete, cargado tantas veces como se quiera con \usepackage |
.dtx / .ins | El manuscrito del autor del paquete y la receta que genera el .sty |
.aux | Notas de referencias cruzadas, índice y citas. Por eso hay que compilar dos veces |
.log | El registro completo de la ejecución. Avisos como Missing character a veces solo aparecen aquí |
.bib / .bbl | La base de datos bibliográfica y la lista compuesta a partir de ella |
Macro, token y catcode: el orden en que TeX lee los caracteres
TeX no lee los caracteres como caracteres. Estampa en cada uno un «código de categoría» (catcode), un número de rol entre 0 y 15, y trabaja con eso. \ es 0 (inicio de comando), { es 1, } es 2, $ es 3, & es 4, # es 6, ^ es 7, _ es 8, el espacio es 10, las letras son 11, las cifras y casi todos los símbolos 12 («other»), ~ es 13 (activo) y % es 14 (comentario). Un carácter con su catcode es un token, la unidad más pequeña que TeX maneja, y una macro no es más que un nombre puesto a una lista de tokens. Un punto donde esto muerde: en el cuerpo del documento el catcode de @ es 12, un símbolo corriente que no puede formar parte de un nombre de comando. Comandos internos como \@ifnextchar resultan por tanto inalcanzables desde el texto, y \makeatletter existe para pasar @ a 11 durante un rato. Dentro de un paquete (.sty) ya vale 11, por lo que allí el conjuro sobra.
% Ask TeX for the catcode of a character; the answer lands in the log.
\showthe\catcode`\@ % > 12. (in the document body: "other")
\showthe\catcode`\A % > 11. (letter)
\showthe\catcode`\~ % > 13. (active)
\makeatletter
\showthe\catcode`\@ % > 11. (now a letter, so \@ifnextchar works)
\makeatother| Término | Significado y confusión habitual |
|---|---|
token | Un carácter junto con su catcode: la unidad mínima de TeX. Mismo glifo y distinto catcode es otro token |
catcode | Un número de rol de 0 a 15, modificable con \catcode; verbatim lo usa justamente para desarmar comandos |
macro | Un nombre para una lista de tokens, definido con \newcommand. Es sustitución, no una llamada a función: los argumentos se pegan sin evaluar |
expansion | Reemplazar una macro por su contenido. Por eso un error se informa donde se expandió, no donde se definió |
robust / fragile | Un comando robusto sobrevive donde el contenido se escribe y se vuelve a leer (argumentos móviles: títulos, notas); uno frágil se rompe. El LaTeX moderno ha hecho robustos a casi todos |
Caja, glue y kern: las tres piezas de la composición
Para TeX una página compuesta no está hecha de caracteres ni de párrafos, sino exactamente de tres cosas: cajas, y la glue y los kerns que rellenan el espacio entre ellas. Un carácter es una caja pequeña con anchura, altura y profundidad; una línea es una caja que alinea cajas (\hbox); una página es una caja que apila líneas (\vbox). Entre las cajas va la glue: espacio que se estira y se encoge. No es una anchura sino un triple de anchura natural, estiramiento y encogimiento: en Computer Modern de 10pt el espacio entre palabras mide 3,33333pt natural, con 1,66666pt de estiramiento y 1,11111pt de encogimiento. Esa elasticidad es lo que hace posible la justificación y lo que permite a TeX puntuar lo apretada o suelta que queda una línea (su «badness»). Un kern, en cambio, es un hueco rígido que no se estira y que tampoco puede ser un punto de corte de línea. Por eso \hbox to 60pt{a\kern 10pt b} no logra llenar su anchura y avisa Underfull \hbox (badness 10000), mientras que la misma caja con glue elástica encaja en silencio.
| Término | Significado y confusión habitual |
|---|---|
box | Un rectángulo con anchura, altura y profundidad. \hbox alinea y \vbox apila. Llevar la profundidad (bajo la línea base) por separado es un rasgo de TeX |
glue | Espacio elástico y comprimible: un triple de anchura natural, estiramiento y encogimiento. Además marca un punto de corte permitido |
kern | Un hueco de anchura fija: ni se estira ni ofrece punto de corte. Sirve para el ajuste entre letras, como los kerns negativos dentro de \TeX |
badness | Una medida de cuánto hubo que forzar la glue, de 0 a 10000 (lo peor). Es el número que aparece en Underfull \hbox (badness 10000) |
sp | El scaled point, el átomo interno de TeX: 1pt = 65536sp. Toda longitud se guarda como uno de esos enteros, de modo que los errores de redondeo no se acumulan |
Qué es DVI: por qué «independiente del dispositivo» no lleva fuentes
DVI (device-independent) es la salida para la que TeX fue concebido: una lista de instrucciones que dice qué carácter, en qué fuente, va en qué coordenada — y nada sobre la forma de las letras. Medida, la diferencia es espectacular. Componga el mismo documento de una línea en TeX Live 2024: el DVI de latex ocupa 300 bytes y el PDF de pdflatex, 17.081 — más de cincuenta y siete veces más. Dentro del DVI se lee fntdef1 27: cmr10: la fuente solo se menciona por su nombre. Consulte el PDF con pdffonts y CMR10 responde emb yes sub yes — contornos incrustados y reducidos a los caracteres realmente usados. Por eso un DVI no se visualiza de forma fiable por sí solo; se vuelve distribuible únicamente después de que dvipdfmx o dvips resuelvan las fuentes. Esa ligereza, y la libertad que deja a la etapa siguiente, explican que la ruta japonesa upLaTeX → dvipdfmx siga en uso diario.
| Término | Significado y confusión habitual |
|---|---|
DVI | Device-independent: un formato intermedio que solo nombra sus fuentes. Verlo o distribuirlo exige una conversión |
PDF | La forma final para distribución e impresión: fuentes incrustadas, más marcadores, enlaces y metadatos |
PostScript | Un lenguaje de descripción de páginas, generado del DVI por dvips y todavía usado para enviar a imprenta |
pt / bp | El pt de TeX es el punto angloamericano: 1in = 72,26999pt. El punto de PDF y PostScript es el bp (big point), 1bp = 1,00374pt. Es el bp, no el pt, el que va a 72 por pulgada |
MWE | Minimal working example: el documento más pequeño que aún reproduce el problema. Lo primero que se le pedirá |
CTAN, TDS, texmf y kpathsea: dónde están realmente los archivos
CTAN es el almacén del mundo, TDS es cómo se ordena, texmf es la copia local y kpathsea es lo que busca dentro — los cuatro son eslabones de una misma cadena. Los paquetes reunidos en CTAN (Comprehensive TeX Archive Network) se despliegan en un árbol texmf siguiendo una regla de colocación común llamada TDS (TeX Directory Structure): un .sty va a tex/latex/<paquete>/ y su documentación a doc/latex/<paquete>/. Gracias a esa regla, los archivos ocupan el mismo lugar en cualquier distribución. Pero el texmf-dist de TeX Live 2024 alberga 276.953 archivos, y recorrer directorios en cada ejecución sería impensable. Por eso kpathsea lee primero un índice llamado ls-R. Cuando un paquete instalado a mano sigue sin encontrarse, ese índice suele estar simplemente caducado: mktexlsr lo reconstruye. Para saber qué archivo se usa realmente, kpsewhich article.cls responde en una línea.
| Término | Significado y confusión habitual |
|---|---|
CTAN | El archivo central de paquetes (ctan.org), replicado por todo el mundo |
TDS | TeX Directory Structure: la convención que fija la organización dentro de texmf. Sígala al colocar archivos a mano |
texmf | El árbol que contiene los archivos reales. Hay varios, y texmf-local tiene prioridad sobre texmf-dist |
kpathsea / ls-R | La biblioteca de búsqueda de archivos y su índice. Se consulta con kpsewhich y se reconstruye con mktexlsr |
TeX Live / MiKTeX | Las dos distribuciones principales. TeX Live publica una versión anual completa; MiKTeX destaca por descargar sobre la marcha los paquetes que faltan |
tlmgr | El gestor de paquetes de TeX Live, para actualizar o instalar paquetes concretos |
Términos de la composición japonesa: JFM, wabun y obun, kinsoku
El TeX japonés arrastra un vocabulario que nunca se encuentra componiendo solo texto occidental. En su centro hay una decisión de diseño: el texto japonés y el occidental se tratan como dos flujos completamente separados. Los motores de la familia pTeX componen kanji y kana con una fuente wabun (japonesa) y las letras latinas con una fuente obun (occidental), e insertan automáticamente un cuarto de cuadratín (\xkanjiskip) en la frontera. Las métricas de una fuente japonesa las describe un JFM (Japanese Font Metric), que registra no solo las anchuras de los caracteres sino también cuánto cerrar cuando dos signos de puntuación se encuentran. Las reglas que prohíben una coma de cierre al principio de línea o un paréntesis de apertura al final se llaman kinsoku, y en TeX se expresan como penalizaciones. El ruby (glosa fonética sobre el texto) y la escritura vertical son otras dos exigencias propias del japonés, de las que se ocupa la clase o un paquete. La elección práctica entre estas herramientas corresponde a las páginas de composición japonesa.
| Término | Significado y confusión habitual |
|---|---|
JFM | Japanese Font Metric: el archivo de medidas de una fuente japonesa, con anchuras de caracteres y reglas para cerrar la puntuación |
pTeX / upTeX | Motores TeX ampliados para la composición japonesa; upTeX es el sucesor con representación interna en Unicode |
kinsoku | Prohibición de corte: las reglas sobre qué caracteres no pueden abrir ni cerrar una línea, expresadas en TeX como penalizaciones |
\xkanjiskip | El espacio insertado automáticamente donde el japonés se encuentra con el texto occidental; alrededor de un cuarto de cuadratín por defecto, y ajustable |
ruby | Una glosa fonética en cuerpo pequeño sobre el texto (a su derecha en composición vertical), provista por una clase o un paquete |