filter - 如何访问 panflute 中的全局变量(Pandoc 过滤器)
问题描述
根据API 文档,应该能够以某种方式通过doc
变量访问全局变量。但是如何,没有解释。
全局变量可以在 YAML 头文件中定义:
---
title: Document Title
author: Who wrote this
key0: val0
Here starts the document content ...
或在 pandoc 命令行上:
pandoc -V key1=val1 --variable key2=val2 input.md
我试图访问它们的内容:
print("key1=%s" % doc.key1)
print("key1=%s" % doc.get_metadata('key1', 'NOT-FOUND'))
两者都失败了。
解决方案
第一种方法(将变量放在文档中)失败了,因为 YAML 块没有关闭,所以该块不是作为元数据读取,而是作为正常的 Markdown 读取。在元数据之后添加一个结束---
行应该可以解决这个问题。
---
title: Document Title
author: Who wrote this
key0: val0
---
Here starts the document content ...
要了解命令行版本失败的原因,必须查看 pandoc 对模板变量和元数据所做的区别。/的文档-M
--metadata
说:
像
--variable
,--metadata
导致模板变量被设置。但与--variable
,不同的是,--metadata
会影响基础文档的元数据(可从过滤器访问,并且可以以某些输出格式打印),并且元数据值在插入模板时将被转义。
因此,使用-M
代替-V
应该可以解决您的问题。
推荐阅读
- c# - XP 上的 InvalidOperationException 而不是 Windows 10
- sql - SQL - 返回字段中的所有浮点值而不用科学计数法编写
- javascript - JS - 将字符串数组作为日期排序
- modelica - 为什么所有导入的 ThermoPower 库组件都有“没有相应的‘内部’声明”?
- php - 如何在 plesk 上使用 dkim 和 smtp 授权配置 phpmailer?
- python - Python Pandas:通过相似的文件名对目录中的文件进行分组并以特定顺序连接数据帧
- mobile - 如何获取设备的可用和已用存储空间
- python - 如何将通用“联系人”附加到多个不同的表?
- javascript - 如何强制悬停选择器不会出现在特定的 div 上
- python - BeautifulSoup 模块未检测到任何标签