工具(2): 极简MarkDown排版介绍(How to)

如何切换编辑器

  1. 切换博客园编辑器为MarkDown:MarkDown Editor
  2. 选择一个在线编辑和预览站点: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

注意:

  • 这是一个为了示意列表刻意全部使用list+item,正常情况下应区分:章节段落列表
  • 不要把章节段落都塞到列表里,语义上他们是有区分的。

如何插入超链接:

MarkDown:

[xinz](http://www.cnblogs.com/xinz)

发布后的渲染效果:

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];
}

注意:

如何插入公式

  1. 博客后台,选项里面打开启用数学公式支持

  2. 博客输入LaTeX数学公式:

行内公式$\sqrt{3x-1}+(1+x)^2$,
行公式:
$$
\sqrt{3x-1}+(1+x)^2
$$
  1. 渲染效果:
    行内公式\(\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参考MDNW3C。如果你希望学习CSS排版页面,这个教程是我见过最佳的:web-design-in-4-minutes,花费4分钟。

MarkDown 编辑/转换 工具

posted @ 2015-04-21 15:45  ffl  阅读(47783)  评论(19编辑  收藏  举报