2 个版本

0.1.1 2020年9月1日
0.1.0 2020年8月27日

157#mdbook

MIT 许可证

1.5MB
8K SLoC

Rust 7K SLoC // 0.0% comments JavaScript 1K SLoC // 0.1% comments Handlebars 269 SLoC // 0.1% comments

包含 (WOFF 字体, 99KB) fontawesome-webfont.woff, (WOFF 字体, 78KB) fontawesome-webfont.woff2, (WOFF 字体, 45KB) open-sans-v17-all-charsets-300.woff2, (WOFF 字体, 41KB) open-sans-v17-all-charsets-300italic.woff2, (WOFF 字体, 45KB) open-sans-v17-all-charsets-600.woff2, (WOFF 字体, 43KB) open-sans-v17-all-charsets-600italic.woff2 以及更多

gitbook

cargo install gitbook

lib.rs:

mdBook

mdBook 是一个将Markdown文档集合渲染为更适用于最终用户的格式(如HTML或EPUB)的工具。它提供了一个命令行界面,但如果需要更多控制,也可以使用这个crate。

这是API文档,如果您想了解关于命令行工具、格式、结构等信息,还可以查看用户指南。它也是使用mdBook渲染的,以展示其功能和默认主题。

使用crate(而不是CLI)的一些原因:

  • 将mdBook集成到现有项目中
  • 扩展mdBook的功能
  • 在构建书籍之前进行一些处理或测试
  • 通过公共API访问以帮助创建新的渲染器
  • ...

注意:虽然我们努力确保mdbook的命令行界面和行为向后兼容,但该工具的内部实现仍在发展和迭代。如果您希望防止意外的破坏,建议将基于mdbook crate构建的工具锁定到特定版本。

示例

如果从头开始创建新书籍,您可以通过MDBook::init()方法获取BookBuilder

use mdbook::MDBook;
use mdbook::config::Config;

let root_dir = "/path/to/book/root";

// create a default config and change a couple things
let mut cfg = Config::default();
cfg.book.title = Some("My Book".to_string());
cfg.book.authors.push("Michael-F-Bryan".to_string());

MDBook::init(root_dir)
    .create_gitignore(true)
    .with_config(cfg)
    .build()
    .expect("Book generation failed");

您也可以加载现有的书籍并构建它。

use mdbook::MDBook;

let root_dir = "/path/to/book/root";

let mut md = MDBook::load(root_dir)
    .expect("Unable to load the book");
md.build().expect("Building failed");

实现新的后端

mdbook 有一个相当灵活的机制来为您的书籍创建额外的后端。一般思路是在书籍的 book.toml 中添加一个额外的表,该表指定了由mdbook调用的可执行文件。在构建过程中,这个可执行文件将被调用,并将书籍的内存表示(RenderContext)通过stdin传递给子进程。

RenderContext》提供了后端访问book.toml内容的方式,并告知所有生成的工件应放置在哪个目录。欲深入了解,请参阅用户指南中《开发者指南》部分的相关章节

为了简化后端的创建,可以直接导入mdbook包,使反序列化RenderContext变得容易,并让您访问各种与Config交互的方法。

依赖项

~10–23MB
~351K SLoC