我有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