Glosario de términos

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.

shell
# 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érminoSignificado y confusión habitual
engineEl 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í
formatUn cuerpo de macros precargado (plain TeX, LaTeX, ConTeXt), congelado en un archivo .fmt
.fmtEl volcado del formato, guardado en texmf-var/web2c/<motor>/ y generado por fmtutil
pdfLaTeXLa combinación del motor pdftex con el formato LaTeX. No existe ningún programa llamado pdfLaTeX
LaTeX2eEl LaTeX actual, vigente desde 1994. Decir «LaTeX» a secas suele referirse a este
LaTeX3El 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ónQué contiene y cuándo aparece
.texEl manuscrito que escribes. El único archivo que debe ir al control de versiones
.clsUna clase, cargada exactamente una vez con \documentclass
.styUn paquete, cargado tantas veces como se quiera con \usepackage
.dtx / .insEl manuscrito del autor del paquete y la receta que genera el .sty
.auxNotas de referencias cruzadas, índice y citas. Por eso hay que compilar dos veces
.logEl registro completo de la ejecución. Avisos como Missing character a veces solo aparecen aquí
.bib / .bblLa 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.

latex
% 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érminoSignificado y confusión habitual
tokenUn carácter junto con su catcode: la unidad mínima de TeX. Mismo glifo y distinto catcode es otro token
catcodeUn número de rol de 0 a 15, modificable con \catcode; verbatim lo usa justamente para desarmar comandos
macroUn nombre para una lista de tokens, definido con \newcommand. Es sustitución, no una llamada a función: los argumentos se pegan sin evaluar
expansionReemplazar una macro por su contenido. Por eso un error se informa donde se expandió, no donde se definió
robust / fragileUn 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érminoSignificado y confusión habitual
boxUn 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
glueEspacio elástico y comprimible: un triple de anchura natural, estiramiento y encogimiento. Además marca un punto de corte permitido
kernUn 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
badnessUna 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)
spEl 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érminoSignificado y confusión habitual
DVIDevice-independent: un formato intermedio que solo nombra sus fuentes. Verlo o distribuirlo exige una conversión
PDFLa forma final para distribución e impresión: fuentes incrustadas, más marcadores, enlaces y metadatos
PostScriptUn lenguaje de descripción de páginas, generado del DVI por dvips y todavía usado para enviar a imprenta
pt / bpEl 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
MWEMinimal 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érminoSignificado y confusión habitual
CTANEl archivo central de paquetes (ctan.org), replicado por todo el mundo
TDSTeX Directory Structure: la convención que fija la organización dentro de texmf. Sígala al colocar archivos a mano
texmfEl árbol que contiene los archivos reales. Hay varios, y texmf-local tiene prioridad sobre texmf-dist
kpathsea / ls-RLa biblioteca de búsqueda de archivos y su índice. Se consulta con kpsewhich y se reconstruye con mktexlsr
TeX Live / MiKTeXLas dos distribuciones principales. TeX Live publica una versión anual completa; MiKTeX destaca por descargar sobre la marcha los paquetes que faltan
tlmgrEl 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érminoSignificado y confusión habitual
JFMJapanese Font Metric: el archivo de medidas de una fuente japonesa, con anchuras de caracteres y reglas para cerrar la puntuación
pTeX / upTeXMotores TeX ampliados para la composición japonesa; upTeX es el sucesor con representación interna en Unicode
kinsokuProhibición de corte: las reglas sobre qué caracteres no pueden abrir ni cerrar una línea, expresadas en TeX como penalizaciones
\xkanjiskipEl 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
rubyUna glosa fonética en cuerpo pequeño sobre el texto (a su derecha en composición vertical), provista por una clase o un paquete