Typst set 规则与 show 规则完整指南:30 秒选对工具 Typst set 规则与 show 规则完整指南30 秒选对工具【免费下载链接】typstA markup-based typesetting system that is powerful and easy to learn.项目地址: https://gitcode.com/GitHub_Trending/ty/typst上次交付模板我只想居中一个章节标题却在文件顶部顺手写了一条全局样式规则。结果整篇 Typst 文档排版全乱了连页眉页脚都被带偏。问题出在混淆了set 规则和show 规则的分工前者改的是元素的参数值后者换的是元素的渲染模板。把这条边界记住Typst 样式问题的一大半当场消失。 一张表看懂两者分工本节直接给结论什么场景选哪个30 秒扫完。维度set 规则show 规则改动对象元素的属性值元素的整套渲染逻辑工作方式静默写入默认值不产出内容接收原元素返回替代内容典型用途页面尺寸、字号、对齐方式标题自定义、引用重排表达力低只能改已有开关高能拼出全新结构落到具体动作选型看这张决策表场景选哪个一句话理由改页面纸张、边距、字号set 规则现成属性调旋钮即可全文统一段落对齐、行距set 规则一次设置级联生效给一级标题换外观show 规则默认渲染满足不了要换模板不同级别标题用不同样式show 规则需要按条件分支处理把引用、脚注改造成自定义格式show 规则涉及结构重组不是改值set 规则拆解只动旋钮不换模具本节解决set 能干什么、干不了什么的问题。一句话定性set 规则是给元素类型登记默认参数像给设备写配置项写完之后它才照单执行。它的核心行为是作用域内的级联生效写在块内的 set只管块里的内容写在文档顶部的 set管到文件末尾。下面这段代码演示局部覆盖与自动恢复// 全局正文 11pt #set text(size: 11pt) // 仅在本块内关闭两端对齐 #block[ #set par(justify: false) 这段文字不强制对齐 ] 到这里又恢复两端对齐观察点块结束后段落重新两端对齐说明 set 的影响止步于容器边界不会向外泄漏。set 的边界也很清楚它只能调元素本来就有的属性。想加个角标、换套编号体系这种属性表里不存在的东西set 无能为力该交给 show 了。show 规则拆解整个渲染过程推倒重来本节解决show 到底换掉了什么的问题。一句话定性show 规则是一个内容转换函数原元素进、新内容出。默认渲染逻辑只是没写 show 时的后备方案一旦被命中就整体失效。// 只拦截一级标题换成居中 小型大写 #show heading.where(level: 1): it { set text(size: 13pt) align(center, smallcaps(it.body)) }观察点输出一级标题变小大写居中而二级及以下标题保持默认外观——这是靠where 条款过滤出来的没被拦到的元素完全不受影响。where 是 show 的安全带。缺了它规则会命中该类型的每一个元素这是后面要讲的高频坑。 双栏论文样式的完整流程本节用一次学术会议双栏论文排版演示两条规则从头到尾的分工。流程固定为三步先用 set 铺底子再用 show 做定制最后写内容。基础样式全部走 set// 页面与正文基础参数一次配齐 #set page(paper: a4, columns: 2, gutter: 0.8cm, numbering: 1) #set text(size: 10.5pt) #set par(justify: true, leading: 0.8em)观察点双栏、10.5pt 正文、两端对齐全部由属性值决定没有任何渲染逻辑被改动这正是 set 的主场。会议要求一级标题居中并使用小型大写默认渲染给不了引入 show// 仅重做一级标题其余标题走默认 #show heading.where(level: 1): it { set align(center) smallcaps(it.body) }观察点一级标题换了外观正文的字号、对齐仍由前面的 set 掌管。分工线很干净——值归 set模板归 show互不越界。 三个最常见的 Typst 样式翻车点本节把优先级冲突、作用域泄漏这类高频问题收敛成一张对照表问题与解法一一对应。症状原因解法set 过的参数失效标题样式整体变了同类型上又写了 show替换渲染盖掉了默认外观把参数搬进 show 规则体内别再两头设一处局部 set 污染了整份文档规则写在文档顶层作用域一路覆盖到文末用 block、align 等容器包起来缩小范围show 误伤了不该动的元素缺 where 过滤命中了全部同类元素补上 where(level: 1) 之类的条件最容易踩的是第一条。看这个最小冲突现场#set heading(numbering: 1.) #show heading: it [自定义标题: #it.body] 引言观察点输出结果是自定义标题引言编号彻底消失。show 的替换发生在 set 生效之后原元素的整套外观被丢弃编号想保留就必须在规则体内手动渲染。选型口诀与最佳实践清单本节给一条能背走的口诀再附一份日常可用的清单。set 调值show 换体。参数够用时别碰 show需要换渲染体时 set 帮不上忙。最佳实践清单默认先试 set 规则属性表里能找到的开关一律用 set。show 规则必须带 where 条件裸写全局替换只在项目级模板里谨慎使用。所有 set 与 show 集中放在文件开头或独立模板文件中作用域一眼可读。组合时先 set 定基础再 show 做定制两条规则各占一层不交叉设同一属性。改完标题、页眉这类元素后通读一遍 where 条件确认没拦错人。延伸阅读官方教程中的样式与页面设置章节docs/content/tutorial/各元素属性与规则参考文档docs/content/reference/项目入口文档含两条规则的官方定位说明README.md【免费下载链接】typstA markup-based typesetting system that is powerful and easy to learn.项目地址: https://gitcode.com/GitHub_Trending/ty/typst创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考