Pandoc Lua 过滤器 - pandoc.utils 模块
此模块提供内部 pandoc 函数和实用函数。
函数
blocks_to_inlines
blocks_to_inlines (blocks[, sep])
将一系列块转换成一系列内联元素。
用法示例:
local blocks = {
pandoc.Para{ pandoc.Str 'Paragraph1' },
pandoc.Para{ pandoc.Emph 'Paragraph2' }
}
local inlines = pandoc.utils.blocks_to_inlines(blocks)
assert(
inlines == pandoc.Inlines {
pandoc.Str 'Paragraph1',
pandoc.Linebreak(),
pandoc.Emph{ pandoc.Str 'Paragraph2' }
}
)
参数 | 描述 |
---|---|
blocks |
要展平的 Block 元素列表 ( Blocks ) |
sep |
作为两个连续块之间的分隔符插入的 Inline 元素列表,默认为 {pandoc.LineBreak()} ( Inlines ) |
返回值: Inlines
版本: 自 2.2.3 版本起可用
citeproc
citeproc (doc)
处理文件中的引用,并将其替换为渲染后的引用,并添加参考文献列表。详细信息请参阅手册中的引用渲染部分。
用法示例:
-- Lua过滤器,行为类似于`--citeproc`
function Pandoc(doc)
return pandoc.utils.citeproc(doc)
end
参数 | 描述 |
---|---|
doc |
文档 ( Pandoc ) |
返回值: 处理后的文档 ( Pandoc )
版本: 自 2.19.1 版本起可用
equals
equals (element1, element2)
测试 AST 元素是否相等。在 Lua 中,元素被视为相等当且仅当解包后得到的对象相等。
注意:
此函数已废弃。应使用标准 Lua 的
==
运算符。
参数 | 描述 |
---|---|
element1 |
任意类型 ( any ) |
element2 |
任意类型 ( any ) |
返回值: 如果两个对象代表相同的元素,则返回 true
(boolean
)
版本: 自 2.5 版本起可用
from_simple_table
from_simple_table (simple_tbl)
从 SimpleTable 创建一个 Table 块元素。这对于处理为 Pandoc 版本 2.10 之前的代码编写的老代码非常有用。
用法示例:
local simple = pandoc.SimpleTable(table)
-- 使用Pandoc 2.10之前的方法进行修改
simple.caption = pandoc.SmallCaps(simple.caption)
-- 再次创建常规表格块
table = pandoc.utils.from_simple_table(simple)
参数 | 描述 |
---|---|
simple_tbl |
( SimpleTable ) |
返回值: 表格块元素 ( Block )
自版本: 2.11
make_sections
make_sections (number_sections, baselevel, blocks)
将一系列 Block 元素转换为章节。从每个 Header
开始创建 Div
,包含直到下一个相同级别的 Header
的所有内容。如果 number_sections
为真,则会向每个 Header
添加一个包含章节编号的 number
属性。如果 baselevel
非空,则重新组织 Header
级别以消除空缺,并使基级别为指定级别。
参数 | 描述 |
---|---|
number_sections |
是否应该给章节 div 添加一个额外的 number 属性包含章节编号 ( boolean ) |
baselevel |
将顶级标题调整到此级别 ( integer | nil ) |
blocks |
要处理的块列表 ( Blocks ) |
返回值: 包含章节的块 ( Blocks )
自版本: 2.8
references
references (doc)
获取在元数据中和通过外部参考文献定义的引用。仅返回文档中实际被引用的引用(无论是通过真正的引用还是通过 nocite
)。URL 变量被转换为链接。
表示引用值的结构对应于 CSL JSON 中使用的结构;返回的值可以作为 references
元数据使用,这是 Pandoc 和 citerec 生成参考文献时使用的值之一。
用法示例:
-- 包括文档中所有被引用的参考文献
function Pandoc (doc)
doc.meta.references = pandoc.utils.references(doc)
doc.meta.bibliography = nil
return doc
end
参数 | 描述 |
---|---|
doc |
文档 ( Pandoc ) |
返回值: 引用列表 ( table
)
自版本: 2.17
run_lua_filter
run_lua_filter (doc, filter[, env])
通过一个 Lua 过滤器来过滤给定的文档。
过滤器将在当前的 Lua 进程中运行。
参数 | 描述 |
---|---|
doc |
要过滤的 Pandoc 文档 ( Pandoc ) |
filter |
要运行的过滤器文件路径 ( string ) |
env |
加载和运行过滤器的环境 ( table ) |
返回值: 过滤后的文档 ( Pandoc )
自版本: 3.2.1
run_json_filter
run_json_filter (doc, filter[, args])
通过 JSON 过滤器处理给定的文档。
参数 | 描述 |
---|---|
doc |
要过滤的 Pandoc 文档 ( Pandoc ) |
filter |
要运行的过滤器 ( string ) |
args |
传递给过滤器的参数列表,默认为{FORMAT} ( { string, ... } ) |
返回: 过滤后的文档 ( Pandoc )
自版本: 2.1.1
normalize_date
normalize_date (date)
解析日期并尽可能转换为 “YYYY-MM-DD” 的格式。年份限制在 1601-9999 范围内(ISO 8601 接受 1583 或之后的年份,但 MS Word 仅接受从 1601 开始的日期)。如果转换失败,则返回 nil。
参数 | 描述 |
---|---|
date |
日期字符串 ( string ) |
返回: 格式化后的日期,或者如果格式化失败则返回 nil
( string
or nil
)
自版本: 2.0.6
sha1
sha1 (input)
计算给定字符串输入的 SHA1 散列值。
参数 | 描述 |
---|---|
input |
输入字符串 ( string ) |
返回: 十六进制哈希值 ( string
)
自版本: 2.0.6
stringify
stringify (element)
将给定的元素(Pandoc、Meta、Block 或 Inline)转换为去除所有格式的字符串形式。
参数 | 描述 |
---|---|
element |
某个 Pandoc AST 元素 ( AST element ) |
返回: 给定元素的纯文本表示 ( string
)
自版本: 2.0.6
to_roman_numeral
to_roman_numeral (n)
将小于 4000 的整数转换为大写罗马数字。
参数 | 描述 |
---|---|
n |
小于 4000 的正整数 ( integer ) |
返回: 罗马数字 ( string
)
自版本: 2.0.6
to_simple_table
to_simple_table (tbl)
将一个表格转换为旧版/简单的表格。
用法:
local simple = pandoc.utils.to_simple_table(table)
-- 使用pandoc 2.10之前的修改方法
simple.caption = pandoc.SmallCaps(simple.caption)
-- 再次创建正常的表格块
table = pandoc.utils.from_simple_table(simple)
参数 | 描述 |
---|---|
tbl |
表格( Block 类型 ) |
返回值: 简单表格对象 ( SimpleTable )
自 2.11 版本起支持
type
type (value)
这是 Pandoc 友好的 Lua 默认 type
函数的版本,返回类似手册中所示的类型信息。
该函数通过检查元字段 __name
来工作。如果参数有一个字符串类型的元字段 __name
,则返回该字符串。否则,它像普通的 type
函数一样运行。
用法:
-- 打印'字符串'、'布尔'、'Inlines'、'Blocks'、'table' 和 'nil'中的一个,
-- 这些分别对应于Haskell构造器MetaString、MetaBool、MetaInlines、MetaBlocks、MetaMap 和未设置的值。
function Meta(meta)
print('metavalue `author` 的类型:', pandoc.utils.type(meta.author))
end
参数 | 描述 |
---|---|
value |
任何 Lua 值 ( any ) |
返回值: 给定值的类型 ( string
)
自 2.17 版本起支持
Version
Version (v)
创建一个 Version
对象。
参数 | 描述 |
---|---|
v |
版本描述 ( 版本字符串 、整数列表 或 整数 ) |
返回值: 新的 Version
对象 (Version
)