我正在使用 LaTeX(通过 overleaf.com)撰写论文。我有许多 Jupyter Notebook(以前称为 IPython Notebook),我想将其作为附录。我尝试了两种方法:
1)使用 nbconvert 将笔记本转换为 LaTeX 并将其放入我的项目中\include{}
。
2)使用 nbconvert 制作 pdf 并将其包含在内pdfpages
。
选项 1 有问题,因为 tex 输出有很多前导语句(如\usepackage
),我需要移动它们才能进入要构建的文档。选项 2 很难,因为我无法弄清楚如何让包含的 pdf 页面正确编号或显示在目录中。
本质上,我只是想知道是否有人找到了一种好的方法(或者至少是一种不太好但可行的方法)将 Jupyter 笔记本作为页面包含在大型 LaTeX 文档中。
背景
Jupyter 笔记本是一个“允许您创建和共享包含实时代码、方程式、可视化和说明性文本的文档的 Web 应用程序。” 就我而言,我使用它来演示光学遥感的 Python 代码,因此有 Python 代码、说明性文本和输出(表格、图像、图表等)。
据我所知,Jupyter 内置了使用 pandoc 将其普通 html 输出转换为 LaTeX 的功能。但是,该过程中似乎存在一些限制,阻止我生成适合我目的的 LaTeX。我对使用 LaTeX 还比较陌生,因此我甚至无法想出一个合理的方法来解决这个问题。
答案1
对于选项 2,如果您使用类似的东西,它会达到您想要的效果吗?
\includepdf[
%% Include all pages of the PDF
pages=-,
%% make this page have the usual page style
%% (you can change it to plain etc). By default pdfpages
%% sets the pagecommand to \pagestyle{empty}
pagecommand={\pagestyle{headings}},
%% Add a "section" entry to the ToC with the heading
%% "Quilling Shapes" and the label "sec:shapes"
addtotoc={1,section,1,Quilling Shapes,sec:shapes}]
%% The pdf file itself
{QuillingShapes.pdf}
答案2
以下是我喜欢使用 Jupyter 笔记本将其包含在 LaTeX 文档中的方法\include{}
。
大纲
- 在 Jupyter Notebook 中,使用 raw 选项进行包含 LaTeX 的非代码展示。这可以通过选择单元格然后按 来实现
ESC
。R
单元格可能如下所示:
This is some text in the notebook which contains LaTeX.
So we can write $\theta \in (0,1)$ or cite \ref{chapter1}
from elsewhere in the Latex file.
您的 LaTeX 可以在整个 LaTeX 文档中引用您喜欢的任何内容。
- 首先使用 nbconvert 输出到 markdown。假设你的笔记本名为
test.ipynb
。然后使用
jupyter nbconvert --to markdown test.ipynb
此代码创建test.md
中间文件。
- 使用潘多克将 markdown 转换为 LaTeX,如下所示
pandoc --listings -f markdown -t latex test.md -o test.tex
这将创建test.tex
可插入到您的主 LaTeX 文档中的内容\include{test.tex}
。
笔记:该listings
包必须可用于您的 LaTeX 安装。删除该--listings
选项有效,但会产生包含您可能不想要的主 Tex 文件中的额外命令序列的 Tex。添加独立选项-s
以预览 pdf 或查看您可能想要在主 Latex 文档中包含哪些命令序列和包:
pandoc --listings -f markdown -t latex test.md -s -o test.tex
pdflatex test.tex
然后您可以打开 pdftest.pdf
进行预览。
答案3
看看 Authorea (http://www.authorea.com) - 它与 Overleaf 类似,但提供了一些更高级的功能,包括轻松集成 ipython 笔记本。请参阅https://www.authorea.com/users/9932/articles/11070了解更多信息