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

如何在knitr生成的Word文档中修改文本字体、字号及对齐方式

调整knitr生成docx内容的对齐、字号与字体方案

这问题我熟!要在Rmd里通过knitr生成docx时,把默认的左对齐12号Cambria文本改成居中对齐,还调整字号和字体,有几个实用的方案,咱们一个个说:

方案一:用officer包精准控制格式

officer是专门用来操作Word文档的R包,能精细控制每一段内容的样式,完全满足你的需求:

  1. 先安装并加载包:
install.packages("officer")
library(officer)
  1. 在Rmd的代码块里直接生成带格式的内容:
```{r results='asis', echo=FALSE}
library(officer)

# 初始化docx文档对象
doc <- read_docx()

for(i in 1:10){
  # 添加居中对齐、14号Arial字体的段落
  doc <- body_add_par(
    doc, 
    paste("This is iteration number", i), 
    align = "center",          # 居中对齐
    font.size = 14,            # 设置字号为14号
    font.family = "Arial"      # 设置字体为Arial
  )
}

# 将内容输出到最终docx(Rmd编译时会自动整合)
print(doc, target = "formatted_output.docx")
这种方法的优势是自由度极高,你可以给不同迭代的文本设置不同样式,适合需要精细化控制的场景。

## 方案二:用自定义Word模板+Pandoc样式
如果需要批量应用统一样式,推荐先做一个自定义Word模板,再在Rmd里引用:

1. 新建一个docx文件,在「样式」面板里创建一个自定义样式(比如命名为`CustomCenter`),设置:
   - 对齐方式:居中
   - 字号:14号
   - 字体:Arial
   保存这个文件为`custom_template.docx`

2. 在Rmd的YAML头部指定这个模板:
```yaml
---
title: "格式化输出示例"
output:
  word_document:
    reference_docx: "custom_template.docx"
---
  1. 在代码块里用Pandoc的样式标记包裹输出内容:
```{r results='asis', echo=FALSE}
for(i in 1:10){
  # 用自定义样式包裹文本
  cat(paste("::: {.CustomCenter}\nThis is iteration number", i, "\n:::\n"))
}
这种方法适合需要统一格式的场景,后续只要修改模板样式,所有引用该样式的内容都会自动更新,维护起来很方便。

## 方案三:用HTML标记快速调整(无需额外工具)
Pandoc支持将简单的HTML标记转换为Word格式,所以可以直接用`<p>`标签加`style`属性快速调整:

```r
```{r results='asis', echo=FALSE}
for(i in 1:10){
  cat(paste(
    '<p style="text-align:center; font-size:14pt; font-family:Arial;">',
    "This is iteration number", i,
    '</p>\n'
  ))
}
这个方案最快捷,不需要安装额外包或者制作模板,适合临时调整格式的场景,注意style属性的写法要符合Pandoc的转换规则哦。

---
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:07:50