Pandoc.brew: Brew in pandoc format

View source: R/brew.R

Pandoc.brewR Documentation

Brew in pandoc format


This function behaves just like brew except for the <%=...%> tags, where Pandoc.brew first translate the R object found between the tags to Pandoc's markdown before passing to the cat function.


  file = stdin(),
  output = stdout(),
  convert = FALSE,
  open = TRUE,,
  graph.hi.res = FALSE,
  text = NULL,
  envir = parent.frame(),
  append = FALSE,



file path of the brew template. As this is passed to readLines, file could be an URL too, but not over SSL (for that latter RCurl would be needed).


(optional) file path of the output file


string: format of required output document (besides Pandoc's markdown). Pandoc is called if set via Pandoc.convert and the converted document could be also opened automatically (see below).


try to open converted document with operating system's default program

character string (default to %t when output is set to stdout and paste0(basename(output), '-%n') otherwise) passed to evals. Besides evals's possible tags %i is also available which would be replaced by the chunk number (and optionally an integer which would handle nested brew calls) and %I with the order of the current expression.


character string (default to tempdir() when output is set to stdout and dirname( otherwise) passed to evals


render high resolution images of plots? Default is FALSE except for HTML output.


character vector (treated as the content of the file


environment where to brew the template


should append or rather overwrite (default) the output markdown text file? Please note that this option only affects the markdown file and not the optionally created other formats.


additional parameters passed to Pandoc.convert


This parser tries to be smart in some ways:

  • a block (R commands between the tags) could return any value at any part of the block and there are no restrictions about the number of returned R objects

  • plots and images are grabbed in the document, rendered to a png file and pander method would result in a Pandoc's markdown formatted image link (so the image would be shown/included in the exported document). The images are put in plots directory in current getwd() or to the specified output file's directory.

  • all warnings/messages and errors are recorded in the blocks and returned in the document as a footnote

Please see my Github page for details ( and examples (


converted file name with full path if convert is set, none otherwise


Only one of the input parameters (file or text) is to be used at once!



## Not run: 
text <- paste('# Header', '',
  'What a lovely list:\n<%=as.list(runif(10))%>',
  'A wide table:\n<%=mtcars[1:3, ]%>',
  'And a nice chart:\n\n<%=plot(1:10)%>', sep = '\n')
Pandoc.brew(text = text)
Pandoc.brew(text = text, output = tempfile(), convert = 'html')
Pandoc.brew(text = text, output = tempfile(), convert = 'pdf')

## pi is awesome
Pandoc.brew(text='<%for (i in 1:5) {%>\n Pi has a lot (<%=i%>) of power: <%=pi^i%><%}%>')

## package bundled examples
Pandoc.brew(system.file('examples/minimal.brew', package='pander'))
Pandoc.brew(system.file('examples/minimal.brew', package='pander'),
  output = tempfile(), convert = 'html')
Pandoc.brew(system.file('examples/short-code-long-report.brew', package='pander'))
Pandoc.brew(system.file('examples/short-code-long-report.brew', package='pander'),
  output = tempfile(), convert = 'html')

## brew returning R objects
str(Pandoc.brew(text='Pi equals to <%=pi%>.
And here are some random data:\n<%=runif(10)%>'))

str(Pandoc.brew(text='# Header <%=1%>\nPi is <%=pi%> which is smaller then <%=2%>.
foo\nbar\n <%=3%>\n<%=mtcars[1:2,]%>'))

str(Pandoc.brew(text='<%for (i in 1:5) {%>
Pi has a lot (<%=i%>) of power: <%=pi^i%><%}%>'))

## End(Not run)

pander documentation built on March 18, 2022, 6:39 p.m.