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

在Quarto中实现Python与Typst参数传递及循环索引交互问题

问题解答

你没法直接把Typst循环里的_索引传递给Python代码块,也不能在Typst循环里递增Python的ix变量——因为Typst和Python代码块的执行是分阶段的:

  1. 所有Python代码会先执行完毕,生成对应的输出内容后,才会交给Typst进行渲染处理;
  2. Typst的循环是在渲染阶段才运行的,这时候Python的上下文已经结束了,没法再修改Python变量或者实时传递数据。

可行的解决方案

方案1:Python提前生成所有内容片段

在Python里预先处理好每个章节需要的内容,生成一个列表,然后让Typst直接循环遍历这个列表输出:

# 假设tables是你的数据源,提前生成每个章节的内容
chapter_items = [f"章节内容:{item}" for item in tables]

对应的Typst代码:

#for content in `{python} chapter_items` {
  = 章节
  [content]
}

方案2:把数据传给Typst,让Typst处理索引和循环

直接将tables变量传递给Typst,在Typst里自己完成循环和索引操作:

# 无需额外处理,确保tables能被Typst访问到

对应的Typst代码:

#let tables = `{python} tables`
#for (index, table) in tables.enumerate() {
  = 第#(index + 1)章
  [table]
}

这两种方法都能实现你循环创建章节的需求,选哪种取决于你更倾向于在Python还是Typst里处理内容逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:44:54