工具(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 $$
- 渲染效果:
行内公式 ,
行公式:
如何插入图片
博客后后台MarkDown编辑器上只有一个按钮,就是用来上传图片并自动插入MarkDown标记的,超级好用
MarkDown:

渲染后的效果:
如何插入表格,使用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/
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 如何通过向量化技术比较两段文本是否相似?
· 瞧瞧别人家的接口重试,那叫一个优雅!
· 他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
· Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
· 上周热点回顾(7.7-7.13)
· MySQL 13 为什么表数据删掉一半,表文件大小不变?