变量

概述

在Quarto渲染的文档中,有多种方式可以包含动态变量。这对于外部化根据上下文变化的内容非常有用,或者作为在多个地方重复同一值的替代方案(例如版本号)。

例如,以下代码打印文档元数据中的title

{{< meta title >}}

这里使用的{{< meta >}}语法是短代码的一个示例。Quarto支持以下用于动态变量的短代码:

短代码 描述
var 来自_variables.yml文件的值
meta 来自文档元数据的值
env 系统环境变量的值

var

如果你正在使用Quarto项目,var短代码允许你从项目级别的_variables.yml文件中插入内容。在与_quarto.yml项目文件相同的目录下创建该文件,然后在你项目的任何文档中引用这些变量。

变量可以是简单值,也可以包含任意Markdown内容。要定义变量,请在项目根目录下创建一个_variables.yml文件。例如:

version: 1.2

email:
  info: info@example.com
  support: support@example.com

engine:
  jupyter: "[Jupyter](https://jupyter.org)"
  knitr: "[Knitr](<https://yihui.name/knitr>)"

注意,engine变量的值包含了用于超链接的Markdown内容。

要包含一个变量的值,使用{{< var >}}短代码,例如:

版本 {{< var version >}} 是一个小升级。

请联系我们 {{< var email.info >}}。

Quarto 包含 {{< var engine.jupyter >}} 和 
{{< var engine.knitr >}} 计算引擎。

meta

meta短代码允许你从Pandoc元数据(例如文档顶部的YAML和/或_quarto.yml中的YAML)插入内容。

例如,以下短代码插入YAML元数据中title字段的值:

{{< meta title >}}

你可以使用点(.)分隔符来解引用子键。例如:

{{< meta labels.description >}}

你也可以使用点(.)分隔符索引到数组中。例如,提取作者数组中的第一个:

{{< meta author.1 >}}

env

env短代码允许你从环境变量中读取值。例如:

版本 {{< env PRODUCT_VERSION >}} 是一个小升级。

如果环境变量未设置,你可以通过提供第二个参数来提供一个回退值:

版本 {{< env PRODUCT_VERSION "*.*" >}} 是一个小升级。

你可以在环境变量中了解更多关于在Quarto项目中设置环境变量的信息。

转义

如果你正在编写关于使用变量短代码的文档(例如,本文!),你可能需要防止它们被处理。你可以通过两种方式实现这一点:

  1. 使用额外的花括号来转义短代码引用,如下所示:

    {{{< var version >}}}
  2. 在你希望防止处理短代码的任何代码块中添加 shortcodes=false 属性:

    ```{shortcodes=false}
    {{< var version >}}
    ```