Markdown基础

概述

Quarto基于Pandoc,并使用其变体的Markdown作为其底层文档语法。Pandoc Markdown是John Gruber的Markdown语法的扩展和略微修订版本。

Markdown是一种纯文本格式,旨在易于编写,更重要的是易于阅读:

Markdown格式的文档应该可以直接发布为纯文本,而不像用标签或格式指令标记过一样。 – John Gruber

本文档提供了最常用的Markdown语法示例。有关更深入的文档,请参阅Pandoc的Markdown的完整文档。

文本格式

Markdown语法 | 输出 |
markdown | *斜体*, **粗体**, ***粗斜体*** | *斜体*, **粗体**, ***粗斜体*** | | |
上标^2^ / 下标~2~
上标2 / 下标2
markdown | ~~删除线~~ ~~删除线~~ | |
markdown | `原样代码` `原样代码` | |

标题

Markdown语法 | 输出 |
# 标题1

标题1

## 标题2

标题2

### 标题3

标题3

#### 标题4

标题4

##### 标题5
标题5
###### 标题6
标题6

链接与图片

Markdown语法 | 输出 |
<https://quarto.org>
https://quarto.org
[Quarto](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) | | |
[![](elephant.png){fig-alt="替代文本"}](https://quarto.org)
一只大象的线条画。

列表

Markdown 语法 输出
* 无序列表
    + 子项 1
    + 子项 2
        - 子子项 1
  • 无序列表
    • 子项 1
    • 子项 2
      • 子子项 1
*   项目 2

    继续(缩进 4 个空格)
  • 项目 2

    继续(缩进 4 个空格)

1. 有序列表
2. 项目2
    i) 子项目1
         A.  子子项目1
  1. 有序列表
  2. 项目2
    1. 子项目1 A. 子子项目1
- [ ] 任务1
- [x] 任务2
(@)  一个编号在被打断后继续的列表

继续后

(@)  被打断
  1. 一个编号在被打断后继续的列表

继续后 |

  1. 被打断 |
::: {}
1. 一个列表
:::

::: {}
1. 接着另一个列表
:::
  1. 一个列表
  1. 接着另一个列表
术语
: 定义
术语
定义

注意,与其他Markdown渲染器(特别是Jupyter和GitHub)不同,Quarto中的列表要求在列表上方有一个完整的空行。否则,列表不会以列表形式渲染,而是会全部显示为一行普通文本。

脚注

Pandoc支持使用以下语法对脚注进行编号和格式化:

这里是一个脚注引用,[^1] 还有另一个。[^longnote]

[^1]: 这里是脚注。

[^longnote]: 这里有一个包含多个块的脚注。

    后续段落缩进以显示它们属于前一个脚注。

        { some.code }

    整个段落可以缩进,或者只缩进第一行。这样,多段落脚注的工作方式就像多段落列表项一样。

这个段落不会成为脚注的一部分,因为它没有缩进。

上述语法生成以下输出:

这里是一个脚注引用,1 还有另一个。2

这个段落不会成为脚注的一部分,因为它没有缩进。

此外,您还可以使用以下语法编写单段落内联脚注:

这里是一个内联脚注。^[内联脚注更容易编写,因为您不必选择标识符并向下移动到键入脚注。]

此语法生成以下输出:

这里是一个内联脚注。3

从上述示例生成的脚注包含在页面底部的示例脚注部分中。有关更多信息,请参见Pandoc脚注

表格

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)
这段文字是红色的。
```

你也可以包含内联原始内容:

 这里是一些内联原始 HTML: `<a>html</a>`{=html}

方程

使用 $ 分隔符表示内联数学公式,使用 $$ 分隔符表示显示数学公式。例如:

Markdown 语法 | 输出 |
markdown | 内联数学公式: $E = mc^{2}$ | 内联数学公式: $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 原生支持嵌入 MermaidGraphviz 图表。这使你可以使用受 markdown 启发的纯文本语法创建流程图、序列图、状态图、甘特图等。

例如,这里我们嵌入了一个使用 Mermaid 创建的流程图:

```{mermaid}
flowchart LR
  A[硬边缘] --> B(圆角边缘)
  B --> C{决策}
  C --> D[结果一]
  C --> E[结果二]
```

flowchart LR
  A[硬边缘] --> B(圆角边缘)
  B --> C{决策}
  C --> D[结果一]
  C --> E[结果二]

图表 的文章中了解更多信息。

视频

你可以使用 {{< 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

请注意,有五种提示块类型,包括 notetipwarningcautionimportant

提示块 的文章中了解更多信息。

其他块

Markdown 语法 输出
> 引用块

引用块

::: {.classname}
Div
:::

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-P。要打开现有项目,请按

示例脚注

  1. 这里是脚注。↩︎

  2. 这里有一个包含多个块的脚注。

    后续段落缩进以显示它们属于前一个脚注。

    { some.code }

    整个段落可以缩进,或者只缩进第一行。这样,多段落脚注的工作方式就像多段落列表项一样。↩︎

  3. 内联脚注更容易编写,因为您不必选择标识符并向下移动到键入脚注。↩︎