Quarto标题在Typst渲染中层级上移,如何实现层级对应?
解决Quarto与Typst模板标题层级不匹配的问题
问题原因
Quarto 默认会将文档 YAML 头部的 title 字段渲染为 Typst 的 level 1 标题,文档内用 #~#### 定义的标题会自动顺延为 Typst 的 level 2~level 5,最终导致所有标题层级整体上移一级,出现样式错位。
解决方案
方案1:禁用YAML标题作为Typst层级标题
在 Quarto 配置文件(_quarto.yml 或文档内的 YAML 块)中添加 title-as-heading: false,YAML 中的标题会作为独立文档标题,而非 Typst 的层级标题,文档内的 #~#### 会直接对应 Typst 的 level 1~level 4:
format: typst: template: typst-template.typ title-as-heading: false
方案2:调整Typst模板的样式层级
如果需要保留 YAML 标题作为 Typst 的 level 1,将模板中所有标题样式的 level 值整体加1即可。比如原本给 level 3 标题设置下划线的代码:
#show heading.where(level: 3): it => underline(it)
修改为:
#show heading.where(level: 4): it => underline(it)
这样 Quarto 文档中的 ###(对应 Typst 的 level 4)就会应用下划线样式,和预期对应。
方案3:自定义标题层级偏移量
通过设置 heading-level-offset 参数调整层级映射,让 Quarto 的标题层级直接对应 Typst 的层级:
format: typst: template: typst-template.typ heading-level-offset: 0
该参数会覆盖默认的层级偏移,使 Quarto 的 # 直接对应 Typst 的 level 1,无需修改模板样式。
内容的提问来源于stack exchange,提问作者Honestiore
相关产品推荐
相关产品推荐

