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

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 命令,完全自主控制标题页的排版格式,灵活性更高。

  1. 打开项目根目录下的 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}
    }
    
  2. 清空 YAML 头文件里的 title、author、date 字段,因为这部分内容已经在自定义的 \maketitle 里写死,不需要重复配置。
    这种方式可以自主调整每一行的字号、字重、上下间距,完全匹配学术论文标题页的排版规范。
注意事项
  • 不要再把导师、课程、院校这类附属信息作为 author 列表的平行项,bookdown 对 author 列表的默认渲染逻辑是面向多作者场景的,无法实现逐行排版的效果。
  • YAML 配置里的换行必须用 LaTeX 原生的 \\ 强制换行符,普通的 Markdown 软换行在 LaTeX 编译时会被识别成空格,无法触发分行。
  • 编译后可以打开生成的中间 .tex 文件,检查 \author{} 块里的换行符是否被正确写入,避免因为 YAML 转义规则导致 \\ 被解析成普通字符失效。

内容的提问来源于stack exchange,提问作者bird

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 22:15:01