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

如何在RMarkdown生成PDF时更换字体?

解决RMarkdown生成PDF时的字体修改问题

核心问题分析

你遇到的问题本质是未启用支持字体自定义的编译引擎——默认的pdflatex不支持直接通过mainfont指定字体,也无法完整加载部分字体包的效果。另外,不同字体对应的LaTeX包需要明确对应关系。

分步解决方案

1. 先指定编译引擎

在RMarkdown的YAML头部添加XeLaTeX或LuaLaTeX引擎配置,这是修改字体的必要前提:

---
title: "你的文档标题"
output:
  pdf_document:
    latex_engine: xelatex  # 也可选用lualatex
---

2. 正确设置BeraSans字体

针对BeraSans,有两种可靠的配置方式:

  • 方式一:通过YAML直接指定(需XeLaTeX/LuaLaTeX)
    注意字体名称要与LaTeX库中的标准名称一致,BeraSans的正确名称是Bera Sans:

    ---
    title: "测试文档"
    output:
      pdf_document:
        latex_engine: xelatex
    mainfont: "Bera Sans"
    ---
    
  • 方式二:使用LaTeX包(兼容所有引擎)
    BeraSans属于bera包,TinyTeX会自动安装缺失的包。需要在header.tex中添加字体替换命令:

    \usepackage[scaled]{berasans}
    \renewcommand{\familydefault}{\sfdefault}  # 将无衬线字体设为文档默认
    

    再在YAML中引入该文件:

    ---
    title: "测试文档"
    output:
      pdf_document:
        includes:
          in_header: header.tex
    ---
    

3. 查询字体对应LaTeX包的方法

  • 常见字体的对应包:Source Sans Pro对应sourcesanspro,Roboto对应roboto,Noto系列对应noto,Bera系列对应bera。
  • 用TinyTeX时,只要在代码中引用对应包,它会自动检测并安装缺失的包,无需手动操作。

4. 验证字体是否生效

编译PDF后,用阅读器选中文本查看字体属性,确认是否成功切换为目标字体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:52:25