You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Rmarkdown文档默认字体及修改方法,含Pandoc字体变量疑问

RMarkdown 字体默认设置与修改指南

嘿,我来帮你把这些RMarkdown字体相关的问题梳理清楚,先看你提供的最小可运行示例:

---
date : 2018-May-26
output: pdf_document
title: "Testing Rmarkdown"
---
```{r,comment = NA}
Gender <- gl(2,1000,labels = c("Men","Women"))
SmokerM <- sample(c("Y","N"),1000,replace = T , prob = c(.3,.7))
SmokerW <- sample(c("Y","N"),1000,replace = T , prob = c(.5,.5))
Smoker <- c(SmokerM,SmokerW)
mydata <- data.frame(Gender,Smoker)
table(mydata$Gender,mydata$Smoker)
接下来逐个解答你的问题:

## 核心问题:RMarkdown文档的默认字体与修改方式

当RMarkdown输出PDF时,底层依赖LaTeX编译,默认字体是**Computer Modern**系列,不同内容对应不同的字体变量:

### 1. mainfont/sansfont/monofont/mathfont 对应的内容、默认值与修改
这四个变量确实存在,分别对应不同类别的输出内容:
- **mainfont**:控制正文、表格、普通段落等衬线文本的字体,默认是 *Computer Modern Roman*。
- **sansfont**:控制无衬线文本(比如部分标题、侧边栏内容,取决于模板)的字体,默认是 *Computer Modern Sans Serif*。
- **monofont**:控制代码块、行内代码的等宽字体,默认是 *Computer Modern Typewriter*。
- **mathfont**:控制文档中数学公式的字体,默认是 *Computer Modern Math*。

#### 修改方法:
要修改这些字体,你需要在YAML头部指定字体名称,同时必须使用支持系统字体的LaTeX引擎(`xelatex` 或 `lualatex`),因为默认的`pdflatex`不支持直接调用系统字体。示例如下:

```yaml
---
date : 2018-May-26
output: 
  pdf_document:
    latex_engine: xelatex  # 必须指定这个才能调用系统字体
title: "Testing Rmarkdown"
mainfont: "Times New Roman"  # 修改正文/表格字体
sansfont: "Arial"            # 修改无衬线字体
monofont: "Courier New"      # 修改代码字体
mathfont: "Latin Modern Math"# 修改数学公式字体
---

注意:字体名称必须是你系统中已安装的字体,比如Windows上的"Microsoft YaHei",Mac上的"PingFang SC"等。

你的示例中正文与表格的字体问题

  • 正文字体:默认是mainfont对应的 Computer Modern Roman,表格内容和正文使用的是同一套字体(除非你用LaTeX命令单独修改表格字体)。
  • 代码块字体:默认是monofont对应的 Computer Modern Typewriter
  • 修改方式:直接按照上面的YAML配置修改对应的mainfontmonofont即可;如果需要单独修改表格字体,可以在R代码块中使用kableExtra等包的LaTeX格式命令,或者在文档中加入LaTeX代码自定义表格环境。

RMarkdown中其他字体内容类别

除了上述四类,还有这些常见的字体场景:

  • 标题字体:默认基于mainfont的加粗/加大字号,你可以通过LaTeX命令(如\renewcommand{\familydefault}{\sfdefault})修改为无衬线或其他字体,部分模板也支持通过YAML变量titlefont配置。
  • 脚注字体:默认是缩小版的mainfont,可以通过LaTeX包(如footmisc)调整字体大小和样式。
  • 引用/块引用字体:默认和正文一致,可通过CSS(针对HTML输出)或LaTeX命令(针对PDF输出)修改为斜体或其他字体。
  • 自定义环境字体:比如定理、证明等学术文档常用的环境,可通过LaTeX包(如amsthm)配置字体样式。

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

火山引擎 最新活动