I am looking to create a table in a PDF document using rmarkdown
, knitr
and pander
. The table should be nearly identical to Table 1 shown below, except the asterisks should be bullets. Is this at all possible using only the R
libraries listed above?
Here is my code to produce the PDF document (and thus the table above):
---
title: "xxx"
author: "xxx"
date: "xxx"
output:
word_document: default
pdf_document:
fig_height: 4
fig_width: 10
highlight: tango
geometry: margin=3cm
---
```{r global_options, include=FALSE, echo=FALSE}
require(knitr)
opts_chunk$set(fig.width=8, fig.height=4, fig.path='figs/', dpi=500,
echo=FALSE, warning=FALSE, message=FALSE, results='hide')
```
```{r pandoc_options, include=FALSE, echo=FALSE}
require(pander)
panderOptions('digits', 3)
panderOptions('round', 3)
panderOptions('keep.trailing.zeros', TRUE)
panderOptions('keep.line.breaks', TRUE)
```
```{r concepts, echo=FALSE}
mytable = data.frame(Concept = c("Decoded", "XXX"),
Description = c("
\\\n
\\\n * Founded in 2011
\\\n * * Offers workshops to take people from zero skills and knowledge in programming through to coding a multi-platform app using HTML, CSS and Javascript in a single day
\\\n * * Rave reviews", "XXX"),
Website = c("http://decoded.com/uk/","XXX"))
```
``` {r concepts_descriptions, results = 'asis'}
pandoc.table(mytable, style = "multiline", justify = "left", caption = "Concepts and Descriptions")
```
EDIT @Roman thanks for that - however if I simply substitute, I get the following not-so-beautiful table ("period" bullets, poor formatting) ... The most important thing for me now is the formatting that comes with lists. Thanks!
The default multiline
style table does not support arbitrary block elements inside of the cells, but the grid
tables does. So this is possible, just make sure:
grid
styleleft
keep.line.break
Quick demo:
mytable = data.frame(
Concept = c("Decoded", "XXX"),
Description = c("* Founded in 2011\ \n* Offers workshops to take people from zero skills and knowledge in programming through to coding a multi-platform app using HTML, CSS and Javascript in a single day", "XXX"),
Website = c("http://decoded.com/uk/","XXX"))
pander::pander(mytable, keep.line.breaks = TRUE, style = 'grid', justify = 'left')
Resulting in a nicely formatted HTML list via pandoc
:
<table>
<colgroup>
<col width="13%" />
<col width="43%" />
<col width="30%" />
</colgroup>
<thead>
<tr class="header">
<th align="left">Concept</th>
<th align="left">Description</th>
<th align="left">Website</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="left">Decoded</td>
<td align="left">* Founded in 2011 * Offers workshops to take people from zero skills and knowledge in programming through to coding a multi-platform app using HTML, CSS and Javascript in a single day</td>
<td align="left">http://decoded.com/uk/</td>
</tr>
<tr class="even">
<td align="left">XXX</td>
<td align="left">XXX</td>
<td align="left">XXX</td>
</tr>
</tbody>
</table>
But works with PDF as well:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With