4

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

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

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

有什么建议么?

4

2 回答 2

5

好的,我拼凑了一些完成日期部分的代码。(这个博客帮助很大。)类似的编辑可以改变标题和/或作者。我不确定这有多强大,但它成功了。

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

 ((* block date *))((* endblock date *))

我把它改成了

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

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

  "latex_metadata": {  
      "date": "CUSTOM DATE HERE"  
  },  

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

我无法解决的唯一问题是,当我通过 LaTeX 运行 Download as -> PDF 时,它并不总是重新运行 LaTeX 生成器(有时它只是给我它创建的最后一个 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"
  }
}
于 2018-02-12T16:38:40.603 回答
0

感谢您的有用输入。可以执行相同的操作来自定义titleauthor。我在 base.tex.j2 中编辑了正确的部分,如下所示,并在元数据中的日期字段下方添加了相应的字段

((* block title -*))
((*- if nb.metadata["latex_metadata"]: -*))  
((*- if nb.metadata["latex_metadata"]["title"]: -*))  
    \title{((( nb.metadata["latex_metadata"]["title"] )))}  
((*- endif *))  
((*- endif *))  
((*- endblock title *))
((* block date *))  
((*- if nb.metadata["latex_metadata"]: -*))  
((*- if nb.metadata["latex_metadata"]["date"]: -*))  
    \date{((( nb.metadata["latex_metadata"]["date"] )))}  
((*- endif *))  
((*- endif *))  
((* endblock date *))  
((* block author *))
((*- if nb.metadata["latex_metadata"]: -*))  
((*- if nb.metadata["latex_metadata"]["author"]: -*))  
    \author{((( nb.metadata["latex_metadata"]["author"] )))}  
((*- endif *))  
((*- endif *))  
((* endblock author *))
于 2021-05-20T15:02:17.807 回答