Markdown学习笔记

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).

  • Markdown是一种网络写作标准, 其关键在于内容与形式分离, 将我们从繁重的排版操作中解放出来, 以专注于文章内容的写作
  • Markdown是一种轻量级标记语言, 其语法主要是通过一些符号来标识特定的格式, 同时也支持直接写html标签
  • Markdown允许人们按照其简单的语法使用纯文本编写文档, 然后可自动转换为富文本的风格简洁大方的html文档或其他格式文档, 从而省去人们做排版的时间
  • 文件扩展名:
    • .md .markdown
  • 主要发明者:
    • John Gruber (约翰 格鲁伯)
  • 最初发布时间:
    • March 25, 2004
  • 最新版本:
    • 1.0.1 (December 17, 2004)
  • 官方网站:
  • 用途:
    • 记笔记
    • 写文章
    • 在线讨论社区
    • 软件的readme文档

2. 历史

  • 这部分内容翻译自英文维基百科”Markdown“词条

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的网站或应用:

  • github
  • Stack Overflow
  • Tumblr
  • wordpress.com
  • wordpress网站程序可通过插件支持
  • csdn博客
  • 为知笔记
  • 简书

一些markdown编辑器:

  • Windows:
    • MarkdownPad 2
  • OS X:
    • Mou
  • 在线编辑器:
  • 全平台:
    • 为知笔记

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

文本格式化

  • *斜体文字* ctrl + i
    • 效果: 斜体文字
  • **加粗文字** ctrl + b
    • 效果: 加粗文字
  • # 一级标题
  • ## 二级标题
  • ### 三级标题
  • #### 四级标题
  • ##### 五级标题
  • ###### 六级标题
  • > 这里是个引用, ctrl + q

这里是个引用

水平线

  • 在一行中用三个以上的星号,减号,底线都可以标识一个水平线
    • ***
    • * * *
    • ---
    • ___

代码格式化

  • 行内代码, 使用符号 ` (键盘Esc下面的键,也称反引号)在两边包裹住代码即可
    • 效果: int a = 2;
  • 块状代码, 在每行代码前加4个空格或1个Tab ctrl + k
    int a = 2;
    System.out.println(a);
    

列表

  • * 无序列表 ctrl + u
    • 以 星号(或加号或减号) + 空格 为标记, 我习惯使用星号加空格的方式
  • 1. 有序列表 ctrl + shift + o
    • 数字 + 句点 + 空格
  • 列表嵌套
    • 在要嵌套的列表前按tab键

链接

  • 行内式链接 [链接](http://www.fuqichen.com) ctrl + l
  • 参考式链接
    • 先定义后使用, 可以使Markdown文档简洁清晰, 增强可读性
    • 定义方式: [blog]:http://www.fuqichen.com
    • 使用方式: [链接][blog]

图片

  • 行内式图片 ctrl + g
    • 格式: ![图片无法显示时的替代文本](图片地址 "放上鼠标后显示的文字")
    • 最简格式: ![](图片地址)
    • 例: ![](https://www.baidu.com/img/bdlogo.png)
  • 参考式图片
    • 先定义后使用, 可以使Markdown文档简洁清晰, 增强可读性
    • 定义方式: [pic]:https://www.baidu.com/img/bdlogo.png
    • 使用方式: ![][pic]

百度logo

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>