用python编写scholdoc过滤器的实用程序
scholdocfilters的Python项目详细描述
用于编写scholdoc过滤器的python模块,派生 原装pandoc过滤器。scholdoc过滤器是读取json的管道 将stdin中的scholdoc ast序列化,将其转换为 好的,写给标准输出。它们可以与scholdoc一起使用(>;=0.1.3) 使用管道:
scholdoc -t json | ./caps.py | scholdoc -f json
或者使用--filter(或-F)命令行选项::
scholdoc --filter ./caps.py
scholdocfilters只是jgm的pandocfilters,具有元素类型 适应了稍富一点的scholdoc ast。更多用途 有关信息,请参阅John Macfarlane的原始Pandoc文档 在--filter和the tutorial on writing filters下。
要安装:
python setup.py install
scholdocfilters模块导出以下函数:
- walk(x, action, format, meta)
- 遍历树,对每个对象应用操作。 返回已修改的树。
- toJSONFilter(action)
- 将操作转换为读取json格式的筛选器 来自stdin的scholdoc文档,通过遍历树来转换它 并返回一个新的JSON格式的Scholdoc文档 到标准输出。参数是一个函数操作(键、值、格式, meta),其中key是scholdoc对象的类型(例如'str', “Para”),value是对象的内容(例如 “str”是“para”的内联元素列表,format是目标 输出格式(第一个命令行采用 参数(如果存在),并且meta是文档的元数据。如果 函数返回none,应用它的对象将保留 不变。如果返回一个对象,则该对象将被替换。如果 它返回一个列表,该列表将被拼接到 目标对象属于。(因此,返回空列表将删除 对象。)
- stringify(x)
- 遍历树x,并返回连接的字符串内容, 去掉所有格式。
- attributes(attrs)
- 返回从 词典attrs.
大多数用户只需要toJSONFilter。下面是一个简单的例子 用途:
#!/usr/bin/env python """ Scholdoc filter to convert all regular text to uppercase. Code, link URLs, etc. are not affected. """ from scholdocfilters import toJSONFilter, Str def caps(key, value, format, meta): if key == 'Str': return Str(value.upper()) if __name__ == "__main__": toJSONFilter(caps)
示例
注意:这些示例是为pandocfilters编写的。因此,一些例子 由于Scholdoc和Pandoc之间的AST不兼容而无法工作这个 会尽快补救的。
源存储库中的examples子目录包含 以下过滤器。这些过滤器应该提供一个有用的开始 开发自己的学校过滤器的要点。
abc.py
pandoc筛选器处理类abc包含abc的代码块 图像符号。假设abcm2ps和imagemagick的convert 在路上。图像放在ABC图像目录中。
caps.py
pandoc filter将所有常规文本转换为大写。代码,链接 URL等不受影响。
comments.py
导致 <!-- BEGIN COMMENT -->和<!-- END COMMENT -->将被忽略。 注释行必须单独出现在行上,空白 周围的线条
deemph.py
Pandoc过滤器,使强调文本显示在所有 帽子。
deflists.py
Pandoc过滤器将定义列表转换为项目符号列表 强强调的定义术语(为了与标准兼容 降价)。
graphviz.py
pandoc筛选器,将类为graphviz的代码块处理到 Graphviz生成的图像。
metavars.py
pandoc过滤器允许将元数据字段插入 文件。%{fields}将被字段值替换,假设 它的类型是MetaInlines或MetaString。
myemph.py
导致使用自定义 宏\myemph{...},而不是乳胶中的\emph{...}。其他输出 格式不受影响。
theorem.py
pandoc过滤器将带class="theorem"的div转换为乳胶定理 乳胶输出中的环境,以及HTML中的编号定理 输出。
tikz.py
Pandoc过滤器将原始乳胶tikz环境处理成图像。 假设pdflatex在路径中,并且 包可用。还假设imagemagick的convert在 这条路。图像放在tikz-images目录中。