2015-03-15 19 views
28

In RMarkdown gibt es eine Möglichkeit, die Schriftfarbe anzugeben?RMarkdown: Wie ändere ich die Schriftfarbe?

Es scheint nicht, eine Option zu sein, während er durch die von @ Ben Bolker vorgesehen auf den Link gegeben, um die Antwort chunk options

+1

http://answers.squarespace.com/questions/31631/how-to-change-font-type-and-colour-for-few-words? –

Antwort

43

Surfen im Internet:

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

funktioniert, wenn Sie HTML auswählen (ioslides) als das Ausgabeformat.

Es funktioniert jedoch nicht, wenn Sie pdf (Beamer) als Ausgabeformat wählen. Wenn Sie eine PDF-Datei erstellen möchten, verwenden Sie LaTeX Syntax:

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

Könntest du den pdf Teil erklären - ich kann es nicht funktionieren lassen: 'undefined Kontrollsequenz \ textcolor'. Der Befehl lautet 'pandoc ./main.md -o./Main.pdf'. Der Text im Hauptteil ist die einfachste '\ textcolor {red} {red}'. Welchen Übersetzungsbefehl verwenden Sie? – Ayrat

+0

Lieber Ayrat, ich benutze Markdown innerhalb von RStudio, daher kenne ich die Pandoc-Befehle nicht sehr gut. Es hängt wahrscheinlich nicht mit dem Farbbefehl zusammen, sondern ein Problem mit Ihrer Systemeinrichtung. Siehe zum Beispiel hier: http://stackoverflow.com/questions/37156696/undefined-control-sequence-error-while-converting-from-markdown-to-pdf-with-pand –

21

ich eine Funktion wie folgt zu erstellen:

#Color Format 
colFmt = function(x,color){ 
    outputFormat = 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 
} 

Dann können Sie es inline wie folgt aus: `r colFmt("MY RED TEXT",'red')` und farbiger Text werden gerendert unabhängig davon, ob Sie an einem Latex- oder HTML-Dokument arbeiten.

+0

Verwenden Sie ein aktuelles Rstudio und 'rmarkdown :: render 'für die PDF-Ausgabe wird dies für mich in' $ \ backslash $' in der tex-Datei konvertiert. Dadurch wird die Zeichenfolge buchstäblich gedruckt, anstatt sie als Latex zu interpretieren. Sehr nervig. Hast du eine Idee? – Midnighter

+0

Tritt dies zufällig in einer Tabelle mit xtable auf? –

+0

Wie Sie herausgefunden haben, ja, tatsächlich innerhalb von 'xtable' nach meiner Antwort. – Midnighter

3

Ich habe grundsätzlich Nicholas Hamilton's Antwort verwendet, aber weil ich xtable und print verwendet habe, hatte ich einige Probleme mit bestimmten Latex-Sequenzen entkommen. Nämlich, \\textcolor wird in $\backslash$textcolor umgewandelt. Ich war in der Lage, es zu bekommen direkt in der folgenden Art und Weise desinfizierende vermeiden:

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

Ich musste dann gehen und sanieren manuell ein paar Zeichen wie % aber zumindest \textcolor richtig angewendet wurde. Natürlich könnte dies vermieden werden, indem Sie Ihre eigene Sanitize-Funktion erweitern.

+0

Wie ich vermutet habe. 'print (xtable (tbl), sanitize.text.function = Identität)' –

+0

'sanitize.text.function = identity' erspart Ihnen das Erstellen einer trivialen Inline-Funktion –

+0

Ich dachte, Ihr vorheriger Kommentar war ausreichend, aber ich habe meine bearbeitet Antwort, um die bessere Praxis zu reflektieren. – Midnighter

Verwandte Themen