我正在写一份需要对化学反应进行编号的报告,并使用以下代码来实现:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{chemformula}
\begin{document}
\begin{subequations}
\begin{eqnarray}
\label{eq:formloss1}
\ch{HCHO + ^.OH -> CHO^. + H2O} \\
\ch{HCHO + \textit{hv_{uv}} ->[O2] CHO^. + HO2} \\
\label{eq:formloss2}
\ch{HCHO + \textit{hv_{uv}} -> CO + H2}
\end{eqnarray}
\end{subequations}
\end{document}
但在第二个方程中,O2(位于反应箭头上方)没有对 2 进行下标,而我需要它这样做。我怎样才能强制它对此进行下标?如果需要更改我正在使用的软件包,我该如何保持方程的编号?
答案1
来自chemformula
的手册:
chemformula
区分不同类型的输入。这些不同的部分有以空格分隔:\ch{part1 part2 part3 part4}
箭头上方或下方的公式也是如此。这意味着你必须写
->[ O2 ]
chemformula
需要用空格括起来的公式才能正确检测输入是公式/化学计量因子/箭头……
其次,我会写成$h\nu_{\textup{uv}}$
而不是\textit{hv_{uv}}
。通过使用数学模式,您将获得普朗克常数和频率之间的正确间距。另外,我很确定您想要的是频率\nu
而不是v
(速度?)。下标似乎是一个标签,因此它应该再次直立。
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{chemformula}
\begin{document}
\begin{subequations}
\begin{gather}
\ch{HCHO + ^.OH -> CHO^. + H2O} \label{eq:formloss1} \\
\ch{HCHO + $h\nu_{\textup{uv}}$ ->[ O2 ] CHO^. + HO2} \\
\ch{HCHO + $h\nu_{\textup{uv}}$ -> CO + H2} \label{eq:formloss2}
\end{gather}
\end{subequations}
\end{document}
顺便问一下:你真的需要 eqnarray
? 我建议你读一下避免eqnarray
由 Lars Madsen 撰写,您可自行决定。
答案2
我使用了mhchem
包,它解决了你的问题。这是代码。你也应该安装chemgreek
它mhchem
。(请注意,化学方程式的命令是\ce
。)
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage[version=4]{mhchem}
\begin{document}
\begin{subequations}
\begin{eqnarray}
\label{eq:formloss1}
\ce{HCHO + ^.OH -> CHO^. + H2O} \\
\ce{HCHO + $hv_{uv}$ ->[O2] CHO^. + HO2} \\
\label{eq:formloss2}
\ce{HCHO + $hv_{uv}$ -> CO + H2}
\end{eqnarray}
\end{subequations}
\end{document}