RStudio (0.99) + *.Rnw-File と knitr + XeLaTex (Miktex 経由) で作成した最終 PDF に、いくつかの外国語文字を印刷したいと考えています。
XeLaTex と polyglossia を使用する場合、*.Rnw ファイルの Tex 環境に直接渡すと、すべての外国語文字が PDF に適切に印刷されるようにすることができます。
Cat("...") 関数を使用して R チャンク内の PDF にテキストを印刷すると、一部の文字 ("1.") は失敗し、他の文字 ("2....") は失敗しません。
私は RStudio 設定で utf8 エンコードを使用していますが、これは明らかに Tex 環境内ではうまく機能します。しかし、R チャンク内の cat 式が同じ文字を好まないのはなぜでしょうか?
よく使うcat("...")式を外国語の文字にも使うにはどうすればいいでしょうか?
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結果:
RSTudio によって生成された tex ファイルを確認すると (utf8 をサポートする Notepad++ を使用)、R チャンク内の行は次のようになります。
OS: Win7/64Bit、RStudio 0.99、R 3.2.5、MikTex 2.9.5900
答え1
これは、システムがコードの出力に使用しているフォントに関係している可能性があります。通常、通常のテキスト用のフォントとは別のフォントです。また、システムにも依存するため、次の手順に従ってください。二手順
この行を LaTeX のプリアンブルの後に追加するとどうなりますか\usepackage{fontspec}
?
\usepackage{libertine}
そして、あなたは特殊エスケープ Unicode 文字Rコードでは、より堅牢になります。例えば、ß
cat("\u00DF")
# ß
最も簡単な方法はstringi::stri_escape_unicode()
stringi::stri_escape_unicode("ČĈĐĎŸ")
# \u010c\u0108\u0110\u010e\u0178
見るhttps://stackoverflow.com/questions/29265172/print-unicode-character-string-in-r