如何使用rmarkdown和pandoc在表中编写(项目符号)列表

时间:2015-06-23 19:01:00

标签: r r-markdown pandoc pander

我希望使用rmarkdownknitrpander在PDF文档中创建一个表格。该表应与下面的表1几乎相同,但星号应为子弹。这只是使用上面列出的R库吗?

sampletable http://i58.tinypic.com/16jlq13.png

以下是我生成PDF文档的代码(以及上表):

---
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")
```

编辑 @Roman感谢 - 但是如果我只是替换,我得到以下不那么漂亮的表(“期间”子弹,格式不佳)...最重要的是我现在是列表附带的格式。谢谢!

samplepic_bullet http://i62.tinypic.com/10sest0.png

1 个答案:

答案 0 :(得分:7)

默认multiline样式表不支持arbitrary block elements inside of the cells,但grid表支持grid。所以这是可能的,只需确保:

  • 您使用left style
  • 将单元格与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> 生成格式正确的HTML列表:

 size_t
 fread(void *restrict ptr, size_t size, size_t nitems,
     FILE *restrict stream);

但也适用于PDF:

enter image description here