```{mermaid}
flowchart LR
A[Hard edge] --> B(Round edge)
B --> C{Decision}
C --> D[Result one]
C --> E[Result two]
```
如何使用quarto写作
使用Quarto写作,即是将文字与代码嵌套在一起进行写作,最终交由Quarto自动调整文章格式和执行文档中的代码。Quarto语言可以看成Markdown语言的拓展版。Markdown是一个轻量的文本标注语言,用简单、少量的符号对文字标注,这些标注语言穿插在普通文本之中。带有markdown语言标注的文档在文本处理引擎Pandoc的处理下,自动生成具有特定样式的文章。Markdown语言使作者专注文本内容本身,不必过多考虑文本样式。Quarto不仅包括基本的markdown语言,还整合了Rmarkdown的功能,将R代码及其结果放在普通文本之中。让文本写作、代码写作与运行、分享结果无缝地整合在一起,减少了文本、代码与代码结果之间拼接的成本,极大地提高了写作效率。
接下来让我们通过一个简单示例展示使用Quarto写作的基本流程和基本要素,而后具体展示文档写作各个要素的语法结构。需要说明的是,这里介绍的是使用Quarto写作最为必要和最为简单的部分,它让我们可以快速上手使用Quarto,但Quarto的功能远不及如此,Quarto的更多功能请参见quarto官方网站,网站提供了详尽、明晰的说明文档,易于理解、便于上手,本文部分内容则是直接翻译官网帮助文档的部分内容,在此致谢。
一个简单的示例
以下展示的是一个简单Quarto文档以及其运行之后的结果。首先,我们看Quarto文档的内容,分为两部分,第一部分是由两组”---“包围的部分。这部分叫YAML表头,是一种文本标记语言,基本构成形式为name: value。以此控制文章整体属性,比如title: "空气质量与臭氧"
,是给文章命名。如果一个命令之下还有次级命令,前一组的值新起一行,缩进后加冒号,再起一行,输入新的设置。例子中的format: html
是一个命令,设定本文档生成的结果是一个网页(Quarto还可以生成word文档format: docs
, 生成ppt文档format: pptx
,更多文档类型请参见quarto官方说明)。code-fold: true
,是指在文档是网页的情况下,如果文章里出现代码,收缩显示。YAML部分不会显示在生成的文档之中。
Quarto文档的第二部分即是正文部分,也可以分为两个部分,常规的文字部分,比如下文的## 与```之间的部分。除了文字之外,其中##是一个markdown语言,用来控制文字格式,##是将后面的文字设置第二级标题。@fig-airquality是对下面代码生成的图形自动编序号。两组```之间的文字是R code,示例中的R code是生成一个散点图。除了常规R code之外,还有几组#| 之后显示的内容,这些内容也以name: value形式出现,这些组合是控制代码如何执行的,label:fig-airquality
,是给这段代码命名。fig-cap:空气质量与臭氧关系图
是给R code生成的图形命名。warning: false
是抑制code执行过程中显示warning信息。以上是对使用Quarto写作文档的初步介绍。输出结果部分则是上述quarto文档经render之后的结果。下文将分项目依次介绍Quarto语法,涉及文字格式、标题、超链接、列表、表格、引用、尾注等。
Quarto文档
---
title: "空气质量与臭氧"
author: "xiaomaoaho"
date: "10/22/2022"
format:
html:
code-fold: true
---
## 引言
在高温、天气晴朗、日照强的气象条件下,容易生成臭氧污染,这是今年空气质量反弹的一个重要原因。@fig-airquality 表示空气质量对臭氧的影响.
```{r}
#| label: fig-airquality
#| fig-cap: 空气质量与臭氧关系图.
#| warning: false
library(ggplot2)
ggplot(airquality, aes(Temp, Ozone)) +
geom_point() +
geom_smooth(method = "loess")
```
输入结果
快速新建Quarto文档
在Rstudio中使用Quarto,前期需要对环境进行一些配置,具体参见官方说明(请安装Quarto CLI v.1.2.0以上版本),配置之后,点击Rstudio左上角新建文档按钮(绿底白色十字),选择Quarto Document,进行如下设置。
文本markdown
文本的样式用以符号来标注,左边是Quarto语言,右边是输出结果。
Markdown Syntax | Output |
---|---|
|
斜体 和 加粗 |
|
superscript2 / subscript2 |
|
|
|
verbatim code |
标题
#用来设置标题,左边是Quarto语言,右边是输出结果。
Markdown Syntax | Output |
---|---|
|
标题 1 |
|
标题 2 |
|
标题 3 |
|
标题 4 |
|
标题 5 |
|
标题 6 |
超链接 & 图片
插入超链接的方法是使用单书名号,或者方括号带文字圆括号包括网址。插入图片是在方括号前加!号,圆括号内输入图片本地路径或者url.
Markdown Syntax | Output |
---|---|
|
https://quarto.org |
|
Quarto |
|
|
|
列表
无序列表使用*, +, -。有序列使用1.。
Markdown Syntax | Output |
---|---|
|
|
|
|
|
|
表格
Markdown使用符号直接输入表格,但现实情况下,很少以下列方式输入表格,多数是通过其它方式导入表格,下述方法了解即可。
Quarto语句
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
输出结果
Right | Left | Default | Center |
---|---|---|---|
12 | 12 | 12 | 12 |
123 | 123 | 123 | 123 |
1 | 1 | 1 | 1 |
数学公式
使用 $
包围文本之中的公式 , $$
显示独立行的公式,公式使用latex语法,比如:
Markdown Syntax | Output |
---|---|
|
inline math: \(E=mc^{2}\) |
|
display math: \[E = mc^{2}\] |
示意图
Quarto 支持用 Mermaid 和 Graphviz 书写示意图. Mermaid和Graphviz是绘制示意图的轻量语言,以下即是使用Mermaid语言绘制的示意图,更多内容可前往官网学习。
视频
可以使用 {{< video >}}
在文本中加入其它网站的视频和本地存储的视频,如下所示:
{{< video https://www.youtube.com/embed/wo9vZccmqwc >}} {{< video local-video.mp4 >}}
其它格式
Markdown Syntax | Output |
---|---|
|
|
|
Div |
|
独立成段 空格与新行将 保留 |
引用
Quarto使用Pandoc自动生成符合特定样式的文中引注和文后参考文献,实现这一功能需要三个文件:
插入markdown引注的文档;
参考文献源文件, 比如BibLaTeX (
.bib
) 或者 BibTeX (.bibtex
).参考文献标准,比如标准文件(.csl ),可以通过以下途径获得参考文献的标准文件: CSL Project和 Zotero’s style repository。
参考文献源文件和参考文献标准需要添加在文档表头YAML,示例如下:
---
title: "My Document"
bibliography: references.bib
csl: nature.csl
---
引注添加
Quarto使用标准Pandoc markdown来表示引注(e.g. [@citation]
) ,用方括号添加引注,多个引注,用分号分开。每个引注都用该文献的识别码表示,以@ 开头,如下例所示。
Markdown Format | Output (author-date format) | Output (numerical format) |
---|---|---|
|
Blah Blah (see Knuth 1984, pp. 33-35; also Wickham, Cook, 和 Hofmann 2015, chap. 1) | Blah Blah see [1], pp. 33-35; also [1], chap. 1 |
|
Blah Blah (Knuth 1984, pp. 33-35, 38-39 and passim) | Blah Blah [1], pp. 33-35, 38-39 and passim |
|
Blah Blah (Wickham, Cook, 和 Hofmann 2015; Knuth 1984). | Blah Blah [1, 2]. |
|
Wickham says blah (2015) | Wickham says blah [1] |
也可以将作者名字插在正文中,如下:
Markdown Format | Output (author-date format) | Output (numerical format) |
---|---|---|
|
Knuth (1984) says blah. | [1] says blah. |
|
Knuth (1984, p. 33) says blah. | [1] [p. 33] says blah. |
通常情况,参考文献会自动生成在文档尾部。当然也可以在指定位置投入一div,并标{#refs},这样参考文献会加在指定位置。
### 参考文献
::: {#refs} :::
尾注
Pandoc支持以下方式在文本中插入尾注:
Quarto文档
[^1].
这是一尾注示例[^1]: 这是一个尾注。
输出结果
这是一尾注示例1.
也可以在文中直接写尾注,如下:
Quarto文档
[注释是什么呢?] 这是一个文中注释.^
输出结果
这是一个文中注释.2
代码写作
可以Quarto文档中直接加入R code,并且可以直接运行,生成的运行结果,比如图、表,会自动添加在代码下方。接下来我们展示插入生成图表的代码及其结果:
Quarto文本
```{r}
#| label: fig-airquality
#| fig-cap: Temperature and ozone level.
#| warning: false
#| message: false
plot(pressure)
```
输出结果
plot(pressure)
插入一段生成表格的代码。
Quarto文本
```{r}
#| label: tbl-cars
#| tbl-cap: "Iris"
#| tbl-colwidths: [60,40]
library(knitr)
kable(head(iris))
```
输出结果
library(knitr)
kable(head(iris))
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | setosa |
4.9 | 3.0 | 1.4 | 0.2 | setosa |
4.7 | 3.2 | 1.3 | 0.2 | setosa |
4.6 | 3.1 | 1.5 | 0.2 | setosa |
5.0 | 3.6 | 1.4 | 0.2 | setosa |
5.4 | 3.9 | 1.7 | 0.4 | setosa |
最后的话
以上只是Quarto的基本功能,更多整体控制文档整体特征的设置项,可根据文档类型参看官方文档,HTML文档参看HTML Options,Word文档参看MS Word Options,网页版PPT请参看Revealjs Options,生成网站参看Website Options,生成书籍请参看Book Options。
更多控制R code行为的设置选项,请参看Code Cells: Knitr。
更多内容,请直接浏览quarto官方网站。