Escritura de texto occidental

Teclee texto en alfabeto latino en LaTeX y saldrá con un cuidado sorprendente: escriba office y el ffi se funde en un solo glifo, el par AV se cierra 1,11084 pt, y los cortes de línea se eligen recorriendo el párrafo entero. Pero esa automatización también deja huecos: parte wolffish tan campante como wolff-ish. Y si rompe la ligadura con \/ para arreglarlo, la separación silábica de la palabra desaparece por completo. Esta página expone, con mediciones, las decisiones que quedan en manos del autor al componer texto occidental: cuándo romper una ligadura, qué declararle a babel, cómo usar mayúsculas y versalitas, y qué cambia cuando pasajes occidentales conviven en un manuscrito japonés.

Las cinco ligaduras que forma LaTeX: ff, fi, fl, ffi, ffl

Una ligadura funde letras contiguas en un solo glifo, y LaTeX forma cinco por defecto: ff, fi, fl, ffi y ffl. Teclee office o fluffier en el cuerpo del texto y la sustitución ocurre sin dejar marca en la fuente. La razón es de forma: el remate superior derecho de una f choca con el punto de una i siguiente o con el astil de una l, por lo que las ligaduras en f se funden desde los tiempos del tipo de plomo. Medida en Computer Modern T1 de 10 pt, la ligadura fi mide 5,5542 pt mientras que la f{}i separada mide 5,83191 pt: la ligadura es 0,27771 pt más estrecha, y esa diferencia es justo el espacio ahorrado al juntar las letras.

La misma maquinaria actúa sobre la puntuación. Dos guiones seguidos, --, dan una raya corta, usada para intervalos numéricos; tres, ---, una raya larga, usada para incisos; y dos acentos graves seguidos más tarde de dos apóstrofos producen las comillas dobles tipográficas de apertura y cierre. Estas conversiones están grabadas en las métricas de la fuente, así que no hace falta comando alguno (qué raya elegir se detalla en la página de comillas y rayas).

Tres formas de romper una ligadura: solo una conserva la separación silábica

Una ligadura que cruza una frontera de morfema —la costura donde una palabra se armó con piezas— perjudica la legibilidad en vez de ayudarla. El ejemplo clásico es shelfful (shelf + ful): fundir el ff oculta la unión entre ambas piezas. La palabra la cita el propio Knuth, en la página 19 de The TeXbook, fuente que la documentación del paquete selnolig sigue señalando. cufflink, offload, wolffish y halflife son del mismo tipo. La tradición ofrece tres formas de romper la ligadura: shelf\/ful (una corrección de cursiva), shelf{}ful (un grupo vacío) y shelf\kern0pt ful (un kern de anchura cero).

He aquí una diferencia que solo la medición revela. Pregunte a \showhyphens dónde están los puntos de corte: wolffish a secas se parte en wolff-ish, donde los morfemas querrían wolf-fish. wolf{}fish se parte también en wolff-ish: la ligadura ha desaparecido, pero la separación silábica queda intacta. En cambio, wolf\/fish y wolf\kern0pt fish se quedan sin ningún punto de corte, y un \mbox{} intercalado tampoco los tiene. La razón es simple: \/ y \kern insertan cada uno un nodo de composición, y el rastreo de la palabra por parte de TeX se detiene allí. {} no deja nada tras de sí, así que la palabra sigue siendo palabra: eso convierte a {} en el único rompedor de ligaduras que preserva la separación silábica.

Escrito comoAnchura (10pt, T1 CM)Lo que informa showhyphens
shelfful30,88135 ptshelf-ful — ligadura conservada, corte conservado
shelf{}ful31,15906 ptshelf-ful — ligadura fuera, corte todavía presente
shelf\kern0pt ful31,15906 ptsin cortes — se pierde la separación silábica
shelf\/ful31,93665 ptsin cortes, y además 0,77759 pt de corrección de cursiva sobre la f

