#latex #mdbook #markdown #pdf #pdf-document #generate #converter

app mdbook-latex

用于生成 LaTeX 和 PDF 文档的 mdbook 后端

7 个版本

0.1.24 2020 年 2 月 24 日
0.1.5 2019 年 8 月 25 日

#1456 in 文本处理

MPL-2.0 许可证

305KB
198 代码行

mdbook-latex

mdbook-latex logo

crates badge docs badge ci badge

一个用于生成 LaTeX 和 PDF 文档的 mdbook 后端。使用 md2tex 进行 Markdown 到 LaTeX 的转换,但旨在允许使用替代的 Markdown 到 LaTeX 转换器。如果您开发了您自己的 Markdown 到 LaTeX 转换器,我很乐意与您交谈或分享想法!我在 [email protected]

警告:尚未稳定——可能会吃掉、撕碎并原子化您的衣物!请参阅 我们稳定了吗? 部分以获取生产发布的路线图。

失败:如果 mdbook-latex 失败,请参阅 mdbook-latex 无法构建我的书籍!现在怎么办? >:(。如果您有任何问题或建议,我也可通过 电子邮件 联系我!

Rust 书架状态

  • ✅ 编译成功
  • 🍊 编译但有警告/错误
  • ❌ 编译失败/尚未尝试
编译? 生成的 PDF 生成的 LaTeX 在线版本
Cargo 书籍 LaTeX HTML
版式指南 LaTeX HTML
嵌入式 Rust 书籍 LaTeX HTML
🍊 Mdbook 用户指南 LaTeX HTML
Rust 参考文档 LaTeX HTML
Rust 举例说明 LaTeX HTML
🍊 Rust 编程语言 LaTeX HTML
Rustc 书籍 LaTeX HTML
Rustdoc 书籍 LaTeX HTML
Rustonomicon LaTeX HTML
不稳定书籍 LaTeX HTML

安装

首先,安装以下两个程序

然后,为了安装 mdbook-latex,在 shell 中输入以下命令

cargo install mdbook-latex

最后,将以下 toml 配置添加到 book.toml 中。

[output.latex]
latex    = true  # default = true
pdf      = true  # default = false
markdown = true  # default = false

下一个 mdbook build 命令将在 book/latex/ 目录中生成 LaTeX 和 PDF 文件(以及你的 mdbook 的 markdown 文件)。

卸载

要卸载 mdbook-latex,在 shell 中输入以下命令

cargo uninstall mdbook-latex

然后在 book.toml 中删除以下 [output.latex] 配置

- [output.latex]
- latex    = true
- pdf      = true
- markdown = true

主要依赖

mdbook-latex 基于 一些非常出色的项目,包括

  • pulldown-cmark:解析 markdown 源 AST。
  • Tectonic:从转换后的 LaTeX 代码创建最终的 PDF 文件。
  • md2tex:将 markdown 源转换为 LaTeX。这是 md2pdf 的分支,一个将 markdown 代码转换为 LaTeX 和 PDF 的优秀工具。我希望最终能够将一些更新回传给上游。 md2texmdbook-latex 是同时开发的,但它们是独立的程序。因此,如果有人想使用替代的 markdown 到 tex 转换器,他们应该能够轻松地将它集成到 mdbook-latex 中。

它是如何工作的?

总的来说,从 mdbook 源到 PDF 输出的过程有三个步骤,或“转换”

  1. mdbook 源到 JSON 组织的 markdownmdbook-latex):从 mdbook 获取 JSON 格式的数据。分别调用 md2textectonic 进行 LaTeX 和 PDF 生成。
  2. markdown 到 LaTeXmd2tex):将 markdown 输入转换为 LaTeX 输出。
  3. LaTeX 到 PDFtectonic):从 LaTeX 输入创建 PDF 文档。

贡献

积极鼓励提出拉取请求、分支和直接复制粘贴!此外,我相对较新 Rust(以及一般编程)所以对任何建议或一般性的建议都非常欢迎。

我发现了一个问题。我应该为 mdbook-latexmd2tex 创建一个问题吗?

都可以。 mdbook-latex 可以被视为由 md2tex 完成的 LaTeX 生成的前端。所以如果出现 LaTeX 错误,您可能更喜欢为 md2tex 创建一个问题。否则,为 mdbook-latex 创建问题也是一个不错的选择。但任何问题都是好的问题,所以不要担心它是否在“正确的”存储库中,无论怎样,我都应该能够看到它!

我们稳定了吗?

