В RMarkdown есть способ указать цвет шрифта?
Кажется, что нет опции во время просмотра вариантов фрагмента
В RMarkdown есть способ указать цвет шрифта?
Кажется, что нет опции во время просмотра вариантов фрагмента
Ответ, полученный по ссылке, предоставленной @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')
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.
Кажется, это работает очень хорошо в обоих форматах вывода, pdf и html:
Roses are $\color{red}{\text{beautiful red}}$,
violets are $\color{blue}{\text{lovely blue}}$.
Надеюсь, поможет.
В основном я использовал ответ Николаса Гамильтона, но поскольку я использовал 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
было правильно применено. Конечно, этого можно избежать, расширив собственную функцию санитации.
Другие предоставили ответы для вывода, отличного от 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" был в порядке.
Решение, не text_spec()
формата вывода, заключается в использовании специальной функции text_spec()
в пакете kableExtra
:
Roses are 'r kableExtra::text_spec("red", color = "red")',
violets are 'r kableExtra::text_spec("blue", color = "blue")'