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

如何在Pandoc生成的Reveal.js幻灯片内容中显示YAML元数据值?

在Reveal.js幻灯片内容中调用YAML元数据的方法

当然可以实现,以下是两种实用方案:

方案一:使用内联Lua过滤器

这是最灵活的方式,只需要一段简单的Lua脚本,就能让Pandoc在编译时自动替换内容里的标记为YAML元数据对应的值。

  1. 准备你的markdown文件(比如slides.md),示例内容如下:
---
title: "我的演示文稿"
author: "张三"
date: "2024-05-20"
---

## 幻灯片1
这是由{{author}}在{{date}}制作的《{{title}}》演示文稿。
  1. 创建Lua过滤器文件(比如meta-filter.lua),代码如下:
function Str(s)
  local text = s.text
  -- 匹配{{变量名}}格式的标记,替换为对应元数据
  local replaced = text:gsub("{{(.-)}}", function(var)
    return PANDOC_META[var] or text
  end)
  return pandoc.Str(replaced)
end
  1. 编译时带上过滤器参数:
pandoc slides.md -t revealjs -o slides.html --lua-filter=meta-filter.lua

编译完成后,幻灯片里的{{author}}、{{date}}、{{title}}会自动替换成YAML中对应的元数据值。

方案二:结合--variable参数与HTML片段

如果不想写Lua脚本,也可以通过传递变量+启用HTML解析的方式实现,适合仅引用少量元数据的场景:

  1. 修改markdown内容,用HTML包裹模板语法:
---
title: "我的演示文稿"
---

## 幻灯片2
当前演示文稿标题:<span>$title$</span>
  1. 编译时传入变量并启用原始HTML解析:
pandoc slides.md -t revealjs -o slides.html --variable title="$title$" --raw-html=markdown

注意:直接在markdown内容里写$variable-name$无效,因为Pandoc仅会在模板文件中解析这类语法,内容区域默认不处理,必须通过上述两种方式实现变量替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:44:59