我想写一份包含 R 代码和 perl 的报告,所以为了测试一下,我在文件002- minimal.Rnw 的末尾添加了以下代码片段(借用自028-engine-perl.Rmd ) (我将生成的文件称为 Minimal.Rnw):
<<CheckPerl>>=
Sys.which('perl')
@
<<TestPerl, engine='perl'>>=
$test = "jello world";
$test =~ s/j/h/;
print $test
@
当我 knit() 文件(在 emacs 中,使用 Mn s)时,生成 Minimal.tex,并且替换的结果是正确的,例如,
...
\begin{verbatim}
## hello world
\end{verbatim}
...
但是,当我尝试生成 .pdf 文件时,我收到以下错误消息:
...
./Minimal.tex:108: Missing $ inserted.
<inserted text>
$
l.108 ...\hlkwb{\$test\ }\hlstd{}\hlopt{=$\sim$\ }
\hlstd{}\hlkwc{s/j/h/}\hls...
?
./Minimal.tex:108: Emergency stop.
...
l.108(和其他)中的语句在alltt
环境中,但根据文档alltt
,该$
符号仅产生一个美元符号,而不用于表示数学模式。因此,如果我手动替换$\sim$
为\(\sim\)
,我会得到一个正确编译的 .tex 文件并给我预期的结果。
所以,毕竟,我的问题是:我怎样才能让 knitr 使用\(...\)
而不是$...$
在alltt
环境中使用?
(R-3.0.1、emacs 23.3.1、ess 13.05、Ubuntu 12.04)