Markdown 学习笔记


  1. 简介

  2. 历史

  3. 相关软件

  4. 基本使用 (Markdown 主要语法)


1. 简介

Markdown is

a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).


2. 历史

John Gruber 于2004年带着使人们可以"使用一种易读易写的纯文本格式去写东西, 并且可以将其转换为结构上高效的XHTML文件(或HTML)"的目标创造了 Markdown 语言.

从一些电子邮件纯文本标记规范(比如 setext)中获得线索, Markdown 语言被设计成所读即所写, 看起来并没有使用标签做标记, 也没有使用格式化指令. 完全不像是使用标记语言做格式化的文本, 比如 Rich Text Format(RTF) 或 HTML, 它们都有明显的标签与格式化指令.

Gruber 写了一个 Perl 脚本 Markdown.pl, 它可以将标记好的文本转换为高效的有良好格式的 XHTML 或 HTML, 并将 '<'符号和'&'符号替换成其对应的字符实体引用(character entity references). 它可以作为独立脚本使用, 也可以作为 Blosxom 或 Movable Type 的插件, 还可以作为 BBEdit 的文本过滤器.

Markdown 已被其他人重新实现成为 CPAN 上的一个 Perl 组件(Text::Markdown), 也被其他编程语言多次重新实现. Markdown 在一种 BSD 风格的协议下发布, 已被数种内容管理系统所包含或作为插件提供.

诸如 GitHub, reddit, Diaspora, Stack Exchange, OpenStreetMap, 以及 SourceForge 这些网站都使用各种各样的 Markdown 以方便他们用户间的讨论.

标准化

除了最初由 John Gruber 所实现的版本(已被一些人认为是过时的)外, 并没有定义明确的 Markdown 标准. 随着不同的厂商使用他们自己修改过的这种语言的变体, 去矫正错误, 去添加缺失的特性, Markdown 出现了分裂.

从2012年到2014年, 包括 Jeff Atwood 在内的一群人启动了一件事, 这件事被 Atwood 描述为标准化运动. 现在, 一个社区网站旨在"document various tools and resources available to document authors and developers, as well as implementors of the various markdown implementations"(谁会翻译这句请联系我...) 2014年9月, Gruber 反对这项运动的名字中有 "Markdown". 然后它被改名为 CommonMark 作为 Markdown 的一个新分支.

一个叫做 Babelmark2 的工具也可以"对各种Markdown实现的输出进行比较"以"推进对于怎样以及是否应该将 Markdown 定义中确实含糊的方面进行澄清的讨论". Gruber 已经表示过异议, 称完全标准化将是个错误:"不同的网站(或人)有不同的需求. 没有一种语法可以让所有人满意"

在 IETF, 对于网络媒体类型 text/markdown (独立于语法) 的标准化工作正在进行中. Internet-Draft文件<<draft-ietf-appsawg-text-markdown>>计划将于2015年4月提交至 IESG. Markdown 社区被邀请提交关于 Markdown 的使用场景, 这将使 Markdown 的媒体类型标准化进程活跃起来.

扩展

好些继承了 Markdown 的轻量级标记语言, 比如: Markdown Extra, MultiMarkdown, the Pandoc Markdown extension, 实现了一些在原生 Markdown 语法中并不支持的特性(比如表格, 脚注, 定义列表, 以及将 Markdown 内嵌与于 HTML 区块中). 某些情况下, 这是为了将 Markdown 转变为除 HTML 之外的更多格式, 比如: LaTeX, RTF, DocBook.

一些 Markdown 实现有意忽略了对中间字强调功能的支持. 最初的 Markdown 实现版中将形如 my_long_variable 的内容解释为要强调中间的 long. 用户们发现这个功能使人迷惑,然并卵, 所以后来的 Markdown 实现版默认不再实现这个中间字强调功能, 比如: PHP Markdown, Python Markdown.

文章<<Thoughts on Markdown>>中提到, Markdown 最初的开发者 John Gruber 至今未对关于 Markdown 扩展的讨论作出回复. 文章还写了这样一句话, "Markdown 正在变革, 无论他是否参与".


3. 相关软件

支持 Markdown 的网站或应用:

Markdown 编辑器:


4. 基本使用(Markdown主要语法)

文本格式化

这里是个引用

水平线


代码

列表

链接

图片

百度logo

(完)


启明星辰 fuqichen.com