knitr 清理 LaTex 注释中的 % 标记,并将它们显示在最终文档中

knitr 清理 LaTex 注释中的 % 标记,并将它们显示在最终文档中

我正在编写一个 knitr 文档,使用 xtable 来获取我的表格。Xtable 默认插入一条注释:

 "latex table generated in R 3.1.0 by stable 1.7-3 package % Thu Sep 18 14:19:21 2014"

该文本显然在 xtable 的输出中被 % 符号注释掉了,但 knitr 似乎通过在其前插入转义字符“\”来清理 %,然后被 pdfLatex 拾取,得到以下文本:

% latex table generated in R 3.1.0 by xtable 1.7-3 package % Thu Sep 18 14:19:21 2014

我可以阻止 knitr 或 xtable 执行此操作吗?

编辑:这是一个示例文档。

---
title: "knitr document"
output:
pdf_document:
keep_tex: yes
number_sections: yes
toc: yes
---
```{r load_packages,echo=FALSE,include=FALSE,results='hide',cache=TRUE}
library(xtable)
```
```{r prepare_table,echo=FALSE,results='hide'}
table <- cbind(c(1,2,3,4),c(1,2,3,4))
colnames(table) <- c("var1","var2")
```
```{r print_table,echo=FALSE,results='asis'}
print(xtable(table,include.colnames=TRUE))
```

答案1

感谢@Tyler,我浏览了 knitr 问题页面,发现 xtable 有一个参数可以隐藏评论(为此向 Tyler 点赞)。这个参数有点难用,因为你必须将参数传递给 xtable 的 print 方法。解决我的问题的代码如下:

print(xtable(table,include.colnames=TRUE),comment=FALSE)

答案2

我们可以通过设置一个xtable选项来永久解决这个问题:

options(xtable.comment = FALSE)

参见?print.xtable;由于comment参数默认为getOption("xtable.comment", TRUE),因此对print.xtable都将排除注释。微软建议永久地执行此操作。

答案3

这是一个 xtable 问题:xtable 是为在 LaTeX 源文档中使用而设计的,而当您尝试在 Markdown 文档中使用它时,注释的格式在从 Md -> pandoc -> LaTeX -> pdf 传递时变得难以控制。关于knitr 问题页面kable。Knitr 现在包含处理简单表格的功能。或者,您可以使用包装器从 xtable 中删除注释:

tyxtable <- function(x, trim = 2) {
    tmp <- textConnection(capture.output(xtable(x), file = NULL))
    tmp <- readLines(tmp)
    tmp <- tmp[-1:(-1 * trim)]
    writeLines(tmp)
}

相关内容