Trucos matemáticos

La mayoría de las veces LaTeX compone una fórmula de forma hermosa, tal como la escribiste. Pero a veces queda una pequeña imperfección: una raíz dentro de una fracción es tan alta que separa las líneas, dos raíces cuadradas vecinas no se alinean por arriba, una condición larga bajo una suma abre espacio a ambos lados. Para estos ajustes finales hay un conjunto de herramientas pequeñas y precisas. Esta página las reúne como problema → solución. El tratamiento profundo está en cada página dedicada; aquí buscamos una consulta rápida: qué orden usar para qué defecto, con \smash, la herramienta que no cubren las otras páginas, como protagonista.

Caja de herramientas de ajuste fino

Una idea común los atraviesa: manipular las dimensiones que ocupa un elemento (altura, profundidad y ancho) independientemente de cómo se ve. Si puedes hacer que tinta visible cuente como “tamaño cero”, o al revés reservar espacio para algo invisible, controlas exactamente cómo una pieza afecta a sus vecinos y al interlineado. La extensión vertical (altura y profundidad) la gobiernan \smash, \vphantom y \mathstrut; la horizontal (ancho), \mathrlap, \mathllap, \mathclap y el espacio negativo \!; ambas a la vez, \phantom.

Todos son toques finales para ajustar el resultado impreso; ninguno cambia el significado de la fórmula. Por eso la regla práctica es escribir primero las matemáticas de forma directa y aplicar estas herramientas solo donde aparezca un defecto real. La tabla siguiente es una referencia rápida.

SíntomaUsarOrigen
tall-pushes-linesUn elemento alto separa las líneas\smash (\smash[t] / \smash[b])LaTeX básico ([tb] vía amsmath)
radical-heights-differRaíces o filas vecinas tienen alturas distintas\vphantom / \mathstrutLaTeX básico
reserve-spaceReservar espacio invisible para alinear\phantom / \hphantom / \vphantomLaTeX básico
wide-subscriptUn subíndice ancho ensancha la columna\mathclap (\mathrlap / \mathllap)mathtools
stack-symbolApilar un símbolo arbitrario sobre =, etc.\overset / \undersetamsmath
too-much-spaceLos símbolos están demasiado separados\! (espacio fino negativo)LaTeX básico

\smash — hacer que altura y profundidad cuenten como cero

Problema. Cuando aparece una raíz en el numerador o denominador de una fracción, la parte superior de \sqrt (el borde superior del radical) sube por encima de una línea normal. Para evitar que las líneas choquen, LaTeX aumenta el espacio con la línea de arriba justo por ese exceso. El resultado es que una línea recibe interlineado extra y el espaciado de la página se ve desigual.

Solución. \smash{...} compone su argumento como si su altura y profundidad fueran ambas cero. La tinta, es decir, los glifos reales, sigue imprimiéndose, pero LaTeX trata la caja como si no tuviera tamaño vertical y por tanto deja de aumentar el interlineado. La referencia oficial de LaTeX2e explica que sin \smash, LaTeX separaría esa línea de la anterior, y el espaciado desigual podría verse mal. La salvedad es que el material “aplastado” puede invadir la línea de arriba.

latex
% 問題:分数のなかの根号が、この行だけ行間を押し広げる
$y = \frac{1}{\sqrt{1 - x^2}}$

% 直し方:根号の高さをゼロ扱いにして行送りへの影響を消す
$y = \frac{1}{\smash{\sqrt{1 - x^2}}}$

Ambas versiones muestran la misma fórmula, pero en la segunda la altura de \sqrt{1-x^2} queda fuera del cálculo del interlineado, así que la línea se espacia como sus vecinas. Esto importa sobre todo cuando un elemento alto aparece en matemática en línea dentro del texto.

Con amsmath cargado, \smash obtiene un argumento opcional. \smash[t]{...} aplasta solo la parte superior (la altura), dejando la profundidad natural, mientras que \smash[b]{...} aplasta solo la inferior (la profundidad), manteniendo la altura. Como señala el manual de amsmath, a veces conviene aplastar solo arriba o solo abajo mientras se conserva la profundidad o altura natural.

Un caso representativo de amsmath es nivelar raíces cuadradas vecinas. En \sqrt{x} + \sqrt{y} + \sqrt{z}, la letra y tiene descendente, así que el radical central cuelga un poco más bajo. Eliminar solo esa profundidad con \smash[b] alinea las tres raíces.

latex
% amsmath マニュアルの例:まんなかの根号だけ下がるのを直す
$\sqrt{x} + \sqrt{y} + \sqrt{z}$              % y の descender で不ぞろい
$\sqrt{x} + \sqrt{\smash[b]{y}} + \sqrt{z}$   % y の深さを消してそろえる

\smash funciona tanto en texto como en matemáticas, pero en texto no entra en modo horizontal, así que al principio de un párrafo necesita un \leavevmode delante. Observa que \smash y el \vphantom de la sección siguiente son operaciones opuestas: \smash hace que algo grande cuente como cero, mientras que \vphantom da altura real a algo de tamaño cero. De hecho, amsmath muestra ambos usados juntos para igualar alturas.

\vphantom y \mathstrut — nivelar con altura invisible

Problema. Es el espejo de \smash: a veces quieres elevar el elemento más bajo para igualarlo al más alto. Pon \sqrt{a} junto a \sqrt{a^2} y el exponente hace más alto el radical derecho, así que las partes superiores no se alinean. Lo mismo ocurre en casos o matrices cuando las filas tienen alturas distintas.

