【问题标题】:Using subdirectories with quarto and RStudio使用 quarto 和 RStudio 的子目录
【发布时间】:2022-08-05 22:27:15
【问题描述】:

请考虑以下事项。

我喜欢用不同的子目录来构建我的 R 项目。使用bookdownquarto 似乎使这变得相当困难,因为两者都喜欢将它们的源文件(.Rmd 或.qmd)放在项目目录中。我希望使用quarto 会变得更容易,但情况似乎并非如此,尽管根据this post 应该是可能的。


问题描述(可复制的例子)

在 RStudio 中启动一个新的 quarto book 项目:File > New Project > New Directory > Quarto Book。

这将在 R 项目目录中创建几个 .qmd 文件。现在创建新的子目录。从 R 项目目录开始:scripts/qmd。

如果我们将R项目目录下的所有.qmd文件放到scripts/qmd中,我们还需要在_quarto.yml中调整它们的路径(例如,从index.qmd到/scripts/qmd/index.qmd)。

这样做并按下渲染按钮后,我们会收到ERROR: Book contents must include a home page (e.g. index.md)

仅将 index.qmd 文件放回 R 项目目录(并调整 _quarto.yml),即可呈现该书。


问题

  • 我们如何将所有.qmd 文件放到一个专用子目录中?

编辑(以下忽略)

最初还提出了以下问题,但现在得到了回答:quarto 似乎没有像bookdown 这样的“合并编织”选项(参见here)。不幸的是,这使得 quarto 对我的用例毫无用处。

  • 如果这是不可能的,我们如何确保在 R 项目目录中创建的对象可以被子目录中的 .qmd 文件访问? (按照建议的here 设置execute-dir: project 对我不起作用。

    标签: r bookdown quarto


    【解决方案1】:

    我假设您的目的只是对文件组织的特定个人偏好。

    您可以将大部分内容放在子目录中(这就是我对Alison's blog post 所指的内容的理解),但您仍然需要在根目录中包含index.qmd。例如,您可以有一个项目子目录,另一个用于帖子,另一个用于教程,就像 Alison 所做的那样。

    在任何情况下,实现什么的一种方法想要的是使用pre- and post-render scripts

    您可以在渲染之前从 scripts/qmd 目录中移动所有文件,然后再将它们全部移回。

      pre-render: mv scripts/qmd/*.qmd .
      post-render: mv *.qmd scripts/qmd
    

    顺便说一句,这不符合我自己的个人喜好;-)

    【讨论】:

      【解决方案2】:

      @Lucas A. Meyer,我测试了您上面建议的预渲染和后渲染选项,但是,将文件从我的子目录移动到项目根目录后会引发错误: ERROR: NotFound: The system cannot find the file specified. (os error 2)

      然后,它无法呈现文件并将其移回原始子目录位置。

      附言我会添加作为评论,但我的声誉还不够高。 :(

      【讨论】:

        猜你喜欢
        • 2022-09-29
        • 2015-05-15
        • 2022-08-18
        • 1970-01-01
        • 2022-11-25
        • 2017-04-18
        • 1970-01-01
        • 2022-08-21
        • 1970-01-01
        相关资源
        最近更新 更多