使用Gitbook生成电子书

news/2024/10/19 5:26:30/

背景

  《Google工程实践文档》相对原文Google’s Engineering Practices documentation ,部分内容过时了。需要更新中文版,并使用Gitbook把Markdown文件转换成对应的PDF电子书
  上一次生成PDF电子书是5年前,当时生成电子书的环境早已不在。此次重新搭建环境,以备忘。

工具

  需要安装3个工具:Calibre、nvm 和nodejs。

  1. Calibre
    使用Gitbook生成PDF文件时,底层会调用Calibre生成PDF文件。
  2. nvm
    用于管理nodejs版本。
    本机已经是最新版本的nodejs(版本号20.11.0)。由于gitbook官方长期未更新,与最新版本的nodejs不兼容。为了让其正常运行,本机只能安装较老版本(10.22.0)的nodejs。
    安装nvm的目的是为了随时能在不同的nodejs版本间切换。当需要使用gitbook时,使用10.22.0,否则,其他场合使用最新版本。
  3. Nodejs和gitbook
    Gitbook命令基于nodejs(版本号10.22.0)运行。

安装步骤

1. 安装Calibre
  Calibre 必须使用3.48版本。
  最新版本的Calibre虽然也能生成PDF文件,但兼容性不好,生成的PDF文件比较大,而且会内嵌很多字体。除此之外,在生成的PDF文件中,电子目录(左边的书签)无法正确定位到文档中正确的位置。
  在官网:Previous calibre releases 可以找到 3.48 版本。
  下载后,双击安装。

2. 安装nvm
 1) 从Github上下载windows版安装文件 nvm-setup.exe 。
  下载链接:https://github.com/coreybutler/nvm-windows/release 。
  安装过程中,会提示找到已安装的版本,是否要纳入版本管理,点击“是”。
 2) 安装nvm之后,到命令行中执行  
  $ nvm npm_mirror https://registry.npmmirror.com
 3) 安装 10.22.0 版本的nodejs,运行
  $ nvm install 10.22.0
 4) 切换到版本 10.22.0,运行
  $ nvm use 10.22.0
 5) 运行 node -v,运行结果显示
  $ node –v
  v10.22.0

3. 安装gitbook并验证版本为3.2.3
  $ npm install gitbook-cli –g
  $ gitbook –v
  CLI version: 2.3.2
  GitBook version: 3.2.3

运行流程

  Gitbook生成电子书的流程如下图所示:

生成PDF电子书

  1. 下载电子书到本地。
  2. 进入电子书目录,运行 gitbook pdf ./ ./Google工程实践文档.pdf

  运行help命令可以查询gitbook的用法。
    $ gitbook help
    build [book] [output]       build a book
        –log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)
        –format                Format to build to (Default is website; Values are
    ……

参考资料


http://www.ppmy.cn/news/1448961.html

相关文章

SQL中为什么不要使用1=1?

在SQL中,11 本身是一个始终为真的条件。在某些情况下,开发者可能会在SQL查询中看到 11,这通常是因为它是动态构建查询时的一个起点或占位符。然而,是否应该避免使用 11,这取决于具体的上下文和最佳实践。 以下是关于 …

django之select_related、prefetch_related

django中的ORM查询,针对复杂的查询,处理使用A.objects.filter(foreign_name__field)进行查询外。还可以使用select_related 和prefetch_related,进行性能的优化 select_related: 将会根据外键关系(注意: 仅限单对单和单对多关系),在执行查询语句的时候通过创建一条包含…

《从Paxos到Zookeeper》——第四、七章:基本概念及原理

目录 第四章 Zookeeper与Paxos 4.1 Zk是什么 4.1.1 Zk特性 4.1.2 Zk基本概念 4.1.2.1 集群角色(Follower, Leader, Observer) 4.1.2.2 数据模型 4.1.2.3 ZNode(数据节点) 4.1.2.4 Session(会话) 4.1.2.5 ACL(Access Control Lists) 4.1.2.6 Watcher(事件…

05 - 步骤 JSON output

简介 JSON Output 步骤用于将 Kettle 中的行流数据写出到 JSON 格式的文件或流中。它允许用户将 Kettle 中处理过的数据以 JSON 格式进行输出,适用于各种数据处理和交换场景。 什么是行流数据? preview data 中的每一个字段都是一个行流数据 使用 场…

K8S执行完毕kubectl init xxx 执行 kubectl get ns 报错才connect: connection refused

问题场景: 在安装完毕K8S之后,执行 kubectl get ns 报错: [rootmaster ~]# kubectl get pods E0501 08:34:55.770030 11268 memcache.go:265] couldnt get current server API group list: Get "https://192.168.1.100:6443/api?ti…

【Flutter 面试题】 什么是BuildContext,它有什么用

【Flutter 面试题】 什么是BuildContext,它有什么用? 文章目录 写在前面口述回答补充说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 …

RedisTemplate实现令牌桶限流

令牌桶 Redisson可以实现很多东西,在Redis的基础上,Redisson做了超多的封装,不仅可以用来实现分布式锁,还可以帮助我们实现令牌桶限流。 Ratelimter主要作用就是可以限制调用接口的次数。主要原理就是调用接口之前,需要拥有指定个令牌&#…

PCL 点云中的平面点云提取

平面点云提取 一. 索引提取1.1 算法概念1.2 算法流程1.3 主要函数二.代码示例三.结果示例一. 索引提取 1.1 算法概念 平面点云提取:是指从点云数据中提取出属于平面的点的过程。 1.2 算法流程 使用pcl::SACSegmentation类进行点云分割的基本步骤如下: 创建一个pcl::SACSegm…