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

将IPython笔记本mhchem降价转换为pdf

皇甫俊雅
2023-03-14

在了解了如何将mhchem插入IPython笔记本中的MathJax表达式之后(从这个问题开始),我非常高兴,直到我想将笔记本转换为PDF。我的降价单元格包含:

$\require{mhchem}$
$\ce{CH2O2->[k_1]H2 + CO2}$

但尝试使用以下终端命令将笔记本转换为PDF

ipython nbconvert untitled.ipynb --to pdf

导致一个!未定义的控制序列错误-类似于这篇文章。但是提出的解决方案(\tex orpdfString)无法被标记单元格中的MathJax解释器识别。有什么想法或解决方法吗?

IPython 3.0.0/MiKTeX 2.9/win7x86

共有2个答案

梁池暝
2023-03-14

在未能遵循上述答案后,我发现了一个简单的解决方法。

您只需编辑nbconvert使用的默认LaTex模板,即可将其包括在内

\usepackage{mhchem}

在序言中。这意味着所有的化学方程都将像你笔记本上的任何数学方程一样工作。

对我(macOS)来说,模板位于/Users/USER/opt/anaconda3/share/jupyter/nbconvert/templates/latex/base。tex.j2

我不确定这是否相关,但在修改了与数学块中我的$旁边的空格相关的序言后,我出现了一些编译错误。在确保$内部没有空间,外部有一个空间后,所有的问题都得到了解决。

茅曾琪
2023-03-14

要包含mhchem包,您需要创建一个自定义模板。此外,还需要处理pdflatex中不可用的\requiremathjax命令。

一个可能的模板(chemtempl.tplx)可能看起来像

((*- extends 'article.tplx' -*))

((* block packages *))
((( super() )))
\usepackage{mhchem}
((* endblock packages *))

((* block commands *))
((( super() )))
% disable require command
\newcommand{\require}[1]{}
((* endblock commands *))

此模板通过覆盖包和命令块扩展到默认的文章模板。super调用类似于python命令,包含原始块内容。\require命令是通过定义一个新命令来解决的,该命令只接受一个参数,不执行任何操作-

模板的用法如下

jupyter nbconvert --template chemtempl.tplx --to pdf notebook.ipynb

如果您使用的是IPython 3。只需将jupyter替换为ipython。

要将模板与笔记本中的下载为pdf功能一起使用,必须使用配置文件。为此,为ipython 3.x或ipython 4.x(jupyter)创建一个配置文件(.ipython/profile\u default/ipython\u config.py):

c = get_config()
c.LatexExporter.template_path = ['/home/path/to/template/']
c.LatexExporter.template_file = 'chemtempl.tplx'

重新启动Jupyter后,应该加载新的配置并使用模板。

(我想对于IPython 3.x,该文件也可以命名为IPython_notebook_config.py,但目前我没有3.x版本来测试这个。)

 类似资料:
  • 好吧,这对我来说是一次非常令人沮丧的冒险。我连续几天花了很多时间试图让MathJax启用并识别ipython笔记本中标记单元格中的mhchem扩展。数学表达式工作正常,但mhchem宏无法识别。我已经尝试在文件。我试着在Markdown窗口中添加以下脚本代码 我已经尝试了在互联网上能找到的每一个技巧和窍门。似乎什么都不管用。 我正在运行debian的喘息声。我想可能是默认的mhchem和MathJ

  • 我努力想喜欢IPython笔记本,但可能是因为我太习惯于用vi编写代码并在命令行执行,所以我发现它的一些默认设置很有挑战性。可以对以下内容做些什么(可能在某个配置文件中)? 我希望默认输出行号,而不必记住,也不必每次都设置别名。 我如何设置默认为"off",以阻止IPython污染我的命名空间与它的非百分比魔法和shell命令?我知道我可以使用选项和选项:是否有等效的选项? 让我抓狂的是,我从来都

  • 我运行一个iPython笔记本服务器,希望用户能够下载一个作为csv文件的pandas dataframe,这样他们就可以在自己的环境中使用它。没有个人数据,所以如果解决方案包括在服务器上编写文件(我可以这样做),然后下载该文件,我很乐意这样做。

  • 我在Jupyter Notebook中拖放一个图像。默认情况下,它会给我一个代码: 我能做些什么来“无需”<代码>

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

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