La conclusión práctica: si rompe una ligadura a mano, use {}. \/ es la forma venerable que muestra The TeXbook, y se defiende en cuanto restituye el espacio que habría ocupado el vuelo de la f, pero impide que la palabra se corte al final de línea. En una palabra corta el daño es escaso; en un compuesto largo como selffulfilling, perder todos los puntos de corte estira los espacios de esa línea y adelgaza el párrafo entero. Si dispone de LuaLaTeX, selnolig es la respuesta más elegante: lleva la morfología inglesa y alemana como patrones y suprime las ligaduras no deseadas de shelfful u offload sin marca alguna en el texto (versión 0.302 en TeX Live 2024, solo LuaLaTeX).

latex
% \showhyphens output, TeX Live 2024, T1 Computer Modern:
%   shelfful           -> shelf-ful   (ligature, break point kept)
%   shelf{}ful         -> shelf-ful   (ligature broken, break point kept)
%   shelf\kern0pt ful  -> shelfful    (no break points)
%   shelf\/ful         -> shelfful    (no break points)
%   wolffish           -> wolff-ish   (a break TeX gets wrong on its own)

A shelf{}ful of books, one cuff{}link, an off{}load.

% LuaLaTeX only: handles the whole word list for you
% \usepackage{selnolig}

El interletraje cierra AV 1,11084 pt — y {} también lo anula

Un kern ajusta el hueco de un par concreto de letras contiguas, cerrándolo o abriéndolo para que el espaciado parezca uniforme. Pares de formas inclinadas como AV, To, Wa y LT se ven entreabiertos si se dejan a su aire. Medido en Computer Modern T1 de 10 pt, AV mide 13,8855 pt, mientras que A{}V, con un grupo vacío en medio, mide 14,99634 pt: los 1,11084 pt de ajuste que pedía la tipografía se han esfumado. La tabla de pares de interletraje reside en las métricas de la fuente (un archivo .tfm en el mundo pdfLaTeX, una tabla interna en las fuentes OpenType), y TeX la lee para fijar el espaciado. El autor no escribe nada.

Una advertencia rebota de aquí a la sección anterior: romper una ligadura con {} anula también el kern que hubiera en ese punto. Si la fuente definía un kern entre las dos f, también se pierde. En shelf{}ful son los 0,27771 pt que hacen pasar de 30,88135 pt a 31,15906 pt. El ojo no lo aprecia, pero allí donde el ajuste de las letras debe ser exacto —un logotipo, una marca—, dar a \kern su propio valor es más seguro que recurrir a {}. A la inversa, para espaciar por igual una palabra entera (tracking o interletrado), no siembre sus propios \kern: use \textls{...} de microtype, que deja funcionando la separación silábica.

La separación silábica varía según el idioma: decláralo con babel

La misma grafía se parte en sitios distintos según el idioma. Pregunte a \showhyphens y signature sale como sig-na-ture con patrones ingleses, si-gna-ture con franceses y sig-na-tu-re con españoles: los propios puntos de corte se desplazan. Kongress es más extremo: con patrones ingleses no se encuentra ni un punto de corte. Buena parte de los síntomas que se describen como «las líneas no cierran» o «el espaciado entre palabras se estira sin parar» arranca de un documento que nunca declaró su idioma. \usepackage[french]{babel} —o polyglossia bajo XeLaTeX y LuaLaTeX— no es adorno sino requisito para componer correctamente.

Palabraenglishfrenchngermanspanish
signaturesig-na-turesi-gna-turesi-gna-turesig-na-tu-re
AnalyseAnal-yseAna-lyseAna-ly-seAnaly-se
KongressKongress (sin cortes)Kon-gressKon-gressKon-gress
impossibleim-pos-si-bleim-pos-sibleim-pos-si-bleim-pos-si-ble
transatlantiquetransat-lan-tiquetrans-at-lan-tiquetrans-at-lan-ti-quetrans-atlan-ti-que

Aun con el idioma declarado, la decisión automática se equivoca con nombres propios y términos técnicos. Los remedios vienen en tres niveles. (1) Para que una palabra se parta siempre solo donde usted diga, indíquela en el preámbulo dentro de \hyphenation{...}, marcando los puntos permitidos con - y separando las palabras con espacios. Con los patrones por defecto (inglés estadounidense), manuscript no tiene ni un punto de corte, y por eso \hyphenation{man-u-script} es el ejemplo canónico desde hace décadas. (2) Para un caso puntual, ponga \- (un guion discrecional) dentro de la palabra, pero una palabra con \- solo podrá partirse ahí. (3) Para prohibir el corte por completo, envuélvala en \mbox{...}. Como mostraron las mediciones anteriores, \mbox{} retira todos los puntos de corte, que aquí es justo lo que se busca.

latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}          % loads the English hyphenation patterns
\hyphenation{man-u-script data-base FORTRAN}   % global exceptions
\begin{document}
We rewrote the manuscript in \mbox{FORTRAN} overnight,
and the data\-base held.
\end{document}

% \showhyphens{...} prints the break points to the log --
% the fastest way to see what the current patterns actually do.

babel cambia más que la separación: cambia el texto mismo

Dele un idioma a babel y sus usos tipográficos vienen con él. El francés es el caso más claro. Mida la misma entrada, Bonjour: oui!: sin babel mide 58,48572 pt de ancho y con \usepackage[french]{babel} mide 62,37366 pt, 3,88794 pt más. Extraiga el texto del PDF y la razón salta a la vista: la salida reza Bonjour : oui !. La tipografía francesa pone un espacio delante de los signos altos (:, ;, !, ?), y babel lo inserta por usted. Escriba \og ... \fg{} y obtendrá además las comillas angulares « ».

El alemán ofrece, mediante sus atajos de comillas, las comillas baja y alta „ … “, y el español o el italiano traen sus propios usos del mismo modo. Aquí acecha una trampa: en cuanto se cambia el idioma de babel, aparece espacio donde antes no lo había, de manera que el corte de líneas cambia por completo y la maqueta se mueve. Ese es el accidente detrás de «añadí una opción de idioma al responder a los revisores y los flotantes de páginas sin relación se han desplazado». Fije el idioma en el primer preámbulo, y en un documento plurilingüe nombre explícitamente el idioma principal con main=.

Versalitas y mayúsculas: \textsc{UNESCO} no sale pequeño

Para destacar una sigla o un nombre en texto occidental corriente, las versalitas alteran menos el color de la línea que una tirada de mayúsculas. El comando es \textsc{...}, y aquí anida una confusión frecuente. Una tipografía de versalitas es aquella en la que las posiciones de las minúsculas albergan mayúsculas pequeñas. Lo que se pasa a \textsc ha de ir, por tanto, en minúsculas. Medido en Computer Modern T1 de 10 pt, \textsc{unesco} mide 34,68042 pt mientras que \textsc{UNESCO} mide 46,09985 pt: el segundo es más ancho que un UNESCO normal (42,35077 pt). Querer reducir ha producido la más ancha de las tres.

