3

在 knitr .Rnw 文件中使用“反向”赋值运算符 (->) 时遇到问题。例如,我有以下简单的 .Rnw 文件

\documentclass{article}
\begin{document}
<<test>>=
    options(tidy=FALSE, width=50)
    1:5 -> a
@
\end{document} 

当我使用 knitr 编译成 pdf 时,运算符 -> 已反转,因此输出实际上有

1:5 <- a 

在里面!

我怎样才能改变这个?

4

2 回答 2

4

制作tidy=FALSE一个 knitr chunk 选项而不是 R 选项:

\documentclass{article}
\begin{document}
<<test,tidy=FALSE>>=
    options(tidy=FALSE, width=50)
    1:5 -> a
@
\end{document} 

(我认为tidy=FALSE在 中根本没有做任何事情options(),但我想它是无害的......)

在此处输入图像描述

于 2013-10-31T20:05:25.060 回答
3

对于tidy=FALSE逐块设置,Ben 的回答已经涵盖了您。

要全局重置选项,请使用opts_chunk$set(),如下所示:

\documentclass{article}
\begin{document}

<<setup, include=FALSE, cache=FALSE>>=
opts_chunk$set(tidy=FALSE)
@

<<test>>=
1:5 -> a
@

\end{document}

此外,如此处所述,可以让您对knitr的(以及最终的)整理行为的tidy.opts许多方面进行更细粒度的控制。也许不幸的是,在这种情况下,虽然你可以告诉knitr不要替换为(这样做你不能使用该选项来控制是否被替换为.formatR::tidy.source()"=""<-"opts_chunk$set(tidy.opts=list(replace.assign=FALSE))"->""<-"

这是一个使用的示例tidy.opts

\documentclass{article}
\begin{document}

<<setup, include=FALSE, cache=FALSE>>=
opts_chunk$set(tidy.opts=list(replace.assign=FALSE))
@

<<test>>=
j <- function(x) {  x<-y ## x<-y will be printed on new line, with added inter-token spaces
a = 1:5                  ## will be indented, but "=" won't be replaced

                       } ## closing brace will be moved to start of line
@

\end{document}
于 2013-10-31T20:29:40.633 回答