Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 克尼特语中的波斯语字符_R_Character Encoding_Knitr - Fatal编程技术网

R 克尼特语中的波斯语字符

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

我在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>>=
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)
    @