目录

前言 1.1

第一章 1.2

第二章 1.3

第二章第一节 1.3.1

第二章第二节 1.3.2

演示各种功能和效果 1.4

当前HonKit源码目录结构 1.4.1

提示hint和插图编号callout 1.4.2

代码高亮显示 1.4.3

附录 1.5

参考资料 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

有序列表编号2

有序列表编号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源码目录结构

➜  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

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