如何在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
相关产品推荐
相关产品推荐

