gpt4 book ai didi

r - Emacs,R,Sweave : UTF-8 encoding is not recognized when launching Sweave through Emacs

转载 作者:行者123 更新时间:2023-12-03 17:57:13 24 4
gpt4 key购买 nike

我在 Mac OS X 10.7.3 和 R 2.14.0 上使用 Emacs 24。我有一个文件 foo.Rnw包含

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

我的 .emacs使用 Sweave 看起来像这样:
(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")))

如果我使用 C-c C-c然后选择 Sweave , .tex文件如下所示:
\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}

如您所见,foo.Rnw 的第二行包含非 ASCII 字符 ×NA 取代.我可以弄清楚这与 R 的本地化有关。运行(另请参见 locale: [1] C 的输出。我可以在我的 export LC_MESSAGES="en_US.UTF-8" 中包含形式为 .bashrc 的语句,以便 R 获得正确的 locale 。我也可以完美地使用 R CMD Sweave foo.Rnw 来自终端(这当然会加载 .bashrc 并因此正确设置 locale。问题是:如何通过 Emacs 使其工作,以便我可以通过 C-c C-c Sweave 运行 Sweave?我知道 Emacs 不知道设置的变量在 .bashrc 中,但是我如何保证从 Emacs 发出的 R CMD Sweave 以与从终端执行时相同的本地化运行?

我找到了几个关于这个问题的帖子,但没有针对 Mac 和 Emacs 的解决方案。再次注意,我可以完美运行 R CMD Sweave foo.Rnw从终端(由于我在 .bashrc 中的设置)——大多数帖子都解决了这个问题——它只是在 Emacs 中不起作用(这很烦人)。

更新:

我的 ~/.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"

听从一辉的建议,我在 ~/.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"))

这解决了问题。

最佳答案

最终答案可以在下找到。更新 .

@cbeleites:我不再运行 Mac OS X(R 2-14 都没有),所以我不知道。

关于r - Emacs,R,Sweave : UTF-8 encoding is not recognized when launching Sweave through Emacs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9497621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com