在RMarkdown中有一种指定字体颜色的方法吗?
时似乎没有选项答案 0 :(得分:76)
@Ben Bolker提供的链接给出了答案:
fm[]
如果选择HTML(ioslides)作为输出格式,会起作用。
但是,如果选择pdf(beamer)作为输出格式,它将不起作用。如果要创建pdf,请使用LaTeX语法:
Roses are <span style="color:red">red</span>,
violets are <span style="color:blue">blue</span>.
答案 1 :(得分:35)
我创建了一个这样的函数:
#Color Format
colFmt = function(x,color){
outputFormat = knitr::opts_knit$get("rmarkdown.pandoc.to")
if(outputFormat == 'latex')
paste("\\textcolor{",color,"}{",x,"}",sep="")
else if(outputFormat == 'html')
paste("<font color='",color,"'>",x,"</font>",sep="")
else
x
}
然后你可以像这样内联使用它:`r colFmt("MY RED TEXT",'red')`
,无论是使用latex还是HTML文档,都会呈现彩色文本。
答案 2 :(得分:10)
这在两种输出格式(pdf和html:
)中效果都很好Roses are $\color{red}{\text{beautiful red}}$,
violets are $\color{blue}{\text{lovely blue}}$.
希望它有所帮助。
答案 3 :(得分:3)
我基本上使用了尼古拉斯·汉密尔顿的答案,但因为我使用了xtable
和print
,我在某些乳胶序列被转义时遇到了一些问题。即,\\textcolor
被转换为$\backslash$textcolor
。通过以下方式避免消毒,我能够做到正确:
```{r results='asis'}
tbl = data.frame(a = letters[1:10], b = 1:10 / 10)
tbl$b = ifelse(tbl$b < 0.5, colFmt(tbl$b, "red"), colFmt(tbl$b, "green"))
print(xtable(tbl), sanitize.text.function = identity)
```
然后,我必须手动清理像%
这样的几个字符,但至少\textcolor
已正确应用。当然,这可以通过扩展自己的清理功能来避免。
答案 4 :(得分:3)
其他人为Word以外的输出提供了答案。对于Word,您可以使用Pandoc自定义样式语法在参考文档文档的帮助下完成此操作。首先,在reference.docx模板中,创建一个具有简短名称的新Word样式。如果希望将字体颜色应用于完整段落,则可以使用默认的“链接段落和字符”样式类型。如果您只想强调带有颜色的段落中的某些单词,则需要选择“字符”样式类型。更改字体颜色(以及您需要的任何其他样式)并保存reference.docx文件。
然后,在.Rmd文件中,您可以使用以下标记:
<div custom-style=“DivCol”>Whole paragraph of colored text</div>
Just a <span custom-style=“SpanCol”>few words</span> of colored text
关于样式名称的说法 - 由于我不理解的原因,此过程不适用于样式名称“Span_Add”,但“SpanAdd”没问题。
答案 5 :(得分:1)
与输出格式无关的解决方案是在text_spec()
包中使用专用的kableExtra
函数:
Roses are `r kableExtra::text_spec("red", color = "red")`,
violets are `r kableExtra::text_spec("blue", color = "blue")`
答案 6 :(得分:0)
对于PDF和HTML,要获取彩色文本,可以使用markdown高亮显示进行修改:see the rmarkdown book。 Pandoc过滤器是最佳选择。
对于Microsoft word,必须首先创建具有自定义样式的Template_MS.docx。警告:请为段落着色(段落样式)和为几个单词着色(文字样式)创建不同的样式。制作新样式时是一种选择。
添加YAML:
---
output:
word_document:
reference_docx: Template_MS.docx
---
接下来:
For <span custom-style="Character1">few words</span> of colored text.
对于段落。
<div custom-style="Paragraph1">Paragraph of colored text. Blabla. Blabla.</div>
Nota Bene:
+不要将相同的样式用于段落和几句话,这很麻烦。
+如果不起作用,请检查您的样式是否符合MS中的ou字符。
+如果不起作用,请安装pandoc的更新版本。