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)

在本文档中