Sumas, integrales y operadores grandes

El 29 de octubre de 1675, Leibniz escribió ∫ en un manuscrito. Es una s larga —la inicial de summa, «suma», estirada verticalmente— y la forma sigue diciendo lo que el signo de integral fue en origen: una marca para sumar. El signo de sumatoria Σ vino de Euler, en el capítulo I de sus Institutiones calculi differentialis de 1755. En LaTeX, sin embargo, estos dos símbolos hermanos se comportan de forma muy distinta: en una fórmula en display, \sum apila su rango encima y debajo, mientras que \int lo mantiene al lado. Esa asimetría está escrita en la propia definición de \int. Esta página trata los operadores grandes —\sum, \prod, \int, \oint, \bigcup y los demás—: cómo se adjuntan los límites, cómo moverlos con \limits y \nolimits, cómo escribir una condición de varias líneas con \substack y cómo declarar un operador propio con \DeclareMathOperator.

Qué es un operador grande: los límites no son subíndices

Un operador grande es un símbolo que TeX ha colocado en la clase \mathop. \sum, \prod, \int y \bigcup pertenecen a ella, y esa pertenencia trae dos propiedades. Primero, el símbolo alterna entre un glifo grande y otro pequeño según el estilo circundante. Segundo, un subíndice _ o superíndice ^ que se le adjunte no se trata como un índice ordinario sino como un límite. La i de x_i solo se sitúa abajo a la derecha de la letra; el k=0 y la n de \sum_{k=0}^{n} pueden apilarse justo debajo y encima del símbolo. Cuál de las dos formas aparece depende del estilo y del tipo de símbolo, tema de las secciones siguientes.

Los símbolos centrales están integrados en el LaTeX estándar —de hecho, en el TeX subyacente— y no necesitan ningún paquete adicional. Las integrales múltiples \iint e \iiint, el subíndice multilínea \substack y \DeclareMathOperator, que define operadores, sí requieren el paquete amsmath. Como amsmath es el estándar de facto, mantener \usepackage{amsmath} en el preámbulo es sencillamente lo práctico en cuanto compongas matemáticas en serio.

\sum y \prod: el rango arriba y abajo, o al lado

Arriba y abajo en display, al lado en texto corrido. La sumatoria es \sum, el producto \prod y el coproducto \coprod, y el rango se da con un subíndice _ y un superíndice ^. Pon \sum_{k=0}^{n} a_k dentro de \[ … \] y la Σ se compone grande con k=0 justo debajo y n justo encima. Inserta la misma fórmula en el texto con $ … $ y la Σ se encoge mientras k=0 y n se apilan a su derecha. Medir las cajas hace evidente la diferencia: en display mide 14,54521pt de ancho, 16,51393pt de alto y 13,02782pt de profundidad —alta y estrecha—; en texto, 25,6008pt de ancho, 8,04175pt de alto y 3,00005pt de profundidad —baja y ancha—. Alto significa apilado; ancho, al lado.

latex
% displayed: limits stack above and below
\[
  \sum_{k=0}^{n} a_k = a_0 + a_1 + \dots + a_n,
  \qquad \prod_{k=1}^{n} k = n!
\]

% inline: the same sum keeps its limits at the side
The series $\sum_{k=0}^{n} a_k$ fits inside the line.

Ese cambio entre «arriba y abajo» y «al lado» es el comportamiento por defecto, ligado al estilo. Los símbolos llamados de clase sum —sumatoria, producto, coproducto y parientes— apilan sus límites encima y debajo solo en estilo display; en estilo de texto los colocan al lado. amsmath llama a este esquema displaylimits. Es un valor por defecto bien elegido, que evita ensanchar la interlínea sin necesidad. Si el rango tiene una sola parte, escribe solo esa; también puedes poner una condición en el límite inferior, como en \sum_{i \in S}. Lo que hay que vigilar: envuelve en { } todo lo que pase de un token. Escribe \sum_k=1 y solo la k será subíndice, mientras que =1 se derramará a la derecha del símbolo.

