RMarkdown:如何更改字体颜色?

xia*_*dai 67 r r-markdown

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

浏览块选项时似乎没有选项

Nad*_*ons 84

@Ben Bolker提供的链接给出了答案:

Roses are <span style="color:red">red</span>, 
violets are <span style="color:blue">blue</span>.
Run Code Online (Sandbox Code Playgroud)

如果您选择HTML(ioslides)作为输出格式,则可以正常工作.

但是,如果您选择pdf(beamer)作为输出格式,它将不起作用.如果要创建pdf,请使用LaTeX语法:

    Roses are \textcolor{red}{red}, violets are \textcolor{blue}{blue}.
Run Code Online (Sandbox Code Playgroud)

  • 您能否澄清pdf部分-我无法使其工作:`未定义的控制序列\ textcolor`。命令是`pandoc ./main.md -o。/ main.pdf`。主文本是最简单的\ textcolor {red} {red}。您使用什么翻译命令? (3认同)
  • 如果您使用的是R Markdown,并且出现类似的错误,请在前言部分中添加`header-includes:\ usepackage {xcolor}` (2认同)

Nic*_*ton 38

我创建了这样的函数:

#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
}
Run Code Online (Sandbox Code Playgroud)

然后你就可以像这样使用它内联:`r colFmt("MY RED TEXT",'red')`并且无论是否使用latex或html文档,都会呈现彩色文本.


ama*_*nas 13

这似乎在输出格式,pdf和html中都能很好地工作:

Roses are $\color{red}{\text{beautiful red}}$, 
violets are $\color{blue}{\text{lovely blue}}$.
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.


Eri*_*McJ 6

其他人提供了Word以外的输出答案。对于Word,您可以使用Pandoc自定义样式的语法在参考Word文档的帮助下完成此操作。首先,在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
Run Code Online (Sandbox Code Playgroud)

关于样式名称的一句话-由于我不明白的原因,此过程不适用于样式名称“ Span_Add”,但是“ SpanAdd”很好。


Dro*_*let 6

输出格式不可知的解决方案是使用包中的专用text_spec()功能kableExtra

Roses are `r kableExtra::text_spec("red", color = "red")`,

violets are `r kableExtra::text_spec("blue", color = "blue")`
Run Code Online (Sandbox Code Playgroud)


Mid*_*ter 5

我基本上使用了尼古拉斯·汉密尔顿(Nicholas Hamilton)的答案,但是因为使用了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)
```
Run Code Online (Sandbox Code Playgroud)

然后,我不得不去手动清理一些字符,%但至少\textcolor已正确应用。当然,可以通过扩展自己的清理功能来避免这种情况。