2012-02-29 3 views
5

Mac OS X 10.7.3에서 R 2.14.0의 Emacs 24로 작업합니다. 내가 Sweave 작업을위한 내 .emacs Emacs, R, Sweave : Emacs를 통해 Sweave를 시작할 때 UTF-8 인코딩이 인식되지 않습니다.

\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} 

를 포함 foo.Rnw 파일을 가지고는 다음과 같습니다

\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 파일은 다음과 같습니다

(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"))) 

내가 Sweave를 선택한 다음 C-c C-c 등을 사용하는 경우,

보시다시피 비 ASCII 문자을 포함하는 foo.Rnw의 두 번째 줄은 NA으로 바뀝니다. 나는이 R 실행이 (또한 locale: [1] C의 출력을 볼 수있는 현지화과 관련이 있음을 알 수 있었다. 나는의 형태 export LC_MESSAGES="en_US.UTF-8"의 문을 포함 할 수 있습니다 내 나는 또한 완벽하게 R CMD Sweave foo.Rnw을 사용할 수 있습니다 .bashrcR 올바른 locale를 얻을 수 있도록. (물론로드 .bashrclocale을 정확하게 설정합니다.) 질문은 : 을 통해 Sweave를 실행할 수 있도록 Emacs에서 어떻게 작동하게 할 수 있습니까? Emacs가 설정 한 변수를 인식하지 못합니다. .bashrc,하지만 Emacs에서 발행 한 R CMD Sweave이 터미널에서 실행할 때와 같은 지역화를 실행하는 것을 어떻게 보장 할 수 있습니까?

이 문제에 대한 게시물이 여러 개 있지만 Mac 및 Emacs에서는 해결책이 없습니다. 다시 말하지만, 을 터미널에서 완벽하게 실행할 수 있습니다 (.bashrc의 설정으로 인해). 대부분의 게시물에서이 문제를 해결합니다. Emacs에서 작동하지 않습니다.

UPDATE :

~/.bashrc가 포함

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의 조언에 따라, 나는 내 ~/.Rprofile에 다음을 넣어 :

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")) 

이 문제를 해결했다.

+0

모든 문서가 UTF8로 인코딩되어 있다면,'~/.Rprofile'에서'Sys.setlocale()'을 사용할 수 있습니다. (필자는 이것을 권장하지 않습니다). 인코딩 문제는 까다 롭습니다. 이 경우에는 knitr 패키지가 어떻게 작동하는지 궁금합니다 (Mac을 사용하지 않아서 말할 수 없습니다). –

+0

감사합니다, Yihui. 위의 ** 업데이트 **에서 볼 수 있듯이이 문제가 해결되었습니다. –

+0

@MariusHofert : 지금 해결되었지만'Sweave ("foo.Rnw", encoding = "utf8")'도움이됩니까? – cbeleites

답변

0

최종 답변은 업데이트입니다.

@cbeleites : 나는 더 이상 Mac OS X을 실행하지 않으므로 (R 2-14도 마찬가지 임) 알 수 없습니다.