Подтвердить что ты не робот

Как изменить цвет шрифта?

В RMarkdown есть способ указать цвет шрифта?

Кажется, что нет опции во время просмотра вариантов фрагмента

4b9b3361

Ответ 1

Ответ, полученный по ссылке, предоставленной @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}.

Ответ 2

Я создаю такую функцию:

#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.

Ответ 3

Кажется, это работает очень хорошо в обоих форматах вывода, pdf и html:

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

Надеюсь, поможет.

Ответ 4

В основном я использовал ответ Николаса Гамильтона, но поскольку я использовал 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 было правильно применено. Конечно, этого можно избежать, расширив собственную функцию санитации.

Ответ 5

Другие предоставили ответы для вывода, отличного от 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" был в порядке.

Ответ 6

Решение, не text_spec() формата вывода, заключается в использовании специальной функции text_spec() в пакете kableExtra:

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

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