Bonelate 是一个针对 LaTeX 的轻逻辑模版解析引擎,类似于 mustache。 与采取 mustache 的其他模版解析引擎相比(例如chevron或pymustache), Bonelate 针对 LaTeX 的语法做了很多优化,使 LaTeX 模板文件在不渲染的情况下也可使用 LaTeX 工具编译通过。
Bonelate 针对 LaTeX 的语法设计了模板标记符,
使用 LaTeX 中非特殊字符作为标记符,例如{{!partial}}
中的!
,
从而在不解析渲染的情况下直接通过 LaTeX 引擎编译也不会报错。
这个项目使用 Python 开发,请确保你本地安装了它。
使用PyPI安装
$ pip install bonelate[all]
源码安装
$ git clone [email protected]:zrr1999/bonelate.git
$ cd bonelate
$ pip install .
- 模板变量渲染
{{keyName}}
- 模板块渲染
{{!keyName}}sth.{{/keyName}}
以!开始、以/结束表示模板块,它会根据当前上下文中的键值来对区块进行一次或多次渲染。 它的功能很强大,有类似if、foreach的功能。 - 失效渲染
{{?keyName}} {{/keyName}}
该语法与模板块渲染类似,不同在于它是当keyName值为空或否定值时才渲染输出该区块内容。 - 视图渲染
{{.}}
可以循环输出整个数组。
运行如下代码
from bonelate import render, parse
test_string = r"\LaTeX{} is a {{var}} typesetting system.{{!vars}}.{{/vars}}"
print(render(test_string, {
"var": "high-quality",
"vars": range(10),
}))
得到渲染结果
\LaTeX{} is a high-quality typesetting system...........
如果你的环境变量中有 python 脚本目录,你可以使用
$ bonelate render ./examples/ml_work
如果没有的话,你需要使用如下命令
$ python bonelate render ./examples/ml_work
- 优化了插件接口。
- 修复了无法解析嵌套模板的问题。
- 修改了render指令用法
- 完善了README中的用法描述。
- 增加了分隔符特性,{{var:sep}}。
- 遍历渲染改为判断对象是否为Iterable。
- 添加了用于处理Sympy公式的插件。
- 修复部分bug。
- 重构 tokenizer,现在命名为parser。
- 增加了 partial 语法。
- 增加了 docs 目录。
- 增加了更多例子。
- 修改了单元测试。
- 不再兼容mustache语法。
- 增加了命令行指令。
- 增加了更多例子。
- 添加了单元测试(不完全)。
- 修复了大括号内的内容不能正常解析的问题。
- 修复了模板变量中含有空白符不能正常解析的问题。
非常欢迎你的加入!提一个 Issue 或者提交一个 Pull Request。
感谢以下参与项目的人:
MIT © Rongrui Zhan