You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nbconvert转换Jupyter Notebook至PDF时如何保留换行与段落分隔

解决Jupyter Notebook转PDF时段落格式丢失的问题

我之前也踩过这个坑!在Notebook里用两行空行分隔段落看着好好的,一转PDF就挤成一团,确实闹心。分享几个亲测有效的解决办法:

方法1:用HTML <p>标签包裹段落

这是最直接省心的办法,nbconvert转PDF时会正确识别HTML的段落标签,自动保留段落间距。只需要把每个段落用<p>和</p>包裹起来就行:

<p>这是第一段内容,不管你在Notebook里有没有换行,用p标签包裹后,转PDF时会作为独立段落显示。</p>

<p>这是第二段内容,两段之间会自动生成合适的间距,完美还原你想要的格式~</p>

方法2:自定义nbconvert的LaTeX模板

如果不想每次都写HTML标签,可以修改转PDF用的LaTeX模板(毕竟nbconvert是先把Notebook转成LaTeX再编译成PDF的),一劳永逸解决问题:

  1. 先找到默认模板路径:运行命令 jupyter --data-dir,找到输出的目录后,进入nbconvert/templates/latex文件夹,复制默认的article.tplx模板到你的工作目录,比如重命名为custom_paragraph.tplx。
  2. 打开自定义模板,找到处理Markdown内容的部分,调整段落渲染逻辑——比如让Markdown的两行空行对应LaTeX的\par命令,或者直接在模板开头加\setlength{\parskip}{1em}来固定段落间距。
  3. 转换PDF时指定自定义模板:
jupyter nbconvert --to pdf --template custom_paragraph.tplx notebook.ipynb

方法3:直接插入LaTeX命令(临时救急)

如果只是少数段落需要调整,可以直接在Markdown里加LaTeX的段落命令,比如在段落末尾加\par,或者用\vspace{1em}手动添加间距:

这是第一段内容\par

这是第二段内容,用\vspace{0.5em}可以手动控制两段的间距
\vspace{0.5em}
这是第三段内容

为什么原来的两行空行没用?

因为Jupyter Notebook的Markdown渲染遵循GitHub Flavored Markdown,两行空行是分段规则,但nbconvert转LaTeX时,可能把这些空行当成普通空格处理,没有转换成LaTeX需要的段落分隔(LaTeX里靠空行或\par来区分段落),所以需要用上面的方法强制告诉转换器哪里是段落分界。

内容的提问来源于stack exchange,提问作者bryan.blackbee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:26:12