交叉引用 Div 语法

人工智能与机器学习

概述

人工智能(AI)和机器学习(ML)是当今科技领域最热门的话题之一。AI是指计算机系统能够执行通常需要人类智能的任务,如视觉识别、语音识别和决策制定。ML是AI的一个子集,专注于开发能够从数据中学习的算法。

关键技术

深度学习

深度学习是ML的一个分支,使用多层神经网络来处理复杂的数据模式。它在图像和语音识别方面取得了显著的成果。

强化学习

强化学习是一种通过试错来学习的ML方法。它通常用于游戏和机器人控制等领域。

应用领域

医疗保健

AI和ML在医疗诊断、药物发现和个性化治疗方面有广泛应用。

金融

在金融领域,AI用于风险管理、欺诈检测和算法交易。

挑战

数据隐私

随着AI和ML的发展,数据隐私成为一个重要问题。如何在不侵犯个人隐私的情况下利用数据是一个挑战。

伦理问题

AI系统的决策过程可能不透明,这引发了关于伦理和责任的讨论。

未来展望

AI和ML的未来充满希望,但也伴随着挑战。随着技术的进步,我们期待看到更多创新的应用和解决方案。

概览

可交叉引用的图表表格代码列表被称为浮动交叉引用。浮动元素可以出现在渲染文档中的其他位置,而不是它们定义的地方,即它们是浮动的,并且通常带有标题。

除了最常见的交叉引用紧凑语法外,Quarto 还提供了一种更通用的 div 语法来声明可以交叉引用的浮动元素。要声明一个可交叉引用的浮动元素,请将内容放在带有引用标识符属性的围栏 div 中。围栏 div 中的最后一个段落将被视为标题。例如:

