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次下载
615KB
10K SLoC
Crowbook
Crowbook的目标是让您能够使用Markdown编写书籍,无需担心格式或排版,程序将为您生成HTML、PDF和EPUB输出。其重点在于小说和虚构作品,默认设置应(希望如此)生成可读性强的书籍,且排版正确,无需您担心。
示例
要查看Crowbook的输出效果,您可以阅读以HTML、PDF或EPUB格式渲染的Crowbook指南。
安装
安装Crowbook有两种方式:使用预编译的二进制文件,或者使用cargo
编译。
二进制文件
请参阅发布页面下载适用于您架构的预编译二进制文件(目前:Linux、Windows和MacOSX)。只需解压缩存档并运行crowbook
(在Windows上为crowbook.exe
)。您可能还想将二进制文件复制到您的PATH
中以供以后使用。
如果您使用的是Debian GNU/Linux或Ubuntu(在PC架构上),您也可以在发布页面上下载.deb
包。
使用Cargo
Cargo是Rust的包管理器。您可以从这里安装它。安装完成后
$ 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)作为输出格式。请参阅在HTML、EPUB和PDF中渲染的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 上的问题跟踪器。
贡献者
- Stéphane Mourey
<s+crowbook AT stephanemourey DOT fr>
- Falco Hirschenberger
致谢
除了 Rust 编译器和标准库之外,Crowbook 还使用了以下库:pulldown-cmark,yaml-rust,mustache,clap,chrono,uuid,mime_guess,crossbeam,walkdir,rustc-serialize,caribon,hyper,url,lazy_static,regex,term,numerals,syntect。
它还可以在 HTML 输出中嵌入 Highlight.js,以实现对代码块进行语法高亮。
它还使用 rust-everywhere 的配置文件来使用 Travis 和 Appveyor 在每个发布时为各种平台生成二进制文件。
尽管 Crowbook 直接没有使用它们,但还受到了 Pandoc 和 mdBook 的启发。
此外,W3C HTML 验证器 和 IDPF EPUB 验证器 在开发和测试期间证明非常有用。
变更日志
请参阅变更日志。
贡献
如果您觉得这个项目很有用,您也可以通过通过 PayPal 捐款来支持其作者。
库
虽然 Crowbook 的主要目的是作为独立程序运行,但代码被编写为库,因此如果您想要在此基础上进行构建,您可以使用它作为库。您可以在 docs.rs 上查看生成的文档。
请注意,为了便于代码重用,一些功能已被拆分到单独的库中
- epub-builder 使得生成 EPUB 文件变得更容易。
- crowbook-text-processing 包含所有“排版”函数(智能引号、处理法语中的非断行空格等)。
- crowbook-intl 用于国际化(翻译)过程。
许可证
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