2011-09-22 45 views
3

這個問題出現在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控制檯中的輸出。)

+0

我可以在.tex文件中看到特殊字符,但不能在pdf中看到。 2.13.0。 –

+0

@Alan,謝謝。我希望這可能會重現這個問題。您可以將sessionInfo()添加到.Rnw文件中(請參閱編輯我的「答案」) – Aaron

+0

看起來我們更接近!你如何運行Sweave?這是來自命令行,R CMD Sweave,還是從R內部,Sweave()?兩者是否都有相同的結果? – Aaron

回答

2

可能的解決方法:

嘗試把

export LANG=en_US.UTF-8 

在你的TeXShop腳本。

(最初的想法是在~/.bashrc文件,但顯然的TeXShop不加載)。

更早版本:當你把sessionInfo()在RNW文件

會發生什麼事?

\documentclass{article} 
\usepackage[utf8]{inputenc} 
\begin{document} 
Some non-ascii text: éüáî 
<<>>= 
sessionInfo() 
@ 
\end{document} 
+0

我已添加輸出。 –

+0

謝謝。我希望這可能會重現這個問題。你能否將sessionInfo()添加到.Rnw文件中(請參閱編輯我的「答案」) – Aaron

+0

,這似乎直接顯示了問題。當地人顯然是錯的。 (順便說一下,我正在使用TeXShop編輯源文件。) –

相關問題