Quarto笔记
Quarto notes
简洁而不僵化,精致而不复杂。
1 文本格式
HTML标签 | Markdown语法 | 效果 |
---|---|---|
<b>Bold<b> |
~Bold~ |
Bold |
<strong>Important<strong> |
**Important** |
Important |
<i>Italic<i> |
*Italic* |
Italic |
<em>Emphasized<em> |
*Emphasized* |
Emphasize |
<del>Deleted<del> |
~~Deleted~~ |
|
H<sub>2<sub>O |
H~2~O |
H2O |
s<sup>2<sup> |
s^2^ |
s2 |
<ins>Inserted<ins> |
[Inserted]{.underline} |
Inserted |
<mark>Marked<mark> |
[Marked]{.mark} |
Marked |
<small>Smaller<small> |
无 | Smaller |
2 等宽字体
使用bootstrap内置的类.font-monospace
。
效果:
iiiii
MMMMM
iiiii
MMMMM
3 超链接格式
3.1 去掉下划线
使用bootstrap内置的类
.text-decoration-none
[PSYCH.PUB](https://www.psych.pub){.text-decoration-none}
使用HTML style
[PSYCH.PUB](https://www.psych.pub){style="text-decoration:none;"}
效果:PSYCH.PUB
3.2 重置颜色
使用bootstrap内置的类.text-reset
,[PSYCH.PUB](https://www.psych.pub){.text-reset}
的效果:PSYCH.PUB
4 修改导航、页脚、侧边导航的颜色
当同时使用明、暗主题时,通过background
设置的颜色会同时应用于明、暗主题,这会导致不和谐的搭配。最好的方法是不要修改background
,次之则是通过scss文件为明、暗两种主题分别设置颜色,可参考文档。
5 用text
替代 icon
Quarto在导航栏(导航与工具)、页脚、about页可以使用icon。Quarto默认使用bootstrap图标,也可以使用Quarto的拓展,例如:fontawesome,quarto-iconify。
但既有的icon的种类是有限的,如果既有的icon集中没有自己需要的icon,可以在- text:
参数中使用外链图片(注意:要使用完整路径),从而达到与- icon:
类似的效果,例如:
website:
navbar:
right:
- text: '![](https://api.iconify.design/academicons/researchgate.svg){height=20px}'
href: https://www.researchgate.net/
注意:
- 如果
href
链接到站内qmd
文档,该导航项(nav item)的text
将自动取用qmd
文档的title
,若在呈现图标的同时不想在图标旁边呈现text
,可以外链形式(https://
)指定href
。 - 对导航栏的工具(tools)而言,其
text
参数指定的文本将在鼠标悬停时呈现,不会出现在icon旁。 - 须关闭lightbox,否则图片超链接可能无效。
6 颜色
使用Div或Span,充分利用HTML的功能。使用Div时,:::
不可缩进,即,其左侧不可有空格。
6.1 使用bootstrap主题内置的类
不同版本的bootstrap所内置的类不同,有些与Quarto不兼容。从_site/site_libs/bootstrap/bootstrap.min.css
可以查Quarto使用的bootswatch版本,从https://getbootstrap.com/docs/
可以查bootstrap相应版本内置的类。
可使用bootstrap主题内置的关于颜色或背景的类:
字体色
.text-primary
.text-secondary
.text-success
.text-info
.text-warning
.text-danger
.text-light
.text-dark
.text-body
.text-white
.text-muted
背景色
.bg-primary
.bg-secondary
.bg-success
.bg-info
.bg-warning
.bg-danger
.bg-light
.bg-dark
.bg-body
.bg-white
.bg-transparent
字体背景色
.text-bg-primary
.text-bg-secondary
.text-bg-success
.text-bg-info
.text-bg-warning
.text-bg-danger
.text-bg-light
.text-bg-dark
.text-bg-body
.text-bg-white
.text-bg-transparent
背景渐变色
.bg-primary .bg-gradient
.bg-secondary .bg-gradient
.bg-success .bg-gradient
.bg-info .bg-gradient
.bg-warning .bg-gradient
.bg-danger .bg-gradient
.bg-light .bg-gradient
.bg-dark .bg-gradient
字体背景透明度
.opacity-100
.opacity-75
.opacity-50
.opacity-25
.opacity-0
style=“opacity: .25;”
style=“opacity: .5;”
style=“opacity: .75;”
style=“opacity: 1;”
背景透明度 .bg-opacity-100
.bg-opacity-75
.bg-opacity-50
.bg-opacity-25
style=“--bs-bg-opacity: 0;”
style=“--bs-bg-opacity: .25;”
style=“--bs-bg-opacity: .5;”
style=“--bs-bg-opacity: .75;”
style=“--bs-bg-opacity: 1;”
字体透明度
.text-opacity-100
.text-opacity-75
.text-opacity-50
.text-opacity-25
style=“--bs-text-opacity: 0;”
style=“--bs-text-opacity: .25;”
style=“--bs-text-opacity: .5;”
style=“--bs-text-opacity: .75;”
style=“--bs-text-opacity: 1;”
与opacity
相比,--bs-text-opacity
与--bs-bg-opacity
可单独控制字体与背景色的透明度。
6.2 使用style
例如:[使用style]{style="color:#A7535A;"}
6.3 使用styles.css
在styles.css中定义的类可以复用。
可以在yml文件中设置全局调用css,也可以在qmd文档YAML中单独调用某个css。
我在styles.css中定义了.jinzhanhuang
来表示金盏黄,然后:[使用styles.css]{.jinzhanhuang}
。
注意:在qmd中单独调用css时有bug。Quarto默认会把根路径重写为相对路径,但::after
伪类的content:url()
不能正确重写。须使用相对路径,即父级路径`url(../)
,这样一来就避免了重写,也避免了出错。
6.4 使用knitr的css code chunk
要使用该方法,YAML中必须指定engine: knitr
,因为qmd默认不执行css code。
尝试在文档中写入下方code chunk:
```{css}
#| echo: TRUE
p {
color:skyblue;
}
```
该方法创建的类可以在本文档使用。
```{css}
#| echo: TRUE
.sky {
color:skyblue;
}
```
[天色]{.sky}
效果:天色。
7 类名不需要加.
如果不用大括号,类名不需要加.
,如果在大括号内,类名需要加.
,下面两种写法效果一样
8 在标题中使用类
某些类可以应用在标题中,以对该标题对应的div施加效果。例如:
9 调用bootstrap根变量
bootstrap提供的根变量见https://getbootstrap.com/docs/5.2/customize/css-variables/,注意匹配bootstrap的版本。
9.1 在style中调用--bs-blue
例如:[在style中调用`--bs-blue`]{style="color:var(--bs-blue);"}
9.2 在styles.css中调用--bs-dark
10 隐藏文本内容
使用bootstrap内置的.hidden。
使用bootstrap内置的 .visible 或 .invisible。
在
style.css
中自定义一个叫.touming
的类。使用bootstrap内置的
.opacity-0
。
:::{.bg-warning .w-25}
醉[梦]{.hidden}发于真性,
醒狂[或]{.invisible}者矫情。
左相饮[如]{.touming}川吸,
龙图笑比[河]{.opacity-0}清。
:::
效果:
醉梦发于真性,
醒狂或者矫情。
左相饮如川吸,
龙图笑比河清。
寻找彩蛋:用鼠标选中上面的四句诗。
11 文件路径
- 当使用
[]()
或![]()
时,须使用根路径。相对路径从当前目录找文件,可能会出错。 - 在
yml
文件navbar
或page-footer
中链接文件时一般使用相对路径,使用绝对路径可能会报错。 - 注意观察报错信息,可使用https://www.brokenlinkcheck.com/检查坏链,之后调整使用相对路径或绝对路径。
12 图片
12.1 图片大小
根据Google Search的建议使用webp格式的图片,可使用GIMP转换。
12.2 为图片设置多个属性或参数
()
内没有title=
,多个属性用空格分隔,=
两侧不能有空格。
![caption](images/home.jpg "title"){fig-alt="alt" width=50% fig-align="center"}
12.3 图片的lightbox效果
yml文件中的全局lightbox: false
会覆盖单个图片的.lightbox
设置,故不要使用全局lightbox
参数。
13 使用动态时间
在yml文件中设置如下,一劳永逸输入时间:
14 规避版权问题
仅使用自己的图文。
16 避免网页上中英混用
在_quarto.yml
的format后面的html后面指定lang: zh
17 在页脚添加多行信息
在_quarto.yml
文件中添加以下代码。center:
后面输入|
(center:
与|
之间需要有空格),表示后续有多行文本。后续多行须缩进。第一行后用两个空格表示换行不换段。
18 在混合导航父级导航中指定页面
父级导航中指定的页面tools/index.qmd
必须隶属于侧边导航tools
,不论是用文件夹自动实现,还是用-
手动指定。否则,父级导航指定的页面实际上不隶属于侧边导航,侧边导航不会显示。
19 使用列表页
如果一个文件夹包含子文件夹,不要使用列表页(listing page),否则一个列表包含多个文件夹的文档,且顺序是乱的。只在最低一级文件夹使用列表页,这样列表不会乱。
当文件夹内无文档时,Quarto可能报错。
20 写人物简历
使用about
页面及其模板。about
使用的图片须与qmd
文件位于同一级目录(同一个文件夹)。about
页面有bug:须关闭sidebar
与toc
,否则左右页面导航出现在页面顶端。
22 Quarto中的类
22.1 各种
- .panel-tabset
- .aside
- .lightbox,.no-lightbox
- .content-visible, when-format=“html”,用于PPT标题
- .content-hidden, unless-format=“pdf”,用于PPT标题
- .notes,用于ppt
- .footer,用于ppt
- .unnumbered
- .unlisted, 须配合.unnumbered使用
- .smaller,用于ppt标题
- .scrollable,用于ppt标题
- .incremental,用于ppt标题
- .nonincremental,用于ppt标题
22.2 callout
- .callout-tip
- .callout-note
- .callout-caution
- .callout-warning
- .callout-important
效果:
内容
22.3 多列
:::: {.columns}
::: {.column width="40%" .bg-info}
contents...
:::
::: {.column width="60%" .bg-warning}
contents...
:::
::::
效果:
contents…
contents…
当同时使用style与width时,style
中的width:50%
会覆盖{}
中的width=30%
参数。
可用.d-flex
与div
达到类似效果:
效果:
contents…
contents…
22.4 边框
22.4.1 边框加法
- .border
- .border-top
- .border-end
- .border-bottom
- .border-start
22.4.2 边框减法
- .border .border-0
- .border .border-top-0
- .border .border-end-0
- .border .border-end-0
- .border .border-start-0
22.4.3 边框颜色
- .border .border-primary
- .border .border-secondary
- .border .border-success
- .border .border-danger
- .border .border-warning
- .border .border-info
- .border .border-light
- .border .border-dark
- .border .border-white
22.4.4 边框透明色
- .border .border-primary .border-opacity-50
- .border .border-primary style=“–bs-border-opacity: 1;”
- .border .border-primary style=“–bs-border-opacity: .9;”
- .border .border-primary style=“–bs-border-opacity: .8;”
- .border .border-primary style=“–bs-border-opacity: .7;”
- .border .border-primary style=“–bs-border-opacity: .6;”
- .border .border-primary style=“–bs-border-opacity: .5;”
- .border .border-primary style=“–bs-border-opacity: .4;”
- .border .border-primary style=“–bs-border-opacity: .3;”
- .border .border-primary style=“–bs-border-opacity: .2;”
- .border .border-primary style=“–bs-border-opacity: .1;”
- .border .border-primary style=“–bs-border-opacity: 0;”
22.4.5 边框圆角
.border .border-primary .rounded
.border .border-primary .rounded-top
.border .border-primary .rounded-bottom
.border .border-primary .rounded-start
.border .border-primary .rounded-circle
.border .border-primary .rounded-pill
22.4.6 圆角大小
.border .border-primary .rounded-0
.border .border-primary .rounded-1
.border .border-primary .rounded-2
.border .border-primary .rounded-3
.border .border-primary .rounded-4
.border .border-primary .rounded-5
22.5 表格
- 条纹:.striped
- 鼠标悬停:.hover
- 小字体:.sm
- 条纹颜色,须配合.striped使用:.primary, .secondary, .success, .danger, .warning, .info, .light, .dark, .active
- 边框:.bordered, .borderless
- 自适应:.responsive, .responsive-sm, .responsive-md, .responsive-lg, .responsive-xl, .responsive-xxl
- 列宽(没有
.
):tbl-colwidths
示例:
Fruit|Price
|-|-|
apple | 2.05
pear | 1.37
orange | 3.09
: Fruit prices {.striped .primary .hover .sm tbl-colwidths="[25,75]"}
效果:
Fruit | Price |
---|---|
apple | 2.05 |
pear | 1.37 |
orange | 3.09 |
22.6 页面宽度
.column-margin
.column-body
.column-body-outset-left
.column-page-inset-left
.column-page-left
.column-screen-inset-left
.column-screen-left
.column-body-outset-right
.column-page-inset-right
.column-page-right
.column-screen-inset-right
.column-screen-right
.column-body-outset
.column-page
.column-screen-inset
.column-screen
.column-screen-inset-shaded
23 bootstrap内置的类
23.1 .d-flex
与.d-inline-flex
.d-flex
这个类使div
更灵活。例如:.d-flex
可以使用.flex-row
(内容横向排列)与.flex-column
(内容将纵向排列)调整其内容的排列方向。.flex-row``.d-flex
的默认设置。是div
中的内容为纵向排列。
:::: {.d-flex .bg-light .flex-row}
:::{.d-flex .bg-primary}
.d-flex 1
:::
:::{.d-flex .bg-secondary}
.d-flex 2
:::
:::{.d-flex .bg-info}
.d-flex 3
:::
::::
效果:
.d-flex 1
.d-flex 2
.d-flex 3
.d-flex
宽度默认为整行宽度。.d-inline-flex
宽度默认为文本宽度。
效果:
.d-flex
.d-inline-flex
.d-inline-flex
的宽与高可以修改。
:::{.d-inline-flex .align-items-center .justify-content-center .bg-dark style="width:200px;height:100px;"}
.d-inline-flex
:::
效果:
.d-inline-flex
23.2 Align
.align-items-start
.align-items-end
.align-items-center
.align-items-baseline
.align-items-stretch
::::{.d-flex style="background:lightgray;height:200px" .align-items-end}
:::{.d-flex style="width:50px;height:50px;background:wheat;"}
:::
:::{.d-flex style="width:100px;height:100px;background:indigo;"}
:::
:::{.d-flex style="width:150px;height:150px;background:tomato;"}
:::
::::
效果:
23.3 Justify
居中.justify-content-center
:::: {.d-flex .border .justify-content-center}
:::{.d-flex .bg-primary}
justify-content-center
:::
:::{.d-flex .bg-secondary}
justify-content-center
:::
:::{.d-flex .bg-success}
justify-content-center
:::
::::
justify-content-center
justify-content-center
justify-content-center
.justify-content-start
justify-content-start
justify-content-start
justify-content-start
.justify-content-end
justify-content-end
justify-content-end
justify-content-end
.justify-content-between
justify-content-between
justify-content-between
justify-content-between
.justify-content-around
justify-content-around
justify-content-around
justify-content-around
.justify-content-evenly
justify-content-evenly
justify-content-evenly
justify-content-evenly
.flex-fill
作为flex的内容会撑满整行:
.flex-fill
.flex-fill
.flex-fill
23.4 宽与高
.w
是相对宽度,适用于.d-inline-flex
与被嵌套的div
、.d-flex
,不适用于span
(宽度固定为文本宽度)。:
.w-auto .d-inline-flex
.w-50 .d-inline-flex
.w-75 .d-inline-flex
.w-100 .d-inline-flex
.h
是相对高度,适用于被嵌套的div
、.d-flex
、.d-inline-flex
,不适用于span
(高度固定为行高)。
.h-25 .w-50
.h-50 .w-50
.h-75 .w-50
.h-100 .w-50
23.5 阴影
.shadow-sm .shadow .shadow-lg
23.6 外边距与内边距
23.6.1 外边距Margin
default
.m-auto
.m-1
default
.m-2
.m-3
default
.m-4
.m-5
23.6.2 内边距Padding
default
.p-auto
.p-1
default
.p-2
.p-3
default
.p-4
.p-5
注意:.m
与.p
不适用于span
(其高是固定的)。
23.7 字体大小
.fs-1 .fs-2 .fs-3 .fs-4 .fs-5 .fs-6
23.8 Div文本靠左、居中、靠右
.text-start
.text-center
.text-end
注意:.d-flex
与.d-inline-flex
须使用align与justify。