Qmd 文档

qmd 简介 – 加强版 Markdown

Qmd 文档Markdown 文档,但通过 QuartoPandoc 提供了大量额外功能。nbdev 使用 Quarto 渲染其页面(带有一些额外功能),Quarto 使用 Pandoc 渲染其页面(带有一些额外功能)。nbdev notebook 中的每个 markdown 单元格都被视为 qmd,nbdev 可以发布纯 qmd 文本文件以及 qmd RenderScripts。因此,熟悉 qmd 的主要特性是一个好主意。

就像使用 RenderScripts 一样,您可以对纯 qmd 文本文件使用热重载/实时重载——因此,一旦您保存文件,您将在网络浏览器中看到新的输出(假设您正在运行 nbdev_preview)。

计算

您可以使用 qmd 文件生成数据驱动的文档。例如,考虑此表(也在 RenderScript 教程中展示以供比较),其中包含 nbdev 主页上提供推荐语的人员列表:

姓名 职位
Chris Lattner Swift 和 LLVM 的发明者
Fernando Pérez Jupyter 的创建者
David Berg 软件工程师, Netflix
Erik Gaasedelen 软件工程师, Lyft
Roxanna Pourzand 产品经理, Transform
Hugo Bowne-Anderson 开发者关系负责人, Outerbounds

上表是使用嵌入的 qmd 计算块 从以下 Python 列表中生成的:

testimonials = [
    ('chris-lattner.png', 'Chris Lattner', 'Inventor of Swift and LLVM'),
    ('fernando-pérez.jpeg', 'Fernando Pérez', 'Creator of Jupyter'),
    ('david-berg.jpeg', 'David Berg', 'Software Engineer, Netflix'),
    ('erik-gaasedelen.jpeg', 'Erik Gaasedelen', 'Software Engineer, Lyft'),
    ('roxanna-pourzand.jpeg', 'Roxanna Pourzand', 'Product Manager, Transform'),
    ('hugo-bowne-anderson.jpeg', 'Hugo Bowne-Anderson', 'Head of Developer Relations, Outerbounds')
]

正如 RenderScript 示例中所示,要从这个 Python 列表生成表格,使用了以下四行代码:

print(qmd.tbl_row(['','Name','Position']))
print(qmd.tbl_sep([1,3,4]))
for fname,name,position in testimonials:
    print(qmd.tbl_row([im(fname, 60), name, position]))

对于像这样的数据驱动文档,我们在 YAML frontmatter 中添加以下内容,它会隐藏用于生成输出的代码,并且也不会为输出添加任何额外格式:

---
execute:
  echo: false
  output: asis
---

比较 RenderScript 示例和当前页面的源代码,看看计算在 RenderScripts 中与纯 qmd 文本文件相比是如何使用的。我们发现对于我们构建的大多数页面,我们倾向于使用 Notebooks,因为它们有很多有用的功能(例如直接将图像粘贴到单元格中)。我们使用 RenderScripts 来构建复杂的网页,例如 nbdev 主页,而 qmd 文件用于主要由 markdown 组成且不需要任何 notebook 功能的页面。

格式

除了 标准 markdown 格式外,Quarto qmd 还添加了许多额外功能。请查看完整的 Quarto 文档以了解其所有功能——我们在这里只重点介绍一些我们喜欢的功能。

Divs 和 类

您可以通过使用 ::: 围住行来创建 HTML divs。通过在开头的 ::: 之后放置 {.classname},Divs 可以包含类。示例如下:

::: {.border}
This content can be styled with a border
:::

这是它的渲染效果

此内容可以使用边框进行样式设置

您可能想知道 border 类从何而来… Quarto 支持 Bootstrap 5 和 Bootswatch 主题,因此您可以在文档中使用许多可用的类。请记住,所有 notebook markdown 单元格也被视为 qmd,并且也可以使用本节中讨论的所有格式技巧。

标注块

您可以使用一种特殊的块,称为 标注块。示例如下:

:::{.callout-note}
Note that there are five types of callouts, including:
`note`, `warning`, `important`, `tip`, and `caution`.
:::

……这是它的渲染效果

注意

请注意,有五种类型的标注块,包括:note (注意), warning (警告), important (重要), tip (提示), 和 caution (谨慎)。

图像

您可以向文档添加图像(Quarto 称之为 figures),以及标题,甚至可以将它们排列成布局。示例如下:

::: {layout-ncol=3}
![Jupyter](/images/jupyter.svg)

![Vscode](/images/vscode.svg)

![Git](/images/git.svg)
:::

Jupyter

Vscode

Git