以下是我在当前正在工作的功能列表(大致按“自上而下”的方向)。

  • 添加对方程界限 "( x^2 )" "[ x^2 ]" 的支持。
  • 允许 SVG 图片(转换为 PNG 用于 LaTeX)。
    • 配置 resvg 库以将 SVG 转换为 PNG。
    • 将 SVG 保存到 book/latex 目录以保持 src 干净。
  • 添加 CI/CD 管道(travis
  • 将所有 LaTeX 数据移动到单个模板文件(src/template.tex)中。
  • 添加对原始 HTML 表格的支持。
  • 通过 syntect 如同 lumpy-leandoc 添加语法高亮。
  • 通过 Rayon 如同 lumpy-leandoc 添加并行转换。
  • 使用 lumpy-leandoc 的方法处理事件(将 current 事件替换为 fold)。
  • 编译 Rust 书籍mdbook 文档,不出现任何错误或警告(例如缺少 Unicode 字符)。请参阅 Rust 书架状态 了解最新进度。
  • 在 "pdf" 功能配置中将 "tectonic" 依赖项。
  • 添加 "目录" mdbook toml 选项。
  • 添加 "markdown" mdbook toml 选项。
  • 添加 "单词数" mdbook toml 选项。
  • 添加 "示例" 目录。
  • 创建文档并将相关文档移动到 md2tex。
  • 添加自定义 LaTeX 头部的选项。
  • 添加替代 markdown-to-latex 转换插件选项。
  • 添加测试套件。
  • 交叉编译二进制文件(trust
  • 添加使用 mdproof 生成 PDF 的选项以跳过 LaTeX 依赖项。
  • 完全符合 CommonMark 规范

另请参阅

以下项目为 mdbook-latex 提供了指导(或者足够酷,值得分享!)

  • mdbook-epub:为 mdbook 创建 EPUB 文件的后端。
  • mdbook-linkcheck:用于 mdbook 的后端,将验证 URL 链接。
  • LaTeX-rs:一个用于程序化 LaTeX 生成的酷库,我希望最终能将其集成。
  • crowbook:一个强大的程序,可以从 markdown 代码生成 HTML、PDF 和 EPUB 文件。有一个很棒的 在线演示页面 可以交互式地尝试。在某些方面与 mdbook 类似,但更专注于“小说和虚构”。尽管足够通用,可以处理许多不同的项目。
  • no starch press:由正规出版社专业制作的 Rust 编程语言。保证比 mdbook-latex 出现的错误更少!
  • lumpy-leandoc:通过 pulldown_cmark 实现 markdown-LaTeX 转换的更优雅的方法,比当前 md2tex 提供的方法更优雅。还包括通过 Rayon 实现并行性和通过 syntect 实现语法高亮!

mdbook-latex 无法构建我的书籍!现在怎么办? >:(

自动方法

哎呀!这意味着我还有更多工作要做。如果你 绝对需要立即得到你的 PDF,那么最快捷的选项是在你书的在线页面的右上角选择 print 图标。

另一种方法是运行 markdown 文件通过像 pandoc 这样的替代 markdown 到 LaTeX 转换器

pandoc --from markdown --to latex book/latex/MY_BOOK.md -o book/latex/MY_BOOK.pdf

或者运行它通过免费(就像免费停车一样)的在线解决方案

手动方法

然而,如果你不介意与 LaTeX 打交道,以下是当构建步骤失败时的我的过程

  1. book.toml 中的 LaTeX 配置更改为仅输出 LaTeX 和 markdown 文件
[output.latex]
latex = true
pdf = false
markdown = true
  1. 首先通过手动运行它并查找 ! LaTeX Error 来查看 tectonic 运行到错误的地方
tectonic book/latex/MY_BOOK.tex

note: this is a BETA release; ask questions and report bugs at https://tectonic.newton.cx/
Running TeX ...
error: something bad happened inside TeX; its output follows:

===============================================================================
(MY_BOOK.tex
.
.
.
! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.260 \clearpage

No pages of output.
Transcript written on MY_BOOK.log.
===============================================================================

error: the TeX engine had an unrecoverable error
caused by: halted on potentially-recoverable error as specified

啊哈!! LaTeX Error: Missing \begin{document}.

在这个例子中,mdbook-latex 失败了,没有输出非常重要的 \begin{document} 行。

  1. 修复您最喜欢的编辑器中的严重错误,并重新运行tectonic(重复此步骤,直到tectonic成功编译PDF)
ed book/latex/MY_BOOK.tex

tectonic book/latex/MY_BOOK.tex

这是一种优雅的方法吗?不。它有效吗?有时。这痛苦吗?是的。

最后

如果您特别有冒险精神,可以创建一个问题或与我联系([email protected]),以防止未来出现相同的错误。我非常乐意与您合作,帮助您编译文档!

: ^ )

二进制发布状态

  • ✅ 二进制文件可用
  • ❌ 二进制文件不可用
二进制文件? 目标
armv7-unknown-linux-gnueabihf
i686-pc-windows-gnu
i686-unknown-linux-gnu
x86_64-apple-darwin
x86_64-pc-windows-gnu
x86_64-unknown-freebsd
x86_64-unknown-linux-gnu

依赖项

~67MB
~1M SLoC