【问题标题】:R --markdown to latex - tables do not show upR --markdown to latex - 表格不显示
【发布时间】:2012-11-05 00:15:03
【问题描述】:

我在 Rstudio 中使用 Knitr 来生成降价文件。我通过 xtable 包显示表格,它很好地显示在 html 文件中。但是,当我通过 pandoc 将 .md 转换为乳胶时-乳胶文件不包含应有的表格,而仅包含表格中的值而没有任何命令。

Markdown - Knitr 输入

为了给出更好的思路,下表提供了一个示例 数据行:

```{r table, results='asis', echo=FALSE} 
r = read.table("C:/aR_files/data.txt",sep=",", header=TRUE,as.is=TRUE)
r$X = NULL;
print(xtable(r), type='html') 
```

乳胶

In order to give a better idea, the following table provides a sample of
data rows:


Row1

Row2

Val1

Val1

我想我可能缺少一个乳胶包,所以我下载了 ctable.sty,但仍然得到相同的输出。任何想法表示赞赏,谢谢!

【问题讨论】:

  • 你能展示你的实际代码吗(一个可重现的例子)?
  • +1 @DavidRobinson,一个带有由 xtables 生成的表格的小 knitr 文件,也许由它生成的 .md 文件和由它生成的 .tex 文件? (或您用来生成 .md/.tex 文件以便我们重现的命令)?
  • @DavidRobinson,谢谢我更新了我的帖子。我也会尽快添加 html 输出。
  • 如果没有 data.txt,我们将无法重现这一点-您可以通过 dput(r) 显示 r 中的内容吗?
  • 这是一个已知问题。 pandoc 不会将 markdown 中的 HTML 表格转换为乳胶。一种解决方法是使用ascii 包,该包可用于以pandoc 样式生成表格输出,该样式在html 和latex 中都可以很好地呈现。另一种方法是使用options(xtable.type) 控制表格样式并将其设置为latexhtml,具体取决于您尝试生成的输出类型。

标签: latex markdown knitr xtable pandoc


【解决方案1】:

我使用与您的工作流程非常相似的工作流程,您最好的办法是放弃通常笨重的 xtable 包并使用 pander 包来打印您的表格。您可以在通用pander() 函数中包装您可能希望显示为表格的任何对象。这是pandoc.table() 函数的包装器,它有几个选项。如果您指定选项style = "XXX",您可以在此处实现您的要求。您可以选择 4 种不同的样式; “multiline”(默认)、“grid”、“simple”或“rmarkdown”。我经常在 Rstudio 中编写 rmarkdown 文档,然后使用 pander 包将它们转换为 Word 文档:

library(pander)
Pandoc.convert("C:/Users/BlahBlahBlah/Document.md", format="docx")

在转换为 .docx 格式后,所有 4 种表格样式都会变成表格对象,但只有一种表格样式在 .docx 文档和初始“编织”产生的 .html 文件中看起来正确。这种风格是“rmarkdown”。您可以实现这两种方式。一种是:

```{r table, results='asis'}
pandoc.table(myTable, style = "rmarkdown")
```

但是,我更喜欢在文档开头全局设置表格样式,以确保我的所有表格都具有相同的格式,并允许我使用更简洁的pander(x) 而不是更冗长的pandoc.table(x, style = "someStyle")

```{r table, results='asis'}
panderOptions("table.style", "rmarkdown")
pander(myTable)
```

但是,使用rmarkdown 样式有一些副作用。主要是不支持单元格内的换行符,请买家注意。我尝试了不同的样式,最终决定我喜欢“多行”的默认样式,因为它在单元格内具有换行的灵活性,即使我生成的 .html 文件看起来很傻。不过这并不困扰我,因为我实际上只使用从 .md 文件转换而来的 .docx 文件。我写了一个blog post,关于制作你可能会觉得有用的漂亮表格。它权衡了几种方法的优缺点,包括xtable() 和几种pander() 场景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2022-10-17
    • 1970-01-01
    相关资源
    最近更新 更多