当前位置: 首页 > 知识库问答 >
问题:

如何让MathJax在ipython笔记本中启用mhchem扩展

锺离辰沛
2023-03-14

好吧,这对我来说是一次非常令人沮丧的冒险。我连续几天花了很多时间试图让MathJax启用并识别ipython笔记本中标记单元格中的mhchem扩展。数学表达式工作正常,但mhchem宏无法识别。我已经尝试在MathJax/config/default中启用该扩展。js文件。我试着在Markdown窗口中添加以下脚本代码

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

我已经尝试了在互联网上能找到的每一个技巧和窍门。似乎什么都不管用。

我正在运行debian的喘息声。我想可能是默认的mhchem和MathJax包导致了这个问题,所以我在我的profile_default/静态目录中安装了一个自定义版本的MathJax for ipython笔记本,并配置ipython使用这个。同样,数学很好,化学不行。我可以直接从TeX使用mhchem扩展,但是MathJax只是拒绝加载扩展或识别\ce标签。

我被难住了!

有人有什么想法吗?

共有3个答案

康赞
2023-03-14

首先,请注意,这些命令是\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>

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

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

夏侯涵映
2023-03-14

如果你想让你创建的每一个笔记本都使用它,最好的方法是将它放入你的ipython个人资料的定制中。js文件。具体来说,只需在该文件中输入以下内容:

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

如果你不知道文件在哪里,你可以跑

ipython profile locate

在命令行上。它应该在该目录下的static/custom/中。(我认为如果您的ipython配置文件太旧,您可能需要创建静态/自定义/和文件。)

我自己的定制。js有更多的功能,比如扩展

"AMSmath.js", "AMSsymbols.js", "autobold.js",

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

庄浩言
2023-03-14

谢谢你的回答。我试着在没有Tex/的情况下加载脚本。我试过/ce\ce。几乎所有可以想象的事情。我最终找到了一个解决方案,具体如下:

如果我在数学表达式中使用'non-standard'/require宏来强制加载mhchem扩展,那么一切都很好。

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

$$\require{mhchem}$$       

奇怪的是,一旦我在第一个降价单元的第一行完成了这项工作,它似乎在整个笔记本中都能完美地工作。甚至在我执行以下测试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}'))   

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

通过包含/require行,笔记本中的所有mhchem用法似乎都可以正常使用。

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

不管怎么说,希望这能让其他一些糟糕的化学用户少一些沮丧

 类似资料:
  • 我回顾了各种相关问题,包括 如何让MathJax在ipython笔记本中启用mhchem扩展 但我不能让它工作。。。 我的测试用例很简单 期待直立的$\pi$,但目前只是'\uppi'回来了。 我已经尝试了以下使用细胞魔法 这会生成

  • 我试图找到一种方法,让mathjax在我的iPython笔记本上不使用STIX字体进行数学运算。相反,我更希望它使用“TeX”字体。根据我应该使用的Mathjax留档: 尽管如此,我不知道该把这个放在哪里。我已经试着把这段代码放到我的自定义代码中。js文件属于我自己的ipython配置文件,但它不起作用。理想情况下,我想对mathjax进行ipython配置文件特定的调整。

  • 在了解了如何将mhchem插入IPython笔记本中的MathJax表达式之后(从这个问题开始),我非常高兴,直到我想将笔记本转换为PDF。我的降价单元格包含: 但尝试使用以下终端命令将笔记本转换为PDF 导致一个错误-类似于这篇文章。但是提出的解决方案()无法被标记单元格中的MathJax解释器识别。有什么想法或解决方法吗? IPython 3.0.0/MiKTeX 2.9/win7x86

  • 问题内容: 我正在使用内联模式下的IPython Notebook和plot命令绘制一个NumPy值数组。 结果输出为: 然后,我的图显示在这些输出线的下方。 有没有办法只显示图并从输出中隐藏? 问题答案: 您可以使用分号结束行。这样可以在生成图时抑制不必要的输出: 通常,使用分号可以阻止IPython从代码块的该行打印任何输出值。例如,执行包含代码的单元将不会输出。 另一种方法是将变量绑定到图:

  • 如何在IPython笔记本中显示LaTeX代码?

  • 在ipython笔记本中使用matplotlib内联后端时,默认行为是使用bbox_inches='tight'通过savefig()在内部生成嵌入的png图像。这消除了轴周围的空白,在大多数情况下非常有用。 但是,有时可能需要(暂时)禁用此功能,例如,当他想要手动保持两个图形垂直对齐时(假设我们不想在此处使用子图): 那么如何禁用这种行为呢?谢谢~ 为了使这里涉及的问题更加明确(多亏了Anzel