Poner los límites encima de una integral: por qué \int es \intop\nolimits

El signo de integral \int mantiene sus límites al lado incluso en display. Esa diferencia con la sumatoria no es casual: está escrita directamente en la definición. Las líneas 253–254 de fontmath.ltx, en LaTeX, dicen \DeclareMathSymbol{\intop}{\mathop}{largesymbols}{"52} y a continuación \DeclareRobustCommand\int{\intop\nolimits}. Dicho de otro modo, \int es el glifo de integral \intop con un \nolimits pegado — la convención matemática grabada en el comando. Las líneas 260–261 dan a \oint la misma forma: \ointop\nolimits. Visto al revés, eso da una salida: usar directamente el glifo desnudo \intop u \ointop devuelve el comportamiento por defecto de la clase sum. La medición lo confirma: un \int_0^1 en display mide 14,48615pt de ancho y 15,65013pt de alto, mientras que \intop_0^1 mide 10,00002pt de ancho, 21,12231pt de alto y 15,789pt de profundidad. Uno se extiende a lo ancho; el otro se estira hacia arriba.

latex
\[
  \int_{0}^{\infty} e^{-x}\,dx = 1,
  \qquad \oint_{C} \mathbf{F}\cdot d\mathbf{r},
  \qquad \intop_{0}^{1} x^2\,dx
\]

Se puede componer una integral múltiple repitiendo el signo, \int\int, pero el hueco entre signos queda flojo. amsmath ofrece comandos dedicados con el espaciado apretado: la doble \iint, la triple \iiint, la cuádruple \iiiint y \idotsint, que pone puntos entre dos signos de integral (∫⋯∫). El apriete se puede medir: en display, \int\int mide 21,66666pt de ancho y \iint, 16,66678pt. Son exactamente 5pt, medio cuadratín a 10pt. \iiint salió a 23,33354pt, \iiiint a 30,0003pt e \idotsint a 34,9999pt. Si necesitas las integrales cerradas de superficie y volumen habituales en física, el paquete esint añade \oiint (superficie cerrada), \varoiint, \sqint, \sqiint, \ointclockwise, \ointctrclockwise, \fint y algunas más. \oiiint no está entre ellas: para una integral cerrada triple hay que buscar otro paquete de fuentes. De serie, LaTeX solo trae \oint.

latex
% preamble: \usepackage{amsmath}
\[
  \iint_{D} f(x,y)\,dx\,dy,
  \qquad \iiint_{V} f\,dV,
  \qquad \iiiint f, \qquad \idotsint_{A} f\,dV
\]

\limits y \nolimits: forzar la posición

Para anular el valor por defecto, escribe tras el operador \limits (forzar arriba y abajo) o \nolimits (forzar al lado). Para apilar el rango de una sumatoria en texto corrido: \sum\limits_{k=1}^{n}; para poner los límites encima y debajo de una integral en display: \int\limits_0^1. Como mostró la sección anterior, esto último equivale al \intop desnudo: medidos, ambos dan 10,00002pt de ancho, 21,12231pt de alto y 15,789pt de profundidad. Para volver al valor por defecto ligado al estilo, usa \displaylimits.

latex
% force limits above and below inside running text
The partial sum $\sum\limits_{k=1}^{n} k$ sits in the line.

% force limits above and below on a displayed integral
\[
  \int\limits_{0}^{1} x^2\,dx = \frac{1}{3}
\]

La colocación tiene una regla. \limits debe seguir a un \mathop; de lo contrario, la compilación se detiene con ! Limit controls must follow a math operator. (TeX añade I'm ignoring this misplaced \limits or \nolimits command.). Tanto x\limits^2 como \frac{1}{2}\limits lo provocan. Sin embargo, se repite a menudo que escribirlo después de los índices es un error: no es cierto. \sum_{k=1}\limits^{n} compila sin problemas y, medido, da exactamente la misma caja que \sum\limits_{k=1}^{n}: 14,54521pt de ancho, 16,51393pt de alto y 13,02782pt de profundidad. El átomo inmediatamente anterior sigue siendo el operador. Aun así, justo detrás del operador resulta más claro para quien lee y para uno mismo, así que conviene adoptarlo como costumbre. Y cuando varios \limits, \nolimits o \displaylimits se suceden, gana el último: \sum\limits\nolimits_{k=1}^{n} salió al lado y \sum\nolimits\limits_{k=1}^{n}, arriba y abajo. La regla tiene una excepción: tras un nombre de función como \log o \lim, \limits se ignora en silencio en cuanto amsmath está cargado; amsopn.sty se lo traga mediante \@ifnextchar\limits{\nolimits\@gobble}, sin error ni aviso. Medido: sin amsmath la profundidad de \log\limits_{k}x es 9,4722pt, y con amsmath se queda en 2,44443pt, igual que \log_{k}x. Para poner un subíndice debajo de un nombre de función, usa \DeclareMathOperator*.

Si quieres cambiar la política para todo un documento, existen opciones de paquete de amsmath en lugar de escribir el comando cada vez. Las líneas 46–49 de amsmath.sty declaran intlimits, nointlimits, sumlimits y nosumlimits, y el \ExecuteOptions de las líneas 92–93 fija los valores por defecto en nointlimits, sumlimits, exactamente el comportamiento descrito hasta aquí. Escribe \usepackage[intlimits]{amsmath} y toda integral en display del documento apilará sus límites arriba y abajo. Probado, un \int_0^1 en display mide entonces 10,00002pt de ancho, 21,12231pt de alto y 15,789pt de profundidad, igual que \intop_0^1. A la inversa, nosumlimits lleva también los límites de las sumatorias al lado. Antes de sembrar \limits por las fórmulas una a una, vale la pena plantearse esta decisión a escala de documento.

Símbolo / comandoEstilo displayEstilo en línea
\sum, \prod, \bigcupapilados encima y debajoal lado derecho
\int, \oint, \iintal lado derecho (la definición lleva un \nolimits)al lado derecho
\intop, \ointopapilados encima y debajo (el glifo desnudo, sin \nolimits)al lado derecho
\limitsfuerza arriba y abajo; colócalo justo tras el operadorfuerza arriba y abajo
\nolimitsfuerza al lado; colócalo justo tras el operadorfuerza al lado
\displaylimitsvuelve al valor por defecto ligado al estilo (apilados)vuelve al valor por defecto ligado al estilo (al lado)

La familia \lim: nombres en redonda con la condición debajo

\lim (límite), \limsup (límite superior) y \liminf (límite inferior) son operadores compuestos en redonda, como los nombres de función, pero sus índices siguen el régimen de la clase sum: en display el subíndice va justo debajo y, en línea, abajo a la derecha. \limsup y \liminf se componen como dos palabras, «lim sup» y «lim inf», con el espacio adecuado entre ellas. \sup, \inf, \max y \min pertenecen a la misma familia y colocan el subíndice debajo (los nombres de función también están reunidos en la página «Fundamentos del modo matemático»). La flecha → es \to y el infinito, \infty.

latex
\[
  \lim_{n \to \infty} \frac{1}{n} = 0,
  \qquad \limsup_{n \to \infty} a_n \ge \liminf_{n \to \infty} a_n,
  \qquad \sup_{x \in X} f(x)
\]

La familia \bigcup: antepón big a un operador binario

Los operadores n-arios de la teoría de conjuntos, la lógica y el álgebra también tienen versiones compuestas en grande, igual que \sum. La nomenclatura es mecánica: toma el nombre del operador binario correspondiente y antepón big. A la unión binaria \cup (A ∪ B) le corresponde la versión de tamaño variable \bigcup. Todos son de clase sum, así que en display apilan sus límites encima y debajo, y en línea los ponen al lado. Medido, un \bigcup_{i=1}^{n} en display mide 12,95433pt de ancho, 16,51393pt de alto y 12,79865pt de profundidad: prácticamente la misma caja alta y estrecha que \sum.

ComandoSignificadoContraparte binaria
\bigcupunión (n-aria)\cup (∪)
\bigcapintersección (n-aria)\cap (∩)
\bigsqcupunión disjunta\sqcup (⊔)
\biguplusunión de multiconjuntos\uplus (⊎)
\bigveeO lógico / supremo\vee (∨)
\bigwedgeY lógico / ínfimo\wedge (∧)
\bigoplussuma directa (más en círculo)\oplus (⊕)
\bigotimesproducto tensorial (por en círculo)\otimes (⊗)
\bigodotpunto en círculo (n-ario)\odot (⊙)
latex
\[
  \bigcup_{i=1}^{n} A_i, \qquad
  \bigcap_{i \in I} A_i, \qquad
  V = \bigoplus_{k} V_k
\]

Dos líneas de condiciones bajo una sumatoria: \substack y subarray

Coloca \substack{…}, de amsmath, entero en la posición del subíndice. Cada línea separada por \\ se apila centrada, de modo que puedes poner «0 ≤ i ≤ m» y «0 < j < n» en dos líneas justo debajo de la Σ. No pongas \\ tras la última línea. Para alinear las líneas a la izquierda, usa el entorno más general subarray: \begin{subarray}{l} … \end{subarray}. {l} alinea a la izquierda y {c} centra; las líneas se cortan con \\ igual que en \substack. De hecho, la definición de \substack es \subarray{c}…\endsubarray: son el mismo mecanismo con dos caras. Conviene notar que poner una llave o una línea encima o debajo de un símbolo —\overbrace, \underbrace, \overline— es otra cuestión, tratada en la página aparte «Encima y debajo». Aquí se habla solo de los límites de un operador.

latex
% preamble: \usepackage{amsmath}
\[
  \sum_{\substack{0 \le i \le m \\ 0 < j < n}} P(i,j)
  \qquad
  \sum_{\begin{subarray}{l} i \in \Lambda \\ 0 < j < n \end{subarray}} P(i,j)
\]

Definir argmax uno mismo: qué hace el asterisco de \DeclareMathOperator*

El asterisco decide si la condición va justo debajo o abajo a la derecha. Cuando necesitas un nombre de operador que no está en la lista estándar —argmax, argmin, esssup—, compuesto en redonda y con su subíndice justo debajo como \lim, decláralo una vez en el preámbulo con \DeclareMathOperator*, de amsmath, y llámalo en el cuerpo como un comando corto. Sin asterisco, el subíndice se sitúa abajo a la derecha del nombre. La medición lo enseña: la caja de \operatorname*{argmax}_{\theta} tiene 9,4722pt de profundidad —crece hacia abajo—, mientras que \operatorname{argmax}_{\theta} sin asterisco mide 37,05215pt de ancho y solo 2,44443pt de profundidad, creciendo hacia la derecha. Para un uso puntual también puedes escribir \operatorname{rank} directamente, sin declarar nada (o \operatorname*{…} para poner el límite debajo).

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

% in the body:
\[
  \hat{\theta} = \argmax_{\theta} L(\theta),
  \qquad \rank A \le n,
  \qquad \sideset{}{'}\sum_{n} a_n
\]

El texto del nombre sigue convenciones propias: un guion - se compone como guion de texto (no como signo menos) y un asterisco * como asterisco de texto elevado (no como la estrella binaria centrada). El \, de arg\,max es el espacio fino que separa las dos palabras. Los nombres de función se componen con \DeclareMathOperator o \mathrm, no con \text{…}; así el espaciado alrededor se ajusta solo y se mantienen en redonda incluso en un contexto en cursiva, como un entorno de teorema. Por último, para poner índices en las cuatro esquinas de un símbolo de clase sum —una prima (′) sobre una sumatoria, por ejemplo— amsmath ofrece \sideset. Escribir \sideset{}{'}\sum_{n} a_n añade una prima arriba a la derecha de la Σ y mantiene el límite debajo. El primer argumento gobierna las dos esquinas izquierdas y el segundo las dos derechas; dentro de cada uno se escribe _{abajo}^{arriba}. Ten en cuenta que solo funciona con símbolos de clase sum.