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

Quarto与Typst集成时页眉无法调用title变量的问题

问题描述

我尝试通过Quarto的YAML配置传递title、author、date等变量,已实现封面正常显示这些信息,但title无法在页眉中渲染。附上相关代码和截图,请问该问题的原因是什么?

相关代码片段

Typst模板核心代码

// 封面渲染逻辑
#show cover: it => {
  align(center, vstack(
    text(2em, it.title),
    text(1.2em, it.author),
    text(1em, it.date)
  ))
}

// 页眉渲染逻辑(当前不生效)
#show header: it => {
  align(left, text(it.title))
}

Quarto YAML配置

title: "我的文档标题"
author: "张三"
date: "2024-05-20"
format:
  typst:
    template: custom-template.typ

输出情况


问题原因及解决方法

核心原因

Quarto向Typst模板传递变量时,封面的上下文与页眉/页脚的全局上下文不共享:

  • 封面的it.title直接对应YAML中的顶层title变量,因为Quarto会把元数据注入封面的局部上下文;
  • 页眉的it指代的是页眉自身的局部上下文(默认无内容),无法直接访问顶层的title,必须通过Quarto提供的全局元数据对象quarto-meta来获取。

修复步骤

  1. 修改Typst模板的页眉渲染逻辑,通过quarto-meta读取标题:
#show header: _ => {
  align(left, text(quarto-meta("title")))
}
  1. 确认Quarto版本:使用Quarto 1.4及以上版本,早期版本对Typst的元数据传递支持存在缺陷。
  2. 检查模板引入方式:如果使用了分离的typst-show.typ文件,需在YAML中明确声明:
format:
  typst:
    template: custom-template.typ
    template-partials:
      - typst-show.typ

调试验证

可以在模板开头添加调试代码,确认元数据是否正常传递:

// 临时渲染所有元数据,用于排查
#text(quarto-meta())

如果输出内容包含title字段,说明元数据传递正常,只需调整页眉的变量引用方式即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:33:21