gitbook制作电子书

1 引言

GitBook 是一个开源的文档编辑和托管平台,用于创建和维护文档、手册和电子书。它基于 Markdown 和 Git 技术,帮助用户方便地编写、编辑和发布文档。

GitBook 支持将文档输出为多种格式,包括网页、PDF、ePub 等,适用于不同的阅读和分享场景。

GitBook 还提供了团队协作的功能,可以方便多人共同编辑和维护文档。

可以将其部署在 gitbook 平台(https://legacy.gitbook.com/),由于需要科学上网,本文不做详细介绍,如果需要,请见最后的参考部分;也可以部署在本地或者自己的网站上

从功能角度,可以把 gitbook 看作网页版的 obsidian 或者 hexo。gitbook工具实现前端,用户只需要关心文档的内容,遵循gitbook定义的规范,然后使用gitbook提供的命令行工具即可。

从逻辑角度看,它以主题为中心,可以把一个系列的文章梳理集中在同一主题之下,更有章法,适合用来写书或者手册。

https://github.com/GitbookIO/gitbook Start 25.9K

2 原理

其底层基于 Markdown,git,以及一些前端和文档转换技术。
用法和 vue, react, hexo 这些前端工具差不多。

GitBook 的客户端工具是 GitBook CLI,它是一个命令行的工具,用于创建、构建和发布 GitBook 项目;使用 JavaScript 编写的,依赖于 Node.js 环境。

其主要功能包括:

  • 创建项目
  • 本地预览
  • 构建静态网站
  • 生成电子书
  • 发布到 GitBook 平台
  • 安装插件

3 方法

3.1 环境

下载可用的 node docker 环境

$ docker pull node:9
$ docker run --rm -it -name node_9 --network host -v /exports/:/opt/xieyan  node:9 bash

注意:这个项目产生比较早,使用最近的工具链可能出现各种问题。l建议使用低版本的 node,否则可能因为工具链版本不匹配报graceful-fs 包相关的错误,我用 node 16 docker 后试降 graceful-fs 版本,但没有成功。

3.2 安装
$ npm install gitbook-cli -g
$ gitbook --version # 第一次使用时自动安装 gitbook
3.3 新建项目
$ mkdir book
$ cd book
$ gitbook init
$ tree -Na
3.4 启动服务
$ gitbook serve --port 4001
3.5 打包
$ gitbook build
3.6 生成电子书
$ gitbook pdf . 输出文件路径.pdf
$ gitbook epub . 输出文件路径.epub
$ gitbook mobi . 输出文件路径.mobi

注意:gitbook 借助 ebook-convert 实现格式转换,因此需要安装 calibre。

4 参考

  • gitbook入门文档
    https://segmentfault.com/a/1190000017960359
  • gitbook 安装教程
    https://blog.csdn.net/raspi_fans/article/details/129570510

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

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

相关文章

【C++初阶】STL详解(八)List的模拟实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

【深度学习笔记】03 微积分与自动微分

03 微积分与自动微分 导数和微分导数解释的可视化偏导数梯度链式法则自动微分非标量变量的反向传播分离计算 导数和微分 假设我们有一个函数 f : R → R f: \mathbb{R} \rightarrow \mathbb{R} f:R→R,其输入和输出都是标量。 如果 f f f的导数存在,这个…

GIT版本控制和常用命令使用介绍

GIT版本控制和常用命令使用介绍 1. 版本控制1.1 历史背景1.2 什么是版本控制1.3 常见版本控制工具1.4 版本控制的分类 2 Git介绍2.1 Git 工作流程2.2 基本概念2.3 文件的四种状态2.4 忽略文件2.5 Git命令2.5.1 查看本地git配置命令2.5.2 远程库信息查看命令2.5.3 分支交互命令2…

MybatisPlus—自定义ID生成器

提示 自 3.3.0 开始,默认使用雪花算法UUID(不含中划线) 方法主键生成策略主键类型说明nextIdASSIGN_ID,ID_WORKER,ID_WORKER_STRLong,Integer,String支持自动转换为 String 类型,但数值类型不支持自动转换,需精准匹配&…

WorkPlus即时通讯软件,以自主安全为底座,连接工作的一切

在当今竞争激烈的商业环境中,中大型企业对于移动办公平台的需求越来越迫切。在众多可选的平台中,WorkPlus凭借其高性价比和针对中大型企业的特色功能,成为了许多企业的首选。本文将为各位读者深度解析WorkPlus私有化部署的优势,带…

用static修饰的Java类

static修饰Java类的时候,只能修饰成员类,不能修饰其它的类,例如,不能修饰局部类、匿名类。从一个static的嵌套类不能访问外层类的类型变量、实例变量、局部变量、形式参数、异常参数、实例方法。 例如,下面的定义了一…

tensorflow和pytorch的联系与区别

TensorFlow和PyTorch是两个流行的深度学习框架,它们在很多方面都有相似之处,因为它们都旨在解决相同的问题,即构建和训练神经网络。 以下是它们之间的一些联系: 1.深度学习框架: TensorFlow和PyTorch都是开源的深度学…

学习.NET验证模块FluentValidation的基本用法(续2:其它常见用法)

FluentValidation模块支持调用When和Unless函数设置验证规则的执行条件,其中when函数设置的是满足条件时执行,而Unless函数则是满足条件时不执行,这两个函数的使用示例如及效果如下所示: public AppInfoalidator() {RuleFor(x>…

Mysql 解决Invalid default value for ‘created_at‘

在mysql版本 8.0 和 5.* 之间数据互导的过程中,老是会出现各种错误,比如 这个created_at 一定要有一个默认值, 但是我加了 default null 还是会报错,于是对照了其他的DDL 发现,需要再加 null default null 才行&#…

Kubernetes异常排查方式

集群信息&#xff1a; 1. 显示 Kubernetes 版本&#xff1a;kubectl version 2. 显示集群信息&#xff1a;kubectl cluster-info 3. 列出集群中的所有节点&#xff1a;kubectl get nodes 4. 查看一个具体的节点详情&#xff1a;kubectl describe node <node-name> 5. 列…

从0开始学习JavaScript--JavaScript事件:响应与交互

JavaScript的事件处理是Web开发中至关重要的一部分&#xff0c;通过事件&#xff0c;能够实现用户与页面的互动&#xff0c;使得网页更加生动和交互性。本文将深入探讨JavaScript事件的各个方面&#xff0c;包括事件的基本概念、事件类型、事件对象、事件冒泡与捕获、事件委托、…

如何看待 2023 OPPO 开发者大会?潘塔纳尔进展如何?AndesGPT 有哪些亮点?

在2023年11月16日举行的OPPO开发者大会&#xff08;ODC23&#xff09;上&#xff0c;OPPO带来了全新ColorOS 14、全新互联网服务生态以及健康服务进展&#xff0c;这些新动态中有许多值得关注的地方。 1、全新ColorOS 14&#xff1a; 效率提升&#xff1a;ColorOS 14通过一系列…

使用多个域名存储网站资源更有效

1.cdn缓存更加方便 ​ cdn是构建在现有网络基础之上的智能虚拟网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容均发、调度等功能模块&#xff0c;让用户就近获取所需要的内容&#xff0c;降低网络拥堵&#xff0c;提高用户访问速度和命中…

29 - 装饰器模式:如何优化电商系统中复杂的商品价格策略?

开始今天的学习之前&#xff0c;我想先请你思考一个问题。假设现在有这样一个需求&#xff0c;让你设计一个装修功能&#xff0c;用户可以动态选择不同的装修功能来装饰自己的房子。例如&#xff0c;水电装修、天花板以及粉刷墙等属于基本功能&#xff0c;而设计窗帘装饰窗户、…

学习grdecl文件格式

最近在学习grdecl文件格式&#xff0c;文档不多。查找资料发现&#xff0c;这个格式的文件是由斯伦贝谢公司的ECLIPSE专业软件生成的。 搜到一些文档&#xff0c;都是2010年之前的&#xff0c;似乎有些用处。文档也交代了这个文件格式分为二进制和文本格式。找到了一个库libecl…

console输出并写入

搞了好久搞出来的代码 //用两种代码 define保留 只显示时间 不显示年月 【成功】 #include <iostream> #include <fstream> #include <chrono> #include <ctime> #include <cstdarg>#define LOG_TO_CONSOLE_AND_FILE_WITH_DATE //#define LOG_T…

虚拟机可ping树莓派树莓派无法ping虚拟机 的解决办法

问题描述 在学习交叉编译的过程中&#xff0c;发现了树莓派无法ping通虚拟机的问题。所以我尝试了各种ping&#xff0c;发现&#xff1a; 虚拟机可以ping通树莓派和主机树莓派可以ping通主机主机可以ping通树莓派和虚拟机唯独树莓派没法ping通虚拟机 尝试各种方法后找到一种…

Qt手写ListView

创建视图&#xff1a; QHBoxLayout* pHLay new QHBoxLayout(this);m_pLeftTree new QTreeView(this);m_pLeftTree->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑m_pLeftTree->setFixedWidth(300);创建模型和模型项&#xff1a; m_pLeftTree…

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…

如何在3dMax中根据AutoCAD地形规划文件对地形进行建模?

在3dMax中根据Autocad地形规划文件对地形进行建模的方法 直入主题&#xff0c;要根据包含地形图的DWG (Autocad) 文件进行地形建模&#xff0c;方法步骤如下&#xff1a; 1.运行3dmax软件&#xff0c;点击“文件&#xff08;File&#xff09;->导入&#xff08;Import&…