如何更改字体颜色?


Answers:


88

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

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

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

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

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

3
您能否澄清pdf部分-我无法使其工作:undefined control sequence \textcolor。命令是pandoc ./main.md -o ./main.pdf。最主要的文字是最简单的\textcolor{red}{red}。您使用什么翻译命令?
Ayrat '16

尊敬的Ayrat:我在RStudio中使用markdown,因此我对pandoc命令不是很熟悉。它可能与color命令无关,但是与系统设置有关。例如,见这里:stackoverflow.com/questions/37156696/...
娜佳西蒙斯

3
如果您使用的是R Markdown,并且出现类似的错误,请header-includes: \usepackage{xcolor}在前言部分中添加
aldo_tapia,

dr-harper.github.io/rmarkdown-cookbook/…在这里您还可以找到有关如何使用LaTeX添加颜色的完整示例。
user1682960

42

我创建一个像这样的函数:

#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')`,无论使用乳胶还是HTML文档,彩色文本都会呈现出来。


使用最新的Rstudio和rmarkdown::renderpdf输出,可以将其转换为$\backslash$tex文件。因此,从字面上打印字符串,而不是将其解释为乳胶。很烦人。你有什么想法?
午夜

碰巧,这是在使用xtable的表中发生的吗?
尼古拉斯·汉密尔顿

如您所知,确实是,xtable按照我的回答。
午夜

请注意,HTML<font>标记现在已过时。它的支持可以随时由浏览器删除。
RLesur

@尼古拉斯·汉密尔顿:感谢您提供非常有用的功能!我该如何调整它以使用透明颜色?在这里
小牛

18

这似乎在pdf和html两种输出格式中都很好用:

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

希望能帮助到你。


这对我更改内联文本颜色很有用。谢谢你的建议。只是对其他人的说明,那就是LaTex语法而不是R
SubstantiaN

这对我也有用!我想指出的是,LaTeX功能正在不断发展,这也许并非总是可能的。我想如果您为文本指定特定的字体,则可能会导致字体问题。
加里尼

在Jupyter中也很好用,因为它支持MathJax(Tex和LaTex的子集)jupyter-notebook.readthedocs.io/en/stable/examples/Notebook / ...
prusswan

8

其他人提供了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”很好。


8

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

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

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

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)
```

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


如我所怀疑。print(xtable(tbl), sanitize.text.function = identity)
尼古拉斯·汉密尔顿

sanitize.text.function = identity省去了创建简单内联函数的麻烦
Nicholas Hamilton

我以为您之前的评论就足够了,但是我已经修改了答案以反映出更好的做法。
午夜

0

对于PDF和HTML,要获取彩色文本,可以使用markdown突出显示对其进行修改:请参阅rmarkdown书。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的更新版本。


这对我不起作用。相反,我不得不在YAML中添加以下内容(注意,较大的差距是因为我无法在评论中添加换行符),该内容基于此链接output: bookdown::word_document2: reference_docx: Template_MS.docx
LMc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.