Comillas y rayas

La raya — se llama en inglés em dash porque mide exactamente un cuadratín, es decir, el ancho del propio cuerpo de la letra. Pídale a LaTeX que la mida en un documento de 10 pt y responderá 9,99756 pt: ni un punto escalado de diferencia con \quad. El guion -, el semicuadratín --, la raya --- y el menos matemático $-$ son cuatro caracteres distintos que solo se parecen; difieren en anchura y hasta en la fuente de la que salen. Esta página mide los cuatro uno junto a otro y decide cuándo escribir --, cuándo --- y cuándo hay que entrar en modo matemático. (Las comillas en sí las trata la página de citas.)

-, --, --- y $-$ son cuatro caracteres distintos: las anchuras medidas

Los cuatro son glifos distintos y miden 3,33252 pt, 4,99878 pt, 7,7778 pt y 9,99756 pt. Las cifras salen de un article de 10 pt con codificación T1, midiendo cada uno con \sbox0{-}\typeout{\the\wd0}. La sorpresa está en el orden. Que el guion sea más corto que el semicuadratín y este más corto que la raya es lo esperable; pero el menos matemático queda entre el semicuadratín y la raya. Un menos no es un trazo corto: es un signo bastante largo, diseñado para equilibrarse con = y + dentro de una fórmula.

EntradaNombreAnchura (10 pt, T1)Carácter en el PDF
-guion3,33252 pt (1/3 de cuadratín)U+002D
--semicuadratín4,99878 pt (1/2 cuadratín)U+2013
$-$signo menos (matemáticas)7,7778 ptU+2212
---raya9,99756 pt (1 cuadratín = \quad)U+2014

