Ich möchte einige Fremdzeichen in mein endgültiges PDF drucken, das mit RStudio (0.99) + *.Rnw-Datei mit knitr + XeLaTex (über Miktex) erstellt wurde.
Bei der Verwendung von XeLaTex und Polyglossia kann ich erreichen, dass alle Fremdzeichen im PDF richtig gedruckt werden, wenn ich es direkt an die Tex-Umgebung der *.Rnw-Datei übergebe.
Wenn ich die Cat("...")-Funktion verwende, um Text im PDF innerhalb eines R-Chunks auszudrucken, funktioniert dies bei manchen Zeichen nicht ("1."), bei anderen nicht ("2....").
Ich verwende in den RStudio-Einstellungen die UTF-8-Kodierung, die in der Tex-Umgebung offensichtlich gut funktioniert. Aber warum mag der Cat-Ausdruck im R-Chunk nicht dieselben Zeichen?
Was kann ich tun, um den Ausdruck cat("...") (den ich häufig verwende) auch für Fremdzeichen zu verwenden?
MWE:
\documentclass[utf8, a4paper]{article} % with/without [utf8] does not change anything
% !Rnw weave = knitr
% !TeX program = XeLaTeX
\usepackage{polyglossia}
\setmainlanguage[]{english}
\usepackage{fontspec}
\begin{document}
Directly passed in tex environment:
1. äöüßĐØ
2. ČĈĐĎŸ
<<echo=FALSE, results = 'asis'>>=
cat("Within a R-Knitr-Junk: \\newline")
cat("1. äöüßĐØ ~")
cat("2. ČĈĐĎŸ")
@
\end{document}
PDF-Ergebnis:
Beim Überprüfen der von RSStudio erstellten Tex-Datei (mit Notepad++ mit UTF-8-Unterstützung) sieht die Zeile im R-Block folgendermaßen aus:
Betriebssystem: Win7/64Bit, RStudio 0.99, R 3.2.5, MikTex 2.9.5900
Antwort1
Es kann mit der Schriftart zusammenhängen, die Ihr System zur Ausgabe des Codes verwendet. Normalerweise ist es eine andere Schriftart als die für den normalen Text. Es hängt auch von Ihrem System ab, daher müssen Sie möglicherweise diese befolgenzweiSchritte
Was passiert, wenn Sie diese Zeile nach zu Ihrer Latex-Präambel hinzufügen \usepackage{fontspec}
?
\usepackage{libertine}
Und Sie müssen möglicherweisespezielles Escape-Unicode-Zeichenin Ihrem R-Code ist es robuster. Das ist zum Beispiel ß
cat("\u00DF")
# ß
und der einfachste Weg, dies zu tun, ist die Verwendungstringi::stri_escape_unicode()
stringi::stri_escape_unicode("ČĈĐĎŸ")
# \u010c\u0108\u0110\u010e\u0178
Sehenhttps://stackoverflow.com/questions/29265172/print-unicode-character-string-in-r