包含文件

概述

包含文件是一种方便的方式,可以在多个文档中重复使用内容。包含文件适用于纯Markdown内容,也适用于包含可执行代码单元格的 .qmd 文件(但请注意,所有单元格必须使用相同的引擎,即knitr或jupyter,但不能同时使用两者)。

要包含一个文件,请在文档中你希望包含文件的位置添加 {{< include >}} 短代码。

{{< include _content.qmd >}}
Important

包含短代码相当于将包含文件中的文本复制并粘贴到主文件中。这意味着包含文件中的相对引用(链接、图像等)是基于主文件的目录而不是包含文件的目录解析的。

这也意味着如果包含文件有一个元数据块,该块将在所有包含文件中生效。在大多数情况下,在包含文件中使用元数据块会导致意外行为。

Important

包含短代码需要单独出现在一行中,并且需要被空行包围。这意味着你不能在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()
```

使用计算包含时需要记住的几点重要事项:

  1. 所有计算仍然共享一个单一引擎(例如knitr或jupyter)

  2. 计算包含仅在 .qmd 文件中有效(它们在 .ipynb 笔记本文件中无效)

请注意,你不能在计算代码块本身中使用 include 短代码——如上例所示,可执行代码块需要位于包含的文档内部。