31个不稳定版本

0.16.1 2023年8月3日
0.16.0 2023年7月27日
0.15.2 2020年7月6日
0.15.0 2019年7月18日
0.4.0 2016年3月1日

#229 in 文本处理

每月24次下载

LGPL-2.1+

615KB
10K SLoC

Crowbook

Travis status Appveyor status

Crowbook的目标是让您能够使用Markdown编写书籍,无需担心格式或排版,程序将为您生成HTML、PDF和EPUB输出。其重点在于小说和虚构作品,默认设置应(希望如此)生成可读性强的书籍,且排版正确,无需您担心。

示例

要查看Crowbook的输出效果,您可以阅读以HTMLPDFEPUB格式渲染的Crowbook指南。

安装

安装Crowbook有两种方式:使用预编译的二进制文件,或者使用cargo编译。

二进制文件

请参阅发布页面下载适用于您架构的预编译二进制文件(目前:Linux、Windows和MacOSX)。只需解压缩存档并运行crowbook(在Windows上为crowbook.exe)。您可能还想将二进制文件复制到您的PATH中以供以后使用。

如果您使用的是Debian GNU/Linux或Ubuntu(在PC架构上),您也可以在发布页面上下载.deb包。

使用Cargo

CargoRust的包管理器。您可以从这里安装它。安装完成后

$ cargo install crowbook

Cargo将自动下载crates.io上最新的crowbook版本,编译并安装到您的系统上。

一些依赖项可能需要构建C库;因此,您可能还需要安装C编译器和make/cmake构建工具。您还可以尝试构建不带可选功能的Crowbook版本:使用以下命令cargo install crowbook --no-default-features --features "clap"将禁用语法高亮和校对,需要更少的依赖。

依赖项

严格来说,运行Crowbook应该没有真正的依赖(它作为静态编译的二进制文件发布),但某些功能需要额外的命令才能正确运行。

  • EPUB渲染需要系统上存在zip命令;
  • PDF渲染需要一个可正常工作的LaTeX安装(最好为xelatex)。

快速浏览

最简单的命令是

$ crowbook <BOOK>

其中 BOOK 是一个配置文件。Crowbook将解析此文件并生成HTML、EPUB和/或PDF输出格式,具体取决于配置文件中的设置。

要创建一本新书,假设您有一份Markdown文件列表,您可以使用带有--create参数的命令生成模板配置文件

$ crowbook my.book --create chapter_*.md

这将生成一个默认的my.book文件,您需要完成它。此配置文件包含一些元数据、选项并列出Markdown文件。

对于只包含单个Markdown文件的小书,可以在文件开头嵌入一些元数据,并使用--single-s选项直接在Markdown文件上运行crowbook,避免创建单独的书本配置文件

$ crowbook -s text.md

有关更多信息,请参阅有关crowbook支持的参数配置文件的章节。

当前功能

输出格式

Crowbook支持HTML、PDF和EPUB(版本2或3)作为输出格式。请参阅在HTMLEPUBPDF中渲染的Crowbook用户指南。

输入格式

Crowbook使用pulldown-cmark,因此应该支持大部分CommonMark Markdown。但是,内联HTML尚未实现,并且可能永远不会实现,因为目标是生成可以转换为PDF(也许ODT)的书籍。

排版“清理”

可能是Crowbook最具体的“功能”就是它在渲染之前尽可能地对输入文本进行“清理”。默认情况下,它会删除多余的空格并尝试使用花括号引号。如果书籍的语言设置为法语,它还会尝试通过在适当的位置(例如在'?'、'!'、';'或':'之前)使用非断行空格来尊重法语排版。

如果您希望为其他语言实现排版规则,请打开一个问题描述这些规则。

Crowbook尝试正确转换输入Markdown文件中的本地链接:例如,如果您有一个指向书籍中Markdown文件的链接,它将被转换为文档内的链接。

内联YAML块

Crowbook支持内联YAML块

---
author: Me
title: My title
---

这在Crowbook以--single参数(接收单个Markdown文件而不是书本配置文件)运行时非常有用,对于只包含一个“章节”的简短文本。

校对

Crowbook 还可以生成 HTML 或 PDF 的“校对”副本,突出显示语法错误和重复。更多信息,请参阅指南中的校对章节

交互式小说

Crowbook 对编写交互式小说提供实验性支持(仅限 HTML)。更多信息,请阅读交互式小说章节

自定义

尽管默认设置可能会生成“足够好”的输出,但您可以通过提供不同的模板来自定义输出。

错误

请参阅GitHub 上的问题跟踪器

贡献者

致谢

除了 Rust 编译器和标准库之外,Crowbook 还使用了以下库:pulldown-cmarkyaml-rustmustacheclapchronouuidmime_guesscrossbeamwalkdirrustc-serializecaribonhyperurllazy_staticregextermnumeralssyntect

它还可以在 HTML 输出中嵌入 Highlight.js,以实现对代码块进行语法高亮。

它还使用 rust-everywhere 的配置文件来使用 TravisAppveyor 在每个发布时为各种平台生成二进制文件。

尽管 Crowbook 直接没有使用它们,但还受到了 PandocmdBook 的启发。

此外,W3C HTML 验证器IDPF EPUB 验证器 在开发和测试期间证明非常有用。

变更日志

请参阅变更日志

贡献

请参阅如何为 Crowbook 做出贡献

如果您觉得这个项目很有用,您也可以通过通过 PayPal 捐款来支持其作者。

虽然 Crowbook 的主要目的是作为独立程序运行,但代码被编写为库,因此如果您想要在此基础上进行构建,您可以使用它作为库。您可以在 docs.rs 上查看生成的文档。

请注意,为了便于代码重用,一些功能已被拆分到单独的库中

许可证

Crowbook 是免费软件:您可以在 GNU Lesser General Public License (LGPL) 的条款下重新分发它和/或修改它,版本 2.1 或(根据您的选择)任何后续版本。更多信息请参阅 LICENSE

Crowbook 的标志遵循基于 Mozilla Corporation 的 Rust 标志Creative Commons Attribution 4.0 国际许可证

Crowbook 包含来自 Highlight.js 的二进制(压缩)CSS 和 JavaScript 文件,由 Ivan Sagalaev 编写,请参阅 许可证

依赖项

~10–28MB
~394K SLoC