Markdown pandoc是否支持在其模板中创建降价表?

Markdown pandoc是否支持在其模板中创建降价表?,markdown,pandoc,Markdown,Pandoc,我正在阅读pandoc手册nd如果我理解正确,它支持使用模板文件和包含要在模板中使用的变量的YAML文件。 它还表示YAML支持任何任意对象(甚至是列表)。但是,我想问一下,是否可以使用YAML数据在模板中呈现降价表。 这些示例仅显示一个简单的键和值映射 编辑: 我创建了一个testable.md文件,其中包含 --- table: caption: Cities headers: [city, population] rows: - [Berlin, '3,748,148

我正在阅读pandoc手册nd如果我理解正确,它支持使用模板文件和包含要在模板中使用的变量的YAML文件。 它还表示YAML支持任何任意对象(甚至是列表)。但是,我想问一下,是否可以使用YAML数据在模板中呈现降价表。 这些示例仅显示一个简单的键和值映射


编辑: 我创建了一个testable.md文件,其中包含

---
table:
  caption: Cities
  headers: [city, population]
  rows:
    - [Berlin, '3,748,148']
    - [Tokyo, '13,839,910']
---

$table$

**Random Text**
并使用此命令使用tarleb提供的过滤器:
pandoc-f markdown-tdocx--lua filter=yaml_table.lua-o target.docx testtable.md

但是,输出文件似乎仍然不包含该表。 我错过什么了吗


编辑: 我意识到模板文件的指定与输入不同 当我使testtable.md仅包含以下内容时,它工作正常:

---
table:
  caption: Cities
  headers: [city, population]
  rows:
    - [Berlin, '3,748,148']
    - [Tokyo, '13,839,910']
---
并创建了一个名为markdowntmpl.md的模板文件,其中包含以下内容

$table$

**Random Text**
然后我使用了以下命令:

pandoc -f markdown -t markdown --template=markdowntemplate.md --lua-filter=yaml_table.lua -o target.md testtable.md
输出:

  city     population
  -------- ------------
  Berlin   3,748,148
  Tokyo    13,839,910

  : Cities

**Random Text**

然后,我可以继续用它创建一个docx文档。

标记中可表示的所有元素也可以放入元数据字段中。插入复杂元素的最简单方法是对多行字符串使用保留换行符的YAML语法。例如:

---
table: |
  | city   | population |
  |--------|------------|
  | Berlin |  3,748,148 |
  | Tokyo  | 13,839,910 |
---
这将
table
定义为包含表的元数据字段


没有“本地”YAML方法来定义表,但是您可以使用pandoc来滚动自己的表

假设您想定义这样一个表:

---
table:
  caption: Cities
  headers: [city, population]
  rows:
    - [Berlin, '3,748,148']
    - [Tokyo, '13,839,910']
---
然后可以使用以下过滤器将其转换为pandoc表

local List=需要“pandoc.List”
功能重复(项目、次数)
局部结果={}
对于i=1,次数do result[i]=项目结束
返回结果
结束
表的功能(待定)
如果tbl.t~='MetaMap'或不是tbl.rows,则
归零
结束
--将元内联线转换为块
local to_blocks=函数(x)返回{pandoc.Plain(List:new(x))}end
本地头=(列表:新建(tbl.headers)):映射(到_块)
本地行=列表:新建(待定行):映射(
函数(行)返回列表:新建(行):映射(到块)结束
)
本地列=#行[1]
局部对齐=tbl.aligns或repeated(pandoc.AlignDefault,columns)
局部宽度=待定宽度或重复宽度(0,列)
返回pandoc.Table(列表:新建(tbl.caption)、对齐、宽度、标题、行)
结束
功能元(Meta)
对于k,v成对(meta)do
本地成功,结果=pcall(到表v)
如果成功和结果是什么
meta[k]=pandoc.MetaBlocks{result}
结束
结束
返回元
结束

如果您可以找到YAML支持的数据类型,该类型包含表格数据,那么您应该能够使用该数据构建一个表。但我不知道任何YAML支持的数据类型。这很好。我正在考虑一个YAML 2D数组——表:[[名称,地址],[爱丽丝,梦游仙境],[蝙蝠侠,高谭]]——我想知道是否有可能将其呈现为降价表☝️好了。谢谢你的lua过滤器参考!我想我需要先研究一下