如何更改字体颜色?

时间:2015-03-15 23:35:17

标签: r r-markdown

在RMarkdown中有一种指定字体颜色的方法吗?

浏览chunk options

时似乎没有选项

7 个答案:

答案 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)

我基本上使用了尼古拉斯·汉密尔顿的答案,但因为我使用了xtableprint,我在某些乳胶序列被转义时遇到了一些问题。即,\\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的更新版本。