Книтр крюк для пост-обработки 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')
(см. здесь).