#book #abstract #ast #author #builder #content #bookbinder

bookbinder_ast

生成用于后续渲染的书籍的抽象表示

1 个不稳定版本

0.1.0 2020年10月23日

#63 in #author


3 crates 使用

MIT/Apache

1MB
5.5K SLoC

该软件包允许构建一个抽象书籍源,其他程序可以将其渲染成特定的输出格式。


lib.rs:

该软件包简化了构建 BookSrc 的过程;此结构体之后可以用于将内容渲染到特定的后端,前提是已根据各种选项进行了适配。

一般用法是创建一个 BookSrcBuilder,设置元数据值并添加内容,然后从构建器创建一个 BookSrc

由于书籍很快就会变得复杂,因此有大量的构建方法和开关。然而,简单用法非常简单。

use bookbinder_ast::BookSrcBuilder;
let src = BookSrcBuilder::new("A Book")
   .subtitle("Serving as an Example")
   .author("A.N. Author")
   .add_mainmatter("# Hello World\n\nText goes here...")
   .process();

由于我们纳入了语义分区的概念,可以添加并适当格式化各种辅助文本:例如,请参阅 add_foreword

Markdown

解释的 Markdown 源具有少量对 CommonMark 的扩展

  • 脚注:使用 [^marker] ... [^marker]: definition 添加脚注
  • 格式化跨度:文本可以包裹在一组跨度中,以各种方式对其进行格式化
    • <跨度类="无衬线">无衬线文本</跨度>
    • <跨度类="小写字母">小写字母文本</跨度>
    • <跨度类="居中">居中文本</跨度>
    • <跨度类="右对齐">右对齐文本</跨度>
  • 转义:短横线 -- 和三个短横线 --- 分别转换为 en 和 em 短横线,而一串三个点 ... 则变成省略号。
  • 引用:直引号(至少在理论上是)转换为适当的曲线引号;这是一个在没有真正理解文本的情况下无法完全正确解决的问题,但使用的算法相当稳健,并考虑了语义(例如,代码中的引号不会被转换)。不过,为了获得完美的准确性,最好显式使用曲线引号。
  • 下标和上标: 22^nd^ JulyH~2~0

依赖

~16MB
~270K SLoC