You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Typst中show-set规则优先级疑问:bibliography规则为何未生效?

Typst中show规则的优先级逻辑解析

我们需要移除参考文献(bibliography)的首行缩进,在全局段落规则之后添加了针对bibliography的段落样式设置,但全局的show par规则依然优先生效。以下是相关代码示例:

文档代码

#show par: set par(first-line-indent: 1.8em)

#lorem(30)

#lorem(30)

#show bibliography: set par(first-line-indent: 0pt)

#bibliography(
  "literature.bib", 
  title: "References", 
  style: "chicago-author-date",
  full: true
)

参考文献文件(literature.bib)

@article{bruederle2018,
  title = {Nighttime Lights as a Proxy for Human Development at the Local Level},
  author = {Bruederle, Anna and Hodler, Roland},
  date = {2018-09-05},
  journaltitle = {PLOS ONE},
  shortjournal = {PLoS ONE},
  volume = {13},
  number = {9},
  pages = {e0202231},
  doi = {10.1371/journal.pone.0202231}
}

@article{easterly2003,
  title = {Tropics, Germs, and Crops: How Endowments Influence Economic Development},
  shorttitle = {Tropics, Germs, and Crops},
  author = {Easterly, William and Levine, Ross},
  date = {2003-01-01},
  journaltitle = {Journal of Monetary Economics},
  shortjournal = {Journal of Monetary Economics},
  volume = {50},
  number = {1},
  pages = {3--39},
  doi = {10.1016/S0304-3932(02)00200-3},
  keywords = {Economic development,Geography,Institutions}
}

优先级逻辑说明

Typst中show规则的优先级并非由书写顺序决定,而是基于规则的匹配精度与作用层级:

  • 全局的show par: set par(...)是直接匹配所有par元素的规则,属于元素级的全局规则,优先级更高。
  • show bibliography: set par(...)本质是在bibliography容器的上下文中设置段落的默认参数,属于父元素传递的上下文样式,优先级低于直接针对par元素的全局规则。

当渲染参考文献内的段落时,Typst会先应用直接针对par的全局规则,再处理上下文的默认参数,因此全局规则的首行缩进设置会覆盖bibliography上下文的设置。

内容的提问来源于stack exchange,提问作者dufei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:40:06