弄清楚如何将 mhchem 插入 IPython 笔记本中的 MathJax 表达式后,(来自此 question )我非常高兴,直到我想将笔记本转换为 PDF。我的 Markdown 单元格包含:
$\require{mhchem}$
$\ce{CH2O2->[k_1]H2 + CO2}$
但尝试使用以下终端命令将笔记本转换为 PDF
ipython nbconvert untitled.ipynb --to pdf
产生!未定义的控制序列
错误 - 类似于此 post 。但是,Markdown 单元中的 MathJax 解释器无法识别建议的解决方案 (\texorpdfstring
)。有什么想法或解决方法可以解决该问题吗?
IPython 3.0.0/MiKTeX 2.9/win7x86
最佳答案
要包含 mhchem
包,您需要创建一个自定义模板。此外,还需要处理 pdflatex 中不可用的 \require
mathjax 命令。
可能的模板 (chemtempl.tplx
) 可能如下所示
((*- extends 'article.tplx' -*))
((* block packages *))
((( super() )))
\usepackage{mhchem}
((* endblock packages *))
((* block commands *))
((( super() )))
% disable require command
\newcommand{\require}[1]{}
((* endblock commands *))
此模板通过覆盖包和命令 block 来扩展为默认文章模板。 super 调用与 python 命令类似,包含原始 block 内容。
\require
命令是通过定义一个新命令来解决的,该命令接受一个参数并且不执行任何操作 -> 这样它就可以保留在笔记本中。
模板的使用方式如下
jupyter nbconvert --template chemtempl.tplx --to pdf notebook.ipynb
如果您使用的是 IPython 3.x,只需将 jupyter
替换为 ipython
。
要将模板与笔记本中的下载为 pdf 功能一起使用,
必须使用配置文件。为此,创建一个配置文件(.ipython/profile_default/ipython_config.py
对于 IPython 3.x 或 .jupyter/jupyter_notebook_config.py
对于 IPython 4.x (Jupyter) )包含以下内容:
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 版本来测试它。)
关于pdf - 将 IPython 笔记本 mhchem markdown 转换为 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203791/