1

我有一个foo.Rnw文件,它使用extrafont包生成带有使用非标准字体系列的文本元素的图形。knitr 在我的文档上调用 pdflatex 后,我想extrafont::embed_fonts在结果foo.pdf文件上运行。

我可以手动执行此操作,但有没有办法从 knitr 中执行此操作?extrafont::embed_fonts(例如,一些 knitr 包选项我可以设置为在它编织我的文件并通过 pdflatex 运行它之后自动调用)

4

1 回答 1

3

本答案中所述,可以通过设置 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')这里)。

于 2016-09-29T08:17:47.157 回答