我想编写一个包含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)
答案 0 :(得分:2)
此问题已在the knitr development version(>= v1.4.8
)中修复。 Andre Simon的精彩集锦不会假设alltt
环境,因此knitr
不应将突出显示的代码放在alltt
环境中。