Las versalitas tienen un segundo coste, del lado del PDF. Pase pdftotext sobre un PDF que compuso \textsc{unesco} y lo que devuelve es unesco: sigue en minúsculas. Los glifos son mayúsculas, pero la capa de texto contiene minúsculas. Un artículo que componga nombres de organismos o de normas en versalitas puede, por tanto, no aparecer cuando alguien los busque. Si importan los datos bibliográficos y la localización, componga las siglas en mayúsculas normales y reserve \textsc para los lugares donde el contraste sea realmente deseado. En cuanto a \MakeUppercase, los núcleos recientes tratan bien los acentos: \MakeUppercase{stra\ss e caf\'e na\"\i ve} da STRASSE CAFÉ NAÏVE, con la ß abriéndose en SS como manda el uso.

Un punto más: el mueble de tipos tiene límites. Computer Modern no tiene versalitas cursivas, así que \textit{\textsc{unesco}} produce LaTeX Font Warning: Font shape T1/cmr/m/scit undefined y sustituye calladamente por versalitas inclinadas. Es un aviso, no un error, y suele viajar hasta la publicación sin que nadie repare en él. Si de verdad hacen falta versalitas cursivas, la elección está entre otra tipografía —Latin Modern entre ellas— y renunciar a la combinación.

latex
\textsc{unesco}          % 34.68042pt -- real small caps
\textsc{UNESCO}          % 46.09985pt -- full-size caps in the SC font
UNESCO                   % 42.35077pt -- ordinary capitals

% pdftotext of the first line gives "unesco", in lowercase

\MakeUppercase{stra\ss e caf\'e}   % -> STRASSE CAFÉ

% English abbreviations keep the period, and the period is not a sentence end:
e.g.\ and i.e.\ and cf.\ and et al.\ -- see the punctuation page

Domar el margen derecho: microtype y las Overfull hbox

El paquete que sube un escalón entero la composición occidental es microtype. La sola línea \usepackage{microtype} pone en juego dos refinamientos microtipográficos. La protrusión de caracteres empuja un pelo más allá del margen la puntuación de final de línea y las letras redondas o inclinadas como o y A, produciendo un borde ópticamente regular. La expansión de fuente estira o comprime los glifos de cada línea una fracción de porcentaje y asume parte del trabajo que de otro modo haría el glue entre palabras. Qué funciones están disponibles depende del motor: microtype-xetex.def contiene los errores Font expansion does not work with xetex y Letterspacing currently doesn't work with xetex; bajo XeLaTeX, pues, cuente solo con la protrusión.

Aun así quedarán líneas que rebasen el borde derecho, y el mensaje Overfull \hbox del registro es la señal. TeX eligió esos cortes sopesando el párrafo entero: el algoritmo de Knuth–Plass, publicado por Donald Knuth y Michael Plass en Software: Practice and Experience en 1981. Un desborde no significa, pues, que el algoritmo se rindiera en esa línea, sino que ninguna disposición del párrafo completo le gustó más. Dos declaraciones regulan lo apretado de un párrafo: \sloppy tolera blancos más anchos para evitar el desborde, mientras que \fussy (el valor por defecto) mantiene estricto el espaciado y deja que el desborde ocurra. Para aflojar un único párrafo, envuélvalo en el entorno sloppypar. El orden importa, eso sí: \sloppy como último recurso. Cargue primero microtype, luego cambie una palabra de la redacción o añada un solo \-; suele bastar, y el párrafo queda más hermoso.

Cuando un autor japonés compone un documento en lengua occidental

Empiece a redactar un artículo en inglés en un entorno japonés y este suele ser el primer error: ! LaTeX Error: Unicode character   (U+3000) not set up for use with LaTeX. El culpable es un espacio de ancho completo; basta con uno que el método de entrada haya dejado a medio convertir para detener pdfLaTeX. (U+FF08) y (U+FF09) fallan igual, con not set up for use with LaTeX. Lo incómodo es que en pantalla resultan indistinguibles de un espacio de medio ancho o un paréntesis normal. Dedicar un minuto, el día en que se empieza el borrador en inglés, a buscar y eliminar espacios, paréntesis y comas de ancho completo libra de esta clase de errores para siempre.

Un segundo asunto es la elección de la clase de documento y del motor. Componga un documento en inglés con una clase japonesa como jsarticle, o con upLaTeX, y el modelo japonés de composición sigue detrás, interponiendo trabajo que el texto occidental no necesita. Para un manuscrito solo en inglés, pasar sin más a article con pdfLaTeX —o LuaLaTeX con fontspec— es la vía segura. A la inversa, en un manuscrito mayormente japonés con pasajes occidentales, el espaciado de fin de frase en esos pasajes tiende a salir desigual, de modo que \frenchspacing merece consideración (el mecanismo se expone en la página de puntuación). Y la protrusión y la expansión de microtype están hechas para el texto occidental; la composición japonesa la asume otro modelo, en herramientas como luatexja.

  • Limpie los caracteres de ancho completo el primer día. Busque el espacio de ancho completo U+3000, los paréntesis () y la coma de ancho completo, y bórrelos. De eso habla not set up for use with LaTeX.
  • Declare el idioma antes de empezar a escribir. Añadir \usepackage[english]{babel} más tarde cambia los cortes de línea y, con ellos, la posición de los flotantes.
  • Rompa las ligaduras a mano con {}. \/ y \kern0pt borran la separación silábica de la palabra. Bajo LuaLaTeX, encargue la tarea a selnolig.
  • Componga las siglas en mayúsculas normales. \textsc deja minúsculas en la capa de texto del PDF, así que es la herramienta equivocada para una palabra que quiere que encuentren.
  • \sloppy como último recurso. Primero microtype, luego una reformulación o un solo \-. Los Overfull \hbox se cuentan después, no antes.