我有foo.Rnw
文件,它使用extrafont
包生成具有使用非标准字体系列的文本元素的图形。在knitr在我的文档上调用pdflatex后,我想在生成的foo.pdf
文件上运行extrafont::embed_fonts
。Knitr hook后处理pdf输出?
我可以手动做到这一点,但有没有办法从knitr内做到这一点? (例如,我可以设置一些针织包选项,在它编织我的文件并通过pdflatex运行后自动调用extrafont::embed_fonts
)
我有foo.Rnw
文件,它使用extrafont
包生成具有使用非标准字体系列的文本元素的图形。在knitr在我的文档上调用pdflatex后,我想在生成的foo.pdf
文件上运行extrafont::embed_fonts
。Knitr hook后处理pdf输出?
我可以手动做到这一点,但有没有办法从knitr内做到这一点? (例如,我可以设置一些针织包选项,在它编织我的文件并通过pdflatex运行后自动调用extrafont::embed_fonts
)
如在this answer中所述,可以修改RStudio中“编译PDF”按钮的行为通过设置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')
(参见here)。
不错.Rmd。 .Rnw有什么可比的,它没有YAML头文件? – jgilligan
@jgilligan哦,对不起,我错过了你的问题上的'rnw'标签。目前我不知道如何将此应用于RNW,但我会将其保留在我的脑后。 –
你如何编织你的文件?使用RStudio中的“编译PDF”按钮? –
是的。我就是这么做的。 – jgilligan