2016-09-26 82 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,但我會將其保留在我的腦後。 –