Qmd 文档
Qmd 文档是 Markdown 文档,但通过 Quarto 和 Pandoc 提供了大量额外功能。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}


:::