La primera decisión al componer fórmulas químicas en LaTeX no es cómo escribirlas sino qué paquete cargar. El \ce{H2O} de mhchem y el \ch{H2O} de chemmacros producen el mismo H₂O, pero cargar los dos de la forma evidente falla con ! LaTeX Error: Option clash for package mhchem., en cualquier orden. Esta página recorre cómo trata \ce{} las reacciones, cargas, estados e isótopos, cómo se compone la nomenclatura IUPAC y qué cambió cuando chemmacros tiró su mecanismo de módulos en la versión 6, todo compilado en TeX Live 2024. La notación para dibujar las estructuras mismas (símbolos de enlace, ángulos, anillos) pertenece a la página de figuras de química y física; aquí interesa encajar la química en un documento.
Usar mhchem: con \ce{}, teclear con naturalidad ya es correcto
Cargue \usepackage{mhchem} y ponga todo lo químico dentro de \ce{...}. El principio de diseño es constante: teclee como escribiría en papel y la composición sale correcta. Un dígito justo tras un símbolo de elemento baja a subíndice (\ce{H2O} da H₂O), un número y un signo tras ^ se vuelven superíndice de carga (\ce{SO4^2-} da SO₄²⁻), -> se convierte en flecha de reacción y <=> en flecha de equilibrio. Los símbolos de estado entre paréntesis (aq), (s), (l) y (g) pasan tal cual, una v final se vuelve la flecha hacia abajo de un precipitado y ^ la flecha hacia arriba de un gas desprendido. La versión de TeX Live 2024 es la v4.10, del 29 de enero de 2024, de Martin Hensel.
\usepackage{mhchem}
% ...
\ce{2 H2 + O2 -> 2 H2O} % a balanced reaction
\ce{SO4^2-} % ion with charge
\ce{CO2 + C <=> 2 CO} % equilibrium
\ce{NaCl(aq) + AgNO3(aq) -> AgCl(s) v + NaNO3(aq)} % states, precipitate
\ce{CaCO3 ->[$\Delta$] CaO + CO2 ^} % labelled arrow, gas evolved
\ce{^{227}_{90}Th+} % isotope with mass and atomic number
\ce{CuSO4.5H2O} % the dot becomes a centred dot
\ce{H+ + OH- <=>> H2O} % unequal equilibriumCada línea de arriba se compiló en TeX Live 2024 y se comprobó con pdftotext. Las flechas admiten etiquetas entre corchetes, y escribir ->[arriba][abajo] pone condiciones distintas a cada lado. Los isótopos se escriben \ce{^{227}_{90}Th+}, con número másico y número atómico apilados delante del símbolo, y el punto medio de un hidrato viene directamente del punto de \ce{CuSO4.5H2O}. Además de <=> existen <=>> y <<=> para equilibrios desplazados a un lado. \ce{} se comporta igual en el texto corriente y dentro de $...$, así que se inserta sin ceremonia en mitad de un párrafo.
| Lo que teclea | Lo que obtiene | La idea |
|---|---|---|
H2O | H₂O | Un dígito justo tras un símbolo de elemento pasa a subíndice |
SO4^2- | SO₄²⁻ | Número y signo tras ^ pasan a superíndice de carga |
2 H2 + O2 -> 2 H2O | Una reacción con coeficientes y flecha | Los coeficientes van delante, separados por un espacio; -> es la flecha |
CO2 + C <=> 2 CO | Una flecha de equilibrio | <=> está equilibrada; <=>> y <<=> se inclinan a un lado |
AgCl(s) v | AgCl(s)↓ | Los símbolos de estado pasan tal cual; una v final es la flecha de precipitado |
CaCO3 ->[$\Delta$] CaO | Una Δ se posa sobre la flecha | ->[arriba][abajo] escribe condiciones a ambos lados |
CuSO4.5H2O | CuSO₄·5H₂O | El punto de un hidrato se vuelve un punto medio |
Un pequeño inciso: abra mhchem.sty y los datos de contacto del mantenedor están en los comentarios iniciales cifrados con ROT13, con el motivo declarado —combatir el correo basura— y una nota que le invita a buscar en internet si no conoce ROT13. Es el rincón más humano de un paquete mantenido desde hace más de veinte años. La implementación, en cambio, es del todo moderna: carga por sí sola expl3, l3keys2e, calc, amsmath, chemgreek y graphics. amsmath lo carga mhchem por usted, así que no hace falta escribirlo.
Cuando aparece Option clash for package mhchem
Poner mhchem y chemmacros cada uno en su línea \usepackage detiene la compilación con ! LaTeX Error: Option clash for package mhchem. Se probaron ambos órdenes en TeX Live 2024 y fallaron igual. La causa es que chemmacros elige internamente un motor de fórmulas y, al hacerlo, carga él mismo mhchem con sus propias opciones. El remedio es escribir \usepackage[formula=mhchem]{chemmacros}: eso solo elimina el choque y hace que el \ch{...} de chemmacros corra sobre mhchem por debajo. En la prueba, \ch{2 H2 + O2 -> 2 H2O} e \iupac{ethanol} compilaron sin error en el mismo documento.
% WRONG -- fails with "! LaTeX Error: Option clash for package mhchem."
% \usepackage{chemmacros}
% \usepackage{mhchem}
% RIGHT -- let chemmacros load mhchem itself
\usepackage[formula=mhchem]{chemmacros}
% ...
\ch{2 H2 + O2 -> 2 H2O}
\iupac{ethanol}De paso, conviene reconocer dos mensajes que chemmacros emite al cargarse a secas. El primero es Package chemmacros Warning: You haven't loaded any package for upright Greek: no se ha elegido, vía chemgreek, un mecanismo de griega redonda, algo que hace falta en cuanto se compone la α de un α-aminoácido. El segundo es la línea informativa que empieza por Package chemmacros Info: You haven't chosen a formula method so I'm assuming, que corresponde exactamente a la clave formula= de arriba. Ninguno es un error, pero si sus fórmulas no salen como esperaba, esas dos líneas son el primer sitio donde mirar.
chemmacros v6: los módulos ya no existen
Cualquier descripción de chemmacros como un conjunto cuyos módulos se cargan uno a uno está obsoleta. La versión de TeX Live 2024 es la v6.2a, del 11 de marzo de 2022, de Clemens Niederberger, y el propio paquete lo dice: el mecanismo de módulos cambió en la v6, todos los módulos se han integrado en el paquete principal y vienen precargados salvo que se cargue chemmacros con la opción minimal, y el nuevo valor por omisión corresponde al antiguo modules=all. Escribir \usechemmodule hoy solo produce esa advertencia y no hace nada. Dicho de otro modo, la sola línea \usepackage{chemmacros} ya da nomenclatura, números de oxidación, proyecciones de Newman y lo demás. El motor de fórmulas por omisión es chemformula, un paquete aparte cuyo \ch{...} se parece al de mhchem; chemformula también se carga por separado con \usepackage{chemformula}.
Hay auxilio previsto para quien recompile un manuscrito antiguo. La cabecera de chemmacros.sty lleva \DeclareRelease {v4} {2015-02-08} y \DeclareRelease {v5} {2020-03-07}, y TeX Live incluye realmente chemmacros-2015-02-08.sty y chemmacros-2020-03-07.sty. El mecanismo de reversión de LaTeX permite nombrar una versión anterior por su fecha: si un artículo escrito en la época de la v5 se rompe bajo la v6, fije la versión antigua y compare antes de reescribir nada.
Componer nombres IUPAC: \iupac y descriptores estereoquímicos en cursiva
El nombre de un compuesto orgánico se parece a una fórmula en que su apariencia está fijada por convención. \iupac{...} se ocupa de esas convenciones: dentro, \- es un guion por el que se permite cortar línea, y \higher{...} coloca un descriptor estereoquímico elevado y en cursiva. Escribir \iupac{(1\higher{R},3\higher{S})\-camphor} compone (1R,3S)-alcanfor con la R y la S en cursiva. Como los guiones de los localizadores sirven además de puntos de corte, los nombres largos se salen mucho menos de la columna en un artículo a dos columnas.
\usepackage[formula=mhchem]{chemmacros}
\usepackage{ghsystem} % needed separately for \ghspic and the H/P statements
% ...
\iupac{2,4,6\-trinitrotoluene} % \- is a breakable hyphen
\iupac{(1\higher{R},3\higher{S})\-camphor} % italic stereodescriptors
\ox{2,Ca} \ox{-2,O} % oxidation numbers, roman
\cip{R,S} % Cahn-Ingold-Prelog descriptors
\latin{in situ} % Latin phrases, per house style
\pH{} \pKa{} \pOH{} % upright p, italic quantity
\newman{0,60,120,180,240,300} % a Newman projectionTodas las órdenes anteriores funcionaron en TeX Live 2024. \ox{2,Ca} pone un número de oxidación en cifras romanas al hombro del Ca, y \ox{-2,O} maneja estados negativos. \cip{R,S} compone descriptores de Cahn-Ingold-Prelog, \latin{in situ} compone locuciones latinas según el estilo de la casa, y \pH, \pKa y \pOH dan la p redonda habitual con símbolo de magnitud en cursiva. \newman{...} toma una lista de ángulos y dibuja una proyección de Newman. Un punto exige cuidado: los pictogramas de peligro del SGA. \ghspic{skull} falla con ! Undefined control sequence. solo con chemmacros: añada \usepackage{ghsystem} aparte.
Estructuras y esquemas de reacción: \chemname y la trampa de la etiqueta de flecha
Las estructuras mismas las dibuja chemfig: su notación de enlaces -, = y ~, ángulos de 0 a 7 y anillos como *6(...) se trata en la página de figuras de química y física. Lo que nos ocupa aquí es la capa que las mete en un documento. \schemestart ... \schemestop construye un esquema de reacción: se alinean las moléculas y se separan con \arrow. Cada molécula puede llevar un nombre mediante \chemname{\chemfig{...}}{benceno}, colocado con pulcritud bajo la estructura. La escala general y el grosor de los enlaces se fijan juntos, por ejemplo con \setchemfig{atom sep=2em, bond style={line width=1pt}}. La versión de TeX Live 2024 es la v1.66, del 28 de diciembre de 2023, de Christian Tellechea.
\usepackage{mhchem}
\usepackage{chemfig}
\setchemfig{atom sep=2em, bond style={line width=1pt}}
% ...
\schemestart
\chemname{\chemfig{*6(-=-=-=)}}{benzene}
% arrow labels are ordinary TEXT: bare "FeBr_3" gives "! Missing $ inserted."
\arrow{->[\ce{Br2}][\ce{FeBr3}]}
\chemname{\chemfig{*6(-=-(-Br)=-=)}}{bromobenzene}
\schemestopLas etiquetas de flecha esconden una trampa que conviene haber medido. Lo que va entre los corchetes de \arrow{->[...]} es texto normal, no matemáticas. Así que \arrow{->[FeBr_3]} mete un _ en el texto corriente, y la compilación encadena ! Missing $ inserted., ! Extra }, or forgotten $. y ! Undefined control sequence. hasta quejarse de que \node no está definido, con la figura arruinada. Envuelva en \ce{FeBr3} o \chemfig{FeBr_3} cualquier etiqueta que necesite subíndices. Usar \ce{} y chemfig en un mismo documento es la combinación recomendada —cosa distinta del choque con chemmacros de antes— y cargar ambos pasó limpiamente aquí. Además, \charge añade pares solitarios y cargas, \chemabove y \chembelow anotan encima y debajo de un átomo, y \polymerdelim dibuja los corchetes de una unidad repetitiva.
Entonces, qué cargar en realidad
Si solo necesita fórmulas y ecuaciones, cargue mhchem a solas. Esa es la respuesta correcta para la inmensa mayoría de los artículos, y \ce{} es la única orden que aprender. Si además dibuja estructuras, use mhchem más chemfig: los dos no chocan, y el reparto habitual es \ce{} para las ecuaciones del texto y \chemfig{} para los esqueletos fuera de texto. Si llega hasta la nomenclatura, los números de oxidación, el SGA y la termodinámica, recurra a chemmacros, pero pásele [formula=mhchem] en vez de cargar mhchem en su propia línea. Añadiendo en ese orden y solo lo necesario, no se topará ni con Option clash ni con Undefined control sequence.