【问题标题】:Adding line numbers for R code chunks with knitr with Lyx使用 knitr 和 Lyx 为 R 代码块添加行号
【发布时间】:2019-07-06 16:12:41
【问题描述】:
我正在将 Lyx 与 R knitr 包一起使用,并且很难将行号放入我在 R 中的代码块中。我希望我的代码的每一行都有一个数字,而不仅仅是我在中看到的输出行帖子。
因此,例如,我希望看到如下所示的代码:
x <- 1:10
y <- x^2
这样渲染是我最终的 PDF 文档
1 x <- 1:10
2 y <- x^2
我看到了类似的讨论 here,但如果可能的话,我想在 LyX 中完成这个。
【问题讨论】:
标签:
r
knitr
reporting
sweave
【解决方案1】:
经过一些研究,我发现了一个可行的解决方案,但我仍然对其他解决方案感兴趣。
在将 knitr 与 Lyx 或 Latex 一起使用时,我发现将 lineno 包添加到文档前导码中然后用 \internallinenumbers \resetlinenumber[13] 将块括起来很有帮助。
这是一个最小的例子:
\usepackage{lineno}
然后在正文中,在代码块之前添加以下内容:
{\internallinenumbers \resetlinenumber[13]
然后在代码块之后:
}
使用 LyX(我用于快速生成 LaTeX),我只需转到文档菜单,然后转到 Settings->LaTeX Preamble 并添加 \usepackage{lineno},单击 Apply、OK,然后单击 Close。然后在我的代码块之前的主文档中,我通过单击“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}