Как писать (маркированные) списки в таблице с помощью rmarkdown и pandoc

Я хочу создать таблицу в PDF-документе, используя rmarkdown, knitr и pander. Таблица должна быть почти идентична таблице 1, показанной ниже, за исключением того, что звездочки должны быть маркерами. Возможно ли это вообще при использовании только R библиотек, перечисленных выше?

sampletable

Вот мой код для создания 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


person Anna Dunietz    schedule 23.06.2015    source источник
comment
Теоретически вы можете заменить звездочку символом пули (•). Вы можете сделать это с помощью простого вызова gsub - gsub("\\*", "•", "* a list item").   -  person Roman Luštrik    schedule 23.06.2015
comment
Насколько я понимаю, pandoc использует LaTeX в качестве промежуточного формата. Вы пробовали заменить * символом маркера LaTeX ($\bullet$)? (Извините, у меня сейчас нет времени проверить, работает ли это.) Использование cdot в этот вопрос SO может быть полезен.   -  person Jthorpe    schedule 23.06.2015


Ответы (1)


Таблица стилей по умолчанию multiline не поддерживает произвольные блочные элементы внутри ячеек, но grid таблицы делает. Так что это возможно, просто убедитесь:

  • вы используете стиль 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')

Результатом является красиво отформатированный список HTML через 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:

введите описание изображения здесь

person daroczig    schedule 23.06.2015