创建函数以使用Pandoc更改PDF文件中的PDF边距宽度

时间:2013-05-06 21:31:37

标签: r markdown knitr pandoc

我正在使用P中的Pandoc将降价文档转换为PDF.Pandoc输出的PDF的默认边距太大。

在这篇文章中:Set margin size when converting from Markdown to PDF with pandoc,以下代码用于修改PDF的边距宽度:

pandoc -V geometry:margin=1in -o output.pdf input.md

我在R,

中的函数中使用了这段代码
makePDF <- function(name) {
  library(knitr)
  knit(paste0(name, ".Rmd"), encoding = "utf-8")
  system(paste0("pandoc -o -V geometry:margin=1in ", name, ".pdf ", name, ".md"))
}

但这会出现此错误:

pandoc: geometry:margin=1inmpAnnual.pdf: openFile: does not exist (No such file or directory)

如何在R中创建一个函数来改变PDF的边距宽度?

1 个答案:

答案 0 :(得分:1)

您的问题是paste0构造不能创造您所追求的目标。您的错误消息也不反映您提供的代码。

name <- 'name'
paste0("pandoc -o -V geometry:margin=1in ", name, ".pdf ", name, ".md")
## [1] "pandoc -o -V geometry:margin=1in name.pdf name.md"

您已将-o置于错误的位置。

我认为使用sprintf更轻松地创建此类调用,使用%s来插入文件名。

callformat <-"pandoc -V geometry:margin=1in  %s.md -o %s.pdf"
sprintf(callformat, name,name)
## [1] "pandoc -V geometry:margin=1in  name.md -o name.pdf"