Create (and optionally edit) a draft of an R Markdown document based on a template.

draft(file, template, package = NULL, create_dir = "default", edit = TRUE)



File name for the draft


Template to use as the basis for the draft. This is either the full path to a template directory or the name of a template directory within the rmarkdown/templates directory of a package.


(Optional) Name of package where the template is located.


TRUE to create a new directory for the document (the "default" setting leaves this behavior up to the creator of the template).


TRUE to edit the template immediately


The file name of the new document (invisibly).


The draft function creates new R Markdown documents based on templates that are either located on the filesystem or within an R package. The template and its supporting files will be copied to the location specified by file.


An R Markdown template consists of a directory that contains a description of the template, a skeleton Rmd file used as the basis for new documents, and optionally additional supporting files that are provided along with the skeleton (e.g. a logo graphic).

If the template directory is contained within a package then it should be located at inst/rmarkdown/templates. For example, a package named pubtools that wanted to provide a template named quarterly_report would need to provide the following files within the pubtools/inst/rmarkdown/templates directory:


The template.yaml file should include a name field. If you want to ensure that a new directory is always created for a given template, then you can add the create_dir field to the template.yaml file. For example:

create_dir: true

The skeleton/skeleton.Rmd file should include the initial contents you want for files created from this template. Additional files can be added to the skeleton directory, for example:


These files will automatically be copied to the directory containing the new R Markdown draft.


if (FALSE) {

                 template="quarterly_report", package="pubtools")