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

如何在RMarkdown生成的PDF文件中为部分文本设置红色?

解决RMarkdown生成PDF时设置文本红色的问题

为什么最初的HTML方法无效

当输出为PDF时,RMarkdown会通过Pandoc将内容转换为LaTeX再编译成PDF,HTML的<p style="color:red">这类标签不会被LaTeX识别,所以无法生效。

修复colFmt函数的问题

你写的colFmt函数存在几个问题,调整后即可正常使用:

  • 需明确引用knitr包的opts_knit对象,避免未定义报错
  • hex_color是未定义变量,要替换成具体的十六进制颜色码(比如红色对应FF0000)
  • 函数返回的LaTeX/HTML代码需要被knitr解析渲染,而非当成普通文本输出,需用knitr::asis_output()实现

修正后的完整代码示例

---
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)

Title

colFmt = function(x, color){
  outputFormat = knitr::opts_knit$get("rmarkdown.pandoc.to")
  if(outputFormat == 'latex'){
    knitr::asis_output(paste0("\\textcolor[HTML]{", color, "}{", x, "}"))
  } else if(outputFormat == 'html'){
    knitr::asis_output(paste0("<font color='", color, "'>", x, "</font>"))
  } else {
    x
  }
}

普通文本 r colFmt("需要变红的文本", "FF0000") 继续普通文本。

## 更简单的替代方法
如果只针对PDF输出,直接插入LaTeX命令更直接,无需编写函数:
```rmarkdown
普通文本 \textcolor{red}{需要变红的文本} 继续普通文本。

若要使用十六进制自定义颜色:

普通文本 \textcolor[HTML]{FF0000}{需要变红的文本} 继续普通文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:52:53