La matemática científica sigue una convención internacional sobre qué se compone en itálica y qué en vertical (romana), y esa convención es ISO 80000-2, adoptada en Japón como JIS Z 8000-2. La regla cabe en una línea: lo que puede variar va en itálica; lo que tiene significado fijo, en vertical. Pero al escribir LaTeX con naturalidad, las reglas se reparten limpiamente en dos montones. \sin, \partial y los dígitos ya salen bien, mientras que la base e, la unidad imaginaria i, la diferencial d y la constante π salen en itálica por defecto, es decir, no conformes. Esta página ordena lo que pide la norma y cómo satisfacerlo en LaTeX con \mathrm{d}x, \uppi, isomath y el math-style=ISO de unicode-math, comprobando el resultado al extraer del PDF los códigos de carácter reales.
ISO 80000-2 y JIS Z 8000-2 (antes JIS Z 8201)
ISO 80000-2 (Quantities and units — Part 2: Mathematics) es la norma internacional que fija tanto el significado de los símbolos matemáticos como su composición, es decir, su tipografía. El texto vigente es la segunda edición de 2019 (la primera fue de 2009), con una versión corregida emitida en noviembre de 2021. Japón la adoptó como norma idéntica: JIS Z 8000-2:2022, «Quantities and units — Part 2: Mathematical signs and symbols», publicada en 2022, tras lo cual JIS Z 8201:1981, en uso durante más de cuarenta años, se retiró el 22 de marzo de 2022. Los libros de texto antiguos y las normas internas todavía citan JIS Z 8201, o su antecesora ISO 31-11, pero la referencia actual es ISO 80000-2 / JIS Z 8000-2.
¿Por qué una norma llega hasta la tipografía? Porque en matemáticas la tipografía misma lleva significado. Según el contexto, e puede ser una variable o la base del logaritmo natural, 2,718…; compón la variable en itálica y la constante en vertical y el lector las distingue sin anotación. La norma convierte esa distinción en regla mundial para que la notación no derive entre artículos, libros de texto y documentos técnicos, y esa deriva causa daño real: si el símbolo de una magnitud y el de una unidad comparten tipografía, nadie sabe si m es una masa o un metro. Componer matemáticas en LaTeX es un buen punto de partida, porque en modo matemático las letras se inclinan solas mientras que los nombres de funciones como \sin y los dígitos ordinarios son verticales desde el principio.
La regla central: variable es itálica, fijo es vertical
Una sola idea está en el centro de la norma: una magnitud cuyo valor puede cambiar con el contexto va en itálica; todo lo que tiene significado o valor unívocamente fijo va en vertical. Variables como x e y, parámetros como a y b que se tratan como constantes por el momento, y símbolos de función genéricos f y g no tienen valor fijado, así que son itálicos, que es precisamente el valor por defecto del modo matemático de LaTeX: la conformidad sale gratis. Del otro lado van en vertical las constantes matemáticas de valor establecido (e, i, π), el operador diferencial d y sus parientes (la parcial ∂ y demás), los nombres de funciones definidos sistemáticamente (sin, exp, ln, Γ) y los dígitos y símbolos de unidades. La postura de la norma es sencilla: ninguno de ellos es una variable, así que ninguno debe llevar la tipografía de las variables.
Cuando un caso es dudoso, la prueba rápida es: ¿podría renombrarse este símbolo con otra letra? Cambia x por t y la fórmula sigue significando lo mismo, así que es una variable y va en itálica. No puedes renombrar la d del dx de una integral: es un operador de significado fijo y por eso va vertical. La misma prueba explica por qué no se puede sustituir la s de \sin ni la k de \mathrm{kg}.
Vertical o itálica de un vistazo: hasta dónde llegan los valores por defecto de LaTeX
La respuesta corta: LaTeX ya satisface los nombres de funciones, el signo parcial ∂, los dígitos y las griegas mayúsculas, y deja en tus manos e, i, π, el operador diferencial d, las unidades y los vectores y tensores. En la tabla siguiente, «por defecto OK» significa que el modo matemático simple ya compone según la norma, y «requiere acción» que debes hacerlo vertical —o negrita itálica— explícitamente.
| Elemento | Según la norma | Cómo escribirlo en LaTeX |
|---|---|---|
variables | Variables y magnitudes x, y, t en itálica | x (valor por defecto del modo matemático — OK) |
parameters | Parámetros y funciones genéricas a, b, f, g en itálica | a, f(x) (por defecto — OK) |
\mathrm{e} | La base del logaritmo natural e va vertical | \mathrm{e}. Una e sola es itálica y no conforme. Requiere acción |
\mathrm{i} | La unidad imaginaria i (j en ingeniería eléctrica) va vertical | \mathrm{i} / \mathrm{j}. Requiere acción |
\uppi | La constante π va vertical | \uppi (de upgreek o unicode-math). Un \pi solo es itálico. Requiere acción |
\mathrm{d} | El operador diferencial d va vertical | \mathrm{d}x. Una d sola es itálica y no conforme. Requiere acción |
\partial | El signo de derivada parcial ∂ va vertical | \partial (ya vertical — OK) |
\sin | Las funciones definidas sin, exp, ln van verticales | \sin, \exp, \ln (ya verticales — OK) |
\Gamma | La griega mayúscula usada como función, Γ, va vertical | \Gamma (vertical por defecto en LaTeX estándar — OK; véase, no obstante, la sección siguiente) |
digits | Los dígitos 0–9 van verticales | 123 (ya verticales — OK) |
\unit | Los símbolos de unidades m, kg, s van verticales | \unit{} / \qty{}{} de siunitx. Requiere acción |
\vectorsym | Vectores y matrices a, A en negrita itálica | \bm{a}, o \vectorsym{a} de isomath. Requiere acción |
\tensorsym | Los tensores T van en sans serif negrita itálica | \tensorsym{T} de isomath. Requiere acción |
\mathrm{d}x: poner verticales la diferencial d y las constantes e e i
La respuesta a la pregunta más frecuente es breve: envuélvelo en \mathrm{…}. En modo matemático de LaTeX, e, i y d son simples letras y salen como variables itálicas; \mathrm{e}, \mathrm{i} y \mathrm{d} van verticales y se distinguen con claridad de una variable e o d. Dentro de una integral la costumbre es añadir un espacio fino, como en \int_0^1 x^2 \,\mathrm{d}x (la norma no legisla sobre la cantidad de espacio, pero la práctica es casi universal por legibilidad). Una corrección de paso: a veces se ve el comando \mathup, pero no lo define isomath. unicode-math define \mathup como alias de \mathrm, y kpfonts o mismath, entre otros, tienen el suyo. Medido bajo unicode-math, \mathrm{d}, \mathup{d} y \symup{d} produjeron los tres U+0064, una d vertical corriente, mientras que una d desnuda dio U+1D451, la d itálica matemática. \mathup es un sinónimo de \mathrm, no otra cosa.
Teclear \mathrm{d} cada vez es pesado y en algún sitio se te acabará olvidando. Lo habitual es, por tanto, definir un comando corto una sola vez, en el preámbulo. Con \newcommand{\dd}{\mathrm{d}} escribes \dd x en el cuerpo, y si la política cambia más adelante editas una línea y todo el documento la sigue. Si, en cambio, esparces \mathrm{d} literales por el texto, te quedarás sin recursos el día en que alguien pida de vuelta la d itálica. Cumplir la norma es, en la práctica, poner nombre a tus convenciones y mantenerlas en un único sitio.
% define once in the preamble
\newcommand{\dd}{\mathrm{d}} % upright differential operator
\newcommand{\eu}{\mathrm{e}} % base of the natural logarithm
\newcommand{\iu}{\mathrm{i}} % imaginary unit
% ...
\[
\eu^{\iu\uppi} + 1 = 0, \qquad
\frac{\dd}{\dd x}\,\eu^{x} = \eu^{x}, \qquad
\int_0^{\infty} \eu^{-x}\,\dd x = 1.
\]La trampa de \uppi: una π vertical arrastra otra tipografía
La vía habitual para una π vertical es \uppi del paquete upgreek, pero tiene un coste fácil de pasar por alto: upgreek usa Euler Roman por defecto. La línea \ExecuteOptions{Euler} del paquete lo dice, y en efecto, componer $\uppi$ tras \usepackage{upgreek} incrusta EURM10, una cara de la familia Euler diseñada por Hermann Zapf. Tu documento en Computer Modern lleva entonces un glifo de otro diseñador. Si eso molesta, \usepackage[Symbol]{upgreek} toma las letras de URW Symbol (StandardSymL). Cuál convenga depende de tu tipografía de texto, así que mira la salida antes de decidir.
Otra cosa que conviene saber: upgreek proporciona solo griego minúsculo. De \upalpha a \upomega está todo, pero \upGamma no está definido y escribirlo da ! Undefined control sequence. Es diseño, no olvido: en LaTeX estándar la griega mayúscula ya es vertical. Y si usas unicode-math no necesitas upgreek en absoluto: ese paquete genera automáticamente tanto \uppi como \upGamma, como abreviaturas de \symup{…}.
La griega mayúscula vertical es un uso de TeX, no una regla ISO
LaTeX estándar compone \Gamma, \Omega y las demás mayúsculas griegas en vertical. Es la tradición TeX de Knuth, no una exigencia de ISO 80000-2. Para la norma, una mayúscula griega usada como variable —un ángulo Θ, por ejemplo— debería inclinarse como cualquier variable, y solo una función de nombre establecido, como la función gamma Γ, puede quedarse vertical. El mecanismo es sorprendentemente simple: en LaTeX estándar \Gamma es \mathchar"7000, es decir, la familia 0, la familia vertical operators. fixmath (de Walter Schmidt), que isomath carga internamente, lo cambia a \mathchar"7100. Un solo dígito hexadecimal traslada la griega mayúscula a la familia 1, la familia letters en itálica matemática, y de paso permite que \mathbf y los demás alfabetos la alcancen.
Si prefieres no cargar todo isomath, un documento en pdfLaTeX suele obtener el mismo resultado mediante una opción de su paquete de fuentes matemáticas. newtxmath ofrece slantedGreek y uprightGreek; medido, \usepackage[slantedGreek]{newtxmath} cambió \Gamma a \mathchar"7100, frente a su valor por defecto \mathchar"7400. También existe una opción frenchmath para documentos que siguen el uso francés. Sea cual sea la vía, lo esencial es fijar la inclinación de la griega mayúscula una vez para todo el documento y no cambiarla. Si Θ es itálica en una página y vertical en la siguiente, el lector se preguntará si son dos magnitudes distintas.
Qué cambia realmente math-style=ISO: los puntos de código, medidos
En XeLaTeX o LuaLaTeX con unicode-math, toda la política tipográfica cambia con una sola clave: math-style=, cuyos valores son TeX (por defecto), ISO, french, upright y literal. El efecto se mide en lugar de suponerse. La tabla siguiente procede de componer $\Gamma\ \alpha\ A\ a\ \partial\ \pi$ bajo LuaLaTeX, extraer los caracteres del PDF y listar sus puntos de código Unicode. Al pasar a math-style=ISO, la gamma mayúscula se mueve visiblemente de U+0393 (vertical) a U+1D6E4 (itálica matemática). Ahí es exactamente donde chocan la norma y la tradición de TeX.
| Ajuste | Griega mayúscula Γ | Griega minúscula α | Parcial ∂ | Latina minúscula a |
|---|---|---|---|---|
math-style=TeX | U+0393 vertical | U+1D6FC itálica | U+1D715 itálica | U+1D44E itálica |
math-style=ISO | U+1D6E4 itálica | U+1D6FC itálica | U+1D715 itálica | U+1D44E itálica |
math-style=french | U+0393 vertical | U+03B1 vertical | U+2202 vertical | U+1D44E itálica |
math-style=upright | U+0393 vertical | U+03B1 vertical | U+2202 vertical | U+0061 vertical |
De esa tabla se siguen dos cosas. Primero, math-style=ISO deja π en itálica (U+1D70B). La norma quiere la constante π vertical, pero unicode-math no tiene forma de distinguir una π constante de una π variable, así que el \uppi (o \symup{\pi}) de la sección anterior sigue siendo necesario tras fijar el estilo ISO. Segundo, la mera existencia del valor math-style=french resulta reveladora: el uso tipográfico francés compone el griego vertical en ambas cajas, y también las capitales latinas. No hay una única política tipográfica «correcta»: hay tradiciones regionales, y el paquete lo reconoce convirtiendo una de ellas en opción. La negrita tiene su propia clave, bold-style=; con el valor por defecto TeX, \symbf{v} es negrita vertical (U+1D42F). Para los vectores en negrita itálica que pide la norma, fija bold-style=ISO o usa \symbfit (U+1D497).
% compile with xelatex or lualatex
\usepackage{amsmath}
\usepackage[math-style=ISO,bold-style=ISO]{unicode-math}
\setmathfont{STIX Two Math}
% ...
\[
\symup{e}^{\symup{i}\uppi} + 1 = 0, \qquad
\int_0^1 x^2 \,\symup{d}x = \frac{1}{3}, \qquad
\symbfit{v} = \symbfit{A}\,\symbfit{x}.
\]Vectores en negrita itálica, tensores en sans serif negrita itálica
La norma también prescribe una tipografía según el tipo de magnitud: vectores y matrices en negrita itálica, tensores en sans serif negrita itálica. La mayor trampa aquí es que el conocido \mathbf{v} produce negrita vertical, y no la negrita itálica que pide la norma. La solución rápida es \bm{v} del paquete bm, que añade peso conservando la inclinación. Para una implementación más fiel está isomath, que ofrece \vectorsym{v}, \matrixsym{A} y \tensorsym{T}: comandos nombrados por su significado. Esa nomenclatura rinde en la práctica: al releer tu fuente medio año después, \bm{A} no dice si A es una matriz, un vector o mero énfasis, mientras que \matrixsym{A} lo dice de un vistazo.
Ten en cuenta, eso sí, que isomath hace dos cosas en silencio. Primero, redefine \mathbf como negrita itálica (codificación OML, bx/it). Sigue la norma, pero cambia el aspecto de un manuscrito existente que usara \mathbf como negrita vertical, así que revisa todo el texto si lo adoptas a mitad de camino. Segundo, como carga fixmath internamente, la griega mayúscula pasa a itálica. Un detalle más: Computer Modern no tiene sans serif negrita itálica para matemáticas, de modo que usar \tensorsym deja en el registro una nota de sustitución de fuente —Font shape OML/cmbr/bx/it in size <10> not available—, que es información, no un error. En la prueba medida entró en su lugar la familia cmbright. En un documento lleno de tensores merece la pena mirar una vez el sustituto y decidir si te convence.
\usepackage{isomath} % loads fixmath: capital Greek becomes italic
% NOTE: isomath also redefines \mathbf as bold ITALIC (OML bx/it)
% ...
\[
\vectorsym{v} = \matrixsym{A}\,\vectorsym{x},
\qquad
\tensorsym{T}_{ij}.
\]Una política práctica: hasta dónde cumplir, dónde ceder
Seguir la norma al pie de la letra o inclinarse por la costumbre local depende del documento. La pregunta decisiva es clara: ¿exige la revista o la guía de estilo interna la conformidad con ISO/JIS? Si la exige, la política de abajo basta. Si no, una adopción parcial es del todo razonable: introducir solo \mathrm{d}, por ejemplo, mejora la legibilidad en cualquier campo. Elijas lo que elijas, mantén la política uniforme dentro de un documento. Nada desconcierta más rápido a un lector que el mismo símbolo en itálica en una página y vertical en la siguiente.
- Pon verticales e, i y d. Define
\dd,\eue\iucomo\mathrm{…}en el preámbulo y escribe solo los comandos cortos en el cuerpo. - Para una π estricta, usa
\uppideupgreek, pero su valor por defecto introduce formas de Euler Roman: compara con la opción[Symbol]antes de decidir. - Deja las unidades a siunitx. Evita los
\mathrm{…}a mano y usa\unit{}y\qty{}{}, que resuelven de oficio el espaciado y las unidades compuestas. - Vectores y matrices en negrita itálica. No
\mathbf(negrita vertical), sino\bm, o los\vectorsym/\matrixsym/\tensorsymconformes deisomath. - Nombres de funciones, signo parcial y dígitos no necesitan nada.
\sin,\cos,\log,\lim,\partialy123ya cumplen la norma. Para un nombre de función propio,\DeclareMathOperator{\rank}{rank}deamsmathda la misma forma vertical y el mismo espaciado. - Decide una vez sobre la griega mayúscula y no la muevas. Para inclinarla:
isomath(víafixmath), elslantedGreekdenewtxmath, omath-style=ISO.
Una última palabra sobre el paquete physics. Resulta atractivo porque entrega un \dd vertical para diferenciales y un \dv para derivadas, pero sus nombres de comando chocan notoriamente con otros paquetes. En una prueba, cargar physics y siunitx juntos los hizo pelearse por la definición de \qty, con el resultado ! Missing $ inserted. y ! Extra }, or forgotten $. (existe un physics-patch para repararlo, y últimamente se usan alternativas como el paquete derivative). Esa historia se cuenta entera en la página dedicada a physics. Las unidades en sí son asunto de la página de siunitx: acude allí para unidades compuestas o cifras significativas. Ser consciente de lo que una tipografía significa y aplicarlo de forma consistente: al final, en eso consiste todo el cumplimiento.