我在用Sphinx 1.1.3用下划线记录反应率。
\ce{A + $h$\nu ->[k_A] B}
当我使用以下方法制作 html 文档时,它运行良好MathJax以及包含以下内容的模板文件:
{% extends "!layout.html" %}
{% block extrahead %}
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
extensions: ["mhchem.js"]
}
});
</script>
{% endblock %}
并将_templates
文件夹包含在templates_path
文件中conf.py
。
您可以看到我的 mchem_example 在这里。
但是当我尝试使用以下方法构建 latexpdf 时微特克斯,序言\usepackage[version=3]{mhchem}
如下mhchem 文档latex_elements
在的字典中conf.py
,我得不到反应速率或箭头。mhchem 文档中的其他示例都有效,例如使用+H20
或。我通过将 括在花括号中\alpha
使其适用于 MathJax 和 MiKTeX 。\nu
\ce{A + $h${\nu} ->[k_A] B}
所以现在我的问题是为什么?为什么必须\nu
用花括号括起来?
答案1
这是 TeX 的“跳过控制序列后的空格”行为发挥作用。TeX 会忽略控制序列后的空格,因此此处的 之后\nu
。这意味着mhchem
“看到”
A + $h$\nu->[k_A] B
但是,mhchem
使用空格来确定箭头之类的东西到底是什么。因此,需要\nu
和之间的空格-
才能正确解析事物。您的解决方案有效,因为它可以阻止空格跳过:另一种方法是$h$\nu{}
。我实际上会选择
A + $h\nu$ ->[k_A] B
因为它h\nu
真正形成一个数学实体(而不是一个复合符号)。
我猜 MathJax 在这里不太遵守 TeX 通常的解析规则,所以不会跳过空格。