在LaTeX中编辑Sweave文档时(使用Noweb模式),Emacs知道“忽略”<>> =块中的代码。但是,对于interstitial \ Sexpr {}块,情况并非如此。鉴于R'通过'$'和LaTeX使用$来引用方程式,这些\ Sexpr {}块通常会破坏语法高亮,如下所示:
我对elisp& amp; Emacs语法高亮,但我希望有可能在.emacs中添加一些东西来禁用\ Sexpr {}中的任何解析/ $检测。
答案 0 :(得分:8)
我认为使用ESS的emacs对Sweave有正确的语法高亮显示?
无论如何,最简单的“修复”就是不使用$
运算符而是使用[[
。例如:
foo$p.value
foo[['p.value']]
应该给出相同的结果。我认为foo$p.value
只是foo[["p.value",exact=FALSE]]
答案 1 :(得分:7)
我也没有解决方法,但我会传递我的解决方法,这是永远(很少,很少)在\Sexpr
块中进行任何处理,而是存储我想要使用的内容\Sexpr
在变量中,并且在同一块中进行主要计算。
<<echo=FALSE, results=hide>>=
t1 <- chisq.test(someVar)
p1 <- formatC(t1$p.value, format="%f", digits=2)
@
\dots with a $p$-value of \Sexpr{p1}.
虽然这有一些缺点,但我发现它可以帮助我更好地跟踪我想要呈现的内容,以及我想如何呈现它。
另外,请考虑使用formatC
代替round
,因为它可以保留重要的零(即0.10而不是0.1)。
答案 2 :(得分:5)
我没有给你很好的答案,因为我不是Emacs黑客,所以我通常做两件事之一:
在该行的位置添加简单的% $
评论,以便将数学表达式“关闭”从$
到$
,
或者重写表达式以不使用基于$
的子集:
round(as.numeric(chisq.test(someVar)["p.value"]), 2)
。