Compón el mismo original dos veces. Un article a 11pt, una medida de 180pt, cien párrafos de lipsum. Sin microtype salen 1731 líneas con 117 cajas overfull. Añade al preámbulo la única línea \usepackage{microtype} y son 1702 líneas con 6 overfull. La microtipografía no es más que esto: dejar que la puntuación asome un pelo al margen y estirar los anchos de los glifos bastante menos de un uno por ciento. Esta página mira qué hace realmente el microtype de LaTeX —protrusion, expansión de fuente y tracking— con las mediciones al lado.
Qué hace realmente microtype
microtype no compone nada por sí mismo. Es una interfaz LaTeX unificada a las funciones microtipográficas que introdujo pdfTeX y que después llegaron, en parte, a LuaTeX y XeTeX. La escribió R. Schlicht. En el centro hay dos cosas —la protrusion de caracteres (también llamada margin kerning) y la expansión de fuente— seguidas del tracking (interletraje), la desactivación de ligaduras y el ajuste del espacio entre palabras y del kerning adicional. Protrusion y expansión están activadas por defecto siempre que el paquete pueda suponer sin riesgo que funcionarán en tu motor.
El origen de ambas está documentado con precisión. Hàn Thế Thành las implementó en pdfTeX como parte de la tesis doctoral que presentó en 2000 en la Universidad Masaryk de Brno, «Micro-typographic extensions to the TeX typesetting system», publicada como TUGboat volumen 21, número 4, páginas 317–434. Esa misma tesis explica que el margin kerning hace falta para la alineación óptica, porque los márgenes justificados mecánicamente le parecen más bien irregulares al ojo, y define la expansión de fuente como sustituir por una variante más ancha en una línea floja y más estrecha en una apretada, de modo que los espacios entre palabras varíen menos. Lo que implementa microtype parte, en suma, de una observación sobre cómo el ojo humano malinterpreta un borde recto.
Una precisión de alcance: estos son refinamientos para el texto occidental en alfabeto latino. El japonés sigue otro modelo de composición —restricciones de salto al inicio y al final de línea, espacio entre caracteres japoneses y occidentales— del que se ocupan herramientas como luatexja, y cargar microtype no cambia nada de eso. El procesamiento automático más básico del texto occidental, ligaduras y kerning, corresponde a una página hermana.
¿Cuánto ayuda microtype? Una medición
Cuanto más estrecha la medida, más ayuda. En TeX Live 2024, en un article a 11pt con \usepackage[T1]{fontenc} y una medida de 180pt —aproximadamente una columna de una maqueta a dos columnas— se compusieron cien párrafos de lipsum y se contaron las líneas y los avisos Overfull \hbox. Los resultados están en la tabla de abajo: con microtype, el total pasa de 1731 a 1702 líneas, un −1,7 %, y los desbordes de 117 a 6. Repite la medición a 345pt, cerca del ancho de texto de un article a4paper, y la diferencia se estrecha a 921 → 909 líneas, −1,3 %. El efecto es real, pero no es un acortamiento espectacular.
| Ajuste | Líneas totales (medida 180pt, 100 párrafos) | Avisos de Overfull hbox |
|---|---|---|
(package not loaded) | 1731 | 117 |
expansion=false | 1718 (solo protrusion) | 102 |
protrusion=false | 1711 (solo expansión) | 9 |
\usepackage{microtype} | 1702 (ambas, por defecto) | 6 |
Lo que muestra el desglose es que las dos funciones hacen trabajos distintos. La que más líneas quita es la expansión (1731 → 1711), aunque la protrusion aporta trece por su cuenta. Pero eliminar cajas overfull es casi enteramente obra de la expansión: 117 bajan a 9, mientras que la protrusion sola solo llega a 102. Si una línea se sale al margen, tu remedio es la expansión; si el borde derecho simplemente parece irregular, es la protrusion. Esa es la regla práctica cuando hay que decidir cuál desactivar. De paso: cargar microtype pone \pdfprotrudechars y \pdfadjustspacing a 2 (sin el paquete, ambos valen 0), así que un \the sobre esos dos te dice si de verdad hay algo activo.
Protrusion de caracteres: cancelar una ilusión óptica
La protrusion (margin kerning) deja que los caracteres del inicio y el final de línea asomen un pelo más allá del margen, y el propósito es cancelar una ilusión. Alinea un punto, una coma o un guion —o una letra de contorno redondo o inclinado como o, A, v— a ras del borde del texto y el espacio lateral del glifo hará que ese borde parezca hundido hacia dentro. Deja que asomen un poco y el borde se lee ópticamente recto. Cuánto asoma cada uno varía por carácter: mucho en la puntuación, menos en las letras redondas, nada en las de lados rectos como H; y microtype incluye archivos de configuración con estos valores para cada fuente.
Para subir o bajar la escala global de la protrusion está la opción factor (factor=1100 da 1,1 veces los valores por defecto). La protrusion tampoco hace nada donde TeX no ve margen: los ítems de un itemize, los bordes de celda de un tabular. Para esos sitios, microtype ofrece \leftprotrusion y \rightprotrusion, que hacen asomar el primer o el último glifo como si estuviera en un margen exterior normal. En una tabla cuya columna izquierda empieza con paréntesis o comillas, con solo insertarlos cambia cómo se lee.
Expansión de fuente: que el ancho de los glifos haga el trabajo del espaciado
La expansión de fuente estira o comprime horizontalmente los glifos de cada línea una cantidad mínima —normalmente una fracción de por ciento hasta unos pocos— para que la línea encaje en la medida. En la justificación, el ancho de línea se alcanza normalmente estirando y encogiendo solo el glue entre palabras. Traspasa parte de ese trabajo a los anchos de los glifos y los espacios entre palabras varían menos, lo que iguala el espaciado de línea a línea y da al párrafo un color más uniforme. En la medición anterior fue la expansión la que bajó las cajas overfull de 117 a 9. Los límites se fijan con stretch y shrink y la granularidad con step, pero los valores por defecto bastan para empezar.
Aquí hay un límite duro. La expansión funciona solo en pdfTeX y LuaTeX, no en XeTeX. Cargar microtype sin opciones bajo XeLaTeX no provoca ningún error: el paquete activa solo lo que puede ejecutarse con seguridad, así que protrusion y tracking funcionan y la expansión se apaga en silencio. Pero pídela explícitamente con \usepackage[expansion=true]{microtype} y la compilación se detiene con esto:
$ xelatex xe.tex
! Package microtype Error: Font expansion does not work with xetex.
See the microtype package documentation for explanation.
% The reason is one missing primitive. Asking each engine directly:
% pdftex : has \efcode, has \lpcode
% xetex : NO \efcode, has \lpcode
% luatex : has \efcode, has \lpcode
% XeTeX can shift glyphs into the margin, but it cannot scale their widths.La razón se reduce a una primitiva ausente. \lpcode y \rpcode, las cantidades de protrusion izquierda y derecha, existen en los tres motores, pero \efcode, que es lo que necesita la expansión, no existe en XeTeX (pdfTeX y LuaTeX sí lo tienen). XeTeX puede desplazar un glifo hacia el margen; no tiene forma de escalar su anchura. Si quieres el tratamiento completo con expansión y estás en XeTeX, pasar a LuaTeX es la respuesta coherente.
Tracking (\textls): interletraje que no rompe la partición
El tracking, o interletraje, abre uniformemente el espacio entre letras. Lo bueno de la versión de microtype es que no inserta espacio entre caracteres: construye y usa una copia de la fuente con los glifos más anchos. Así la palabra sigue siendo una sola palabra y la partición con guion no se rompe. Sembrar \kern a mano dentro de una palabra, el método clásico, impide para siempre que esa palabra se corte al final de línea. Para interletraje puntual usa \textls{...}; para aplicarlo a todo lo que sigue, \lsstyle, que sigue activo hasta el final del grupo. Para títulos, donde no quieres kerning extra antes y después, la versión con asterisco \textls*{...} resulta cómoda.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{microtype}
% Space out small caps by 40/1000 em wherever they appear
\SetTracking{encoding = *, shape = sc}{40}
\begin{document}
\textsc{Small Caps}, and an ad-hoc \textls[200]{wide run of letters}.
% \lsstyle stays on until the end of the group
{\lsstyle everything here is letterspaced}
% The starred form adds no kerning before or after - good for headings
\section*{\textls*{Chapter Title}}
\end{document}Las cantidades van en milésimas de cuadratín; según el manual de microtype, el valor por defecto es 100/1000 em = 0,1 em. Da un valor puntual en el argumento opcional, como \textls[200]{...}, o decláralo para todo un conjunto de fuentes en el preámbulo con algo como \SetTracking{encoding=*, shape=sc}{40} (ese ejemplo espacia las versalitas 40/1000). Conviene una advertencia: el propio manual escribe que el interletraje de texto en minúsculas «is held in abhorrence», y avisa de que, salvo que sepas bien lo que haces, solo deberías espaciar mayúsculas o versalitas. El tracking funciona en pdfTeX y LuaTeX; el README de microtype detalla los requisitos de versión. Si también lo necesitas en plain TeX, el paquete letterspace ofrece justo esa parte.
Cortar ligaduras y tocar el espaciado: \DisableLigatures, kerning, spacing
Las ocasiones para desactivar ligaduras son pocas, pero apremiantes cuando llegan: una frase que muestra código donde -- no debe fundirse en una raya corta. \DisableLigatures las apaga para un conjunto de fuentes indicado: \DisableLigatures{encoding = T1, family = tt*} cubre solo la familia typewriter en T1. Ten en cuenta, eso sí, que desactivar todas las ligaduras de una fuente apaga también su kerning, como dice el manual sin rodeos. Si listas en el argumento opcional los caracteres que inician las ligaduras, solo se detienen las elegidas, como en \DisableLigatures[?,!]{encoding = T1}. Este comando solo puede usarse en el preámbulo, y una sola vez.
Las opciones kerning y spacing activan respectivamente el kerning adicional y el ajuste del espacio entre palabras, y ambas son exclusivas de pdfTeX (no hacen nada en LuaTeX ni XeTeX). Ambas están desactivadas por defecto, así que solo se nombran cuando hacen falta. Para cambiar ajustes después de cargar está \microtypesetup{...}: para apagar la protrusion solo mientras se construye el índice, por ejemplo, enciérralo entre \microtypesetup{protrusion=false} y \microtypesetup{protrusion=true}. Para dar a una parte del documento otra configuración, cambia de contexto con \microtypecontext{...} o el entorno microtypecontext. Pasar draft desactiva la microtipografía en bloque, y final la fuerza al contrario incluso cuando la clase de documento está en modo borrador: un par útil para experimentos de antes y después.
Las funciones disponibles dependen del motor
Dos cosas que recordar: la expansión no está disponible en XeTeX y el espaciado entre palabras y el kerning adicional son exclusivos de pdfTeX. Así que el motor más capaz es pdfTeX (protrusion + expansión + tracking + kerning + spacing), luego LuaTeX (protrusion + expansión + tracking), y XeTeX ofrece solo protrusion y tracking. microtype activa automáticamente únicamente lo que puede ejecutarse con seguridad en tu motor, de modo que cargarlo sin opciones nunca da error; y justo por eso conviene saber por uno mismo qué no está surtiendo efecto.
| Función | pdfTeX / LuaTeX / XeTeX | Notas |
|---|---|---|
protrusion | sí / sí / sí | los tres tienen \lpcode y \rpcode; activo por defecto |
expansion | sí / sí / no | XeTeX no tiene \efcode; pedirla provoca un Package microtype Error |
tracking | sí / sí / sí | \textls y \lsstyle; desactivado por defecto, se activa con tracking |
kerning | sí / no / no | solo pdfTeX; desactivado por defecto |
spacing | sí / no / no | solo pdfTeX; ajuste del espacio entre palabras |
Qué escribir realmente en el preámbulo
El caso básico es la única línea \usepackage{microtype}. Eso activa por defecto protrusion y expansión (donde el motor las admita), y la mayoría de los documentos mejoran de forma apreciable. microtype es estable y casi no tiene efectos secundarios: rara vez hay daño en añadirlo. En los motores pdfTeX la convención es combinarlo con \usepackage[T1]{fontenc}, en parte porque los archivos de configuración de protrusion y expansión están organizados por codificación. El ejemplo de abajo va un poco más allá: activa protrusion y expansión explícitamente, espacia levemente las versalitas y desactiva las ligaduras solo para la familia typewriter que muestra código.
\documentclass{article}
\usepackage[T1]{fontenc}
% protrusion and expansion explicitly on;
% "final" forces them on even when the class is in draft mode
\usepackage[activate={true,nocompatibility},final]{microtype}
% letterspace small caps a little (40/1000 em)
\SetTracking{encoding = *, shape = sc}{40}
% no ligatures in the typewriter family, so "--" stays two hyphens
\DisableLigatures{encoding = T1, family = tt*}
\begin{document}
% turn protrusion off just while the table of contents is built
\microtypesetup{protrusion=false}
\tableofcontents
\microtypesetup{protrusion=true}
\end{document}Una última calibración de expectativas. Estos ajustes son discretos, y una página suelta puede no mostrarlos en absoluto: la medición solo encontró una reducción del 1,7 por ciento en el total de líneas, y eso con una medida estrecha. Lo que más pesa en la escritura diaria es que las cajas overfull cayeron de 117 a 6: cada desborde que no ocurre es una frase que no hay que reescribir para que quepa. El valor de microtype está menos en acortar que en reducir el número de veces que hay que intervenir a mano.