El signo de interrogación ? y el de exclamación ! están entre los poquísimos signos que traen pareja invertida: los ¿ y ¡ del español. En LaTeX se obtienen mediante una ligadura —basta teclear un acento grave después del signo— y, cosa menos sabida, esa ligadura funciona igual en la codificación original de Knuth, OT1, que en T1. El precio que OT1 paga por ello es que teclear < en texto corriente allí produce ¡. Esta página recorre, con mediciones, cómo introducir ¿ y ¡, por qué < y > salen mal, cómo ? y ! ensanchan el espacio siguiente, el espacio que el francés coloca antes de ellos, y el hecho de que en modo matemático ! es un factorial (\! no es ningún signo de exclamación).
Cómo obtener ¿ y ¡: la ligadura con acento grave y \textquestiondown
Teclee un acento grave justo después de ? y obtiene ¿; justo después de ! obtiene ¡. Es una ligadura de fuente: no interviene ningún paquete ni orden. Escríbalo como en el ejemplo de código de abajo y sale «¿Como estas?», sin rastro del acento grave en la salida. Si prefiere ser explícito, existen \textquestiondown y \textexclamdown, y miden exactamente lo mismo que la ligadura: en T1, 4,72107 pt para ¿ y 2,7771 pt para ¡. Los propios signos invertidos fueron propuestos por la Real Academia Española en el siglo XVIII, para que el lector supiera dónde empieza una pregunta larga antes de llegar a su final. Por eso un signo de cierre solo queda incompleto: omitir el de apertura se parece menos a un desliz tipográfico que a una falta de ortografía.
La relación entre ligadura y comando se invierte de una codificación a otra. En OT1, ot1enc.def define \textquestiondown como la ligadura misma (véase el código de abajo): es decir, el comando invoca la ligadura. La ligadura es lo primitivo y el comando, un alias. En T1 ocurre al revés: t1enc.def declara \DeclareTextSymbol{\textquestiondown}{T1}{190} y sitúa \textexclamdown en 189, apuntando directamente a posiciones reales de la fuente. El resultado es idéntico en ambos casos, así que use el que prefiera; pero \textquestiondown se busca y se reemplaza con más facilidad, y su intención se ve de un vistazo. Escribir ¿ y ¡ directamente en una fuente UTF-8 también vale: el LaTeX moderno espera UTF-8 y los deja pasar sin cambios bajo T1.
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
% ...
?`Como estas? !`Que bien!
\textquestiondown Como estas? \textexclamdown Que bien!
¿Como estas? ¡Que bien! % direct UTF-8 also works% ot1enc.def -- in OT1 the COMMAND is defined as the ligature
\DeclareTextCommand{\textexclamdown}{OT1}{!`}
\DeclareTextCommand{\textquestiondown}{OT1}{?`}
% t1enc.def -- in T1 they are real slots in the font
\DeclareTextSymbol{\textexclamdown}{T1}{189}
\DeclareTextSymbol{\textquestiondown}{T1}{190}En OT1, < y > salen como ¡ y ¿: dónde viven los signos invertidos
Porque las fuentes OT1 no tienen glifos para < y > en absoluto, y ¡ y ¿ ocupan esas posiciones de código. Compile OT1 angle: <a> and 2<3 and x>y. sin \usepackage[T1]{fontenc}, pase el resultado por pdftotext y volverá OT1 angle: ¡a¿ and 2¡3 and x¿y., sin error ni aviso alguno. Cargue T1 en la misma fuente y <a> se queda en <a>. Es la clase de accidente que nunca falla en voz alta: en cuanto escribe un operador de comparación o un ángulo en texto corrido, se convierte calladamente en otro carácter.
Hay tres remedios, y este es el orden en que conviene probarlos. Primero, añadir \usepackage[T1]{fontenc}: T1 tiene glifos reales de < y > y, de paso, divide correctamente las palabras con letras acentuadas, así que cualquier documento en lengua occidental acaba necesitándolo. Segundo, escribir $<$ y $>$ en modo matemático, que además es lo correcto semánticamente para un operador de comparación. Tercero, usar \textless y \textgreater, apropiado cuando se quiere nombrar el símbolo de forma explícita. Leído al revés, este comportamiento es una buena señal: si en su texto aparecen ángulos, tiene un motivo más para cargar T1.
El espacio tras ? y ! se ensancha: cómo se juzgan finales de frase
? y ! llevan el mismo factor de espacio 3000 que un punto, de modo que convierten el espacio siguiente en espacio de fin de frase. Medido, wow! Next da 47,2107 pt mientras que wow!\ Next, con el espacio interpalabra escrito explícitamente, da 46,09985 pt; esa diferencia de 1,11085 pt es el espacio extra de fin de frase. Terminar una frase con ? o ! da, sin esfuerzo, exactamente la anchura de un punto. La otra cara: el mismo hueco aparece cuando el signo de exclamación va en medio de la frase. Tras una construcción como Wow! he said, o un nombre propio como Yahoo!, escriba el espacio de forma explícita —Yahoo!\ Inc.— o desactive del todo el espacio de fin de frase con \frenchspacing.
El francés pone espacio antes de ? y !: babel inserta 1,66626 pt medidos
La ortografía francesa pone un espacio antes de ? ! ; :, y cargar babel con [french] lo inserta lo haya escrito usted o no. La cantidad está escrita con todas sus letras en french.ldf: \FBthinspace es \hskip .5\fontdimen2\font, es decir, medio espacio interpalabra, que a 10 pt son 1,66626 pt. Medido, Quoi da 21,10596 pt y Quoi! da 25,54932 pt, una diferencia de 4,44336 pt; réstele los 2,7771 pt de ancho del ! en T1 y quedan exactamente 1,66626 pt. Los dos puntos son la excepción: \FBcolonspace es \space, un espacio interpalabra completo de 3,33252 pt. Medido, Non da 18,05115 pt y Non: da 24,16077 pt; descontada la anchura del :, quedan precisamente 3,33252 pt.
La conclusión práctica es limpia. En un original francés, no escriba usted el espacio previo al signo. Lo inserta babel, y el espacio que inserta es inseparable, lo que además evita que un ? solitario caiga al principio de la línea siguiente. Teclear un espacio a mano duplica el hueco y crea, encima, un punto por donde la línea puede cortarse. A la inversa, ninguna otra lengua pone espacio antes de ? o !: el inglés, el alemán y el español los pegan a la palabra anterior. En un documento multilingüe, lo más seguro es dejar esa diferencia al cambio de idioma de babel.
\usepackage[french]{babel}
% ...
% babel adds the space itself; typing one is unnecessary
Vraiment? Voici: ceci; cela! % prints as: Vraiment ? Voici : ceci ; cela !En modo matemático ! es un factorial, y \! no es un signo de exclamación
En modo matemático, ! no inserta espacio a ningún lado. fontmath.ltx declara \DeclareMathSymbol{!}{\mathclose}{operators}{"21}, lo que convierte a ! en un símbolo de cierre (\mathclose) que se pega a lo que le precede. Medido, $ab$ da 9,57755 pt y $a!b$ da 12,35533 pt: una diferencia de 2,77778 pt, exactamente el ancho del glifo !. Ni un punto escalado de espacio a ninguno de los dos lados. Por eso el factorial n! se compone ceñido, y $n!!$ se limita a añadir otro glifo (11,55792 pt), de modo que el doble factorial tampoco requiere nada especial. ? está declarado \mathclose exactamente igual.
Y aquí está la trampa que tiende el nombre. \! no es un signo de exclamación: es un espacio fino negativo. Medido, los 9,57755 pt de $ab$ pasan a 7,91092 pt en $a\!b$: encoge 1,66663 pt. Es lo opuesto exacto de \, (espacio fino positivo), una orden de ajuste para juntar símbolos. Si solo quiere un signo de exclamación en una fórmula, escriba ! sin barra invertida. Como \! aparece sobre todo en construcciones del tipo \int\!\int para apretar signos de integral, teclearlo creyendo escribir un factorial rompe las cosas de forma desconcertante: el signo desaparece y los símbolos vecinos se cierran.
\[
\binom{n}{k} = \frac{n!}{k!\,(n-k)!}, \qquad (2n)!! = 2^n n!
\]
% \! is a NEGATIVE thin space, not an exclamation mark:
\[ \int\!\!\int_D f(x,y)\,dx\,dy \]La interrobang ‽ y los !! ?? dobles: cuando se quieren apilar signos
!! y ?? se teclean tal cual: no hace falta ninguna orden y no salta ninguna ligadura. Y el carácter único que significa «pregunta y asombro a la vez» —la interrobang ‽— forma parte, sorprendentemente, del aparato estándar de LaTeX. Es \textinterrobang en la codificación TS1, disponible en cuanto se carga textcomp, declarado en la posición 148 de ts1enc.def (la invertida \textinterrobangdown ocupa la 149). Compílelo y pase el resultado por pdftotext: sale un ‽ auténtico. Mide 4,72107 pt, lo mismo que un ?.
La interrobang la ideó en 1962 Martin K. Speckter, al frente de una agencia de publicidad estadounidense; nació del deseo de un redactor de escribir «una pregunta hecha con asombro» en un solo carácter, y llegó a fundirse como tipo de plomo y a fabricarse como esfera de máquina de escribir. Nunca cuajó como puntuación corriente, pero sobrevive en Unicode como U+203D y en LaTeX a través de TS1. Con franqueza, casi nunca hay ocasión de usarla en la práctica; lo mismo vale para apilar !! o ?? en prosa académica, donde el consejo habitual es reforzar la frase en lugar del signo. Aun así, conviene saber que existe una orden dedicada para el día en que haga falta.
Tabla de entrada: qué se teclea y qué sale
| Entrada | Salida | Notas |
|---|---|---|
? | ? | signo de interrogación occidental; sfcode 3000, el espacio siguiente pasa a ser de fin de frase |
?` | ¿ | ligadura; funciona igual en OT1 y T1, y el acento grave no se imprime |
!` | ¡ | ligadura; salida idéntica a \textexclamdown |
\textquestiondown | ¿ | comando explícito; en T1, un glifo real en la posición 190 |
\textexclamdown | ¡ | comando explícito; en T1, un glifo real en la posición 189 |
\textinterrobang | ‽ | requiere textcomp (TS1); posición 148 |
$n!$ | n! | factorial; ! es \mathclose, así que no se añade espacio a ningún lado |
\! | (espacio negativo) | no es un signo de exclamación; orden de ajuste que cierra 1,66663 pt en fórmulas |
? ! | ? ! | signos japoneses de ancho completo; no teclee un espacio de ancho completo tras ellos |
Los ? y ! japoneses son de ancho completo: no teclee espacio tras ellos
El japonés emplea los ? y ! de ancho completo, y no se teclea ningún espacio de ancho completo tras ellos. Los motores compatibles —upLaTeX, o LuaLaTeX con luatexja— los tratan como signos de puntuación y reservan automáticamente el blanco posterior. Los «Requirements for Japanese Text Layout (JLReq)» del W3C especifican igualmente que un signo de interrogación o exclamación de fin de frase ocupa un cuadratín y va seguido de un cuadratín de blanco, salvo que le siga inmediatamente un corchete de cierre, en cuyo caso se compone junto. Añadir un espacio de ancho completo propio lo superpone al automático y duplica el hueco. La gestión del blanco sobrante cuando un ? cae al final de línea también corre a cargo de la mayoría de clases y paquetes. Deje el blanco de puntuación al motor: esa es la regla del lado japonés.
\documentclass{ltjsarticle}
\begin{document}
本当ですか? はい、できました! 次に進みましょう。
\end{document}- En originales de predominio japonés, unifique en
?y!de ancho completo. Un?o!de medio ancho perdido cambia el comportamiento en fin de línea y el espaciado, aunque el tono de la frase sea idéntico. - Deje en medio ancho las citas occidentales, el código y los nombres propios. Los signos citados de una fuente se tratan aparte de la política del cuerpo japonés.
- En español, revise los signos de apertura. Escribir solo el
?o!de cierre y olvidar¿o¡es un error de lengua, no de estética. - En francés, nunca inserte el espacio a mano. Déjelo en manos de
babelcon[french]y convierta en norma de equipo «ningún espacio tecleado antes del signo». - En un documento que sigue en OT1, sospeche de los ángulos. Un
<o>en texto corrido se convierte calladamente en ¡ o ¿: compruebe primero si está\usepackage[T1]{fontenc}.