::: {#fig-example}

内容

标题

:::

要被识别为交叉引用,标识符必须以内置的浮动引用类型之一开头(图表 (fig-)、表格 (tbl-) 和列表 (lst-)),或者被定义为自定义浮动交叉引用类型。

然后,您可以像往常一样使用 @ 语法引用该元素,例如:

@fig-example 展示了...

内容可以是任何 Quarto Markdown。例如,Figure 1 是一个被视为图表的 Markdown 表格:

::: {#fig-table}

| A | B |
|---|---|
| C | D |

一个被视为图表的表格

:::
A B
C D
Figure 1: 一个被视为图表的表格

Table 1 是一个被视为表格的图像:

::: {#tbl-table}

![](table.png)

一个被视为表格的图像

:::
Table 1: 一个被视为表格的图像

Figure 2 是一个被视为图表的代码单元格:

::: {#fig-code}

```r
library(tidyverse)
starwars |> 
  ggplot(aes(height, mass)) + 
  geom_point()
```

一个被视为图表的代码单元格。

:::
library(tidyverse)
starwars |> 
  ggplot(aes(height, mass)) + 
  geom_point()
Figure 2: 一个被视为图表的代码单元格。

在本页中,我们展示了一些常见用例,包括图表表格代码列表,然后是一些使用 div 语法的应用:

图表

要使用div语法创建指向图表的交叉引用,请创建一个以fig-开头的id的围栏div,并在div内包含图像和标题:

::: {#fig-elephant}

![](elephant.png)

一头大象
:::

您可以通过将代码单元格作为内容包含进来,交叉引用由可执行代码单元格创建的图表:

::: {#fig-line-plot}

```{python}
import matplotlib.pyplot as plt
plt.plot([1,23,2,4])
plt.show()
```

一条折线图
:::

在上面的例子中,您可以使用 @fig-line-plot 引用图表,但不能引用代码,代码会内联显示。如果您还希望引用代码,可以通过代码块选项而不是 div 语法来实现,详细信息请参见可执行代码块的交叉引用

表格

要使用div语法创建指向表格的交叉引用,请创建一个带有以tbl-开头的id的围栏div,并在div内包含表格及其标题:

::: {#tbl-letters}

| Col1 | Col2 | Col3 |
|------|------|------|
| A    | B    | C    |
| E    | F    | G    |
| A    | G    | G    |

我的标题

::: 

如果表格是由可执行代码单元格生成的,请将单元格放在 div 中作为内容,例如:

::: {#tbl-planets}

```{python}
from IPython.display import Markdown
from tabulate import tabulate
table = [["Sun","696,000",1.989e30],
         ["Earth","6,371",5.972e24],
         ["Moon","1,737",7.34e22],
         ["Mars","3,390",6.39e23]]
Markdown(tabulate(
  table, 
  headers=["Astronomical object","R (km)", "mass (kg)"]
))
```

天文对象

:::

在上面的例子中,您可以使用 @tbl-planets 引用表格,但不能引用代码,代码会内联显示。如果您还希望引用代码,可以通过代码块选项而不是 div 语法来实现,详细信息请参见可执行代码块的交叉引用

列表

要使用 div 语法创建指向代码列表的交叉引用,请创建一个带有以 lst- 开头的 id 的 fenced div,在 div 内包含代码单元格,后跟标题:

::: {#lst-customers}

```{.sql}
SELECT * FROM Customers
```

Customers Query

:::

这也适用于不产生输出的可执行代码单元格:

::: {#lst-assign}

```{r}
x <- 1
```

R 中的赋值

:::

然而,如果产生了任何输出,假定输出应该是交叉引用的内容,代码会被提取并内联放置。例如,这里的代码单元格产生了输出:

::: {#lst-assign-output}

```{r}
x <- 1
x
```

R 中的赋值

:::

@lst-assign-output

渲染时,上述结果会使输出成为列表的内容,代码出现在列表之前:

列表交叉引用截图。一个代码单元格首先出现,后面是包含代码输出的列表1。

如果您需要引用代码及其输出,请结合使用显示块和带有代码单元格选项 echo: false 的代码块:

::: {#lst-assign-both}

```r
x <- 1
x
```{r}
#| echo: false
x <- 1
x
```

R 中的赋值

:::


当输出是图表或表格时,您可以通过使用代码单元选项来分别引用代码和输出,而不是使用 div 语法,如[可执行代码块的交叉引用](cross-references.qmd#code-listings)中所述。


## 图表

要使用 div 语法创建指向图表的交叉引用,可以将其视为一个图形。例如,@fig-simple 是通过以下方式创建的:

````markdown
::: {#fig-simple}

```{dot}
graph {
  A -- B
}
```

这是一个简单的 graphviz 图表
:::

A A B B A--B

Figure 3: 这是一个简单的 graphviz 图表

如果你更倾向于为图表分配一个与图形不同的标签和计数器,可以考虑定义 自定义交叉引用类型

视频

要为视频添加交叉引用,请使用交叉引用 div 语法,并将其视为一个图形。例如:

::: {#fig-cern}

{{< video https://www.youtube.com/embed/wo9vZccmqwc >}}

视频 "CERN: The Journey of Discovery"

:::

在 @fig-cern...

渲染效果如下:

截图显示了一个 YouTube 视频,紧接着是标题 '图 1: 视频 CERN: The Journey of Discovery'。标题下方是文本 '在图 1 ...'。

如果你希望为视频分配一个不同于图形的标签和计数器,请考虑定义自定义交叉引用类型

子引用

Note

当您的子内容全部是图表或全部是表格时,有简化的语法,详情请参阅交叉引用页面的子图子表

交叉引用 div 可以嵌套以创建带有子引用的元素。例如,这里的最外层 div 定义了 fig-subrefs 引用及其主标题,而内部的 div 分别定义了 fig-firstfig-second 及其各自的标题:

:::: {#fig-subrefs}

::: {#fig-first}

内容 1

第一个标题
:::

::: {#fig-second}

内容 2

第二个标题
:::

主标题
::::

这将呈现为:

内容 1

(a) 第一个标题

内容 2

(b) 第二个标题
Figure 4: 主标题

主元素和子元素都可以在文本中直接引用,例如:

@fig-subrefs, @fig-first, @fig-second

这将呈现为:Figure 4, Figure 4 (a), Figure 4 (b)

结合布局属性,您可以创建混合内容的复杂布局,每个元素都可以被引用。例如:

:::: {#fig-complex layout="[[1, 1], [1]]"}

::: {#fig-elephant}

![](images/elephant.jpg)

一张图片文件
:::

::: {#fig-scatterplot}

```{r}
#| echo: false
plot(1:10)
```

一个计算图表
:::

::: {#fig-diagram}

```{dot}
//| fig-height: 2
digraph {
  rankdir = "LR";
  Transform -> Visualize
}
```

一个图表
:::

结合不同类型内容的示例图表
::::

这将呈现为:

一个包含两行的图表布局截图。上排有两列:左边是一张大象在日落背景下剪影的图片,标题为(a)一张图片文件;右边是一个散点图,标题为(b)一个计算图表。下排是一个流程图,节点 Transform 连接到节点 Visualize,标题为(c)一个图表。布局下方是标题:图 1:结合不同类型内容的示例图表。

计算标题

如果您想在标题中包含计算值,请使用交叉引用 div 语法,并结合内联代码表达式。例如:

::: {#fig-box}

```{python}
#| echo: false
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 10]
p = plt.boxplot(x)
plt.show()
```

该数据集有 `{python} len(x)` 个观测值。

:::
::: {#fig-box}

```{r}
#| echo: false


x <- c(1, 2, 3, 4, 5, 10)
boxplot(x)

```

该数据集有 `{r} length(x)` 个观测值。

:::

条件内容

结合交叉引用 div 语法和条件内容,可以使您的引用内容根据格式变化。例如,您可能希望在 HTML 格式下生成基于 JavaScript 的交互式图表,否则生成静态图表:


::: {#fig-scatterplot}  
  
:::: {.content-visible when-format="html"}

```{r}
# 生成基于 JavaScript 图表的代码
```
::::

:::: {.content-visible unless-format="html"}

```{r}
# 生成静态图表的代码
```
::::

散点图

:::

@fig-scatterplot