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

Ubuntu系统下Rmarkdown代码字体匹配默认文本字体报错求助

解决Ubuntu下Xelatex编译Rmarkdown时Computer Modern等宽字体找不到的问题

这个报错的核心原因是:fontspec(Xelatex依赖的字体管理包)会去系统字体库查找你指定的字体名称,但Ubuntu默认并没有安装名为"Computer Modern"的系统级字体——Computer Modern是TeX发行版自带的传统字体,不属于系统字体范畴,所以直接写monofont: "Computer Modern"会找不到。

下面给你几个可行的解决方案,都能实现代码字体和正文Computer Modern字体统一:

方案1:改用Latin Modern Mono(推荐,最简单)

Latin Modern是Computer Modern的官方扩展版本,外观几乎完全一致,而且Ubuntu默认的TeX发行版(比如TeX Live)通常会附带安装这个字体,fontspec可以直接识别它。修改你的YAML配置如下:

---
date : 2018-May-27
output:
  pdf_document:
    latex_engine: xelatex
    monofont: "Latin Modern Mono"
title: "Testing Rmarkdown"
---

方案2:直接引用TeX自带的Computer Modern等宽字体

如果你坚持要用原生的Computer Modern等宽字体,可以通过LaTeX命令指定TeX发行版内的字体,添加header-includes配置:

---
date : 2018-May-27
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
  - \setmonofont{CMU Typewriter Text}
title: "Testing Rmarkdown"
---

CMU Typewriter Text是Computer Modern等宽字体的TeX内部名称,fontspec可以直接定位到TeX发行版中的这个字体文件。

方案3:切换回默认的Pdflatex引擎

如果不需要Xelatex的特殊功能(比如复杂的Unicode支持),最简单的方法就是去掉latex_engine: xelatex配置,用默认的Pdflatex编译。Pdflatex默认全套使用Computer Modern字体,代码块的等宽字体本来就是Computer Modern的变体,完全不需要额外设置:

---
date : 2018-May-27
output:
  pdf_document:
title: "Testing Rmarkdown"
---

以上三种方法都能解决你的字体找不到错误,同时实现代码字体和正文字体的统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:06:38