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"))
pander
solution? I mean you can also reproduce the same table syntax, it's simply a function that translates R objects to Pandoc'x pipe syntax. – daroczigpander
produces excellent tables from R objects, but I'm looking to see if I can get an excellent table without an R object. For example, very simple tables of text. I can't see a way, so maybe making a data frame of my simple table and then usingpander
is the best option. – Benpander
), just read the manual at the URL I linked above about the syntax. Or just runpander(mtcars, style = 'rmarkdown')
and compare with your solution to see the difference. – daroczig