背景
工作、生存中有很多写文档的需要,如何能力进步写作效率?抉择 适合的工具 加失当的办法。上面分享一些工具和办法,为你的写作助力。
写作工具
对于我来说 MarkDown+ 思维导图 是一种效率极佳的写作形式。思维导图能够将我的思考清晰的展现,而后依照常识脉络欠缺文章内容。文章写作应用 MarkDown,MarkDown 编辑工具很多,通过应用比拟我最终抉择 Typora + MindNode。
Typora 正式版本曾经开始付费,89 元买断机制,免费版能够下载历史 Beta 版本。
文档格局互转
有的时候,咱们须要做文件的各种转换以满足展现场景,比方 Markdown 转思维导图。
Mind to Markdown
思维导图转换为 Markdown,MindNode 和 XMind 这两个工具间接导出 Markdown 格式文件即可。
Markdown to Mind
应用 markmap 能够将 Markdown 转换为可视化、可交互的 HTML 格局的思维导图。
本文转换进去的成果如下
形式一:在线转换(https://markmap.js.org/repl)粘贴 markdown 到编辑区就能够导出 Html 或 SVG。
形式二:在 vscode 中应用,装置插件(https://marketplace.visualstu…)
形式三:装置 markmap-cli 命令工具。
npm install -g markmap-cli
# 转换
markmap index.md -o index.html
万能转换
一个弱小的命令行工具 Pandoc,用于将文件从一种标记语言转换为另一种标记语言。罕用的标记语言包含 Markdown、ReStructuredText、HTML、LaTex、ePub 和 Microsoft Word DOCX。
在线转换地址(https://pandoc.org/try)。
Mac 上间接应用 brew 装置
brew install pandoc
反对格局如下:
Input formats: native, json, markdown, markdown+lhs, rst, rst+lhs, docbook,
textile, html, latex, latex+lhs
Output formats: native, json, html, html5, html+lhs, html5+lhs, s5, slidy,
slideous, dzslides, docbook, opendocument, latex, latex+lhs,
beamer, beamer+lhs, context, texinfo, man, markdown,
markdown+lhs, plain, rst, rst+lhs, mediawiki, textile, rtf, org,
asciidoc, odt, docx, epub
Markdown 转 Html
pandoc index.md -o index.html -c Github.css
Markdown 转 Word
pandoc index.md -o index.docx -c Github.css
Markdown 转 PDF,PDF 转换绝对简单一些。转换分两步骤,所以须要先装置 TeX Live 或者 MiKTeX。
- 第一步,Markdown 文件被转为 LaTeX 源文件。
- 第二步,调用零碎的
pdflatex
(默认应用),xelatex
或者其余 TeX 命令,将.tex
文件转换为最终的 PDF 文件。
brew install texlive
pandoc index.md -o index.pdf
如果内容蕴含中文会呈现如下报错,这是因为 Pandoc 默认应用的 pdflatex
命令无奈解决 Unicode 字符,咱们须要应用 xelatex
,并通过 CJKmainfont
指定中文字体。能够通过 fc-list :lang=zh
命令查问反对的中文字体。
Error producing PDF.
! LaTeX Error: Unicode character 大 (U+5927)
not set up for use with LaTeX.
Macos 上面咱们抉择 PingFang SC。
pandoc --pdf-engine=xelatex -V CJKmainfont="PingFang SC" index.md -o index.pdf
如果内容须要对图表,方程式,表格和穿插援用进行编号,能够装置 pandoc-crossref。装置和语法如下:
brew install pandoc-crossref
{#fig:label}
: 图片![img](img.png){#fig:key_img}
标记图片援用 Key,而后在须要援用的地位加上[@fig: key_img]
。{#eq:label}
: 公式$$ math $${#eq:math}
{#sec:label}
: 章节{#tbl:label}
: 表格
# 转换 PDF
pandoc -F pandoc-crossref --pdf-engine=xelatex -V CJKmainfont="PingFang SC" index.md -o index.pdf
# 转换 Html
pandoc -F pandoc-crossref index.md -o index.html
Pandoc 还反对 YAML 格局的 header,通过 header 能够指定文章的题目,作者,更新工夫等信息,如下:
---
title: "文章题目"
author: "lixp"
date: 2022-06-11
---
代码块高亮
# 代码块高亮
pandoc --list-highlight-styles
# 显示反对的语言
pandoc --list-highlight-languages
要应用语法高亮,Markdown 文件中的 block code 必须指定语言,同时在命令行应用--highlight-style
选项,例如:
pandoc -F pandoc-crossref --pdf-engine=xelatex -V CJKmainfont="PingFang SC" index.md --highlight-style espresso -o index.pdf
各种画图
写文档时,画图对于大多数人来说都比拟苦楚吧。咱们能够利用 Mermaid 帮咱们疾速制作出想要的各种图等。它是一个基于 Javascript 的图表绘制工具,通过解析类 Markdown 的文本语法来实现图表的创立和动静批改。在线尝试一下。上面介绍一下 Markdown 外面画各种图。
Mermaid 具体语法可查看:https://mermaid-js.github.io/…
流程图
横向流程图
```mermaid
graph LR
A[开始] -->B(审批)
B --> C{年龄?}
C -->| 年龄 >=18| D[通过]
C -->| 年龄 <18| E[回绝]
```
graph LR
A[开始] -->B(审批)
B --> C{年龄?}
C -->| 年龄 >=18| D[通过]
C -->| 年龄 <18| E[回绝]
竖向流程图
```mermaid
graph TD
A[开始] -->B(审批)
B --> C{年龄?}
C -->| 年龄 >=18| D[通过]
C -->| 年龄 <18| E[回绝]
```
graph TD
A[开始] -->B(审批)
B --> C{年龄?}
C -->| 年龄 >=18| D[通过]
C -->| 年龄 <18| E[回绝]
规范横向流程图
```flow
st=>start: 开始
op=>operation: 审批
cond=>condition: 年龄是否大于 18
sub1=>subroutine: 返回审批
io=>inputoutput: 通过
e=>end: 完结
st(right)->op(right)->cond
cond(yes)->io(bottom)->e
cond(no)->sub1(right)->op
```
规范竖向流程图
```flow
st=>start: 开始框
op=>operation: 解决框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 通过
st->op->cond
cond(yes)->io->e
cond(no)->sub1(right)->op
```
时序图
```sequence
对象 A -> 对象 B: 对象 B 你好吗?(申请)Note right of 对象 B: 对象 B 的形容
Note left of 对象 A: 对象 A 的形容(提醒)
对象 B --> 对象 A: 我很好(响应)
对象 A -> 对象 B: 你真的好吗?```
简单时序图
```sequence
Title: 题目:简单应用
对象 A -> 对象 B: 对象 B 你好吗?(申请)Note right of 对象 B: 对象 B 的形容
Note left of 对象 A: 对象 A 的形容(提醒)
对象 B --> 对象 A: 我很好(响应)
对象 B -> 小三: 你好吗
小三 -->> 对象 A: 对象 B 找我了
对象 A -> 对象 B: 你真的好吗?Note over 小三, 对象 B: 咱们是敌人
participant C
Note right of C: 没人陪我玩
```
UML 规范时序图:
```mermaid
%% 时序图例子,-> 直线,--> 虚线,->> 实线箭头
sequenceDiagram
participant 张三
participant 李四
张三 -> 王五: 王五你好吗?loop 健康检查
王五 -> 王五: 与疾病战斗
end
Note right of 王五: 正当 食物 <br/> 看医生...
李四 -->> 张三: 很好!
王五 -> 李四: 你怎么样?
李四 --> 王五: 很好!
```
%% 时序图例子,-> 直线,--> 虚线,->> 实线箭头
sequenceDiagram
participant 张三
participant 李四
张三 -> 王五: 王五你好吗?loop 健康检查
王五 -> 王五: 与疾病战斗
end
Note right of 王五: 正当 食物 <br/> 看医生...
李四 -->> 张三: 很好!
王五 -> 李四: 你怎么样?
李四 --> 王五: 很好!
甘特图
```mermaid
%% 语法示例
gantt
dateFormat YYYY-MM-DD
title 软件开发甘特图
section 设计
需要 :done, des1, 2022-01-06,2014-01-08
原型 :active, des2, 2022-01-09, 3d
UI 设计 : des3, after des2, 5d
将来工作 : des4, after des3, 5d
section 开发
学习筹备了解需要 :crit, done, 2022-01-06,24h
设计框架 :crit, done, after des2, 2d
开发 :crit, active, 3d
将来工作 :crit, 5d
耍 :2d
section 测试
功能测试 :active, a1, after des3, 3d
压力测试 :after a1 , 20h
测试报告 : 48h
```
gantt
dateFormat YYYY-MM-DD
title 软件开发甘特图
section 设计
需要 :done, des1, 2022-01-06,2014-01-08
原型 :active, des2, 2022-01-09, 3d
UI 设计 : des3, after des2, 5d
将来工作 : des4, after des3, 5d
section 开发
学习筹备了解需要 :crit, done, 2022-01-06,24h
设计框架 :crit, done, after des2, 2d
开发 :crit, active, 3d
将来工作 :crit, 5d
耍 :2d
section 测试
功能测试 :active, a1, after des3, 3d
压力测试 :after a1 , 20h
测试报告 : 48h
类图
```mermaid
classDiagram
class Account
Account : +String owner
Account <|-- BankAccount
class BankAccount
BankAccount : +String owner
BankAccount : +Bigdecimal balance
BankAccount : +deposit(amount)
BankAccount : +withdrawl(amount)
```
classDiagram
class Account
Account : +String owner
Account <|-- BankAccount
class BankAccount
BankAccount : +String owner
BankAccount : +Bigdecimal balance
BankAccount : +deposit(amount)
BankAccount : +withdrawl(amount)
状态图
```mermaid
stateDiagram-v2
[*] --> First
state First {[*] --> second
second --> [*]
}
```
stateDiagram-v2
[*] --> First
state First {[*] --> second
second --> [*]
}
并图
```mermaid
pie
"苹果" : 386
"香蕉" : 85
"菠萝" : 15
```
pie
"苹果" : 386
"香蕉" : 85
"菠萝" : 15
用户体验旅程图
```mermaid
journey
title My working day
section Go to work
Make tea: 5: Me
Go upstairs: 3: Me
Do work: 1: Me, Cat
section Go home
Go downstairs: 5: Me
Sit down: 3: Me
```
journey
title My working day
section Go to work
Make tea: 5: Me
Go upstairs: 3: Me
Do work: 1: Me, Cat
section Go home
Go downstairs: 5: Me
Sit down: 3: Me
Goat Ascii 图
Goat 能够将 ASCII 渲染成 SVG
```goat
+-------------------+ ^ .---.
| A Box |__.--.__ __.--> | .-. | |
| | '--' v | * |<--- | |
+-------------------+ '-' | |
Round *---(-. |
.-----------------. .-------. .----------. .-------. | | |
| Mixed Rounded | | | / Diagonals \ | | | | | |
| & Square Corners | '--. .--' / \ |---+---| '-)-' .--------.
'--+------------+-' .--. | '-------+--------' | | | | / Search /
| | | | '---. |'-------'|'-+------'|<---------->| | | | v Interior | ^' <---''----' .-----------. ---. .--- v |
.------------------. Diag line | .-------. +---. \ / . |
| if (a > b) +---. .--->| | | | | Curved line \ / / \ |
| obj->fcn() | \ / | '-------' |<--'+ / \ |'------------------''--' '--+--------' .--. .--. | .-. +Done?+-'
.---+-----. | ^ |\ | | /| .--+ | | \ /
| | | Join \|/ | | Curved | \| |/ | | \ | \ /
| | +----> o --o-- '-' Vertical '--' '--' '--'--' + .---.
<--+---+-----' | /|\ | | 3 |
v not:line 'quotes' .-''---'
.-. .---+--------. / A || B *bold* | ^
| | | Not a dot | <---+---<-- A dash--is not a line v |
'-' '---------+--' / Nor/is this. ---
```
让 Hugo 反对图表显示
我集体博客是应用 Hugo 创立,所以须要让它反对图表显示。
反对 mermaid
创立 layouts/_default/_markup/render-codeblock-mermaid.html
文件并增加上面代码:
<div class="mermaid">
{{- .Inner | safeHTML}}
</div>
{{.Page.Store.Set "hasMermaid" true}}
而后在内容模板的底部(在 .Content 下方)增加上面代码:
{{if .Page.Store.Get "hasMermaid"}}
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>
mermaid.initialize({startOnLoad: true});
</script>
{{end}}
自定义 Goat
通过(https://arthursonzogni.com/Di…)这个网站能够疾速生成 ASCII 值。而后通过 hugo 渲染,上面是几个例子
流程图
编辑界面
展现我的项目目录,装置 tree
,将 ASCII 粘贴进来即可,十分不便
brew install tree
如果上述画图不能满足,也能够应用图说在线制表,而后导出图片。