Solución. \vphantom{...} (vertical phantom) crea una caja invisible con la misma altura y profundidad que su argumento pero ancho cero. Inserta en el elemento más bajo un \vphantom del contenido más alto y las alturas coinciden sin que nada se vea. El atajo sin argumento es \mathstrut, definido como \vphantom(: un puntal invisible de la altura de un paréntesis de apertura. Ponerlo al principio de cada elemento nivela todo a esa altura.

latex
% 根号の天井をそろえる:各 \sqrt の中身に \mathstrut を足す
$\sqrt{\mathstrut a}\;\sqrt{\mathstrut a^2}\;\sqrt{\mathstrut b}$

% 任意の高さにそろえたいときは、揃え先の中身を \vphantom に渡す
$\sqrt{a} \;\sqrt{\vphantom{a^2}\,a}$

Estas órdenes se tratan en detalle en la página Scripts y espaciado, así que consulta allí el mecanismo y la diferencia con \hphantom. La idea clave aquí es que \smash (bajar el alto) y \vphantom / \mathstrut (subir el bajo) son herramientas complementarias para igualar alturas.

\phantom — alinear reservando espacio invisible

Problema. En fórmulas de varias líneas, quieres que este término de la línea inferior quede justo bajo aquel de la línea superior, pero las longitudes distintas a la izquierda desalinean las columnas. Rellenar con espacios manuales vuelve a fallar cuando cambia la fuente o la fórmula.

Solución. \phantom{...} es una caja invisible con la misma altura, profundidad y anchura que su argumento compuesto normalmente. Pasa a \phantom la expresión exacta con la que quieres alinear, y obtendrás un blanco exactamente igual de ancho, de modo que las columnas se alinean de forma natural. Cuando solo quieras el ancho, usa \hphantom{...} (altura y profundidad cero).

latex
% 「= 」の左を、上の行の項の幅だけ空けて桁をそろえる
\begin{align*}
  f(x) &= x^2 + 2x + 1 \\
  \phantom{f(x)} &= (x + 1)^2
\end{align*}

Aquí \phantom{f(x)} a la izquierda de la segunda línea reserva un blanco tan ancho como f(x), así que los dos signos = se alinean verticalmente. La familia completa de \phantom (\hphantom, \vphantom) también se detalla en la página Scripts y espaciado.

\mathclap, \mathrlap, \mathllap — cajas de ancho cero (el \smash horizontal)

Problema. La condición colocada bajo una suma o producto a veces es más ancha que el operador, por ejemplo \sum_{1 \le i \le j \le n}. LaTeX abre entonces espacio a ambos lados del signo de suma para acomodar ese ancho, y toda la fórmula se ve estirada. Dentro de tablas o alineaciones, ese ancho extra puede desajustar una columna entera.

Solución. \mathclap{...} de mathtools coloca su argumento en una caja de ancho cero y lo centra, sobresaliendo por igual a ambos lados. La condición sigue visible mientras el ancho de la fórmula queda reducido al del operador. Para sobresalir solo por un lado, usa \mathllap{...} hacia la izquierda o \mathrlap{...} hacia la derecha. De hecho se crearon como la contraparte horizontal de \smash: donde \smash pone a cero el tamaño vertical, los comandos lap ponen a cero el tamaño horizontal, el ancho.

latex
% 問題:長い下付き条件が総和の前後に余白を作る
\[ \sum_{1 \le i \le j \le n} a_{ij} \]

% 直し方:条件を幅ゼロの箱に入れ、式の幅を記号本体に保つ
\[ \sum_{\mathclap{1 \le i \le j \le n}} a_{ij} \]

Esto supone que mathtools está cargado (\usepackage{mathtools}, que carga amsmath automáticamente). Estas órdenes, la versión de texto \clap y el argumento opcional [mathstyle] se tratan en detalle en la página mathtools.

Cuando prefieras apilar las condiciones en varias líneas en lugar de comprimirlas horizontalmente, \substack{...} de amsmath es la herramienta adecuada: escribe \sum_{\substack{0<i<m \\ 0<j<n}} y las dos condiciones se componen como dos líneas bajo el signo de suma, separadas por \\.

Apilar símbolos y acercar elementos

Problema uno. A veces quieres colocar un símbolo pequeño arbitrario directamente encima o debajo de uno existente: un signo de exclamación sobre un igual para “igual por requisito”, \overset{!}{=}, o \overset{?}{=} para “¿es realmente igual?”. Los scripts (^, _) se adjuntan al lado derecho del símbolo, no justo encima o debajo.

Solución. Usa \overset{above}{base} y \underset{below}{base} de amsmath. \overset{!}{=} coloca un signo de exclamación pequeño justo sobre el igual. El segundo argumento es la base; el primero es lo que añades.

latex
\[
  a \overset{!}{=} b, \qquad x \overset{?}{=} y,
  \qquad A \overset{f}{\longrightarrow} B
\]

El uso más completo de \overset / \underset, incluida su aplicación a flechas y el anidamiento, está en la página de decoraciones arriba/abajo.

Problema dos. A la inversa, los símbolos pueden quedar demasiado separados. El caso clásico es una integral doble o triple: \int\int deja tanto espacio entre los signos que parecen integrales separadas.

Solución. Júntalos con el espacio fino negativo \! (−3 mu, el inverso exacto de \,). Insertarlo como \int\!\!\int acerca los dos signos de integral a una distancia razonable. amsmath también ofrece las órdenes dedicadas \iint y \iiint para integrales múltiples. El conjunto completo de ajustes de espaciado matemático que incluye \! está tabulado en la página Scripts y espaciado.

latex
\[
  \int\int f \, dA          % 間が空きすぎ
  \qquad
  \int\!\!\int f \, dA      % \! で適度に詰める
\]