包含文件
概述
包含文件是一种方便的方式,可以在多个文档中重复使用内容。包含文件适用于纯Markdown内容,也适用于包含可执行代码单元格的 .qmd
文件(但请注意,所有单元格必须使用相同的引擎,即knitr或jupyter,但不能同时使用两者)。
要包含一个文件,请在文档中你希望包含文件的位置添加 {{< include >}}
短代码。
{{< include _content.qmd >}}
包含短代码相当于将包含文件中的文本复制并粘贴到主文件中。这意味着包含文件中的相对引用(链接、图像等)是基于主文件的目录而不是包含文件的目录解析的。
这也意味着如果包含文件有一个元数据块,该块将在所有包含文件中生效。在大多数情况下,在包含文件中使用元数据块会导致意外行为。
包含短代码需要单独出现在一行中,并且需要被空行包围。这意味着你不能在Markdown语法内部使用包含短代码(例如,在项目符号列表中的一个项目中)。
内容
一个具体的例子是,如果你有几篇关于某个主题的文章共享一个共同的引言。这里,我们有一篇名为“Revealjs演示文稿”的文章,希望包含一些不特定于Revealjs的演示文稿基本信息(我们通过包含 _basics.qmd
来实现这一点)。我们还有一些作为脚本存储的演示代码,我们希望将其包含为非执行示例(我们通过在源代码块中包含 _demo.R
和 _demo.py
来实现这一点):
---
title: "Revealjs演示文稿"
---
## 概述
Revealjs演示文稿是一个向他人展示你想法的绝佳方式!
{{< include _basics.qmd >}}
## Revealjs选项
更多内容在这里...
## 用R自行操作
```r
< include _demo.R >}}
{{```
将上面的R代码复制到你的会话中。
## 用Python自行操作
```python
< include _demo.py >}}
{{```
复制上面的Python代码并运行它。
请注意,我们对包含的文件使用了下划线 (_
) 前缀。你应该始终对包含的文件使用下划线前缀,以便它们在 quarto render
项目时自动被忽略(即不被视为独立文件)。
计算
你也可以包含带有计算单元格的文件。例如,这里我们包含一个 .qmd
文件,该文件执行一些我们希望在多个文档之间共享的数据预处理:
---
title: "我的文档"
---
{{< include _data.qmd >}}
使用数据...
其中内容为
_data.qmd
[`great_tables`](https://posit-dev.github.io/great-tables/) 加载 `sp500`
从
```{python}
import great_tables as gt
from great_tables.data import sp500
sp500.head()
```
使用计算包含时需要记住的几点重要事项:
所有计算仍然共享一个单一引擎(例如knitr或jupyter)
计算包含仅在
.qmd
文件中有效(它们在.ipynb
笔记本文件中无效)
请注意,你不能在计算代码块本身中使用 include
短代码——如上例所示,可执行代码块需要位于包含的文档内部。