.ln文件中的Perl:'代字号'字符

时间:2013-09-11 06:04:18

标签: r knitr

我想编写一个包含R代码和perl的报告,因此为了测试,我将以下代码段(从028-engine-perl.Rmd借用)添加到文件的末尾{{3 (我调用了结果文件Minimal.Rnw):

<<CheckPerl>>=
Sys.which('perl')
@

<<TestPerl, engine='perl'>>=
$test = "jello world";
$test =~ s/j/h/;
print $test
@

当我编织()文件(在emacs中,使用M-n 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文件并给出预期结果。

所以,毕竟,我的问题是:如何在\(...\)环境中让编织者使用$...$代替alltt

(R-3.0.1,emacs 23.3.1,ess 13.05,Ubuntu 12.04)

1 个答案:

答案 0 :(得分:2)

此问题已在the knitr development version>= v1.4.8)中修复。 Andre Simon的精彩集锦不会假设alltt环境,因此knitr不应将突出显示的代码放在alltt环境中。