2012-02-29 25 views
5

üzerinden Sweave başlatılırken UTF-8 kodlaması tanınmadı. Mac OS X 10.7.3'te R 2.14.0 ile birlikte Emacs 24 ile çalışıyorum. Ben Sweave ile çalışmak için Benim .emacs Emacs, R, Sweave: Emacs

\documentclass[ 
paper=a4,% 210mm × 297mm 
pagesize% write page size to dvi 
]{article} 

\usepackage[american]{babel} 
\usepackage{fancyvrb} 

\usepackage[utf8]{inputenc} 

\SweaveOpts{engine=R} 
\SweaveOpts{pdf=TRUE} 

\begin{document} 
Some text 
<<>>= 
sessionInfo() 
@ 
\end{document} 

içeren foo.Rnw bir dosya var şuna benzer:

\documentclass[ 
NA 
pagesize% write page size to dvi 
]{article} 

\usepackage[american]{babel} 
\usepackage{fancyvrb} 

\usepackage[utf8]{inputenc} 




\usepackage{Sweave} 
\begin{document} 
Some text 
\begin{Schunk} 
\begin{Sinput} 
> sessionInfo() 
\end{Sinput} 
\begin{Soutput} 
R version 2.14.0 (2011-10-31) 
Platform: x86_64-apple-darwin11.2.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.14.0 
\end{Soutput} 
\end{Schunk} 
\end{document} 
: .tex dosya şuna benzer

(add-hook 'Rnw-mode-hook 
    (lambda() 
    (add-to-list 'TeX-command-list 
     '("Sweave" "R CMD Sweave %s" 
      TeX-run-command nil t :help "Run Sweave") t) 
    (add-to-list 'TeX-command-list 
     '("Stangle" "R CMD Stangle %s" 
      TeX-run-command nil t :help "Run Stangle") t) 
    (setq TeX-command-default "Sweave"))) 

ben Sweave seçim sonra C-c C-c ve kullanırsanız,

Gördüğünüz gibi, AS0II olmayan karakterleri içeren foo.Rnw'nin ikinci satırı ×, NA ile değiştirilmiştir. Bu R çalışır (ayrıca locale: [1] C çıktısını gördüğü çalışmalardır yerelleşme ile ilgisi var olduğunu anlamaya başladı. Ben de formda export LC_MESSAGES="en_US.UTF-8" açıklamalarını içerebilir benim ben de mükemmel R CMD Sweave foo.Rnwkullanabilirsiniz .bashrcR doğru locale alır böylece. terminalinden (tabii ki .bashrc yükler ve böylece locale'u doğru şekilde ayarlar) Soru: Emacs üzerinden çalışabilirim, böylece C-c C-c Sweave üzerinden Sweave çalıştırabilir miyim? .bashrc, ancak Emacs tarafından verilen R CMD Sweave numaralı bağlantı noktasından çalıştırdığımla aynı yerelleştirmeyle çalıştığımı nasıl garanti edebilirim?

Bu soruna birkaç ileti buldum, ancak Mac'ler ve Emacs içinden çözüm bulunamadı. Yine, R CMD Sweave foo.Rnw'u terminalden (.bashrc'daki ayarlarımdan dolayı) mükemmel bir şekilde çalıştırabileceğime dikkat edin; bu yazıların çoğu bu sorunu ele alır - sadece Emacs içinden çalışmaz (oldukça can sıkıcıdır).

GÜNCELLEME:

Benim ~/.bashrc içerir:

export LC_COLLATE="en_US.UTF-8" 
export LC_CTYPE="en_US.UTF-8" 
export LC_MONETARY="en_US.UTF-8" 
export LC_TIME="en_US.UTF-8" 
export LC_MESSAGES="en_US.UTF-8" 

Yihui tavsiyesine uyarak, ben benim ~/.Rprofile aşağıdaki koymak:

invisible(Sys.setlocale("LC_COLLATE", "en_US.UTF-8")) 
invisible(Sys.setlocale("LC_CTYPE", "en_US.UTF-8")) 
invisible(Sys.setlocale("LC_MONETARY", "en_US.UTF-8")) 
invisible(Sys.setlocale("LC_TIME", "en_US.UTF-8")) 
invisible(Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")) 

Bu sorunu çözdü.

+0

Tüm belgelerinizin UTF8'de kodlandığından eminseniz ''/.Rprofile' 'nizde' Sys.setlocale() 'işlevini kullanabilirsiniz (bununla birlikte kesinlikle önermiyorum). Kodlama sorunları zor. Knitr paketimin bu durumda nasıl davrandığını merak ediyorum (anlayamadığım bir Mac'im yok). –

+0

Çok teşekkürler, Yihui. Yukarıdaki ** UPDATE ** 'den görebileceğiniz gibi, bu problemi çözdü. –

+0

@MariusHofert: şimdi çözülse bile: '' Sweave ('foo.Rnw', encoding = "utf8") 'yardım? – cbeleites

cevap

0

Son yanıt UPDATE'un altında bulunabilir.

@cbeleites: Mac OS X'i artık çalıştırmıyorum (ne R 2-14) bu yüzden söyleyemiyorum.