Al componer fórmulas de física o mecánica cuántica, se repiten las mismas formas: la derivada d/dx, la derivada parcial ∂/∂x, las barras verticales de un valor absoluto o una norma, bras y kets, y los índices apilados de un tensor. Escribir cada una con \frac o \left| todas las veces resulta laborioso. Esta página presenta tres paquetes que convierten esa notación en comandos fáciles de recordar: physics, que ofrece un conjunto de derivadas y delimitadores con tamaño automático; braket, dedicado a la notación bra-ket de Dirac; y tensor, que alinea limpiamente índices superiores e inferiores. Son cómodos, pero physics en particular tiene trampas, como redefinir en silencio algunos comandos estándar; por eso veremos tanto sus ventajas como sus cautelas.
Qué es el paquete physics
physics, de Sergio C. de la Barrera, es un paquete para componer matemáticas de física de forma rápida y legible. Se activa con una sola línea en el preámbulo: \usepackage{physics}. Internamente requiere xparse y amsmath; physics carga amsmath por ti, así que no hace falta nombrarlo aparte. Su objetivo es claro: nombres de comandos que indiquen su propósito y sustituyan plantillas largas como \frac{\mathrm{d}}{\mathrm{d}x} por comandos cortos.
\usepackage{physics}Los comandos que ofrece se agrupan en grandes familias: delimitadores con tamaño automático (\qty, \abs, \norm, \eval), cálculo vectorial (\grad, \div, \curl, \laplacian), derivadas y diferenciales (\dv, \pdv, \dd), notación de Dirac (\bra, \ket, \braket) y macros de matrices. A continuación vemos los más habituales en la práctica. El paquete también tiene algunas peculiaridades de diseño, que reunimos al final.
Derivadas y diferenciales en physics
La función estrella de physics son las derivadas. \dv representa la derivada ordinaria, y su forma cambia con el número de argumentos. Con un solo argumento, como \dv{x}, compone el operador d/dx; con dos, como \dv{f}{x}, compone df/dx. Los órdenes superiores van en un argumento opcional: \dv[2]{f}{x} es d²f/dx² y \dv[n]{f}{x} es dⁿf/dxⁿ. La d se compone en letra recta (romana) por defecto tanto en numerador como en denominador; \usepackage[italicdiff]{physics} la cambia a una d en cursiva.
La derivada parcial es \pdv, con la misma lógica que \dv. \pdv{f}{x} compone ∂f/∂x y \pdv[2]{f}{x} compone ∂²f/∂x². Una derivada parcial mixta toma tres argumentos: \pdv{f}{x}{y} da ∂²f/∂x∂y. El elemento diferencial en sí es \dd: \dd{x} compone dx con el espaciado apropiado para sus vecinos, y \dd[3]{x} compone d³x; dentro de una integral se usa como \int f(x) \dd{x}.
\[
\dv{f}{x}, \qquad \dv[2]{f}{x}, \qquad
\pdv{f}{x}{y}, \qquad \int_0^1 f(x) \dd{x}
\]De izquierda a derecha, este ejemplo compone df/dx, la segunda derivada d²f/dx², la parcial mixta ∂²f/∂x∂y y una integral de 0 a 1 con el elemento diferencial dx después del integrando. Para una fracción con barra oblicua en línea, la forma con estrella \dv*{f}{x} muestra df/dx en el formato lateral \flatfrac.
Delimitadores automáticos y bra-ket en physics
physics también proporciona delimitadores que crecen automáticamente para ajustarse al contenido. \abs{a} compone el valor absoluto |a| y \norm{a} la norma ‖a‖, cada uno con tamaño según su contenido, haciendo internamente el trabajo de \left…\right. Para fijar el tamaño a mano puedes insertar \big, \Big y similares, como en \abs\Big{a}; para mantener el tamaño sin cambiar, usa la forma con estrella \abs*{a}. La barra de evaluación es \eval: \eval{x}_0^\infty da una barra con límites inferior y superior. El delimitador general es \qty(...), con \qty(...), \qty[...] y \qty{...} para paréntesis, corchetes y llaves.
\[
\abs{\frac{a}{b}}, \qquad \norm{\vb{v}}, \qquad
\eval{x^2}_0^\infty, \qquad \qty( \frac{1}{2} )
\]Aquí las barras del valor absoluto se estiran hasta la altura de la fracción a/b, las dobles barras de la norma envuelven el vector v, la barra de evaluación queda a la derecha con 0 y ∞, y los paréntesis finales crecen hasta la altura de la fracción 1/2.
En la notación de Dirac, el par fundamental es \bra{\phi} y \ket{\psi}. Por diseño, escribir \bra{\phi}\ket{\psi} sin espacio entre ellos hace que el bra y el ket se “contraigan” en un único producto interno ⟨φ|ψ⟩. También existe \braket{a}{b} para el producto interno directamente (→ ⟨a|b⟩), la forma de un argumento \braket{a} (→ ⟨a|a⟩, una norma) y \ketbra{a}{b} para el producto externo (→ |a⟩⟨b|, alias de \dyad). Cada una ajusta su tamaño al contenido, y una estrella desactiva ese tamaño automático.
También están los operadores de cálculo vectorial. \grad es el gradiente ∇, \div la divergencia ∇·, \curl el rotacional ∇× y \laplacian el laplaciano ∇². Toman una función como argumento, de modo que \grad{\Psi} compone ∇Ψ. Sin embargo, la redefinición de \div requiere cautela; se trata en la sección siguiente.
Cautelas sobre physics y alternativas
physics es cómodo, pero requiere cuidado porque redefine en silencio comandos estándar. El ejemplo clásico es \div. En LaTeX estándar, \div es el signo de división ÷, pero physics lo sustituye por la divergencia ∇· y mueve el ÷ original a \divisionsymbol. Las funciones trigonométricas también se redefinen, de modo que \sin y las demás añaden paréntesis automáticamente; esto se puede desactivar con \usepackage[notrig]{physics}, y las definiciones originales quedan bajo nombres más largos como \sine. \Re e \Im también se reemplazan. Si no lo sabes, te desconcertará que “el símbolo de siempre” no aparezca.
Otra trampa conocida es que las derivadas absorben como argumento un grupo entre paréntesis que viene inmediatamente después. En physics, escribir un paréntesis tras la derivada, como \dv{x}(\Psi), se define como una “forma larga” en la que d/dx actúa sobre el contenido de los paréntesis. Así, \dv{f}{x}(g) incorpora (g) como argumento de \dv en lugar de tratarlo como factor separado, produciendo una salida no deseada. Este comportamiento aparece con frecuencia en tex.stackexchange, hasta el punto de que existe el paquete mejorado physics-patch. Para evitarlo, pon un espacio antes del factor siguiente, inserta {} o escribe los paréntesis de otra manera.
También hay choques entre paquetes. En particular, siunitx, estándar para componer unidades, introdujo en versiones recientes un comando de cantidad \qty, cuyo nombre colisiona con el \qty de physics; el comportamiento depende del orden de carga. Por motivos como este, en los últimos años se ha extendido elegir paquetes específicos en lugar de adoptar physics completo. Para derivadas, derivative maneja bien órdenes altos y casos multivariables; para operadores diferenciales bien compuestos está fixdif; y physics2 de Zhang Tingxuan, publicado por primera vez en 2022, divide el mismo terreno en módulos por función, como ab para paréntesis automáticos, ab.braket, diagmat, xmat y otros, que se activan individualmente con \usephysicsmodule{...}.
También para delimitadores con tamaño automático existe el estilo de definir tus propios delimitadores con nombre en lugar de depender de physics. Con \DeclarePairedDelimiter de mathtools, una sola declaración como \DeclarePairedDelimiter{\abs}{\lvert}{\rvert} te da tu propio \abs, permitiendo elegir entre \abs{x} (tamaño predeterminado) y \abs*{x} (estirado automáticamente con \left…\right). Como no sobrescribe comandos estándar y se comporta de forma predecible, se prefiere en documentos que valoran la robustez; consulta la página de mathtools para más detalles.
El paquete braket
Si solo quieres un uso ligero de la notación de Dirac, el paquete braket de Donald Arseneau es una opción práctica. No es una gran caja de herramientas como physics, sino un paquete pequeño limitado a la notación bra-ket y de conjuntos, cargado con \usepackage{braket}. Ofrece dos familias de comandos: las versiones minúsculas de tamaño fijo \bra{ }, \ket{ }, \braket{ }, \set{ }, con tamaño constante sin importar el contenido, y las versiones mayúsculas con estiramiento automático \Bra{ }, \Ket{ }, \Braket{ }, \Set{ }, que envuelven el contenido usando internamente \left…\right.
La ventaja de las versiones mayúsculas es que una barra vertical | escrita directamente dentro del argumento se estira junto con los delimitadores externos. En \Braket, todas las | interiores crecen hasta la altura de los argumentos; en \Set, crece la primera |. Para una barra doble, usa \| o su alias local ||.
\Braket{ \phi | \frac{\partial^2}{\partial t^2} | \psi }
\Set{ x \in \mathbf{R}^2 | 0 < {|x|} < 5 }En este ejemplo, el primero compone el elemento de matriz ⟨φ| ∂²/∂t² |ψ⟩ alrededor de un operador parcial de segundo orden, con los corchetes angulares externos y las dos barras interiores estirados a la altura del operador. El segundo compone el conjunto { x ∈ R² | 0 < |x| < 5 }, estirando las llaves externas y la barra divisoria; el |x| interior se envuelve como {|x|} para mantenerlo a tamaño fijo. Observa que, a diferencia de physics, braket no define un \ketbra para el producto externo; el autor recomienda escribir \ket{ }\bra{ }.
El paquete tensor
En tensores con índices superiores e inferiores mezclados, la posición horizontal y el espaciado de los índices tienen significado. En Γ^μ_{νρ} o R^μ_{ν}{}^ρ_σ, por ejemplo, los índices superiores e inferiores deben alinearse en el orden correcto desde la izquierda. Escribir ^ y _ ingenuamente uno tras otro los apila en la misma posición, de modo que no se distingue qué índice va primero. El paquete que resuelve esto es tensor de Philip G. Ratcliffe, revisión completa del original de Mike Piff, v2.2. No requiere paquetes externos y se carga con \usepackage{tensor}.
Hay dos comandos centrales. El ligero \indices se coloca justo después del cuerpo del tensor y toma solo la cadena de índices. Por ejemplo, M\indices{^a_b^{cd}_e} compone M seguido de un a superior, un b inferior, un cd superior y un e inferior, todos en sus posiciones horizontales correctas. Dentro de la cadena de índices se usan directamente ^ (superíndice) y _ (subíndice), agrupando índices de varios caracteres con llaves como en ^{cd}; \sp y \sb hacen lo mismo.
El otro comando, \tensor, es compatible hacia atrás con el original de Mike Piff y toma el cuerpo del tensor y la cadena de índices como argumentos separados. \tensor{M}{^a_b^{cd}_e} produce exactamente la misma salida que el ejemplo anterior con \indices. La ventaja de \tensor es que puede colocar índices antes del tensor: pasando una cadena de preíndices en el primer argumento opcional, puedes alinear índices antes y después del cuerpo M, como en \tensor[^a_b^c_d]{M}{^e_f^g_h}.
\[
M\indices{^a_b^{cd}_e}, \qquad
\tensor{M}{^a_b^{cd}_e}, \qquad
\tensor[^a_b^c_d]{M}{^e_f^g_h}
\]En los tres casos, los índices superiores e inferiores no se solapan, sino que se escalonan en el orden correcto desde la izquierda; solo el último ejemplo lleva también índices antes de M. Tanto \indices como \tensor tienen formas con estrella: \indices* y \tensor* reducen el espacio entre índices para volver a un aspecto más estándar. Además, colocar un * al inicio de la cadena de índices alinea a la izquierda los pares sucesivos superior/inferior, útil cuando quieres limitar desplazamientos de posición.
Como añadido, \nuclide está definido para usarse tanto en texto como en modo matemático. \nuclide[14][6]{C} compone ¹⁴₆C, colocando el número másico 14 y el número atómico 6 arriba y abajo a la izquierda del símbolo C; ambos números son opcionales. Los índices de varios tokens deben agruparse entre llaves, y construcciones como \mathrm también deben encerrarse por completo, como en \indices{_{\mathrm{H}}^x}.