How can I manually and simply format a table in RMarkdown that will look good when converted to HTML (using the knitr and markdown packages), PDF (using pandoc and miktex) and docx (using pandoc)?
I want to be able to write small tables in RMarkdown that are not a result of R functions that look good in the three formats I use most often. So far I've found a format that looks good in 2 of the 3 formats, is 3/3 possible?
One. This looks good after Knit HTML but not good in the PDF or docx
<table>
<tr>
<td>Eggs</td>
<td>Ham</td>
</tr>
<tr>
<td>Basil</td>
<td>Tomato</td>
</tr>
</table>
Two. This one looks good after Knit HTML but not good in the PDF or docx
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
Three. This one does not look good after Knit HTML but is good in the PDF and docx (best option so far)
V1 Tweedledee Tweedledum
-------- -------------- ----------------
Age 14 14
Height 3'2" 3'2"
Politics Conservative Conservative
Religion "New Age" Syrian Orthodox
--------- -------------- ----------------
Four. This looks good after Knit HTML and make PDF and docx (winner!) but is not the manual formatting I'm after.
```{r table1, echo=FALSE, message=FALSE, warnings=FALSE, results='asis'}
require(pander)
panderOptions('table.split.table', Inf)
set.caption("Data on cars")
pander(mtcars, style = 'rmarkdown')
```
This is how I'm making the PDF and docx files:
filen <- "table" # name of my RMarkdown file without suffix
knit(paste0(filen,".Rmd"))
# make PDF
system(paste0("pandoc -s ", paste0(filen,".md"), " -t latex -o ", paste0(filen,".pdf"), " --highlight-style=tango -S"))
# make docx
system(paste0("pandoc -s ", paste0(filen,".md"), " -o ", paste0(filen,".docx"), " --highlight-style=tango -S"))
Best Answer
Inspired by daroczig's comments, especially the clue that
pander
translates to pandoc's pipe syntax, I took a closer look at thepander
documentation and found reference tocat
. After some experimentation, I found the winner:This produces uniformly good looking tables in HTML, PDF and docx in my tests. Now I'm off to upvote daroczig on some other questions to thank him for getting me to the solution.
If you need a caption for your table... then you'll need to do it a bit differently. Note that the caption will only be visible in the PDF, not in the HTML: