這個問題出現在tex.sx上的以下問題:Sweave generating invalid LaTeX。問題似乎是Sweave
無法識別文件的編碼,儘管區域設置爲UTF-8,而.Rnw
文件保存爲UTF-8。最終的結果是,包含非ASCII字符的任何.Rnw
文件最終在生成的.tex
文件中生成NA。正如你可以在這個問題的評論中看到的,另一個用戶不會顯示問題,顯然是相同的設置。 (Mac上的R 2.13.1)這是一個失敗的最小文檔。Sweave似乎沒有得到.Rnw文件編碼權
更新
基於亞倫的建議,我已經添加sessionInfo
到.Rnw
文件,現在真正的問題揭示本身。當Sweave
處理該文件時,它似乎改變了語言環境。
.Rnw
文件
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
Some non-ascii text: éüáî
<<>>=
sessionInfo()
@
\end{document}
運行此通過Sweave
,產生以下.tex
文件。包含非ASCII字符的行已被Sweave
轉換爲NA
。這似乎也該區域已經改變:
合力.tex
文件
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{Sweave}
\begin{document}
NA
\begin{Schunk}
\begin{Sinput}
> sessionInfo()
\end{Sinput}
\begin{Soutput}
R version 2.13.1 (2011-07-08)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.13.1
\end{Soutput}
\end{Schunk}
\end{document}
sessionInfo()
從R.app
回報中:
> sessionInfo()
R version 2.13.1 (2011-07-08)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
更新(迴應阿龍)
> text <- readLines("sweave-enc-test.Rnw", warn = FALSE)
> enc <- tools:::.getVignetteEncoding(text, convert = TRUE)
>
> text
[1] "\\documentclass{article}" "\\usepackage[utf8]{inputenc}" "\\begin{document}"
[4] "Some non-ascii text: éüáî" "\\end{document}"
> enc
[1] "UTF-8"
> iconv(text, enc, "")
[1] "\\documentclass{article}" "\\usepackage[utf8]{inputenc}" "\\begin{document}"
[4] "Some non-ascii text: éüáî" "\\end{document}"
(這是從R.app
R控制檯中的輸出。)
我可以在.tex文件中看到特殊字符,但不能在pdf中看到。 2.13.0。 –
@Alan,謝謝。我希望這可能會重現這個問題。您可以將sessionInfo()添加到.Rnw文件中(請參閱編輯我的「答案」) – Aaron
看起來我們更接近!你如何運行Sweave?這是來自命令行,R CMD Sweave,還是從R內部,Sweave()?兩者是否都有相同的結果? – Aaron