2016-09-26 112 views
1

我有foo.Rnw文件,它使用extrafont包生成具有使用非标准字体系列的文本元素的图形。在knitr在我的文档上调用pdflatex后,我想在生成的foo.pdf文件上运行extrafont::embed_fontsKnitr hook后处理pdf输出?

我可以手动做到这一点,但有没有办法从knitr内做到这一点? (例如,我可以设置一些针织包选项,在它编织我的文件并通过pdflatex运行后自动调用extrafont::embed_fonts

+0

你如何编织你的文件?使用RStudio中的“编译PDF”按钮? –

+0

是的。我就是这么做的。 – jgilligan

回答

2

如在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)。

+0

不错.Rmd。 .Rnw有什么可比的,它没有YAML头文件? – jgilligan

+0

@jgilligan哦,对不起,我错过了你的问题上的'rnw'标签。目前我不知道如何将此应用于RNW,但我会将其保留在我的脑后。 –