【问题标题】:How can I get the name of the current Quarto file?如何获取当前 Quarto 文件的名称?
【发布时间】:2022-11-18 13:08:23
【问题描述】:

我想将当前正在执行的 Quarto 文件的名称添加到报告中,而无需对其进行硬编码。我在 RStudio IDE 中使用 R。 `r scriptName::current_filename()``r commandArgs()`都返回/Applications/quarto/share/rmd/rmd.R。有没有办法获取 Quarto 脚本的名称而不是 knitr 正在处理的 R 文件的名称?

【问题讨论】:

  • 这并不完全是答案的重复,它并不简单,但你见过this吗?解决方法的一个很好的建议。
  • 谢谢山姆。我没见过那个。不幸的是,该版本似乎需要我对文件名进行硬编码。我正在尝试与新手一起执行可重现的工作流程。所以自动查找是高度比希望程序员不更改文件名更可取,因为他们在代码中命名了文件名。
  • 很公平。您究竟是如何编译它的(我将 vscode 用于 Quarto - RStudio 是否有按钮,或者您是否正在输入 quarto render 类型命令)?你试过rstudioapi::getActiveDocumentContext()rstudioapi::getSourceEditorContext()了吗?
  • 好主意,但没有运气。我在 RStudio IDE 中工作。如果我从控制台 rstudioapi::getSourceEditorContext()[2] 运行它,但当我将它嵌入脚本并尝试呈现文档(使用呈现按钮)时,这不起作用。我收到Error: RStudio not running。我认为这是同一个核心问题,因为 Quarto 正在开始一个新的流程来制作文件。所以名字就没了。
  • 如果我自己尝试,这会更容易,但出于某种原因,RStudio 在我的主 PC 上打开时总是崩溃!当您尝试使用as_job = FALSE(或全局设置options("quarto.render_as_job" = FALSE))进行渲染时,行为是否相同?

标签: r quarto


【解决方案1】:

作为一种更简单的解决方法,您可以使用 quarto::quarto_render()bash terminal 将文件名作为 parameter 传递给文档。

假设文件名是四开本文档.qmd

四开本_doc.qmd

---
title: "Quarto File Name"
format: html
params:
  filename: ""
---

## Quarto

you are running the file `r params$filename`

然后从 bash 终端,

fname=quarto_doc.qmd
quarto render $fname -P filename:$fname


或者,如果您更喜欢使用 R 函数,可以像这样方便地在 quarto::quarto_render 周围创建一个包装函数,

render_qmd <- function(input, ...) {
  input_file_name <- basename(input)
  quarto::quarto_render(input, execute_params = list(filename = input_file_name), ...)
}

render_qmd("quarto_doc.qmd")

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多