如何使用 rmarkdown 和 pandoc 在 table 中编写(项目符号)列表
How to write (bullet) lists in a table using rmarkdown and pandoc
我希望使用 rmarkdown
、knitr
和 pander
在 PDF 文档中创建 table。 table 应该与下面显示的 Table 1 几乎相同,除了星号应该是项目符号。仅使用上面列出的 R
库是否完全可行?
这是我生成 PDF 文档的代码(以及上面的 table):
---
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 对此表示感谢 - 但是,如果我简单地替换,我会得到以下不那么漂亮的 table (“句号”项目符号,格式不正确) ... 现在对我来说最重要的是列表附带的格式。谢谢!
默认 multiline
样式 table 不支持 arbitrary block elements inside of the cells,但 grid
table 支持。所以这是可能的,只要确保:
- 你使用
grid
风格
- 将单元格与
left
对齐
- 在列表元素的末尾使用硬换行符并启用
keep.line.break
快速演示:
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')
通过 pandoc
:
生成格式良好的 HTML 列表
<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>
但也适用于 PDF:
我希望使用 rmarkdown
、knitr
和 pander
在 PDF 文档中创建 table。 table 应该与下面显示的 Table 1 几乎相同,除了星号应该是项目符号。仅使用上面列出的 R
库是否完全可行?
这是我生成 PDF 文档的代码(以及上面的 table):
---
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 对此表示感谢 - 但是,如果我简单地替换,我会得到以下不那么漂亮的 table (“句号”项目符号,格式不正确) ... 现在对我来说最重要的是列表附带的格式。谢谢!
默认 multiline
样式 table 不支持 arbitrary block elements inside of the cells,但 grid
table 支持。所以这是可能的,只要确保:
- 你使用
grid
风格 - 将单元格与
left
对齐
- 在列表元素的末尾使用硬换行符并启用
keep.line.break
快速演示:
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')
通过 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>
但也适用于 PDF: