外來字問題:有些工作 (äöüßĐØ),有些則不行 (ČĈĐĎŸ)

外來字問題:有些工作 (äöüßĐØ),有些則不行 (ČĈĐĎŸ)

我想在使用 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

相關內容