我想在使用 RStudio (0.99) + *.Rnw-File 和 knit + XeLaTex(透過 Miktex)產生的最終 PDF 中列印一些外來字元。
在使用 XeLaTex 和 polyglossia 時,如果我將其直接傳遞到 *.Rnw 檔案的 Tex 環境,我可以管理所有外來字元在 PDF 中正確列印。
如果我使用Cat("...") 函數在R 區塊內列印PDF 中的文本,則在某些字元("1.") 中會失敗,在其他字元中則不會("2... .") 。
我在 RStudio 設定中使用 utf8 編碼,這顯然在 Tex 環境中運作良好。但為什麼 R 區塊中的貓表達不喜歡相同的字元呢?
我可以做什麼來使用 cat("...") 表達式(我經常使用)來處理外來字元?
微量元素:
\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 區塊內的行如下所示:
作業系統:Win7/64Bit、RStudio 0.99、R 3.2.5、MikTex 2.9.5900
答案1
它可能與您系統用於輸出程式碼的字體有關,它通常是與普通文字不同的另一種字體。它也依賴您的系統,因此您可能必須遵循這些二腳步
如果您將此行添加到您的乳膠序言之後會發生什麼\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