如何在Rmarkdown Word输出中自定义flextable标题的对齐、字体与斜体?
解决flextable表格标题格式自定义问题
由于flextable的part参数不支持直接控制caption,可通过以下三种方法实现标题的居中对齐、指定字体和取消斜体:
方法1:结合officer包修改默认表格标题样式
flextable的标题默认使用Word的"Table Caption"样式,可通过officer包直接修改该样式的格式:
library(flextable) library(magrittr) library(officer) # 创建Word文档对象 doc <- read_docx() # 重置并定义新的表格标题样式 doc <- doc %>% # 移除原有默认样式 style_remove(style_id = "Table Caption") %>% # 添加自定义样式:居中、Calibri字体、无斜体 style_add( style_id = "Table Caption", fp_text = fp_text( font.family = "Calibri", italic = FALSE, font.size = 10 ), fp_par = fp_par(text.align = "center") ) # 生成flextable并设置标题 ft <- head(mtcars[,1:5]) %>% flextable() %>% set_caption(caption = "展示mtcars数据集的部分列") %>% add_footer_lines("也可基于可选参数col_keys实现") %>% font(part = "footer", fontname = "Consolas") %>% bold(bold = TRUE, part = "footer") # 将表格加入文档并保存 doc <- doc %>% body_add_flextable(ft) print(doc, target = "自定义标题格式.docx")
方法2:使用自定义Word模板
提前在Word中创建一个模板文档,修改其中的"Table Caption"样式为你需要的格式(居中、指定字体、取消斜体),然后在Rmarkdown的YAML中指定该模板:
--- output: word_document: reference_docx: "自定义模板.docx" ---
之后在R代码中正常使用set_caption,生成的表格标题会自动套用模板中的样式。
方法3:手动添加自定义格式的标题段落
不使用flextable自带的set_caption,而是通过officer在表格上方单独添加一个自定义格式的段落作为标题:
library(flextable) library(magrittr) library(officer) doc <- read_docx() # 添加自定义格式的标题 doc <- doc %>% body_add_par( value = "展示mtcars数据集的部分列", style = style_add( style_id = "自定义标题", fp_text = fp_text(font.family = "Calibri", italic = FALSE), fp_par = fp_par(text.align = "center") ) ) # 生成并添加表格 ft <- head(mtcars[,1:5]) %>% flextable() %>% add_footer_lines("也可基于可选参数col_keys实现") %>% font(part = "footer", fontname = "Consolas") %>% bold(bold = TRUE, part = "footer") doc <- doc %>% body_add_flextable(ft) print(doc, target = "自定义标题格式.docx")
内容的提问来源于stack exchange,提问作者John Stone
相关产品推荐
相关产品推荐

