我有一个foo.Rnw
文件,它使用extrafont
包生成带有使用非标准字体系列的文本元素的图形。knitr 在我的文档上调用 pdflatex 后,我想extrafont::embed_fonts
在结果foo.pdf
文件上运行。
我可以手动执行此操作,但有没有办法从 knitr 中执行此操作?extrafont::embed_fonts
(例如,一些 knitr 包选项我可以设置为在它编织我的文件并通过 pdflatex 运行它之后自动调用)
如本答案中所述,可以通过设置 YAML 选项来修改 RStudio 中“编译 PDF”按钮的行为knit
。这允许在点击“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')
见这里)。