如何使用 Pander 将网格添加到表格中?

how to add grid to table with pander?

提问人:Malta 提问时间:1/18/2016 最后编辑:scoaMalta 更新时间:1/19/2016 访问量:1727

问:

我正在使用 R、knitr 和 pander,但我找不到允许我用 pander 在桌子上打印网格的选项。 我试过了:

pander(tableToPrint, style='grid') 

但它什么也没做,无论是这个选项还是“multiline”、“rmarkdown”......我总是得到一条水平线,然后是列名,另一条水平线,我的所有数据和一条水平线。我希望每条线之间都有一条水平线。另一种选择是交替使用行颜色。

乳胶 针织 R-Markdown Pandoc

评论

2赞 scoa 1/19/2016
pander仅将选项传递给 Markdown 文件,但随后由 pandoc 转换为 HTML、LaTeX/PDF 等。如果你想在输出中有水平线,你必须调整模板,但解决方案很大程度上取决于你的输出格式是什么。那么,它是什么?
0赞 Malta 1/19/2016
我不确定,我目前正在 pdf 和 docx 之间取得平衡。如果您有任何此类输出的解决方案,它将做出我的选择!

答:

6赞 scoa 1/19/2016 #1

有一个古老的答案给出了在乳胶中做到这一点的诀窍,但需要对 pandoc 进行一些调整。需要将以下内容添加到乳胶代码中:

\catcode`@=11
\let \savecr \@tabularcr
\def\@tabularcr{\savecr\hline}
\catcode`@=12

但是,如果您通过 header-includes 添加它,则不起作用,可能是因为它在模板中为时已晚。因此,解决方案是创建一个新模板(或使用您常用的模板),并在顶部添加前面的代码,紧跟在 .然后:pandoc -D latex > template.tex\documentclass

---
title: "Untitled"
output:
  pdf_document:
    keep_tex: yes
    template: "template.tex"
---

在每一行生成行。那么问题来了,顶线和底线翻了一番。

这对于 docx 输出是不可能的。Pandoc 的 docx 模板允许很少的自定义,并且只允许段落样式。

为了完整起见,html解决方案更加简单:

---
title: "Untitled"
output: html_document
---
<style>
th, td {
    border-bottom: 2px solid black;
}
</style>

评论

0赞 Malta 1/19/2016
好的,我要切换到html,然后:)。您表示“颜色”行的行,但在基本的 html 输出中,我已经得到了行。