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
을 사용할 수 있습니다 .bashrc
R
올바른 locale
를 얻을 수 있도록. (물론로드 .bashrc
과 locale
을 정확하게 설정합니다.) 질문은 : 을 통해 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"))
이 문제를 해결했다.
모든 문서가 UTF8로 인코딩되어 있다면,'~/.Rprofile'에서'Sys.setlocale()'을 사용할 수 있습니다. (필자는 이것을 권장하지 않습니다). 인코딩 문제는 까다 롭습니다. 이 경우에는 knitr 패키지가 어떻게 작동하는지 궁금합니다 (Mac을 사용하지 않아서 말할 수 없습니다). –
감사합니다, Yihui. 위의 ** 업데이트 **에서 볼 수 있듯이이 문제가 해결되었습니다. –
@MariusHofert : 지금 해결되었지만'Sweave ("foo.Rnw", encoding = "utf8")'도움이됩니까? – cbeleites