RMarkdown: 如何更改字体颜色?

在 RMarkdown 中是否有指定字体颜色的方法?

浏览 大块期权时似乎没有选项

110681 次浏览

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

Roses are <span style="color:red">red</span>,
violets are <span style="color:blue">blue</span>.

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

但是,如果选择 pdf (beamer)作为输出格式,它就不能工作。如果你想创建一个 pdf,使用 LaTeX 语法:

    Roses are \textcolor{red}{red}, violets are \textcolor{blue}{blue}.

我创建了这样一个函数:

## Color Format
colFmt <- function(x,color) {
  

outputFormat <- knitr::opts_knit$get("rmarkdown.pandoc.to")
  

if(outputFormat == 'latex') {
ret <- paste("\\textcolor{",color,"}{",x,"}",sep="")
} else if(outputFormat == 'html') {
ret <- paste("<font color='",color,"'>",x,"</font>",sep="")
} else {
ret <- x
}


return(ret)
}

然后您可以像这样内联地使用它: `r colFmt("MY RED TEXT",'red')`,并且不管是在乳胶文档还是 HTML 文档上工作,都将呈现彩色文本。

我基本上使用了 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)
```

然后,我不得不去和手动消毒一些字符,如 %,但至少 \textcolor是正确的应用。当然,这可以通过扩展您自己的消毒功能来避免。

其他人则为 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

关于样式名称的一个词——由于我不明白的原因,这个过程不能使用样式名称“ Span _ Add”,但是使用“ SpanAdd”就可以了。

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

Roses are $\color{red}{\text{beautiful red}}$,
violets are $\color{blue}{\text{lovely blue}}$.

希望能有帮助。

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

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


violets are `r kableExtra::text_spec("blue", color = "blue")`

对于 PDF 和 HTML,得到彩色文本,你可以修改与标记高亮: 看减价手册。潘多克过滤器是最好的选择。

对于 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>

注意:
不要使用相同的风格为段落和几个单词,这是错误的。
+ 如果不起作用,检查你的风格是为段或字符在 MS。
+ 如果它不工作,安装一个更新版本的 pandoc。

sass轻松改变字体颜色

在 R Markdown 中有一种新的更好的指定颜色或字体的方法:

  • 下载包 sass
  • 使用以下选项 {sass, echo = FALSE}在 RMarkdown 文档中创建块
  • 包括以下的 SASS 代码在该块:
// This chunk contains SASS-code to specify font color


h1, h2, h3, h4, h5
color: blue // Color for the headers


body
color: red // Color for the text in the main part of your document


// The colors are only examples. You can change them to anything. You could also use hex codes.

您还可以更改比字体颜色更多的内容

通常,我会在我的文档中包含类似的内容,来改变字体类型、大小、链接颜色等等:

// These are variables, and are easy to change
$color: blue
$color2: red
$font: "Arial"
$font-size: 16px


h1, h2, h3, h4, h5
color: $color
font-family: $font
font-weight: bold


body
background-color: white
color: black
font-family: $font
font-size: $font-size


a
color: $color


a:link
color: $color


a:hover
background-color: $color2


您可以通过这种方式更改任何 HTML 标记。

更多关于 SASS 给你的资料。