bookdown生成pdf_book时如何让作者、导师等标题页信息分行显示
问题根源
bookdown 生成 PDF 时,会将 YAML 中设置的 author 列表自动转换为 LaTeX 标准的多作者排版结构,每个列表项之间插入 \and 命令。而 LaTeX 的 book 文档类中,\and 的默认作用是横向间隔排布不同作者,不会触发自动换行,因此所有挤在 author 列表里的信息都会被排在同一行。
调整方案
方案1:直接修改 YAML 配置实现逐行排版
删掉原 YAML 中作为列表的 author 结构,把所有需要放在作者块下的信息整合成单个字符串,在不同信息项之间插入 LaTeX 强制换行标记 \\,调整垂直间距避免文字拥挤:
--- title: "Term Paper Title" # 替换原来的多列表 author 块 author: "Bird \\[0.5em] Supervisor: Hummingbird \\[0.5em] Course: Ornithology \\[0.5em] University: XXX State University" date: "Summer Semester: 2021" site: bookdown::bookdown_site output: bookdown::pdf_book: includes: in_header: preamble.tex documentclass: book classoption: openany bibliography: [book.bib, packages.bib] biblio-style: apalike link-citations: yes mainfont: Times New Roman fontsize: 12pt geometry: "left=3cm, right=2cm, top=2.5cm, bottom=2.5cm" linestretch: 1.5 toc-depth: 1 secnumdepth: 1 ---
这种写法不需要额外修改其他文件,\\[0.5em] 代表在换行的同时,在上下两行之间留出 0.5 倍当前字号的垂直间距,避免文字贴得过近。
方案2:通过 preamble.tex 完全自定义标题页排版
因为项目已经配置了 preamble.tex 作为头文件引入,可直接重定义 LaTeX 的 \maketitle 命令,完全自主控制标题页的排版格式,灵活性更高。
- 打开项目根目录下的
preamble.tex文件,插入如下代码:% 自定义标题页排版 \renewcommand{\maketitle}{ \thispagestyle{empty} % 标题页不显示页眉页码 \begin{center} % 标题部分 {\Huge\bfseries Term Paper Title \par} \vspace{2em} % 作者块逐行排版 {\Large Bird \par} \vspace{1em} {\large Supervisor: Hummingbird \par} {\large Course: Ornithology \par} {\large University: XXX State University \par} \vspace{1em} % 日期部分 {\large Summer Semester: 2021 \par} \end{center} } - 清空 YAML 头文件里的
title、author、date字段,因为这部分内容已经在自定义的\maketitle里写死,不需要重复配置。
这种方式可以自主调整每一行的字号、字重、上下间距,完全匹配学术论文标题页的排版规范。
注意事项
- 不要再把导师、课程、院校这类附属信息作为 author 列表的平行项,bookdown 对 author 列表的默认渲染逻辑是面向多作者场景的,无法实现逐行排版的效果。
- YAML 配置里的换行必须用 LaTeX 原生的
\\强制换行符,普通的 Markdown 软换行在 LaTeX 编译时会被识别成空格,无法触发分行。 - 编译后可以打开生成的中间
.tex文件,检查\author{}块里的换行符是否被正确写入,避免因为 YAML 转义规则导致\\被解析成普通字符失效。
内容的提问来源于stack exchange,提问作者bird
相关产品推荐
相关产品推荐

