Home > Software design >  customizing r quarto pdf output file name
customizing r quarto pdf output file name

Time:09-04

How do I customize the filename of r quarto pdf document when I render? Before when I was using Rmarkdown I was using the following code in the YAML:

---
title: "Some title"
author: "First Last"
date: "`r format(Sys.Date(), '%d %B, %Y')`"
output: pdf_document
knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), paste0(Sys.Date(),"_Report","_FirstLast",".pdf"))) })
---

When I hit the "Knit" button the filename of the pdf document would be 2022-08-08_Report_FirstLast.pdf

Is there a way to do this with quarto pdf? I think the quarto_render function needs to be used but don't know how.

CodePudding user response:

Use the output_file argument of quarto_render function.

file_name = paste0(Sys.Date(),"_Report","_FirstLast", ".pdf")

quarto_render("your_qmd_file.qmd", output_file = file_name, output_format = "pdf")

Now about the approach you are trying,

  • Firstly, there's no such knit yaml key in quarto AFAIK

  • Secondly, although r-code can be used in code-chunk option prefixed be !expr , it's not possible to use inline R code in document yaml section right at this moment of answering this question (03 Sep, 2022). See this discussion on Github.

Though there are some suggested workaround for using r-code in yaml in this discussion on Github, but using quarto_render to control output filename seems the easiest option in your case.


And additionally, if your output file name is simple (that is, without any r-code syntax), you can use output-file yaml option.

---
title: "Testing Output file name"
format:
   pdf: 
    output-file: "output_file_name"
    output-ext:  "pdf"
---


## Quarto

Quarto enables you to weave together content 
and executable code into a finished document.
To learn more about Quarto 
see <https://quarto.org>.

## Running Code

When you click the **Render** button 
a document will be generated that 
includes both content and the output of 
embedded code. 

This will create the output file named output_file_name.pdf in the directory where the source file is.

CodePudding user response:

If you're comfortable using Quarto CLI in bash shell (which may be more convenient for automatic report generation), you could date-stamp your outputs like this.

now=`date  "%Y-%m-%d"`
quarto render my_doc.qmd --output "./out_$now.pdf" --to pdf
  • Related