```{mermaid}
flowchart LR
A[硬边缘] --> B(圆角边缘)
B --> C{决策}
C --> D[结果一]
C --> E[结果二]
```
Markdown基础
概述
Quarto基于Pandoc,并使用其变体的Markdown作为其底层文档语法。Pandoc Markdown是John Gruber的Markdown语法的扩展和略微修订版本。
Markdown是一种纯文本格式,旨在易于编写,更重要的是易于阅读:
Markdown格式的文档应该可以直接发布为纯文本,而不像用标签或格式指令标记过一样。 – John Gruber
本文档提供了最常用的Markdown语法示例。有关更深入的文档,请参阅Pandoc的Markdown的完整文档。
文本格式
Markdown语法 | 输出 | | |
---|---|
markdown | *斜体*, **粗体**, ***粗斜体*** | *斜体*, **粗体**, ***粗斜体*** | | | |
|
|
上标2 / 下标2 |
markdown | ~~删除线~~ ~~删除线~~ | | |
|
markdown | `原样代码` `原样代码` | | |
标题
Markdown语法 | 输出 | | |
---|---|
|
标题1 |
|
标题2 |
|
标题3 |
|
标题4 |
|
标题5 |
|
标题6 |
链接与图片
Markdown语法 | 输出 | | |
---|---|
|
https://quarto.org |
|
Quarto |
markdown | ![标题](elephant.png){fig-alt="一只大象的线条画。"} ![标题](elephant.png) | | | |
|
markdown | [![标题](elephant.png)](https://quarto.org) [![标题](elephant.png)](https://quarto.org) | | | |
|
markdown | [![标题](elephant.png "一只大象"){fig-alt="一只大象的线条画。"}](https://quarto.org) [![标题](elephant.png "一只大象")](https://quarto.org) | | | |
|
|
列表
Markdown 语法 | 输出 |
---|---|
|
|
|
|
|
|
|
|
|
继续后 |
|
|
|
|
|
注意,与其他Markdown渲染器(特别是Jupyter和GitHub)不同,Quarto中的列表要求在列表上方有一个完整的空行。否则,列表不会以列表形式渲染,而是会全部显示为一行普通文本。
脚注
Pandoc支持使用以下语法对脚注进行编号和格式化:
[^1] 还有另一个。[^longnote]
这里是一个脚注引用,
[^1]: 这里是脚注。
[^longnote]: 这里有一个包含多个块的脚注。
后续段落缩进以显示它们属于前一个脚注。
{ some.code }
整个段落可以缩进,或者只缩进第一行。这样,多段落脚注的工作方式就像多段落列表项一样。
这个段落不会成为脚注的一部分,因为它没有缩进。
上述语法生成以下输出:
此外,您还可以使用以下语法编写单段落内联脚注:
[内联脚注更容易编写,因为您不必选择标识符并向下移动到键入脚注。] 这里是一个内联脚注。^
此语法生成以下输出:
这里是一个内联脚注。3
表格
Markdown语法
| 右对齐 | 左对齐 | 默认对齐 | 居中对齐 |
|------:|:-----|---------|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 |
输出
右对齐 | 左对齐 | 默认 | 居中 |
---|---|---|---|
12 | 12 | 12 | 12 |
123 | 123 | 123 | 123 |
1 | 1 | 1 | 1 |
在表格的文章中了解更多信息。
源代码
使用 ```
来分隔源代码块:
```
代码
```
为代码块添加语言以进行语法高亮:
```python
1 + 1
```
Pandoc 支持超过 140 种不同语言 的语法高亮。如果你的语言不受支持,你可以使用 default
语言来获得类似的视觉效果:
```default
代码
```
等同于上面示例中使用的简短形式的是一种较长的形式,它使用语言作为类(即 .python
)放在大括号内:
```{.python}
1 + 1
```
较长的形式允许你以类似于 Divs 的方式向块添加属性。一些使用此语法的功能是 行号 和 代码文件名。以下是后者的示例:
```{.python filename="run.py"}
代码
```
如果你正在创建 HTML 输出,有多种选项可用于代码块输出。有关更多详细信息,请参阅 HTML 代码 的文章。
原始内容
可以使用 Pandoc 的原始属性 直接包含原始内容,而无需 Quarto 解析它。原始块以 ```{=
开头,后跟格式和闭合 }
,例如,这是一个原始 HTML 块:
```{=html}
<iframe src="https://quarto.org/" width="500" height="400"></iframe>
```
对于 PDF 输出,请使用原始 LaTeX 块:
```{=latex}
\renewcommand*{\labelitemi}{\textgreater}
```
再举一个例子,如果你使用 Typst 格式,你可以使用原始块来包含 Typst 语法:
```{=typst}
#set text(fill: red)
这段文字是红色的。
```
你也可以包含内联原始内容:
`<a>html</a>`{=html} 这里是一些内联原始 HTML:
方程
使用 $
分隔符表示内联数学公式,使用 $$
分隔符表示显示数学公式。例如:
Markdown 语法 | 输出 | | |
---|---|
markdown | 内联数学公式: $E = mc^{2}$ | 内联数学公式: $E=mc^{2} | |
|
|
显示数学公式: \[E = mc^{2}\] |
如果你想定义自定义 TeX 宏,请将它们包含在 $$
分隔符内,并放在 .hidden
块中。例如:
::: {.hidden}$$
\def\RR{{\bf R}}
\def\bold#1{{\bf #1}}
$$
:::
对于使用 MathJax(默认)处理的 HTML 数学,你可以使用 \def
、\newcommand
、\renewcommand
、\newenvironment
、\renewenvironment
和 \let
命令来创建你自己的宏和环境。
图表
Quarto 原生支持嵌入 Mermaid 和 Graphviz 图表。这使你可以使用受 markdown 启发的纯文本语法创建流程图、序列图、状态图、甘特图等。
例如,这里我们嵌入了一个使用 Mermaid 创建的流程图:
在 图表 的文章中了解更多信息。
视频
你可以使用 {{< video >}}
短代码 在文档中包含视频。例如,这里我们嵌入了一个 YouTube 视频:
{{< video https://www.youtube.com/embed/wo9vZccmqwc >}}
视频可以引用视频文件(例如 MPEG)或可以是发布在 YouTube、Vimeo 或 Brightcove 上的视频链接。在 视频 的文章中了解更多信息。
分页符
pagebreak
短代码 允许你在文档中插入一个原生的分页符(例如,在 LaTeX 中这是 \newpage
,在 MS Word 中是 docx 原生的分页符,在 HTML 中是 page-break-after: always
CSS 指令等):
第1页
{{< pagebreak >}}
第2页
原生分页符支持 HTML、LaTeX、Context、MS Word、Open Document 和 ePub 格式(对于其他格式,插入一个换页符 \f
)。
Divs 和 Spans
你可以使用 Divs 和 Spans 为内容区域添加类、属性和其他标识符(你将在下面的 提示块 中看到一个示例)。
例如,这里我们使用 div (:::
) 将 “border” 类添加到内容区域:
::: {.border}
这段内容可以带有边框样式 :::
一旦渲染为 HTML,Quarto 会将 markdown 转换为:
<div class="border">
<p>此内容可以带有边框样式</p>
</div>
Divs 以包含至少三个连续冒号以及一些属性的栅栏开头。属性可以选择后跟另一串连续的冒号。Div 以另一行包含至少三个连续冒号的字符串结束。Div 应与前面的和后面的块用空行分隔。Div 也可以嵌套。例如
::::: {#special .sidebar}
::: {.warning}
这是一个警告。
:::
更多内容。 :::::
一旦渲染为 HTML,Quarto 会将 Markdown 转换为:
<div id="special" class="sidebar">
<div class="warning">
<p>这是一个警告。</p>
</div>
<p>更多内容。</p>
</div>
没有属性的栅栏总是关闭栅栏。与栅栏代码块不同,关闭栅栏中的冒号数量不需要与打开栅栏中的冒号数量匹配。然而,使用不同长度的栅栏可以帮助视觉清晰地区分嵌套的 Div 与其父级。
如果一个带括号的内联序列(如开始链接时使用的)紧随其后的是属性,它将被视为带有属性的 Span
:
[这是*一些文字*]{.class key="val"}
一旦渲染为 HTML,Quarto 会将 Markdown 转换为:
<span class="class" data-key="val">
<em>一些文字</em>
这是</span>
通常,您会结合使用 CSS 和/或 Filter 以及 Divs 和 Spans 来在渲染文档中提供样式或其他行为。
属性顺序
Pandoc 中的 Divs 和 Spans 可以具有标识符、类和(可能许多)键值属性的任意组合。为了使这些被 Pandoc 识别,它们必须按特定顺序提供:标识符、类,然后是键值属性。这些中的任何一个都可以省略,但如果提供,必须遵循该顺序。例如,以下是有效的:
[这是好的]{#id .class key1="val1" key2="val2"}
然而,以下不会被 Pandoc 识别:
[这*不*起作用!]{.class key="val" #id}
此排序限制适用于 Divs 和 Spans。有关更多详细信息,请参阅 Pandoc 关于 Divs 和 Spans 的文档。
提示块
Markdown 语法
:::{.callout-note}
请注意,有五种提示块类型,包括:`note`、`tip`、`warning`、`caution` 和 `important`。
:::
输出
请注意,有五种提示块类型,包括 note
、tip
、warning
、caution
和 important
。
在 提示块 的文章中了解更多信息。
其他块
Markdown 语法 | 输出 |
---|---|
|
|
|
Div |
|
行块 空格和新行保留 |
特殊字符
Markdown 语法 | 输出 | | |
---|---|
|
短划线:– | |
|
长划线:— | |
键盘快捷键
人工智能与机器学习
概述
人工智能(AI)和机器学习(ML)是当今科技领域最热门的话题之一。AI是指计算机系统能够执行通常需要人类智能的任务,如视觉识别、语音识别和决策制定。ML是AI的一个子集,专注于开发能够从数据中学习的算法。
关键技术
深度学习
深度学习是ML的一个分支,使用多层神经网络来模拟人脑的工作方式。它在图像和语音识别等领域取得了显著的成功。
强化学习
强化学习是一种通过试错来学习的ML方法。它通常用于游戏和机器人控制等领域。
应用
医疗保健
AI和ML在医疗保健领域有广泛的应用,包括疾病诊断、药物发现和个性化治疗。
金融
在金融领域,AI和ML用于风险管理、欺诈检测和投资策略优化。
挑战
数据隐私
随着AI和ML的发展,数据隐私成为一个重要问题。如何在利用数据的同时保护个人隐私是一个亟待解决的挑战。
伦理问题
AI和ML的决策过程往往不透明,这引发了关于算法偏见和伦理责任的讨论。
未来展望
AI和ML的未来充满希望,但也伴随着挑战。随着技术的进步,我们有望看到更多创新应用的出现,但同时也需要解决随之而来的伦理和社会问题。
kbd
短代码 可用于描述文档中的键盘快捷键。在 Javascript 格式中,它会尝试检测格式的操作系统并显示正确的快捷键。在打印格式中,它会为所有操作系统打印键盘快捷键信息。
例如,编写以下 Markdown:
要打印,请按 {{< kbd Shift-Ctrl-P >}}。要打开现有项目,请按 {{< kbd mac=Shift-Command-O win=Shift-Control-O linux=Shift-Ctrl-L >}}。
将呈现键盘快捷键为:
要打印,请按 Shift-Ctrl-PShift-Ctrl-P。要打开现有项目,请按 。