R 克尼特语中的波斯语字符
我在R3.3.1和RStudio中使用knitr 1.13,在knitr识别波斯语字符时遇到问题。我将下面的代码保存在R 克尼特语中的波斯语字符,r,character-encoding,knitr,R,Character Encoding,Knitr,我在R3.3.1和RStudio中使用knitr 1.13,在knitr识别波斯语字符时遇到问题。我将下面的代码保存在test.Rnw文件中,然后运行knit(“test.Rnw”),但输出中的波斯语字符变为?? \documentclass{article} \usepackage{xepersian}%package for type Farsi in LaTex \begin{document} این یک متن آزمایشی است <<model>>= f
test.Rnw
文件中,然后运行knit(“test.Rnw”)
,但输出中的波斯语字符变为??
\documentclass{article}
\usepackage{xepersian}%package for type Farsi in LaTex
\begin{document}
این یک متن آزمایشی است
<<model>>=
fit <- lm(dist ~ speed, data = cars)
@
برای آزمایش داریم:
\Sexpr{coef(fit)[2]}
\end{document}
\documentclass{article}
\乳胶中Farsi类型的usepackage{xepersis}%包装
\开始{document}
این یک متن آزمایشی است
=
适合
确保文件以UTF-8编码保存
在大多数操作系统上,这就足够了,因为UTF-8是系统的默认编码。尤其是在Windows上,您还需要在编织时指定编码,例如:
knit('filename.rnw', encoding = 'UTF-8')
此外,您还需要明确地处理文本的阅读方向:波斯语是从右向左的,但(西方)源代码需要从左向右的文本方向。这需要在代码中明确设置,例如使用\(un)setLTR
:
\documentclass{article}
\usepackage{xepersian}
%为文本设置字体
\settextfont{XB Niloofar}
\开始{document}
این یک متن آزمایشی است
\setLTR
=
fit我甚至无法编译您的文档:您需要包含\settextfont
以加载波斯语字体,例如“XB Niloofar”。然后它应该可以工作(尽管模型代码的排版错误,因为您没有将文本方向重置为从左到右)。只是为了验证:您使用的是哪个操作系统?R的Windows版本存在字符编码问题。此外,请确保使用knitr的正确编码加载文档。你能看看正在生成的tex
文件吗?包含正确的字符吗?好的,我设置了波斯语字体,但输出的TeX文件包含????我的操作系统是windows 7 64B在这种情况下,请确保您的Rnw文件编码为UTF-8,并在编织文件时显式设置该编码。我转到文件-->使用编码保存,并使用UTF-8保存我的文件,然后运行knit(“test.Rnw”,encoding=“UTF-8”),这就成功了。谢谢,太棒了,为了完整性,我将添加一个答案。我还有一个问题:(代码块在输出中是从右向左的,而它应该是从左向左的。)right@aminroshani正如我在之前的评论中提到的,您需要明确地设置此选项-请参阅更新的答案。非常感谢。
<<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)
@