Книтр крюк для пост-обработки PDF-файла?

Я имею foo.Rnw файл, который использует extrafont пакет для создания фигур с текстовыми элементами, использующими нестандартные семейства шрифтов. После того, как knitr вызывает pdflatex в моем документе, я хочу запустить extrafont::embed_fonts в результате foo.pdf файл.

Я могу сделать это вручную, но есть ли способ сделать это изнутри Knitr? (например, некоторые опции пакета knitr, которые я могу установить для автоматического вызова extrafont::embed_fonts после того, как он вяжет мой файл и запускает его через pdflatex)

1 ответ

Как объясняется в этом ответе, можно изменить поведение кнопки "Компилировать PDF" в RStudio, установив параметр YAML. knit, Это позволяет запускать произвольный код при нажатии кнопки "Вязать". Обратите внимание, что код должен быть отформатирован как однострочный, и вам необходимо использовать одинарные кавычки для символьных данных (двойные кавычки не будут работать).

Я не знаю extrafont пакет, так что вот пример, который обрезает сгенерированный PDF. призвание extrafont::embed_fonts должно работать аналогично:

---
knit: (function(inputFile, encoding) { rmarkdown::render(input = inputFile, encoding = encoding); knitr::plot_crop(paste0(basename(tools::file_path_sans_ext(inputFile)), '.pdf')) } )
output: pdf_document
---

```{r}
print("Hello world!")
```

Это на самом деле довольно просто; самая сложная часть - это составление имени выходного файла: (paste0(basename(tools::file_path_sans_ext(inputFile)), '.pdf') (см. здесь).

Другие вопросы по тегам