我有foo.Rnw
文件,该文件使用extrafont
包生成带有使用非标准字体系列的文本元素的数字。在knitr在我的文档上调用pdflatex之后,我想在生成的extrafont::embed_fonts
文件上运行foo.pdf
。
我可以手动执行此操作,但有没有办法在knitr中执行此操作? (例如,一些knitr包选项我可以设置为在编织我的文件并通过pdflatex运行它后自动调用extrafont::embed_fonts
)
答案 0 :(得分:3)
如this answer中所述,可以通过设置YAML选项knit
来修改RStudio中“编译PDF”按钮的行为。这允许在点击“编织”按钮时运行任意代码。请注意,代码必须格式化为单行,并且您需要对字符数据使用单引号(双引号将不起作用)。
我不知道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')
(参见here)。