amsmath / AMSFonts

\usepackage{amsmath} no es una línea que solo añada cosas. También quita. En cuanto se carga amsmath, el \[ de LaTeX queda reemplazado por el entorno equation*, equation y cases se redefinen, el \pmatrix heredado de plain TeX se detiene con un error y \over empieza a producir un aviso. No es un surtido de comodidades sino un cambio de normas de composición matemática. Esta página explica en qué consiste ese cambio y las órdenes que funcionan en cualquier entorno: \DeclareMathOperator, \text, \intertext, \substack, \dfrac. Los entornos de alineación tienen su propia página.

Qué cambia realmente al cargar amsmath

Primero: amsmath no es un paquete único sino un conjunto. Cerca del comienzo de amsmath.sty hay tres líneas \RequirePackage que traen amstext (la orden \text para palabras dentro de una fórmula), amsbsy (negrita matemática con \boldsymbol) y amsopn (\DeclareMathOperator y la maquinaria de los nombres de operadores). Una sola línea, por tanto, trae consigo todas las órdenes de esta página.

latex
\usepackage{amsmath}

Vienen luego las sustituciones. Las dos últimas líneas de amsmath.sty son \DeclareRobustCommand{\[}{\begin{equation*}} y \DeclareRobustCommand{\]}{\end{equation*}}: las órdenes básicas de display quedan cambiadas por un entorno de amsmath. En el mismo fichero, equation, cases, matrix y pmatrix pasan todos por \renewenvironment, y \nonumber también se redefine. Es precisamente por estas sustituciones que \tag, \qedhere y el desplazamiento automático de los números funcionan. A la inversa, escribir $$$$ esquiva esa capa, y con ella toda la maquinaria de amsmath.

También se quitan cosas. Traiga costumbres de plain TeX y se detienen. $\pmatrix{a&b\cr c&d\cr}$ da ! Package amsmath Error: Old form \pmatrix should be \begin{pmatrix}., y \cases{…} recibe la misma reprimenda. 1 \over 2 todavía compila, pero con Package amsmath Warning: Foreign command \over; \frac or \genfrac should be used instead. Estos tres mensajes son los primeros que aparecen al convertir un manuscrito antiguo, y los tres dicen lo mismo: pase a la forma nueva.

amsmath puede intervenir con tanta profundidad porque está clasificado como paquete LaTeX required. El README que lo acompaña indica que el mantenimiento de amsmath pasó de la AMS al LaTeX Project a partir de 2016; el aviso de copyright de amsmath.sty dice «2016–2023 LaTeX Project and American Mathematical Society» y señala al LaTeX Project como responsable actual. En la práctica forma parte del propio LaTeX, y por eso mismo puede reemplazar órdenes estándar.

\DeclareMathOperator: por qué el nombre de un operador no puede ir en cursiva

En modo matemático las letras son variables, así que teclear rank A da el producto de r, a, n, k y A. LaTeX predefine \sin, \log, \lim y algunas decenas más de nombres de operadores, pero rank no está entre ellos. Se podría pensar que basta con apagar la cursiva mediante \mathit{rank}. No basta: corregir la forma no corrige el espaciado. Midámoslo. \operatorname{rank} A deja 1,66pt entre rank y A. \mathit{rank} A deja 1,07: solo la corrección de cursiva, sin ningún espacio de operador. Y \mathrm{log} x sale como «logx», pegado.

Abra amsopn.sty y una línea lo explica. \operatorname se expande a \mathop{…\operator@font…}. Un nombre de operador no es, por tanto, una simple cadena en redonda: queda registrado como átomo Op en el sistema de clases de símbolos de TeX. La tabla de espaciado de TeX pone \thinmuskip (3mu) entre un Op y un Ord, y de ahí viene el hueco entre «log» y «x» en \log x. \mathrm solo cambia la forma de las letras; el átomo sigue siendo Ord, así que no aparece espacio. \DeclareMathOperator no es una herramienta cosmética sino una declaración de significado.

latex
% in the preamble
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator*{\argmax}{arg\,max}

% in the body
\[
  \rank A \le n, \qquad
  \hat{x} = \argmax_{x \in S} f(x)
\]

Para un uso único basta \operatorname{rank} A; para un operador que emplea a menudo, déle un nombre en el preámbulo. La estrella decide dónde va el subíndice. Sin ella, el subíndice queda abajo a la derecha, como en \log; con ella, justo debajo, como en \lim, \sup y \max, siempre que se esté en estilo display. Medido sobre el ejemplo anterior, el x ∈ S de \argmax_{x \in S} queda centrado bajo «arg max», mientras que la k de \rank_{k} va abajo a la derecha de «rank». Tenga en cuenta que \DeclareMathOperator es solo de preámbulo: en el cuerpo obtendrá ! LaTeX Error: Can be used only in preamble. seguido de un ! Undefined control sequence. para la orden que nunca se definió.

Si el \, de la definición extraña, mire cómo escribe la AMS los suyos. amsopn.sty define \limsup como lim\,sup, \liminf como lim\,inf e \injlim como inj\,lim. Unir con un espacio fino las dos palabras de un nombre de operador es la norma de la casa AMS, y arg\,max no hace más que seguirla. \operatorname tiene además una tarea oculta: reescribe temporalmente los códigos matemáticos de -, ., :, / y * dentro de su argumento para que un guion se imprima como guion de verdad y no como signo menos. Medido, \operatorname{ess-sup} sale como la palabra única «ess-sup», mientras que \mathrm{ess-sup} f sale como «ess − sup f», con 2,22pt de espacio de operador binario a cada lado de un signo menos: distinto significado y distinta imagen.

\text, \mathrm o \mbox: elegir entre tres redondas

Hay tres maneras de meter letras rectas en una fórmula, y responden a preguntas distintas. \text{…} (de amstext) inserta prosa. Su contenido se compone con la fuente y el espaciado del texto, y los espacios tecleados sobreviven: el espacio final de \text{for all } aparece de verdad en la salida. \mathrm{…} pone símbolos matemáticos en redonda. Dentro se sigue en modo matemático, así que los espacios desaparecen; sirve para símbolos rectos como el \mathrm{d}x de un diferencial o una unidad. \mbox{…} es el «mete esto en una caja» general y nunca se diseñó para las matemáticas.

latex
\[
  f(x) = x^2 \quad \text{for all } x \in \mathbb{R},
  \qquad v_{\text{max}} = 3,
  \qquad \int f(x)\,\mathrm{d}x.
\]

Lo que hace a \text mejor que \mbox es que sigue el tamaño de su entorno. Su definición en amstext.sty emplea \mathchoice para dar un cuerpo propio a cada uno de los cuatro contextos: display, texto, subíndice y segundo subíndice. El «max» de v_{\text{max}} de arriba mide 6,19pt de alto, el cuerpo de subíndice, mientras que \mbox{max} mide 8,85pt y se instala en el subíndice con el tamaño del texto. Hay una segunda propiedad práctica: \text se repliega sobre \mbox cuando se invoca en modo texto, lo que lo hace seguro dentro de una macro que pueda expandirse en cualquiera de los dos modos.

\intertext y \substack: interrumpir sin romper la alineación

Quiere una línea de explicación en medio de un align, y si cierra el entorno, escribe la frase y lo vuelve a abrir, la alineación de antes y de después ya no coincide. \intertext{…} lo resuelve. Medido, en un align partido por un \intertext ambos = caen en la posición horizontal 291,11pt, mientras que la frase intercalada se compone como un párrafo normal que empieza en el margen izquierdo. El mecanismo es sencillo: en amsmath.sty, \intertext emite, desde dentro de un \noalign, «espacio bajo la fórmula, una \vbox con el texto, espacio encima». El texto nunca abandona la alineación, y las columnas conservan su posición. Usado fuera de un entorno de alineación produce ! Package amsmath Error: Invalid use of \intertext.

latex
\begin{align}
  A &= B + C \\
  \intertext{expanding $C$ gives}
  A &= B + D + E
\end{align}

\[
  \sum_{\substack{0 \le i \le m \\ 0 < j < n}} a_{ij}
\]

\substack{…} es una herramienta menor con el mismo instinto. Apila varias líneas de condiciones bajo un operador grande como una suma o un producto, con líneas separadas por \\. En el ejemplo anterior, «0 ≤ i ≤ m» y «0 < j < n» forman dos filas, y la medición confirma que ambas quedan centradas bajo el signo de suma. El interior sigue en modo matemático, así que relaciones como \le funcionan igual. Si prefiere las líneas alineadas en vez de centradas, el entorno casi idéntico subarray admite una letra de alineación como l.

\dfrac, \binom, \boldsymbol: escribir sin depender del contexto

\frac es LaTeX estándar, pero su tamaño lo decide el contexto en el que cae. amsmath añade versiones que ignoran el contexto: \dfrac{…}{…} es siempre estilo display (grande) y \tfrac{…}{…} siempre estilo texto (pequeño). Use \dfrac cuando una fracción en texto corrido deba leerse bien, y \tfrac cuando una parte de un display deba encogerse. Para fracciones continuas existe \cfrac{…}{…}, que mantiene legible cada nivel por profunda que sea la anidación. Los coeficientes binomiales son \binom{n}{k}, con \dbinom y \tbinom como pareja de estilo fijo.

latex
\[
  \binom{n}{k} = \dfrac{n!}{k!\,(n-k)!},
  \qquad \boldsymbol{\nabla} \cdot \boldsymbol{E} = \rho / \varepsilon_0.
\]

Que \boldsymbol aparezca en esta misma sección tiene razón de ser. La física y el análisis vectorial suelen querer letras en negrita, pero \mathbf{E} da una negrita recta y no hace nada con las letras griegas. \boldsymbol{E}, de amsbsy (que amsmath trae consigo), conserva la cursiva y añade el grosor, y también funciona sobre símbolos, como en \boldsymbol{\nabla}. Si su campo escribe los vectores en negrita cursiva, use \boldsymbol; si escribe matrices y tensores en negrita recta, use \mathbf. Elija según la convención del campo. \numberwithin{equation}{section}, que vincula los números de ecuación a los de sección, también es de amsmath, pero la numeración corresponde a la página «Fórmulas en display, alineadas y numeradas».

amssymb y AMSFonts: el compañero que añade símbolos

El reparto es claro: amsmath añade maquinaria de composición, amssymb añade símbolos que se pueden escribir. amssymb define todos los símbolos de las fuentes AMS msam y msbm, poniendo al alcance cientos de glifos ausentes de LaTeX estándar: \leqslant y \geqslant (desigualdades inclinadas), \nleq y \subsetneq, \therefore y \because, \square y \blacksquare, \varnothing. Carga amsfonts internamente, así que nunca hace falta nombrar amsfonts uno mismo.

latex
\usepackage{amssymb}

\[
  \mathbb{R} \subset \mathbb{C}, \qquad
  \mathfrak{g} = \operatorname{Lie}(G)
\]

AMSFonts trae además dos alfabetos matemáticos: la negrita de pizarra con \mathbb{…} y la Fraktur con \mathfrak{…}. Aquí acecha una trampa que falla en silencio. La negrita de pizarra solo tiene mayúsculas, y \mathbb{k} no da error. En amssymb.sty, la posición "6B de la fuente AMSb está asignada a \daleth; al compilar no sale una k minúscula sino la letra hebrea daleth, ℸ. Si necesita una k de pizarra, use el \Bbbk previsto para ello. La Fraktur, en cambio, tiene ambas cajas, así que \mathfrak{g} para un álgebra de Lie y \mathfrak{p} para un ideal primo están ambas disponibles.

Las tres líneas que van en el preámbulo

En cualquier documento con matemáticas, ponga estas tres líneas juntas: amsmath (la maquinaria de composición), amssymb (símbolos, más negrita de pizarra y Fraktur) y amsthm para teoremas y demostraciones. El orden es bastante libre, pero amsthm va después de amsmath, porque funciones como \qedhere intervienen en las estructuras de display de amsmath.

document.tex
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\begin{document}
\[
  \zeta(s) = \sum_{n=1}^{\infty} \frac{1}{n^{s}}, \qquad s \in \mathbb{C}
\]
\end{document}
PaqueteFunciónQué proporciona
amsmathmaquinaria de composición matemáticaentornos de alineación, \text, \operatorname, \dfrac, \binom, \boldsymbol
amssymbsímbolos y alfabetos matemáticoscientos de símbolos msam y msbm, \mathbb, \mathfrak (carga amsfonts)
amsfontssolo fuentes\mathbb y \mathfrak, sin símbolos adicionales
amsthmentornos de teoremas y demostraciones\newtheorem, el entorno proof, \theoremstyle, \qedhere

amsmath proporciona además los entornos de matrices (pmatrix, bmatrix y los demás) y delimitadores de tamaño automático, pero eso corresponde a las páginas «Matrices y arreglos» y «Sumas, integrales y operadores grandes». Una última cosa: como los entornos en display de amsmath leen su contenido como un argumento de macro delimitado, una línea en blanco dentro de uno es un error. Las notas técnicas de la AMS atribuyen los algoritmos de varias pasadas que hay detrás al amstex.tex de Michael Spivak: el AMS-TeX de los años ochenta sobrevive hoy en forma de una prohibición de líneas en blanco.