目录

1. 前言   1.1

2. 第一章   1.2

3. 第二章   1.3

1. 第二章第一节   1.3.1

2. 第二章第二节   1.3.2

4. 演示各种功能和效果   1.4

1. 当前HonKit源码目录结构   1.4.1

2. 提示hint和插图编号callout   1.4.2

3. 代码高亮显示   1.4.3

5. 附录   1.5

1. 参考资料   1.5.1

HonKit演示

- 最新版本： v2.0.0

- 更新时间： 20241007

简介

crifan的HonKit模版，用于演示如何用HonKit创建一个自己的book电子书。

源码+浏览+下载

本书的各种源码、在线浏览地址、多种格式文件下载如下：

HonKit源码

- crifan/honkit_demo: HonKit演示

如何使用此HonKit源码去生成发布为电子书

详见：crifan/honkit_template: demo how to use crifan honkit template and demo

在线浏览

- HonKit演示 book.crifan.org

- HonKit演示 crifan.github.io

离线下载阅读

- HonKit演示 PDF

- HonKit演示 ePub

- HonKit演示 Mobi

版权和用途说明

此电子书教程的全部内容，如无特别说明，均为本人原创。其中部分内容参考自网络，均已备注了出处。如发现有侵权，请通过邮箱联系我  admin 艾特 crifan.com ，我会尽快删除。谢谢合作。

各种技术类教程，仅作为学习和研究使用。请勿用于任何非法用途。如有非法用途，均与本人无关。

鸣谢

感谢我的老婆陈雪的包容理解和悉心照料，才使得我 crifan 有更多精力去专注技术专研和整理归纳出这些电子书和技术教程，特此鸣谢。

其他

作者的其他电子书

本人 crifan 还写了其他 150+ 本电子书教程，感兴趣可移步至：

crifan/crifan_ebook_readme: Crifan的电子书的使用说明

关于作者

关于作者更多介绍，详见：

关于CrifanLi李茂 – 在路上

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2024-10-07 11:44:01

第一章标题

普通的无序列表：

- 无序列表元素a

- 无序列表元素b

- 无序列表元素c

有序列表：

1. 有序列表编号1

2. 有序列表编号2

3. 有序列表编号3

第一章第一节

第一章第一节的内容

第一章第二节

第一章第二节的内容

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-17 20:39:28

第二章标题

下面用于演示效果，会把子章节放到单独的 md 文件中。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-17 20:39:28

第二章第一节

第二章第一节的内容

演示引用 img 文件夹中的图片的效果：

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-17 20:39:28

第二章第二节

第二章第二节的内容

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-17 20:39:28

演示各种功能和效果

下面各个章节用来演示 HonKit 中的各种功能和效果。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-29 21:02:49

当前 HonKit 源码目录结构

➜  honkit_demo git:(main) ✗ tree .

.

├── Makefile

├── README.md

├── README_current.json

├── book.json

├── book_current.json

├── node_modules -> ../../generated/honkit/node_modules     # 使用HonKit目标中的node_modules

├── package.json

└── src

├── README.md

├── SUMMARY.md

├── appendix

│   ├── README.md

│   └── reference.md

├── assets

│   ├── favicon.ico

│   └── img

│       └── crifan_github_home.png

├── chapter_1

│   └── README.md

├── chapter_2

│   ├── README.md

│   ├── ch2_section_1.md

│   └── ch2_section_2.md

└── chapter_3

├── README.md

├── ch3_code_highlight.md

├── ch3_hint_callout.md

└── ch3_structure_list.md

8 directories, 20 files

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-10-20 15:33:05

提示 hint 和插图编号 callout

hint  ==  callout  == 提示/警告/错误等特殊格式

演示用插件 callout （具体是honkit-plugin-blockquote-callout)实现的 callout == hint == alert ，即各种类型的提示/提醒的效果

语法：

> [!{type}]

> your text

其中 {type} 是下面中的任意一种：

- NOTE

- TIP

- IMPORTANT

- WARNING

- CAUTION

- UnsupportedAnnotation

效果如下的显示：

注解= NOTE

Note

注解类信息中的 内容

提示= TIP

Tip

提示类信息中的 内容

重要= IMPORTANT

Important

重要类信息中的 内容

警告= WARNING

Warning

警告类信息中的 内容

告诫= CAUTION =error=错误

Caution

告诫类信息中的 内容

其他的、普通的block内容= UnsupportedAnnotation

[!UnsupportedAnnotation]

没有此处特殊格式的、普通的、block块的内容

注意，每行内容之间，要保留一行多余的 > ，才是普通的block内容的格式

支持参数自定义

举例

- [!Warning|title:※注]

- 把 Warning 的title标题的文字，换成： ※注

代码：

> [!Warning|title:※注]

> 把标题"Warning"换成：`※注`

效果：

※注

把标题"Warning"换成： ※注

相关

