以下是当前问题的 MWE:
\documentclass{article}
\usepackage{chemformula}
\begin{document}
$\varphi_{\ch{N2}}$%chemformula as index works
\ch{C + O2 + N2 -> CO2 + N2}%regular equation
\ch{C + O2 + $\varphi$ N2 -> CO2 + N2}%escaped math works
%\ch{C + O2 + $\varphi_{\ch{N2}}$ N2 -> CO2 + N2}%throws error when nested
\end{document}
在带有注释的代码中,问题得到了解释:使用chemformula
及其命令\ch
,即使在数学模式下也可能会创建索引,请参阅第一行代码。
在内部制定更长的方程式\ch
,然后尝试转义数学符号,这些符号本身具有使用\ch
嵌套\ch
命令排版的索引。这些会抛出错误
TeX capacity exceeded, sorry [main memory size=3000000]. ...+ O2 + $\varphi_{\ch{N2}}$ N2 -> CO2 + N2}
编译时。
我该如何解决这个问题?
答案1
其实解决办法很简单:使用\chcpd
内部:
\documentclass{article}
\usepackage{chemformula}
\begin{document}
$\varphi_{\ch{N2}}$%chemformula as index works
\ch{C + O2 + N2 -> CO2 + N2}%regular equation
\ch{C + O2 + $\varphi$ N2 -> CO2 + N2}%escaped math works
\ch{C + O2 + $\varphi_{\chcpd{N2}}$ N2 -> CO2 + N2}
\end{document}
答案2
稍微玩一下\ensuremath
似乎\mathrm
就可以了。
\documentclass{article}
\usepackage{chemformula}
\newcommand{\varphich}[1]{\ensuremath{\varphi_{\mathrm{#1}}}}
\begin{document}
without ch - shows as text: \varphich{N2}
ch in it - shows as chemistry: \(\varphi_{\ch{N2}}\)%chemformula as index works
equation 1: \ch{C + O2 + N2 -> CO2 + N2}%regular equation
equation 2: \ch{C + O2 + \(\varphi\) N2 -> CO2 + N2}%escaped math works
equation 3: \ch{C + O2 + \varphich{\ch{N2}} -> CO2 + N2}%throws error when nested
\end{document}
我还使用了\(
\)
基于本文。