使用Gitbook生成电子书

背景

  《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
    ……

参考资料

  • 用Gitbook制作电子书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux mint 简介

Linux Mint 的起源和特点: Linux Mint 是一个基于 Ubuntu 的用户友好型 Linux 发行版,自2006年起开始开发。它以其简洁的桌面环境和对新用户的易接近性而受到赞誉。Linux Mint 提供了多种桌面环境,包括但不限于 Cinnamon、MATE 和 Xfce&#…

虚拟键代码

虚拟键代码 虚拟键码 (Winuser.h) - Win32 apps | Microsoft Learn 在Windows操作系统中,虚拟键代码(Virtual-Key Codes)是一组用来表示键盘上按键的数值。这些代码通常用于Windows API函数,以便程序能够识别和处理键盘输入。 虚拟…

暴雨总裁孙辉:脚踏实地创未来

“所有行业都有算力的身影。”暴雨信息总裁孙辉说。身份核验、楼宇通行、仓储物流、交通出行……暴雨信息的算力资源正在各个领域加速落地。 2015年,孙辉与两名合伙人创办了暴雨信息,这是中国最早的一批算力公司之一。当时23岁的孙辉想法很简单。“看好…

Linux第三节--常见的指令介绍集合(持续更新中)

点赞关注不迷路!,本节涉及初识Linux第三节,主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀 期待与你共同进步! Linux下基本指令 1. man指令 Linu…

百科词条创建机构有哪些?

在互联网时代,百度百科作为我国最大的中文百科全书,已经成为人们获取知识、查询信息的重要途径。随着百度百科影响力的不断扩大,越来越多的人和企业试图通过创建企业词条来提升自身知名度,企业和个人为了在百度百科上占据一席之地…

ICP(迭代最近点)定位算法

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言ICP算法原理C++代码实现优缺点分析:前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对ICP(迭代最近点)…

GoLand安装教程

GoLand-安装 GoLand是Go语言编程开发的一款工具,和 IntelliJ IDEA 一样,同为Jetbrains公司旗下的产品,专为Go语言开发的跨平台商业集成开发环境(IDE),它的功能非常强大,它还不仅仅是一个Go IDE…

记一次动态规划的采坑之旅, 741摘樱桃 https://leetcode.cn/problems/cherry-pickup/description/

首次看题目时,发现是困难。立马想到了,动态规划。 再看题目, 摘樱桃,还要返回摘两次,求摘最多的樱桃。 大脑第一反应就是: 先使用动态规划,找到 0 0 到 n-1 n-1处走过的最大樱桃, 并…

重写muduo之EPollPoller

1、EPollPoller.h EPollPoller的主要实现:作为poller的派生类,把基类给派生类保留的这些纯虚函数的接口实现出来。 override表示在派生类里面,这些方法是覆盖方法。必须由编译器来保证在基类里面一定有这些函数的接口的声明。在派生类要重写…

从零开始学RSA:已知p+q和(p+1)(q+1)和已知p-q和n

(17)已知pq和(p1)(q1) 题目给出pq,(p1)(q1),e和c。 首先需要求出phi,然后求解d,最后再求解m。 phi (p-1)(q-1) pq - (pq) 1 pq的值题目已经给出了,接下来只需要求出pq的值即可求出phi的值。题目还给出了(p1)(q1…

从OutputStream类看Java中的IO流操作

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

C#连接S7-200 smart通讯测试

honeytree 一、编程环境 VS2022软件,选择windows窗体应用(.NET FrameWork):​博途TIA/WINCC社区VX群 ​博途TIA/WINCC社区VX群 添加NuGet程序包;S7netplus 二、引用http://S7.net 三、建立PLC链接 S7-200smart和…

使用Docker安装Jenkins

大家好,今天给大家分享如何使用docker安装jenkins,关于docker的安装和常用命令可以参考下面两篇文章,使用docker可以提高资源利用率,能够在不同的环境中轻松迁移和部署应用,在本文中就不过多赘述了。 Docker常用命令 …

工厂模式+策略模式完成多种登录模式的实现

前提 (简单工厂不属于设计模式,而是一种编程思想【抽象一层出来】)工厂方法模式、抽象工厂模式 以上都是为了解耦,如果考虑多个纬度(如需要同时考虑多种电器,多种品牌)则优先考虑抽象工厂。 …

怎么通过Java语言实现远程控制无人售货柜

怎么通过Java语言实现远程控制无人售货柜呢? 本文描述了使用Java语言调用HTTP接口,实现控制无人售货柜,独立控制售货柜、格子柜的柜门。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂商1智能WiFi控…

ASP.NET网上图书预约系统的设计

摘 要 《网上图书预约系统的设计》是以为读者提供便利为前提而开发的一个信息管理系统,它不仅要求建立数据的一致性和完整性,而且还需要应用程序功能的完备、易用等特点。系统主要采用VB.NET作为前端的应用开发工具,利用SQL Server2000数据…

7-35 有理数均值

题目链接&#xff1a;7-35 有理数均值 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <iostream> using namespace std;// 计算公约数 int calGcd(int a, int b) {int gcd;bool negative false;if (a a / b * b) { // b整除areturn b;}…

Llama3-Tutorial之Llama3本地Web Demo部署

Llama3-Tutorial之Llama3本地 Web Demo部署 Llama3-Tutorial之Llama3本地Web Demo部署章节。 参考&#xff1a; https://github.com/SmartFlowAI/Llama3-Tutorial 1. 环境配置 conda create -n llama3 python3.10conda activate llama3conda install pytorch2.1.2 torchvision0…

【RAG 论文】SKR:Self-Knowledge 指导下的 RAG

论文&#xff1a;Self-Knowledge Guided Retrieval Augmentation for Large Language Models ⭐⭐⭐⭐ Tsinghua, arXiv:2310.05002 文章目录 一、论文速读二、实现细节2.1 数据的收集2.2 引出 LLM 的 Self-Knowledge 的方法1&#xff09;Direct Prompting2&#xff09;In-Cont…

【微服务 开发】微服务介绍,服务拆分,远程调用

微服务 微服务SpringCloud 拆分如何拆分 远程调用 微服务 微服务是一种软件架构风格&#xff0c;它是以专注于单一职责的很多小型项目为基础&#xff0c;组合成复杂的大型应用 单体架构 将业务的所有功能集中在一个项目中进行开发&#xff0c;打成一个包部署 微服务的特征&…