工具(2): 极简MarkDown排版介绍(How to)
如何切换编辑器
- 切换博客园编辑器为MarkDown:MarkDown Editor
- 选择一个在线编辑和预览站点:StackEdit
如何排版章节
MarkDown:
大标题
==========
小标题
----------
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
例如三级
和四级
发布后的效果:
三级标题
四级标题
如何插入列表:
MarkDown:
- 个人编程,写一个命令行程序
- 注册Github账号,建立项目仓库
- 添加ReadMe.md并编辑,描述项目的简要介绍、功能、用例、下载、文档等
- 建立doc目录存放文档
- 建立scripts目录存放各种脚本
- 建立config目录存放可公开配置信息
- 建立src目录存放源码
- 建立test目录存放测试脚本极其数据
- 建立PSP表格,预估下述几个过程的耗时估计
- 分析程序的需求,并提交文档到github
- 基本需求
- 扩展需求
- 高级需求
- 功能设计,并提交文档到github
...
注意在-
之后需要有一个空格,发布效果见:
- 个人编程,写一个命令行程序
- 注册Github账号,建立项目仓库
- 添加ReadMe.md并编辑,描述项目的简要介绍、功能、用例、下载、文档等
- 建立doc目录存放文档
- 建立scripts目录存放各种脚本
- 建立config目录存放可公开配置信息
- 建立src目录存放源码
- 建立test目录存放测试脚本极其数据
- 建立PSP表格,预估下述几个过程的耗时估计
- 分析程序的需求,并提交文档到github
- 基本需求
- 扩展需求
- 高级需求
- 功能设计,并提交文档到github
- 注册Github账号,建立项目仓库
注意:
- 这是一个为了示意列表刻意全部使用list+item,正常情况下应区分:
章节
、段落
、列表
- 不要把
章节
和段落
都塞到列表里,语义上他们是有区分的。
如何插入超链接:
MarkDown:
[xinz](http://www.cnblogs.com/xinz)
发布后的渲染效果:
进一步,我们可以把自己的博客连接做一个目录菜单,例如下面的软件工程(FZU2015)赛季得分榜)目录
<hr/>
SE_FZU目录:[1](http://www.cnblogs.com/math/p/4820808.html) [2](http://www.cnblogs.com/math/p/4827832.html) [3](http://www.cnblogs.com/math/p/4833301.html) [4](http://www.cnblogs.com/math/p/4852995.html) [5](http://www.cnblogs.com/math/p/4870584.html) [6](http://www.cnblogs.com/math/p/4890133.html) [7](http://www.cnblogs.com/math/p/4916062.html) [8](http://www.cnblogs.com/math/p/4919227.html) [9](http://www.cnblogs.com/math/p/4935697.html) [**10**](http://www.cnblogs.com/math/p/4976461.html) [11](http://www.cnblogs.com/math/p/5066939.html) [12](http://www.cnblogs.com/math/p/5100034.html) [13](http://www.cnblogs.com/math/p/5104644.html)
<hr/>
发布后的渲染效果:
SE_FZU目录: 1 2 3 4 5 6 7 8 9 10 11 12 13
当然,如果你觉的这样太密集,并且每次更新都要取把系列文章里的所有目录都更新一遍太辛苦,那么你可以采用双向链表
模式。即,在每篇文章的开头设置上一篇
和下一篇
的链接,参考:软工+C(9): 助教指南
如何引用别人的文字
MarkDown:
>功利主义是一种在西方影响巨大的伦理学说,其原则是“最大多数人的最大幸福”,以行为的实际功效或利益为判断行为正当与否的标准。本书系统地阐述了这一学说,分绪论、何谓功利主义、论功利主义最后制裁力、功利主义可以得到什么样的证明、论公道与功利主义之关系。
-- 引用自《[功利主义](https://book.douban.com/subject/3072490/)》
发布后的渲染效果:
功利主义是一种在西方影响巨大的伦理学说,其原则是“最大多数人的最大幸福”,以行为的实际功效或利益为判断行为正当与否的标准。本书系统地阐述了这一学说,分绪论、何谓功利主义、论功利主义最后制裁力、功利主义可以得到什么样的证明、论公道与功利主义之关系。
-- 引用自《功利主义》
注意:
- 请区分
引用
和正文段落
,不要用引用的方式排版正常的文章段落
如何在行内修饰文字:删除、加粗、斜体、颜色
MarkDown:
[专业主义](https://book.douban.com/subject/1790456/)
- 描述:这本书着重阐释了真正的专家必须具备的四种能力:**先见能力**、**构思能力**、**讨论的能力**、**适应矛盾**的能力,以丰富的案例和深刻的洞见警示人们*重新思考专业*的内涵与效用,培养并吸纳专业人才。
- 状态:~~已读完。~~
- 备注: <span style="color:red">分析、设计、实现、改进</span>.
发布后渲染的效果:
- 描述:这本书着重阐释了真正的专家必须具备的四种能力:先见能力、构思能力、讨论的能力、适应矛盾的能力,以丰富的案例和深刻的洞见警示人们重新思考专业的内涵与效用,培养并吸纳专业人才。
- 状态:
已读完。 - 备注: 分析、设计、实现、改进.
注意:
- 如果你可以配置CSS,则应该用带
语义
的id、class,而不要直接用style属性
如何插入代码:
代码前后各加键盘的Tab键上面的那个按钮的符号三次:
例如,下面是MarkDown,ref:lua/lstring.c:
```
/*
** Create or reuse a zero-terminated string, first checking in the
** cache (using the string address as a key). The cache can contain
** only zero-terminated strings, so it is safe to use 'strcmp' to
** check hits.
*/
TString *luaS_new (lua_State *L, const char *str) {
unsigned int i = point2uint(str) % STRCACHE_N; /* hash */
int j;
TString **p = G(L)->strcache[i];
for (j = 0; j < STRCACHE_M; j++) {
if (strcmp(str, getstr(p[j])) == 0) /* hit? */
return p[j]; /* that is it */
}
/* normal route */
for (j = STRCACHE_M - 1; j > 0; j--)
p[j] = p[j - 1]; /* move out last element */
/* new element is first in the list */
p[0] = luaS_newlstr(L, str, strlen(str));
return p[0];
}
```
发布后的效果:
/*
** Create or reuse a zero-terminated string, first checking in the
** cache (using the string address as a key). The cache can contain
** only zero-terminated strings, so it is safe to use 'strcmp' to
** check hits.
*/
TString *luaS_new (lua_State *L, const char *str) {
unsigned int i = point2uint(str) % STRCACHE_N; /* hash */
int j;
TString **p = G(L)->strcache[i];
for (j = 0; j < STRCACHE_M; j++) {
if (strcmp(str, getstr(p[j])) == 0) /* hit? */
return p[j]; /* that is it */
}
/* normal route */
for (j = STRCACHE_M - 1; j > 0; j--)
p[j] = p[j - 1]; /* move out last element */
/* new element is first in the list */
p[0] = luaS_newlstr(L, str, strlen(str));
return p[0];
}
注意:
- 请不要用
代码段
排版文章的正文段落
,代码段是为了排版诸如:公式
、代码
等。 - 非MarkDown模式插入代码请参考: http://www.cnblogs.com/greyzeng/p/4370439.html
如何插入公式
-
博客后台,选项里面打开
启用数学公式支持
-
博客输入LaTeX数学公式:
行内公式$\sqrt{3x-1}+(1+x)^2$,
行公式:
$$
\sqrt{3x-1}+(1+x)^2
$$
- 渲染效果:
行内公式\(\sqrt{3x-1}+(1+x)^2\),
行公式:$$\sqrt{3x-1}+(1+x)^2$$
如何插入图片
博客后后台MarkDown编辑器上只有一个按钮,就是用来上传图片并自动插入MarkDown标记的,超级好用
MarkDown:
![](https://img3.doubanio.com/lpic/s4669554.jpg)
渲染后的效果:
如何插入表格,使用exceltk转excel为MarkDown
开放源码:https://github.com/fanfeilong/exceltk
二进制下载(Debug版):https://files.cnblogs.com/files/math/exceltk0.0.8.7z
详细用例:http://www.cnblogs.com/math/p/exceltk.html
表格排版的时候,表头前面最好空一行,否则渲染的时候可能会被当作文本。
如何添加段落
并没有特别MarkDown符号标记一段文本是段落
,然而,许多人在学习了MarkDown之后,会误用列表
、引用
、代码段
去排版段落,所以这里特别提一下。在MarkDown里面,没有任何修饰的文本就是段落,例如在标题下接着的文本:
#### MarkDown有什么好处?
MarkDown的好处是纯文本排版,文本本身就有很强的结构化效果,即使只是在Notepad里写MarkDown,不用任何渲染,你也能看出层次结构来。比如,在QQ、微信里,你发个MarkDown的文本,别人准能看的出其中的结构层次来,这就是文本结构本身的效果。当然,如果你需要高级一点的渲染效果,随便找个支持MarkDown渲染的站点渲染下,再导出成HTML或者PDF都是很好的。博客类,像博客园都已经支持MarkDown渲染了。而临时渲染工具,像这个站点:[stackeditor](http://stackedit.io/editor)就可以直接贴上你在本地Notepad里编辑好的文本,右侧就可以看到渲染效果,你可以选择导出成纯文本、HTML、或者PDF。这个站点导出PDF是要注册帐号的,但也有办法绕过去,比如你导出带样式的HTML,然后用Chrome浏览器打开,右键打印,保存PDF,就能做到一样的效果。
渲染效果:
MarkDown有什么好处?
MarkDown的好处是纯文本排版,文本本身就有很强的结构化效果,即使只是在Notepad里写MarkDown,不用任何渲染,你也能看出层次结构来。比如,在QQ、微信里,你发个MarkDown的文本,别人准能看的出其中的结构层次来,这就是文本结构本身的效果。当然,如果你需要高级一点的渲染效果,随便找个支持MarkDown渲染的站点渲染下,再导出成HTML或者PDF都是很好的。博客类,像博客园都已经支持MarkDown渲染了。而临时渲染工具,像这个站点:stackeditor 就可以直接贴上你在本地Notepad里编辑好的文本,右侧就可以看到渲染效果,你可以选择导出成纯文本、HTML、或者PDF。这个站点导出PDF是要注册帐号的,但也有办法绕过去,比如你导出带样式的HTML,然后用Chrome浏览器打开,右键打印,保存PDF,就能做到一样的效果。
如何画流程图?
可以使用mermaid语法:
```mermaid sequenceDiagram participant Client participant CacheMiner participant Meta participant Source Client->>Source: xxxx Source->>Client: yyy alt xxx Client->>Source: zzz else Client->>Source: www end ```
渲染效果(可以在Visual Studio Code里预览):
如何选择Word,MarkDown?
观点:少即是多
渲染的秘密
如果你在自己的博客里做了同样的事情,你可能得到的渲染效果和本页面不大一样,那是正常的,MarkDown的渲染效果是由站点提供的MarkDown的CSS决定的,通常情况下,无论怎样都够用,因为使用MarkDown的核心在于它的文本本身就带有结构化信息,渲染效果并不是标准定义的内容。
但是,如果你想得到本文一模一样的效果,可以在自己的博客后台设置
->页面定制CSS
里加上如下CSS:
.cnblogs-markdown a {
color: #4990E2;
text-decoration: none;
}
.cnblogs-markdown a:hover,
.cnblogs-markdown a:active {
border-bottom: 1px solid #4990E2;
}
.cnblogs-markdown pre{
padding: .2em;
border: .2em;
border-left-style: solid;
page-break-inside: avoid;
border-color: #E0CB52;
background: #FCFAEE;
}
.cnblogs-markdown blockquote{
margin: 0;
margin-top: 0;
margin-bottom: 16px;
}
.cnblogs-markdown blockquote {
padding: .2em;
border: .2em;
border-left-style: solid;
page-break-inside: avoid;
border-color: #52E052;
background: #E9FBE9;
}
.cnblogs-markdown blockquote>:first-child {
margin-top: 0;
}
.cnblogs-markdown blockquote>:last-child {
margin-bottom: 0;
}
.cnblogs-markdown .hljs{
border:0 !important;
background-color: #FCFAEE !important;
}
.cnblogs-markdown code{
border:0 !important;
background-color: #FCFAEE !important;
}
对配色和渲染效果的喜好因人而异,本博客的CSS参考MDN和W3C。如果你希望学习CSS排版页面,这个教程是我见过最佳的:web-design-in-4-minutes,花费4分钟。
MarkDown 编辑/转换 工具
- 本机编辑器:https://typora.io
- 在线转PDF:https://md2pdf.netlify.com/