# 高级用法 >如果想要修改页面的显示或者定制某些页面的部分, 可以参考官方文档上的 [Customization 部分](https://toolchain.gitbook.com/templating/). 以下只介绍一些常用的定制功能. **[1. 主题](#主题)**
**[2. 定义变量](#定义变量)**
**[3. 页面的通用修改](#页面的通用修改)**
**[4. 插件](#插件)**
**[5. 流程图](#流程图)** ## 主题 gitbook 支持主题, 当你的 gitbook 应用了这些主题之后, 页面显示内容的方式都会发生改变. [这里](#插件)是使用主题的方法. 同一时间只能使用一个主题, 下面是一些常用的主题. ### 默认主题 本文档现在用的就是默认主题 ### faq 主题 https://github.com/GitbookIO/theme-faq ![api](/image/theme-faq.png) ### api 主题 https://github.com/GitbookIO/theme-api ![api](/image/theme-dark.png) ## 定义变量 ### 局部变量 我们可以在每个 Markdown 页面中定义变量, 并在接下来的页面内容中使用这些变量, 比如我们在某个页面 xxx.md 中这样写: ``` {% set softwareVersion = "1.0.0" %} Current version is {{ softwareVersion }}. // 页面将会显示为 Current version is 1.0.0. ``` ### 全局变量 除了局部变量外, 你也可以在项目根目录下的 `book.json` 中定义全局变量, 比如 ``` ... //variables 与 title 属性平级 "variables": { "admin": "张三" } ``` 定义好之后, 就可以在普通的页面中使用这些变量了. ``` 联系管理员 {{ book.admin }} 解决 // 页面将会显示为 联系管理员 张三 解决 ``` ### 系统变量 在上面全局变量的使用中, 我们可以发现使用的是 `book.admin`, 其实这里的 `book` 就是一个系统变量, 跟他类似的还有很多系统变量, 用户都可以在页面中的任何地方去使用这些系统变量 需要注意的是, 系统变量不能动态的被修改(除非使用插件才有可能做到), 只能提前在相应的文件中定义好. ``` //像下面这种语法是错误的, 无法动态为一个系统变量赋值 {% set book.admin = "李四" %} ``` 想要了解更多的系统变量, 请参考[这里](https://toolchain.gitbook.com/templating/variables.html) ## 页面的通用修改 上面已经介绍过页面的主题, 当我们没有主动设置一个主题时, gitbook就会自动应用它自带的默认主题. 在使用主题后, 所有 gitbook 页面都按照主题所设置的模板规则来显示, 我们可以对主题的模板规则进行修改, 这样的修改就会应用到所有页面. 比如对于我们使用的默认模板来说, 如果我们想要修改这个默认模板的行为, 比如修改页面的 title, 可以直接对这个文件 `_layouts/website/page.html` 进行修改(没有的话请自行创建) ``` {% extends template.self %} // 继承模板所有的内容 {% block title %} // 对模板中的 title block 进行覆写 Gitbook 帮助文档 {% endblock %} ``` 对于其它的主题, 比如 api 主题或是 faq, 也是进行类似的操作就可以修改模板的行为, 只是每个模板的具体的参数和修改方式不同 ## 插件 插件是最主要的对 gitbook 进行定制化的工具, 即使主题也是插件的一种. 要使用插件, 我们需要在 `book.json` 中先声明. 以 "api 主题" 这个插件为例, 首先我们需要添加下面的内容到 `book.json` 中, ``` { "plugins": ["theme-api"], "pluginsConfig": { "theme-api": { "theme": "dark" } } } ``` 其中, `plugins` 中声明所有你想要安装的插件的名称, `pluginsConfig` 中可以对每个插件的可选配置进行修改, 比如 `theme-api` 的可选配置就是主题的颜色, 有 dark 和 light 两个选择给用户使用. 常用插件列表可以参考这些: * https://yangjh.oschina.io/gitbook/faq/Recommand.html * http://gitbook.wiliam.me/plugins.html >要注意, 有些网络上的插件由于版本太老旧, 已经不适合现在的版本, 所以有的时候会出现即使安装了插件也没有任何效果的情况 ## 流程图 当前的项目中, 已经在 scripts 文件夹下引入了 mermaidjs, 通过这个 js 库可以实现在 markdown 中直接通过代码的形式生成流程图. 以下是示例.
```mermaid graph TD; A-->B; A-->C; B-->D; C-->D; ```
--- ```mermaid graph TD; A-->B; A-->C; B-->D; C-->D; ``` mermaid 不仅可以生成流程图, 还可以生成时序图以及甘特图. 详情在这里了解: https://mermaidjs.github.io/ 流程图在线实时预览生成器: https://mermaidjs.github.io/mermaid-live-editor/