为了提供完整的问题,我有以下代码:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{chemmacros}
\begin{document}
\ch{CaO$_{(s)} + H2O$_{(l)}->Ca$^{2+}_{(aq)} + 2 OH$^-_{(aq)}}
\end{document}
编译时会产生很多错误消息(但它仍然可以通过编译)我该如何解决这个问题?
答案1
您误解了 的用途$
。在 TeX 中,$
表示“在数学模式和文本模式之间切换”。因此,对于您的原始表达式,您有 文本CaO
、数学表达式_{(s)} + H2O
、文本表达式_{(l)}->Ca
、数学^{2+}_{(aq)} + 2 OH
和文本^-_{(aq)}
。(您可以分辨出来,因为数学字符是斜体的。)这一切都令人困惑,因为^
和_
通常在文本模式下是不允许的(这会导致错误并迫使您进入数学模式),但chemmacros
会改变这一点。
因为我们使用chemmacros
,所以我们可以在 其中使用^
和 而不必担心,并且一切都正常运行(但我们需要 在 周围留出空格)。_
\ch
$
->
但chemmacros
已经了解了阶段,并希望帮助我们(参见“模块phases
”文档)我们可以简单地
\documentclass{article}
\usepackage{chemmacros}
\chemsetup[phases]{pos=sub}
\begin{document}
\ch{CaO\sld{} + H2O\lqd{} -> Ca^{2+}\aq{} + 2 OH^-\aq{}}
\end{document}