如何让MathJax在ipython notebook中启用mhchem扩展

use*_*384 10 ipython mathjax

好吧,这对我来说是一次非常令人沮丧的冒险.我连续几天花了很多时间试图让MathJax启用并识别ipython笔记本中Markdown单元格中的mhchem扩展.数学表达式运行良好,但mhchem宏\ce \cf \cee只是无法识别.我尝试在MathJax/config/default.js文件中启用扩展程序.我尝试使用Markdown窗口放置以下脚本代码

<script type="text/x-mathjax-config">
MathJax.Hub.Config({TeX: {extensions:["TeX/mhchem.js"]}
...
});
</script>
Run Code Online (Sandbox Code Playgroud)

我已经尝试过在互联网上找到的每一个技巧和提示.似乎没什么用.

我正在运行debian wheezy.我想也许默认的mhchem和MathJax包导致了这个问题,所以我为ipython notebook安装了一个自定义版本的MathJax到我的profile_default/static目录中,并配置了ipython来使用它.再次,数学很好,化学是不行.我可以直接从TeX使用mhchem扩展,但MathJax只是拒绝加载扩展或识别\ce标记.

我很难过!

有人有主意吗?

use*_*384 11

感谢您的回答.我曾尝试加载没有的脚本Tex/.我试过了/ce \ce.几乎可以想象的一切.我终于找到了一个解决方案,它如下:

如果我/require在数学表达式中使用"非标准" 宏来强制加载mhchem扩展,那么一切都很好.

我在Markdown单元格的顶部添加了以下代码

$$\require{mhchem}$$       
Run Code Online (Sandbox Code Playgroud)

奇怪的是,一旦我在第一个降价单元的第一行完成了这项工作,它似乎在整个笔记本中完美运行.甚至在我执行以下内容的代码页中测试mhchem扩展:

from IPython.display import display, Math, Latex                                                                                                                                                                                             
display(Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx'))                                                                                                                                                                     
display(Math(r'\ce{H2O}'))   
Run Code Online (Sandbox Code Playgroud)

如果没有/require宏,上面的代码将正确生成数学函数,但化学公式将简单地呈现为'\ ceH2O'

通过包含该/require行,笔记本中的所有mhchem用法似乎都能正常工作.

另外,我应该注意到我正在运行从Debian Jesse存储库安装的ipython包.事实证明仍然是0.13.最后,我删除了这些软件包并使用setuptools直接安装了1.10.MathJax开箱即用.

无论如何,希望这将为其他一些不好的化学用户带来一些挫败感


Mik*_*ike 6

如果你想要为你创建的每个笔记本创建它,首选的方法是将它放入你的ipython配置custom.js文件中.具体来说,只需将以下内容放在该文件中:

/* Add some extensions to mathjax */
MathJax.Hub.Config({
    TeX: {
        extensions: ["mhchem.js"]
    },
});
Run Code Online (Sandbox Code Playgroud)

如果您不知道在哪里找到该文件,则可以运行

ipython profile locate
Run Code Online (Sandbox Code Playgroud)

在命令行上.它应该在static/custom/该目录下.(我想如果你的ipython配置文件太旧,你可能需要创建static/custom/和文件.)

我自己custom.js有很多,比如扩展

"AMSmath.js", "AMSsymbols.js", "autobold.js",
Run Code Online (Sandbox Code Playgroud)

其他mathjax选项,以及自定义键盘快捷键等.所以可以做很多事情.


Dav*_*one 2

首先,请注意命令是\ce\cf、 和\cee,而不是/ce/cf、 和/cee,因此如果您输入了后者,那肯定是它们不执行您期望的操作的原因之一。

另外,您还没有给出完整的配置,也没有给出如何加载MathJax.js,因此不清楚您所做的是否有效或现在是否有效。但是如果您的 HTML 页面包含

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
  TeX: {extensions: ["mhchem.js"]}
});
</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
Run Code Online (Sandbox Code Playgroud)

那么这应该适合你。请特别注意,您不需要TeX/在前面使用mhchem.js,因为您的扩展数组是 TeX 块的一部分,并且 MathJax 知道在 TeX 目录中查找这些内容。最后,如果您使用config=TeX-AMS_HTML(或其他配置文件之一),则default.js不会加载,因此没有效果。

如果这不能回答您的问题,请发布有关如何加载 MathJax 的更多详细信息(恐怕我不知道 ipython 笔记本如何处理它)。