Как отформатировать таблицу со встроенными изображениями в формат pdf с помощью rmarkdown? - PullRequest
0 голосов
/ 03 июля 2019

Я написал скрипт для генерации отчета rmarkdown, который добавляет QR-код, содержащий числовой результат, к кадру данных при выводе в формате pdf в kable (см. Мой связанный пост здесь ) , Коды QC генерируются как вектор изображений и добавляются в новый столбец в кадре данных при генерации отчета.

Это работает нормально, однако для вывода таблицы в формате .pdf мне нужно установить kable(df, format = "markdown"), в противном случае изображение QR-кода не помещается в выходную таблицу, а просто текст пути к файлу. Это прекрасно работает, за исключением случаев, когда я хочу изменить таблицу, используя параметры формата kableExtra, для которых требуется, чтобы формат kable был latex.

В приведенном ниже примере кода, вы видите, что когда kable(df, format = "markdown") изображения отформатированы правильно, но форматирование kableExtra не работает. И наоборот, когда параметры формата kable(df, format = "latex") kableExtra работают, а изображения - нет.

---
title: "QR Code in Column"
author: "me"
date: "2019/01/20"
output: pdf_document

---

```{r mychunk, echo = FALSE, fig.path =  "qr/", results = 'asis', fig.show='hide'}
library(knitr)
library(qrcode)
library(kableExtra)

df <- data.frame(test = LETTERS[1:2],
                 result = as.character(round(rnorm(2), 2)),                    
                 stringsAsFactors = F)

res.qr <- lapply(df$result, function(qr) {
  qrcode_gen(qr)                 # create qrcodes
  nrow(qr)                       # save number of rows of df
})

path <- paste0(opts_current$get("fig.path"), opts_current$get("label"), "-")

total <- 0
df$Code <- paste0("![](", path, (1:length(res.qr)) + total, ".pdf){width=72px}")

```

```{r echo = FALSE}

# This example works to generate the desired output, but the kableExtra options won't work.
kable(df, format = "markdown") %>%
  add_header_above(c(" ", "Class 1" = 2))

```

```{r echo = FALSE}

# This example works to use the kableExtra formatting options, but the QR Code isn't an image.
kable(df, format = "latex") %>%
  add_header_above(c(" ", "Class 1" = 2))

```

Я бы хотел иметь возможность форматировать выходную таблицу в файле .pdf, используя kableExtra, однако я открыт для любых других опций, которые могут работать!

...