- 確保文件被保存在UTF-8編碼
在大多數的操作系統,這就足夠了,因爲UTF-8是系統的默認編碼反正。特別是在Windows上,您還需要指定編碼針織,例如,當:
knit('filename.rnw', encoding = 'UTF-8')
Futhermore,你需要明確處理閱讀文本的方向:波斯語是從右到左,但(西方)源代碼需要從左到右的文本方向。這需要在使用例如代碼的代碼中明確設置。 \(un)setLTR
:
\documentclass{article}
\usepackage{xepersian}
% Set a font for the text
\settextfont{XB Niloofar}
\begin{document}
این یک متن آزمایشی است
\setLTR
<<model>>=
fit <- lm(dist ~ speed, data = cars)
@
\unsetLTR
برای آزمایش داریم:
\Sexpr{coef(fit)[2]}
\end{document}
你也可以使用一個Knitr鉤爲每個代碼塊自動設置此。你也許可以適應example 74此:
<<setup, include=FALSE>>=
library(knitr)
knit_hooks$set(ltr = function(before, options, envir) {
if (before) '\\setLTR' else '\\unsetLTR'
})
@
現在你可以寫成如下代碼塊:
<<model, ltr=TRUE>>
fit <- lm(dist ~ speed, data = cars)
@
無需手動\setLTR
... \unsetLTR
了。
我甚至無法編譯你的文檔:你需要包含'\ settextfont'來加載一個Farsi字體,比如「XB Niloofar」。然後它應該工作(儘管模型代碼被錯誤地排版,因爲您沒有將文本方向重置爲從左到右)。只是爲了驗證:你在哪個操作系統上? R的Windows版本在字符編碼方面存在問題。另外,請確保您的文檔使用knitr的正確編碼加載。你可以看看正在生成的tex文件嗎?它是否包含正確的字符? –
好吧,我設置波斯語字體,但輸出TeX文件包含????我的操作系統是Windows 7 64bit –
在這種情況下,請確保您的Rnw文件編碼爲UTF-8,並在編織文件時明確設置該編碼。 –