如何避免Quarto/Pandoc导出PDF时作者列表溢出页边距
Quarto/Pandoc渲染PDF时作者列表过长溢出页面的解决办法
当使用Quarto(依赖Pandoc)导出PDF时,若YAML前置区的作者列表是长串连续文本,渲染后会出现作者名超出页面边距、无法自动换行的问题。
可复现示例
将以下内容保存为article.qmd:
--- title: "What a nice day" author: First name1 Name, First name2 Name, First name3 Name, First name4 Name, First name5 Name, First name6 Name, First name7 Name, First name8 Name, First name9 Name --- bla bla bla
执行渲染命令:
quarto render article.qmd --to pdf
或直接使用Pandoc:
pandoc article.qmd -o article.pdf
渲染后的PDF中,作者列表会溢出页面边缘,无法自动换行(当前使用Quarto版本:1.5.57)
解决方法
方法1:将作者拆分为YAML列表
把作者字符串拆成列表项,Quarto/Pandoc会自动处理排版,超出宽度时自动换行:
--- title: "What a nice day" author: - First name1 Name - First name2 Name - First name3 Name - First name4 Name - First name5 Name - First name6 Name - First name7 Name - First name8 Name - First name9 Name ---
这种方式会自动将作者名按垂直列表或换行的水平列表排版,避免溢出。
方法2:插入LaTeX强制换行命令
如果需要保持作者在同一行但手动控制换行位置,可在作者字段中插入LaTeX的\linebreak命令:
--- title: "What a nice day" author: First name1 Name, First name2 Name, First name3 Name, First name4 Name, First name5 Name,\linebreak First name6 Name, First name7 Name, First name8 Name, First name9 Name ---
该命令会在指定位置强制换行,防止文本溢出页面。
方法3:自定义LaTeX模板(进阶)
若需要更灵活的全局排版控制,可自定义Quarto的LaTeX模板:
- 导出默认PDF模板到本地:
quarto template export pdf my-custom-template
- 打开模板目录中的
template.tex文件,找到作者相关的代码(通常是\author{$author$}),修改为支持自动换行的格式,例如:
\author{\raggedright $author$}
\raggedright会让文本自动换行,避免溢出边距。
3. 在QMD文件的YAML中指定使用自定义模板:
--- title: "What a nice day" author: First name1 Name, First name2 Name, First name3 Name, First name4 Name, First name5 Name, First name6 Name, First name7 Name, First name8 Name, First name9 Name format: pdf: template: my-custom-template/template.tex ---
内容的提问来源于stack exchange,提问作者Paul Rougieux
相关产品推荐
相关产品推荐

