(Jupyter Notebook) nbconvert PDF 通过 LaTeX 自定义日期和标题格式

Tyl*_*ler 5 latex pdf-generation jupyter-notebook nbconvert

我正在使用 Jupyter Notebook 编写包含大量代码和 LaTeX 的报告。我想更改它们的标题、日期和格式。准确地说,我希望所有文本的尺寸都较小,最大为 12 到 14 像素。

我花了几天时间尝试为 nbconvert 创建自定义 *.tplx 文件,但没有成功。无论我使用什么文件,标题和日期都保持不变。事实上,当我使用自定义 .tplx 时,似乎没有任何变化。

我发现其他几个人询问了这个问题,我在其中找到了有关模板以及如何在使用 nbconvert 时调用它们的信息。每个完整的解决方案都涉及导出为“.tex”,然后手动进行更改。这是不理想的,因为我经常每天创建多个文档,与一次性解决方案相比,这会大大减慢我的速度。

有什么建议么?

Set*_*eth 6

好吧,我编写了一些代码来完成此部分的日期部分。(这个博客给了我很大帮助。)类似的编辑可以更改标题和/或作者。我不确定这有多强大,但它确实起到了作用。

基本上,您需要编辑/nbconvert/templates/latex目录中的 tplx 文件。具体来说,我编辑了base.tplx. 它曾经在哪里

 ((* block date *))((* endblock date *))
Run Code Online (Sandbox Code Playgroud)

我把这个改为

    ((* block date *))  
    ((*- if nb.metadata["latex_metadata"]: -*))  
    ((*- if nb.metadata["latex_metadata"]["date"]: -*))  
        \date{((( nb.metadata["latex_metadata"]["date"] )))}  
    ((*- endif *))  
    ((*- endif *))  
    ((* endblock date *))  
Run Code Online (Sandbox Code Playgroud)

然后在笔记本元数据中,我添加了

  "latex_metadata": {  
      "date": "CUSTOM DATE HERE"  
  },  
Run Code Online (Sandbox Code Playgroud)

最后一行,取决于它是否是元数据结构中的最后一行。如果不存在 Latex_metadata 标签,则会将日期保留为空,并且 Latex 会替换当前日期。

我无法解决的唯一问题是,当我通过 LaTeX 运行下载为 -> PDF 时,它并不总是重新运行 LaTeX 生成器(有时它只是给我它创建的最后一个 pdf,而不是新的 pdf。 )我不明白为什么它有时运行而有时不运行。

*编辑* 我在jupyter笔记本中的确切元数据部分现在看起来像这样(我使用日期字段来显示我的学生的截止日期):

{
  "anaconda-cloud": {},
  "kernelspec": {
    "name": "python3",
    "display_name": "Python 3",
    "language": "python"
  },
  "language_info": {
    "name": "python",
    "version": "3.7.9",
    "mimetype": "text/x-python",
    "codemirror_mode": {
      "name": "ipython",
      "version": 3
    },
    "pygments_lexer": "ipython3",
    "nbconvert_exporter": "python",
    "file_extension": ".py"
  },
  "latex_metadata": {
    "date": "Due April 7 at 11:59pm"
  }
}
Run Code Online (Sandbox Code Playgroud)