如何在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
相关产品推荐
相关产品推荐

