Jupyter nbconvert LaTex 导出主题

Jupyter nbconvert LaTex Export Theme

我正在使用 Jupyter Notebook nbconvert(另存为菜单)通过 Latex 导出为 pdf。但是,pdf 文件的状态不是很好。例如,一些宽表显示得很好。我希望有一个表格框可以调整到页面的宽度。是否有任何样式、模板可用于制作漂亮的报告以及我如何要求 nbconverter 使用该样式?

这是 Latex 输出:

我想要这样的东西:

看起来 Pandas 在 0.23 版本中获得了 ._repr_latex_() 方法。您需要设置 pd.options.display.latex.repr=True 才能激活它。

没有乳胶代表:

使用乳胶代表:

查看 options 以获得接近您想要的格式。为了准确匹配您想要的输出,您需要使用自定义乳胶模板。


编辑以提供有关模板的更多信息:

Start here 有关模板的一般信息。您可以在与笔记本相同的路径中创建一个 .tplx 文件,并在命令行中 运行 nbconvert 时将其指定为模板:!jupyter nbconvert --to python 'example.ipynb' --stdout --template=my_custom_template.tplx。或者,您可以通过修改 ~.jupyter 目录中的 jupyter_notebook_config.py 文件,指定在通过菜单导出为 Latex 时使用的默认模板。如果这个文件不存在,你可以从命令行通过 运行 命令 jupyter notebook --generate-config 生成它。我的模板也位于 ~/.jupyter 目录中,因此我将以下内容添加到我的 jupyter_notebook_config.py 中:

# Insert this at the top of the file to allow you to reference
# a template in the ~.jupyter directory
import os.path
import sys
sys.path.insert(0, os.path.expanduser("~") + '/.jupyter')
# Insert this at the bottom of the file:
c.LatexExporter.template_file = 'my_template' # no .tplx extension here
c.LatexExporter.template_path = ['.', os.path.expanduser("~") + '/.jupyter'] # nbconvert will look in ~/.jupyter

要了解模板的工作原理,请先查看 null.tplx((*- for cell in nb.cells -*)) 行遍历笔记本中的所有单元格。随后的 if 语句检查每个单元格的类型并调用适当的块。

其他模板扩展 null.tplx。每个模板定义(或重新定义)一些块。层次结构为 null->display_priority->document_contents->base->style_*->article

您的自定义模板可能应该扩展 article.tplx 并向 header 添加一些 Latex 命令以按照您想要的方式设置表格。查看 this blog post 以获取设置自定义模板的示例。

任何更改 table 大小以适应页面宽度的设置? 乳胶代码是这样的:\resizebox*{\textwidth}{!}{%