Как изменить цвет шрифта?
В RMarkdown есть способ указать цвет шрифта?
Кажется, что нет опции во время просмотра вариантов фрагмента
Ответы
Ответ 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")'