用Lyx为带有knitr的R代码块添加行号

时间:2019-02-12 22:48:20

标签: r knitr reporting sweave

我正在将Lyx与R knitr软件包一起使用,并且很难将行号放入R中的代码块中。我希望代码的每一行都有一个数字,而不仅仅是输出行,帖子。

例如,我想看看我的代码如下:

x <- 1:10
y <- x^2

这样呈现的是我的最终PDF文档

1  x <- 1:10
2  y <- x^2

我看到了类似的讨论here,但我希望在LyX内完成此操作。

1 个答案:

答案 0 :(得分:1)

经过研究,我发现了一个可行的解决方案,但我仍然对其他解决方案感兴趣。

当将knitr与Lyx或Latex结合使用时,我发现将lineno程序包添加到文档前导中,然后用\internallinenumbers \resetlinenumber[13]括起来是很有帮助的。

这是一个最小的例子:

\usepackage{lineno}

然后在正文中,在代码块之前添加以下内容:

{\internallinenumbers \resetlinenumber[13]

,然后在代码块之后:

}

使用LyX(我用于快速生成LaTeX),我只需要转到文档菜单,然后依次转到“设置”->“ LaTeX前导码”,然后添加\usepackage{lineno},单击“应用”,然后单击“确定”,然后单击“关闭”。然后在代码块之前的主文档中,通过单击“ TEX”按钮菜单按钮或按键盘上的“ Ctrl + L”,插入LaTeX源。然后粘贴{\internallinenumbers \resetlinenumber[13]。最后,我将光标放在代码块之后,然后执行相同的操作。只有我用花括号关闭行号:}

下面是粘贴代码的最小示例:

\documentclass[english]{article}
\usepackage{lineno}
\begin{document}
First line in main document before code chunk.

{\internallinenumbers \resetlinenumber[13]

<<CodeBlock1, highlight=TRUE, eval=FALSE, size="small">>=
x<-rnorm(10)
mean(x)
@
}
\end{document}