1 前言
具体使用方法等参见 sun123zxy/sunquartex。
2 文章结构测试
这一节测试文章结构。
2.1 文章分节
非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长的句子。
文章分分节
Quarto 支持交叉引用。比如这一节的标题就已经被打上了标签。
分分分节
本节中我们测试交叉引用 Section 2.1.1。
分分分分节
这是最小的一级了。
3 图片、表格、列表测试
这是 Quarto 的图标。
交叉引用 Figure 1 当然也是可以的。
这是一个紧凑列表。
- 自反性。
- 反对称性一个和非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长的句子。
- 传递性。
这是一个宽松列表。
-
自反性。
-
反对称性一个和非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长的句子。
还多加了一段。
-
传递性。
当然也可以使用 markdown 表格。例如 Table 1 (a).
顺便测试以下多表格并列。加上 Table 1 (b),它们共同组成了 Table 1。
\(L_i \times C_j\) | \(2\) | \(\mathbb N\) | \(\mathbb R\) |
\(2\) | \(4\) | \(\mathbb N\) | \(\mathbb R\) |
\(\mathbb N\) | \(\mathbb N\) | \(\mathbb N\) | ? |
\(\mathbb R\) | \(\mathbb R\) | ? | \(\mathbb R\) |
\(L_i^{C_j}\) | \(2\) | \(\mathbb N\) | \(\mathbb R\) |
\(2\) | \(4\) | \(\mathbb N\) | \(2^{\mathbb R}\) |
\(\mathbb N\) | \(\mathbb N\) | ? | ? |
\(\mathbb R\) | \(\mathbb R\) | ? | ? |
Table 1: 相关集合的势(不完整版)
4 数学公式、定理系统测试
Quarto 的一大卖点。
这一节我们测试数学相关内容. HTML 中的定理标号方式目前没有方法更改,但 LaTeX 中的定理标号可通过自行修改模板中 amsthm
宏包的定义实现.
此外,根据 Quarto - Markdown Basics # Equations 和 Defining LaTeX commands for HTML and PDF rendering - Discussion #1793,可按如下面方式自定义 macro 并确保其在 HTML 和 LaTeX/PDF 中都得到正确渲染。值得注意的是,由于 \DeclareMathOperator
只能在 LaTeX 的导言区使用,这里我们用 \newcommand
+ \operatorname
的方式替代。
\[
\newcommand{\ran}{\operatorname{ran}}
\]
下面的公式使用了上面定义的 macro。 \[
\ran A := \{ y \mid (x,y) \in A \}
\]
两个集合 \(A, B\) 的笛卡尔积定义为 \[
A \times B = \{\langle x,y \rangle \mid x \in A \land y \in B \}
\]
显然,笛卡尔积不满足交换律和结合律. 在势的视角下,它的表现如何呢?
Theorem 1 (笛卡尔积的保势性) 这是一个有 caption 的定理.
\[
A \preccurlyeq C \land B \preccurlyeq D \implies A \times B \preccurlyeq C \times D
\]
Proof. 建立单射 \[
\begin{aligned}
\varphi: A \times B &\to C \times D \\
\langle x,y \rangle &\mapsto \langle f(x), g(y) \rangle
\end{aligned}
\] 即可,其中 \(f\) 和 \(g\) 是由 \(A \preccurlyeq C\) 和 \(B \preccurlyeq D\) 确定的单射.
Corollary 1 等势意义下可用等势的集合替换参与笛卡尔积运算的集合,即 \[
A \approx C \land B \approx D \implies A \times B \approx C \times D
\]
这是一个没有 caption 的定理.
Example 1 证明 \[
\mathbb R \times \mathbb N \approx \mathbb N \times \mathbb R \approx \mathbb R
\]
Proof. 利用 Theorem 1 对 \(\mathbb R \times 2\) 和 \(\mathbb R \times \mathbb R\) 夹逼,立刻得到 \[
\mathbb R \approx \mathbb R \times 2 \preccurlyeq \mathbb R \times \mathbb N \preccurlyeq \mathbb R \times \mathbb R \approx \mathbb R
\implies \mathbb R \times \mathbb N \approx \mathbb N \times \mathbb R \approx \mathbb R
\]
5 数据可视化
Quarto 的另一大卖点。
Code
import numpy as np
import matplotlib.pyplot as plt
= np.arange(0, 2, 0.01)
r = 2 * np.pi * r
theta = plt.subplots(
fig, ax = {'projection': 'polar'}
subplot_kw
)
ax.plot(theta, r)0.5, 1, 1.5, 2])
ax.set_rticks([True)
ax.grid( plt.show()
交叉引用 Figure 2 当然也是可以的.
另外,支持使用 GraphViz 或 Mermaid 绘制有向图或流程图。
6 HTML 专用测试
目前暂未处理 LaTeX/PDF 格式的代码高亮和 callout,本节测试内容只会在 HTML 输出中被渲染。(参见:Quarto - Conditional Content)
6.1 代码块、引用
本节测试代码块和引用。
这是一个引用块和一个非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长的句子。
Quarto 具有 5 种 callout 类型:note
,warning
,important
,tip
,和 caution
。
下面是代码块。
import numpy as np
import matplotlib.pyplot as plt
= np.arange(0, 2, 0.01)
r = 2 * np.pi * r
theta = plt.subplots(
fig, ax = {'projection': 'polar'}
subplot_kw
)
ax.plot(theta, r)0.5, 1, 1.5, 2])
ax.set_rticks([True)
ax.grid( plt.show()
6.2 Callouts
普通的 note callout。
这是 warning callout 和一个和非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长的句子。
这是两个 callout 中间的一个段落。
这是 important callout。
这是有 caption 的 callout。
开启 collapse 的可折叠 caution callout。
simple 风格的 callout 和一个和非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长的句子。
7 文献引用测试
人脸识别是以人面部特征作为识别个体身份的一种个体生物特征识别方法[1]。……人脸识别的研究最早可追溯到上世纪 60 年代,Bledsoe and Chan 研究了编程计算机识别人脸的方法[2]。随后,萌芽期的人脸识别技术经历多轮蜕变,在发展中逐渐完善。然而,人脸识别的主要难点在于不同个体的人脸结构并无大异,而同一个体的人脸在不同表情、年龄、妆饰、光照等干扰因素下又往往差异显著[3],这要求人脸识别技术既要克服类内因素的干扰,同时又要加强类间差距的显著性,而早期人脸识别方法关注人脸几何特征,识别效果不尽人意。为此,以 Eigenfaces[4] 为代表的子空间学习识别方法和 Gabor[5]、LBP[6] 等局部特征分析的滤波器提取方法在各自领域都有所突破。2014 年,应用新兴的深度卷积神经网络技术,DeepFace[7] 横空出世,以 97.35% 的 LFW 基准数据集识别准确率重塑了人脸识别领域的研究格局。随后,人脸识别技术迎来爆发式增长,并逐渐走进人们的日常生活之中。……个体层面,要加强公众的权利意识,塑造个人的“数字理性”[8]。