R——将Markdown转换为LaTeX——表格不显示

7

我正在使用Rstudio中的Knitr来生成Markdown文件。我使用xtable包显示表格,它在HTML文件中显示得很好。然而,当我通过pandoc将.md转换为.tex时,LaTeX文件并不包含应有的表格,只有表格中的值而没有任何命令。

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') 
```

Latex

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


Row1

Row2

Val1

Val1

我认为可能缺少了一个LaTeX包,所以我下载了ctable.sty,但是仍然得到相同的输出。有任何想法都会受到赞赏,谢谢!


4
你能展示你的实际代码吗(一个可重现的例子)? - David Robinson
+1 @DavidRobinson,能否提供一个使用xtables生成表格的小knitr文件,以及可能由此生成的.md文件和.tex文件?(或者您用来生成.md/.tex文件的命令,以便我们可以重现)? - mathematical.coffee
@DavidRobinson,谢谢。我已经更新了我的帖子。很快我也会添加HTML输出。 - Roark
没有 data.txt,我们无法重现这个问题 - 你能否执行 dput(r) 来展示 r 中的内容? - David Robinson
1
这是一个已知的问题。Markdown中的HTML表格无法通过pandoc转换为LaTeX格式。解决方法是使用ascii包,该包可用于在pandoc样式下生成表格输出,这样可以在html和latex中都呈现良好的效果。另一种选择是使用options(xtable.type)来控制表格样式,并根据您要生成的输出类型将其设置为latexhtml - Ramnath
@Ramnath,你可以把它发布为答案...除非我认为他不是将HTML->Latex转换,而只是分别将md->HTML和md->LaTex转换。 - David LeBauer
1个回答

6
我使用与您非常相似的工作流程,您最好放弃通常笨重的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")

所有的4个表格样式在转换为.docx格式后都会变成表格对象,但只有一种表格样式在.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样式存在一些副作用。主要是,它不支持单元格内的换行符,所以使用时需谨慎。我尝试了不同的样式,并最终决定喜欢“multiline”的默认样式,因为它对单元格内的换行具有灵活性,尽管生成的.html文件看起来很傻。这并不影响我,因为我只使用从.md文件转换而来的.docx文件。我写了一篇博客文章,介绍如何制作漂亮的表格,您可能会觉得有用。它权衡了几种方法的利弊,包括xtable()和几种pander()情景。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接