注意到另外一个（旧的gitbook的）插件：

fzankl/gitbook-plugin-flexible-alerts: GitBook plugin to convert blockquotes into beautiful and configurable alerts using preconfigured or own styles and alert types.

其语法格式和此处很类似

且看到有额外的参数设置：

Key=关键字

Allowed value=允许的值

style

One of follwowing values:  callout ,  flat

label

Any text

icon

A valid Font Awesome icon, e.g.  fa fa-info-circle

className

A name of a  CSS class    which specifies the look and feel

labelVisibility

One of follwowing values:  visible  (default),  hidden

iconVisibility

One of follwowing values:  visible  (default),  hidden

但是经过实际测试，此处并不支持这些参数。

记录于此，仅供参考。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2024-10-07 11:42:30

代码高亮显示

此处 HonKit 中代码高亮的插件用的是 prism

官网是：http://prismjs.com

下面列出常见的几种代码的代码高亮效果。

markdown

# HTTP简介

`HTTP`=`Hyper Text Transfer Protocol`=`超文本传输协议`

HTTP的总体思路是：

* 客户端：向服务器发送一个`请求`=`Request`，请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。

* `服务器`：以一个状态行作出`响应`=`Response`，相应的内容包括消息协议的版本，成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

简而言之就是一个你问我答的协议：

* 客户端Client 问=`请求`=`Request`

* 服务器Server 答=`响应`=`Response`

关于HTTP的相关的详细知识，或许很多人不是很熟悉。

但是：

- 作为普通电脑用户的你，经常用`浏览器`（`IE`/`Chrome`/`Firefox`等）去浏览网页时

- 作为程序开发，用网络库去调用服务器后台提供的接口时

其实内部都用到了HTTP的技术。

python

def saveJsonToFile(jsonDict, fullFilename, indent=2, fileEncoding="utf-8"):

"""

save dict json into file

for non-ascii string, output encoded string, without \uxxxx

"""

with codecs.open(fullFilename, 'w', encoding="utf-8") as outputFp:

json.dump(jsonDict, outputFp, indent=indent, ensure_ascii=False)

################################################################################

# Main Part

################################################################################

templateJson = {}

currentJson = {}

# run python in : /Users/crifan/GitBook/Library/Import/youdao_note_summary

currPath = os.getcwd()

curBasename = os.path.basename(currPath)

CurrentGitbookName = curBasename

print("CurrentGitbookName=%s" % CurrentGitbookName) #youdao_note_summary

bookJsonTemplateFullPath = os.path.join(BookRootPath, BookJsonTemplateFilename)

# print("bookJsonTemplateFullPath=%s" % bookJsonTemplateFullPath)

# /Users/crifan/GitBook/Library/Import/book_common.json

with open(bookJsonTemplateFullPath) as templateJsonFp:

templateJson = json.load(templateJsonFp, encoding="utf-8")

javascript

// extract single sub string from full string

// eg: extract '012345678912345' from 'www.ucows.cn/qr?id=012345678912345'

export function  extractSingleStr(curStr, pattern, flags='i') {

let extractedStr = null;

let rePattern = new RegExp(pattern, flags);

console.log(rePattern);

let matches = rePattern.exec(curStr);

console.log(matches);

if (matches) {

extractedStr = matches[0];

console.log(extractedStr);

}

if (extractedStr === null) {

extractedStr = "";

}

console.log(`curStr=${curStr}, pattern=${pattern}, flags=${flags} -> extractedStr=${extractedStr}`);

return extractedStr;

}

html

<!DOCTYPE HTML>

<html lang="zh-hans" >

<head>

<meta charset="UTF-8">

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

<title>HTTP相关 · HTTP知识总结</title>

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

<meta name="description" content="">

<meta name="generator" content="GitBook 3.2.3">

<meta name="author" content="Crifan Li <admin@crifan.com>">

<link rel="stylesheet" href="../gitbook/style.css">

<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-plus/search.css">

css

a#weixin {

position: relative;

}

#weixin img {

visibility: hidden;

opacity: 0;

transform: translate(0, 10px);

transition: all 0.3s ease-in-out;

position: absolute;

right: -30px;

bottom: 40px;

width: 150px;

height: 150px;

}

#weixin:hover img {

visibility: visible;

transform: translate(0, 0px);

opacity: 1;

}

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-29 21:01:57

附录

下面列出相关参考资料。

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-17 20:39:28

参考资料

- crifan (Crifan Li)

- 【记录】给Gitbook添加更多配置和功能

- 【已解决】提取Gitbook中Makefile公共部分

- 【已解决】gitbook中book.json中能否把公共部分提取出来

crifan.org，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2022-03-29 21:03:15

Table of Contents

前言

第一章

第二章

第二章第一节

第二章第二节

演示各种功能和效果

当前HonKit源码目录结构

提示hint和插图编号callout

代码高亮显示

附录

参考资料