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

使用bookdown的pdf_document2输出时遇CTeX字体集‘mac’不可用错误

解决CTeX字体集mac不可用的问题

你在使用bookdown撰写中文PDF报告时遇到的这个错误,大概率是tinyTeX默认未预装对应字体集,或是YAML配置的格式/参数存在问题。下面是几个针对性的解决方案:

1. 修正YAML配置格式与字体集参数

首先检查并调整你的YAML配置,确保格式合规(output选项需缩进),同时替换tinyTeX不支持的mac字体集为兼容选项:

---
title: "title"
author: 
  - author
documentclass: ctexart
site: bookdown::bookdown_site
output: 
  bookdown::pdf_document2:
    bibliography: bib_v1.bib
    csl: chinese-author-date.csl
    link-citations: yes
    colorlinks: yes
    latex_engine: xelatex  # 明确指定XeLaTeX编译器,CTeX依赖它处理中文
    classoption: ["hyperref", "fontset=windows"]  # 按系统选择:Windows用windows,Linux用ubuntu,Mac可尝试fontset=none
---
  • 注意:classoption不要带多余的逗号(比如你原配置里的"hyperref,"会导致解析错误);
  • 若你用的是Mac系统,fontset=mac需要系统字体的LaTeX适配支持,tinyTeX默认未预装,所以更推荐用fontset=none,再配合方案3手动指定字体。

2. 安装/更新tinyTeX的CTeX字体包

打开RStudio控制台,运行以下命令确保tinyTeX包含完整的CTeX字体组件:

# 安装CTeX字体包
tinytex::tlmgr_install("ctex-fonts")
# 更新所有tinyTeX包到最新版本
tinytex::tlmgr_update(all = TRUE)

3. 手动指定系统中文字体(绕过CTeX默认字体集)

如果前两种方法无效,可以直接跳过CTeX的字体集配置,手动调用你系统中已有的中文字体,在YAML里添加header-includes即可:

---
# 其他配置保持不变
header-includes:
  - \setCJKmainfont{PingFang SC}  # Mac系统用苹方字体,Windows可替换为"SimSun"(宋体),Linux可替换为"Noto Sans CJK SC"
  - \setCJKsansfont{PingFang SC}
  - \setCJKmonofont{PingFang SC}
---

这种方式直接调用系统字体,能彻底避免CTeX字体集的兼容性问题,同时保证中文显示正常。

4. 验证编译环境设置

确保RStudio默认LaTeX编译器为XeLaTeX:

  • 打开RStudio → 工具 → 全局选项 → Sweave → 选择"XeLaTeX"作为默认LaTeX编译器。

完成以上步骤后,重新编译你的bookdown文档,应该就能解决字体集报错问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:19:34