Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让Emacs忽略swave文档中\Sexpr{}命令的内容,以防止不正确的基于$的语法突出显示_R_Emacs_Elisp_Sweave - Fatal编程技术网

让Emacs忽略swave文档中\Sexpr{}命令的内容,以防止不正确的基于$的语法突出显示

让Emacs忽略swave文档中\Sexpr{}命令的内容,以防止不正确的基于$的语法突出显示,r,emacs,elisp,sweave,R,Emacs,Elisp,Sweave,在LaTeX中编辑Swave文档时(使用Noweb模式),Emacs知道“忽略”位于=块中的代码。但是,对于填隙\Sexpr{}块,情况并非如此。考虑到通过“$”和LaTeX的列的R引用使用$来抵消等式,这些\Sexpr{}块通常会破坏语法高亮显示,如下所示: 我对elisp&Emacs语法突出显示有一个非常初步的了解,但我希望可以向.Emacs添加一些东西,以禁用\Sexpr{}中的任何解析/$detection 我没有好的答案,因为我不是Emacs黑客,所以我通常会做以下两件事之一: 在

在LaTeX中编辑Swave文档时(使用Noweb模式),Emacs知道“忽略”位于=块中的代码。但是,对于填隙\Sexpr{}块,情况并非如此。考虑到通过“$”和LaTeX的列的R引用使用$来抵消等式,这些\Sexpr{}块通常会破坏语法高亮显示,如下所示:


我对elisp&Emacs语法突出显示有一个非常初步的了解,但我希望可以向.Emacs添加一些东西,以禁用\Sexpr{}中的任何解析/$detection

我没有好的答案,因为我不是Emacs黑客,所以我通常会做以下两件事之一:

  • 在行的末尾添加一个简单的
    %$
    注释,以“关闭”从
    $
    $
    的数学表达式

  • 或者重写表达式以不使用基于
    $
    的子集:
    round(如.numeric(chisq.test(someVar)[“p.value]”),2)


我认为带ESS的emacs对Swave有正确的语法突出显示

无论如何,最简单的“修复”方法就是不要使用
$
运算符,而是使用
[
运算符。例如:

foo$p.value
foo[['p.value']]

我认为
foo$p.value
只是
foo[[“p.value”,exact=FALSE]]

我也没有解决办法,但我会继续我的解决办法,那就是永远不要(好吧,很少)在
\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}.
=

t1很好!我不知道formatC的事情。R如何删除有效的零总是让我抓狂。这种方法在类似
\Sexpr{sprintf“%.2f”,my.float)的事件中也有帮助
其中,emacs然后将百分比符号后的所有内容作为注释处理,然后将括号中的内容与各种相关的丑陋内容断开。我假设您使用的是AUCTeX。在emacs附带的默认LaTeX模式中,此问题不太严重,因为$…$高亮显示仅应用于较短的(单行)数学表达式,所以它永远不会像你的快照中那样“流血”。请看一份提交给AUCTeX作者的错误报告。