如何在qmd文件的PPTX输出中自定义图题的字体格式?
在Quarto的QMD文件中自定义PPTX输出的图表题格式
问题描述
需要在QMD文件中修改图表题格式以生成PPTX输出,目前仅能通过fig.cap设置内容,无法控制样式。期望实现效果:“Figure 1”部分为加粗深蓝色,“Overlaying Graphs”部分为常规字体浅灰色。
最小可复现示例(MWE):
--- title: "My Work" subtitle: "2023" author: "Me" format: pptx reference-doc: template.pptx mainfont: Open Sans sansfont: Open Sans slide-level: 1 --- # Slide 1 ```{r, fig.align = "center", fig.cap="Caption"} # code for the graph
## 解决方案 ### 方法1:内联HTML样式直接定义 Quarto的`fig.cap`支持内嵌HTML样式,可直接在标题内容中指定格式: ```qmd ```{r, fig.align = "center", fig.cap="<span style='font-weight:bold; color:#003399'>Figure 1</span> <span style='color:#666666'>Overlaying Graphs</span>"} # 图表代码
注意:颜色值可替换为你需要的深蓝色/浅灰色具体十六进制代码。 ### 方法2:自定义PPTX参考文档(推荐) 如果需要统一所有图表题样式,修改`reference-doc`对应的PPTX模板更高效: - 打开`template.pptx`文件,找到PPT中的**图表标题样式**(通常名为`Figure Caption`或`Image Caption`) - 将样式拆分为编号部分(Figure X)和内容部分,分别设置「加粗+深蓝色」「常规字体+浅灰色」 - 保存模板后,正常使用`fig.cap`即可,Quarto会自动应用模板样式: ```qmd ```{r, fig.align = "center", fig.cap="Overlaying Graphs"} # 图表代码
此时Quarto会自动添加编号并应用预设样式,无需手动编写编号。 ### 方法3:Lua过滤器进阶控制 若需更灵活的全局样式控制,可编写Lua过滤器自动处理图表标题: 1. 创建`figure-caption-filter.lua`文件,内容如下: ```lua function Image(el) if el.caption and #el.caption > 0 then local caption_text = pandoc.utils.stringify(el.caption) local fig_num = el.attributes["fig-num"] or "1" local styled_caption = pandoc.RawInline("openxml", "<w:p><w:r><w:rPr><w:b/><w:color w:val='003399'/></w:rPr><w:t>Figure " .. fig_num .. "</w:t></w:r><w:r><w:rPr><w:color w:val='666666'/></w:rPr><w:t> " .. caption_text .. "</w:t></w:r></w:p>" ) el.caption = pandoc.Inlines({styled_caption}) end return el end
- 在QMD的YAML中引用过滤器:
--- title: "My Work" subtitle: "2023" author: "Me" format: pptx: reference-doc: template.pptx filters: - figure-caption-filter.lua mainfont: Open Sans sansfont: Open Sans slide-level: 1 ---
- 正常设置
fig.cap即可自动应用样式:
```{r, fig.align = "center", fig.cap="Overlaying Graphs"} # 图表代码
内容的提问来源于stack exchange,提问作者Bileobio
相关产品推荐
相关产品推荐