Los nombres «en» y «em» suelen explicarse por las anchuras de las letras N y M, pero esa no es la definición moderna. Mida M en la misma fuente de 10 pt y obtendrá 9,16443 pt; N da 7,49817 pt. La raya (9,99756 pt) es más ancha que una M, y el semicuadratín (4,99878 pt) mucho más estrecho que una N. Un cuadratín no es una anchura de letra: es la anchura del cuerpo del tipo, es decir, el propio tamaño de la letra, y el semicuadratín es su mitad. Del plomo solo sobrevivieron los nombres. El menos matemático, por su parte, ni siquiera está en la fuente de texto. Como declara fontmath.ltx con \DeclareMathSymbol{-}{\mathbin}{symbols}{"00}, el menos sale de la posición 0 de la fuente de símbolos matemáticos: cmsy en Computer Modern. De modo que el «menos» que se escribe -3 en el texto corriente es, ya desde el dibujo, otro carácter.

latex
% measure them yourself: put this in the preamble-less body
\sbox0{-}\typeout{hyphen  = \the\wd0}
\sbox0{--}\typeout{en dash = \the\wd0}
\sbox0{$-$}\typeout{minus   = \the\wd0}
\sbox0{---}\typeout{em dash = \the\wd0}
\sbox0{\quad}\typeout{one em  = \the\wd0}

Cuál usar: -- para intervalos, --- para incisos, - para compuestos

La regla es: semicuadratín -- para intervalos y parejas, raya --- para un inciso que interrumpe la frase y un solo guion - para unir palabras. pages 5--10, 1939--1945 y the Einstein--Podolsky--Rosen paradox significan «de A a B» o «A emparejado con B», así que llevan semicuadratín. Los compuestos como well-known o state-of-the-art, en cambio, conservan el guion; nunca los «corrija» a --. Un reemplazo global de - por -- arruina todos los compuestos del manuscrito, así que restrinja siempre el patrón, por ejemplo a dígito-dígito.

El espaciado de la raya es opuesto según la lengua. El inglés americano (estilo Chicago) la cierra sin espacio alguno: a break---an aside---fits here. Muchas editoriales británicas, y también el alemán (Gedankenstrich) y el francés (tiret), hacen lo contrario y usan un semicuadratín con espacios: ein Einschub -- so wie hier --. Así pues, «--- pegado» frente a «-- espaciado» no es cuestión de gusto sino del uso tipográfico de cada lengua. Elija uno para el documento y manténgalo; un original que mezcla ambos parece una traducción a medias. El menos matemático es la excepción que no depende de la lengua: siempre es $-$, en modo matemático.

latex
See pages 5--10 and the 1939--1945 volumes.
A break---an aside---fits here in US English.
Ein Einschub -- so wie hier -- steht mit Spatien.
The value is $-3$, and $a - b$ uses the same minus.

\textendash y \textemdash: cuándo hace falta la forma de comando

La salida es idéntica. \textendash mide 4,99878 pt y \textemdash 9,99756 pt: ni un punto escalado de diferencia respecto a -- y ---. ¿Para qué existen entonces los comandos? Porque -- y --- están implementados como ligaduras de fuente. En T1 los guiones son caracteres reales en las posiciones 21 y 22 (t1enc.def), y los comandos son la vía que los recupera directamente, sin pasar por el mecanismo de ligaduras. Donde las ligaduras están desactivadas, o cuando se pasa un guion como argumento a una macro, la forma de comando es la fiable.

Donde el mecanismo de ligaduras muerde es en \texttt. La tipografía de máquina de escribir T1 (por defecto sftt1000 de cm-super en TeX Live 2024) lleva una ligadura --, de modo que \texttt{5--10} sale calladamente como 5–10, con semicuadratín. Peor todavía: \texttt{a---b} da a–-b, un semicuadratín seguido de guion, porque la fuente de máquina de escribir no tiene ligadura de raya. Bajo OT1, cmtt10 no conoce esas ligaduras y la entrada sobrevive; pero un código cuya salida cambia al cambiar de codificación es peligroso. Componga nombres de archivo, líneas de órdenes y nombres de opciones con \verb, no con \texttt, o rompa la ligadura con un grupo vacío: \texttt{5-{}-10}. El entorno verbatim y \verb imprimen 5--10 tal cual, incluso en T1.

latex
% T1: this silently becomes an en dash
\texttt{ls --color}          % prints: ls –color
% either break the ligature ...
\texttt{ls -{}-color}
% ... or use verbatim, which never applies ligatures
\verb|ls --color|

La línea se corta tras un guion: \exhyphenpenalty y cómo impedirlo

TeX considera lícito cortar la línea justo después de un guion o raya explícitos. La penalización que aplica es \exhyphenpenalty, cuyo valor por defecto es 50 (compruébelo con \the\exhyphenpenalty). Como \hyphenpenalty, la penalización por cortar dentro de una palabra dividida, también es 50, los cortes en medio de 5--10 o de well-known son habituales. Un intervalo cuyo 10 ha caído al principio de la línea siguiente obliga al lector a detenerse un instante. El remedio más simple es encajarlo: \mbox{5--10}. Con amsmath cargado, \nobreakdash- prohíbe el corte solo tras ese guion.

latex
\usepackage{amsmath}   % provides \nobreakdash
% ...
See pages \mbox{5--10} for the proof.
The X\nobreakdash-ray results are attached.

\slash y \-: decirle a TeX dónde se permite cortar

\slash imprime el mismo glifo que / y además permite un corte de línea justo después. Su definición en latex.ltx cabe en una línea —\def\slash{/\penalty\exhyphenpenalty}—: una barra con la misma penalización que un guion. Medidos, a\slash b y a/b dan ambos 15,55176 pt: la anchura no cambia. Cuando una pareja larga como input\slash output se desborda al final de la línea, una / desnuda no deja a TeX ningún punto de corte y aparece el aviso Overfull \hbox. \slash abre un pliegue exactamente ahí.

La otra herramienta es el guion opcional \-: una marca que significa «si cortas aquí, imprime un guion», y que no produce nada si no hay corte. Colocar uno en un nombre propio o un compuesto que los patrones de división de TeX no saben partir suele eliminar un Overfull \hbox de golpe. Hay un efecto secundario. Medido, man\-uscript da 48,96027 pt frente a 48,68256 pt de manuscript a secas: 0,27771 pt más, porque el kern en esa posición queda anulado. Así que no espolvoree \- por toda la palabra; ponga uno en la palabra que lo necesita. Para registrar divisiones con \hyphenation y para el ajuste de cortes de línea en general, vea la página sobre ajuste de saltos de línea.

latex
The input\slash output layer is documented separately.
This manu\-script uses a discretionary hyphen once.

Distinguir los cuatro en el PDF: comprobar con pdftotext

En lugar de comparar formas a ojo, es más fiable extraer el texto del PDF y comprobar los puntos de código. pdftotext file.pdf - envía el cuerpo del texto a la salida estándar, donde los cuatro trazos aparecen como cuatro caracteres Unicode distintos: - (U+002D), (U+2013), (U+2014) y (U+2212). Pase por pdftotext una línea con - -- --- $-$ y recuperará exactamente - – — −. Después, un grep sobre esa salida localiza mecánicamente todos los intervalos aún compuestos con guion simple y todo signo menos perdido en el texto corriente. Es más rápido que leer el código fuente y el resultado puede entregarse a un revisor.

terminal
# ranges still set with a plain hyphen
pdftotext paper.pdf - | grep -nE "[0-9]-[0-9]"

# a minus sign that leaked into running text
pdftotext paper.pdf - | grep -n "−"
  • Repasar los intervalos. Busque dígito-dígito en el código fuente (años, páginas, números de figura) y convierta los intervalos reales en --. Deje en paz los compuestos como well-known.
  • Repasar los signos menos. En texto corrido, -3 y -0.5 deben pasar a $-3$ y $-0.5$ cuando son números. En el PDF, compruebe que ninguno sobreviva como U+002D.
  • Mirar dentro de \texttt. Bajo T1, \texttt{--} se convierte en semicuadratín. Sustituya líneas de órdenes y nombres de archivo por \verb.
  • Fijar el espaciado. --- pegado o -- espaciado: elija según la lengua del documento y no deje mezclas.

El tema hermano, las comillas —la convención de las dos comillas invertidas que produce “ ”, por qué escribir " sale mal, \enquote de csquotes y las „ “ y « » propias de cada lengua—, se trata por completo en la página de citas. Limpiar prosa pegada casi siempre implica mirar comillas y guiones a la vez, así que tenga las dos páginas juntas.