MkDocs的使用-流程图、序列图
2017-05-04 00:00
549 查看
标准Markdown语法并不支持流程图、序列图的绘制,好在MkDocs能够通过第三方插件pymdown-extensions扩展来实现。
在前篇中已经完成了pymdown-extensions的安装,现在可以使用superfences来实现流程图及序列图的绘制。
superfences使用flowchart.js和sequence-diagram.js两种javascript库来实现流程图和序列图的绘制,配置过程如下:
superfences首先将md文件中```flow以及```sequence区块部分的逻辑代码转换为
<pre class="uml-flowchart"><code>...</code></pre>
及
<pre class="uml-sequence-diagram"><code>...</code></pre>
并插入到最终生成的html文件中,然后umlconvert.js通过flowchart.js、sequence-diagram.js将html页面标签中的uml-flowchart和uml-sequence-diagram部分的逻辑代码转换为流程图以及序列图。
1.安装
2.修改mkdocs.yml
在前篇中已经完成了pymdown-extensions的安装,现在可以使用superfences来实现流程图及序列图的绘制。
superfences使用flowchart.js和sequence-diagram.js两种javascript库来实现流程图和序列图的绘制,配置过程如下:
一 、修改mkdocs.yml配置
site_name: My Docs extra_javascript: - https://cdnjs.cloudflare.com/ajax/libs/raphael/2.2.7/raphael.min.js - https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js - https://cdnjs.cloudflare.com/ajax/libs/js-sequence-diagrams/1.0.6/sequence-diagram-min.js - https://cdnjs.cloudflare.com/ajax/libs/flowchart/1.6.5/flowchart.min.js - js/umlconvert.js markdown_extensions: - pymdownx.superfences
superfences首先将md文件中```flow以及```sequence区块部分的逻辑代码转换为
<pre class="uml-flowchart"><code>...</code></pre>
及
<pre class="uml-sequence-diagram"><code>...</code></pre>
并插入到最终生成的html文件中,然后umlconvert.js通过flowchart.js、sequence-diagram.js将html页面标签中的uml-flowchart和uml-sequence-diagram部分的逻辑代码转换为流程图以及序列图。
二 、添加umlconvert.js
在docs目录下创建js目录,进入js目录创建umlconvert.js,文件内容如下:(function (document) { function convertUML(className, converter, settings) { var charts = document.querySelectorAll("pre." + className + ',div.' + className), arr = [], i, j, maxItem, diagaram, text, curNode, isPre; // Is there a settings object? if (settings === void 0) { settings = {}; } // Make sure we are dealing with an array for(i = 0, maxItem = charts.length; i < maxItem; i++) arr.push(charts[i]); // Find the UML source element and get the text for (i = 0, maxItem = arr.length; i < maxItem; i++) { isPre = arr[i].tagName.toLowerCase() == 'pre'; if (isPre) { // Handles <pre><code> childEl = arr[i].firstChild; parentEl = childEl.parentNode; text = ""; for (j = 0; j < childEl.childNodes.length; j++) { curNode = childEl.childNodes[j]; whitespace = /^\s*$/; if (curNode.nodeName === "#text" && !(whitespace.test(curNode.nodeValue))) { text = curNode.nodeValue; break; } } // Do UML conversion and replace source el = document.createElement('div'); el.className = className; parentEl.parentNode.insertBefore(el, parentEl); parentEl.parentNode.removeChild(parentEl); } else { // Handles <div> el = arr[i]; text = el.textContent || el.innerText; if (el.innerText){ el.innerText = ''; } else { el.textContent = ''; } } diagram = converter.parse(text); diagram.drawSVG(el, settings); } }; function onReady(fn) { if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fn); } else { document.attachEvent('onreadystatechange', function() { if (document.readyState === 'interactive') fn(); }); } } onReady(function(){ convertUML('uml-flowchart', flowchart); convertUML('uml-sequence-diagram', Diagram, {theme: 'simple'}); }); })(document);
二 、添加test.md
```flow st=>start: Start:>http://www.google.com[blank] e=>end:>http://www.google.com op1=>operation: My Operation sub1=>subroutine: My Subroutine cond=>condition: Yes or No?:>http://www.google.com io=>inputoutput: catch something... st->op1->cond cond(yes)->io->e cond(no)->sub1(right)->op1 ``` ```sequence Title: Here is a title A->B: Normal line B-->C: Dashed line C->>D: Open arrow D-->>A: Dashed open arrow ```
三 、运行MkDocs
可惜没有得到想要的结果,发现MkDocs(版本0.16.3)生成的html页面里使用了require.js,和flowchart.js冲突,将次问题反馈到了pymdown-extensions的开源站点,得到的解决办法是更改MkDocs使用的主题四 、修改MkDocs主题
安装了若干主题,终于找到一个不冲突的mkdocs-material1.安装
pip install mkdocs-material
2.修改mkdocs.yml
site_name: My Docs theme: 'material' extra_javascript: - https://cdnjs.cloudflare.com/ajax/libs/raphael/2.2.7/raphael.min.js - https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js - https://cdnjs.cloudflare.com/ajax/libs/js-sequence-diagrams/1.0.6/sequence-diagram-min.js - https://cdnjs.cloudflare.com/ajax/libs/flowchart/1.6.5/flowchart.min.js - js/umlconvert.js markdown_extensions: - pymdownx.superfences
相关文章推荐
- 高效程序员秘籍(7):使用Diagram Designer快速绘制流程图、UML等图形
- 私人笔记:DVD制作的标准流程图+小日本使用方法+rmvb导入pr的过程
- 流程图控件FlowChart.NET组件的使用(二)
- 【原】画流程图工具visio使用技巧汇总
- Json格式数据使用流程图
- 流程图控件FlowChart.NET使用教程:设置图表样式和主题
- 流程图控件FlowChart.NET组件的使用(二)
- 使用VTemplate模板引擎动态生成订单流程图
- jedis 连接池使用流程图
- 使用silverlight构建一个工作流设计器(十五)(缩放流程图)
- 使用graphviz绘制流程图
- 流程图控件FlowChart.NET中分形树布局算法的使用
- 流程图控件FlowChart.NET组件的使用(一)
- 使用Xmind画流程图、脑图
- 使用visio创建跨职能流程图
- Code::Blocks 使用技巧.7-代码与流程图双向转换
- 使用Raphael绘制流程图,自绘动态箭头,可拖动,有双击事件,纯前端,兼容各种浏览器
- 如何使用ProcessOn画第一张流程图?
- 流程图控件FlowChart.NET使用教程:复合命令
- SpringMvc如何学习框架技术? 就像如上的图示一样,先掌握新技术的体系流程图。在快速弄明白程序执行流程后,在使用过程中 了解细节。