【问题标题】:Problem in Converting Jupyter notebook to pdf将 Jupyter notebook 转换为 pdf 的问题
【发布时间】:2018-11-23 15:56:43
【问题描述】:

当我想将 Jupyter notebook 保存为 pdf 文件时,我收到以下错误:

nbconvert failed: PDF creating failed, captured latex output:
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018/W32TeX) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
! Undefined control sequence.
<*> .\notebook
              .tex
? 
! Emergency stop.
<*> .\notebook
              .tex
No pages of output.
Transcript written on ?.

【问题讨论】:

  • 你应该使用./notebook.tex,而不是.\notebook.tex
  • 错误是由 Jupyter notebook 造成的。我刚刚在 Jupyter 中编写了一些 Python 代码,当我想将笔记本保存为 pdf 文件时,它会显示错误
  • @Werner 通知! Undefined control sequence,后跟有问题的命令,在本例中为\notebook,是LaTeX 告诉用户他们没有定义被调用的命令的方式。 Jupyter 在运行 LaTeX 以创建 PDF 时显然会尝试调用所述命令,但失败了。这是因为 Jupyter 的作者没有包含生成 PDF 所需的这个基本的特定于 Jupter 的命令。可能是疏忽。
  • 或者 TeXLive 或 MikTeX 中包含了一个与 Jupyter 相关的包,但 @xuan 尚未安装?
  • @TheSodesa:我明白;我对 LaTeX 有一些经验。不过,这似乎是一个错字……

标签: jupyter-notebook tex tex-live


【解决方案1】:

这是由于 Windows 和类 Unix 系统之间不幸的不兼容造成的。 Jupyter 在当前目录下创建一个临时的notebook.tex 文档,然后调用XeTeX 编译这个文档。

XeTeX被调用后尝试用大致如下算法解析命令行:

  1. XeTeX &lt;arg1&gt; &lt;arg2&gt; ...
  2. 检查&lt;arg1&gt; 是否为.tex 文件,

    a) 如果是文件,则编译它

    b) 如果它不是文件,则假定这是在命令行中给出的实际文档的开始

在类 Unix 系统上,./notebook.texXeTeX 解析为存在并编译的 current_directory/notebook.tex。在 Windows 系统上,由于目录分隔符不同,命令行为 .\notebook.texXeTeX 无法识别为文件,因此尝试解析为 LaTeX 文档但失败。

临时补救措施(可能会破坏其他事情)是将 pdf.py 中的构建目录从 nbconvert(第 66 行)从

writer = Instance("nbconvert.writers.FilesWriter", args=(), kw={'build_directory': '.'})

writer = Instance("nbconvert.writers.FilesWriter", args=(), kw={'build_directory': ''})

【讨论】:

    【解决方案2】:

    作为紧急解决方案,您可以将 notebook 保存为 markdown (.md) 并在 RStudio 中打开,您可以在其中 Knit 并将其保存为 pdf。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2018-04-25
      • 2019-03-26
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      相关资源
      最近更新 更多