Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。简单的来说,Markdown就是用“标记符号”表示“格式”。Markdown语法标签与HTML语法标签是一一对应的。在这里,本文介绍一些Markdown的基本语法以及自己运行Markdown脚本的编译器。
Sublime Text 编辑器
由于Markdown非常好的好用,有很多在线和离线的编辑器。
在线编译器:dillinger,StackEdit,MaHua,简书,马克飞象。
Windows 编译器:MarkdownPad,MarkPad,Smark,Miu
OSX 编译器:Mou,MacDown,Ulysses,iA Writer,MWeb
跨平台编译器:Cmd Markdown,小书匠编辑器,FarBox,Sublime Text,Atom,ReText
因为作者本身写代码都在Sublime Text 3里面写,所以虽然要装一些额外的插件,自己还是不想再下载额外的工具了。因此,以下介绍如何在Sublime Text 3 里面编译Markdown:
安装插件 Package Control
Sublime Text 3 中默认已经安装好了此插件。在preferences 里面可以查看是否已经安装好。如果没有,可以参考官方文档 进行安装。
安装插件 Markdown Editing
通过按组合键Ctrl+Shift+P
或是点击Preference->Package Control
调出命令面板,然后再输入 install
,选择 Package Control: install package
。 稍等,在弹出的对话框中搜索 Markdown Editing,找到之后按 enter 键确认安装。如果安装成功,之后会自动弹出纯文本形式显示的插件说明。点击 Preferences,在 Package Settings 里面会显示有 Markdown Editing 的插件设置选项,在里面可以更改该插件的设置。
安装插件 Markdown Preview
通过按组合键Ctrl+Shift+P
或是点击Preference->Package Control
调出命令面板,然后再输入 install
,选择 Package Control: install package
。 稍等,在弹出的对话框中搜索 Markdown Preview,找到之后按 enter 键确认安装。如果安装成功,之后会自动弹出纯文本形式显示的插件说明。点击 Preferences,在 Package Settings 里面会显示有 Markdown Preview 的插件设置选项,在里面可以更改该插件的设置。
更改 Markdown Editing 插件设置
Markdown Editing 的默认设置在Preferences -> Package Settings -> Markdown Editing -> Markdown GFM Settings - Default
里面,背景主题和layout 分别设定为:
1 2 3 "color_scheme": "Packages/MarkdownEditing/MarkdownEditor.tmTheme", // Layout "draw_centered": true,
这样会导致背景颜色和其他类型文件在Sublime Text 中的背景颜色不一致。同时layout的设定会导致Markdown 页面左侧会有大量留白。由于Default的设定是不能改的,我们只能从其对应的Markdown GFM Settings - User
里面改。加入以下内容来替换掉default的设定:
1 2 3 4 5 6 { // Default color scheme "color_scheme": "Monokai.sublime-color-scheme", // Layout "draw_centered": false, }
更改 Markdown Preview 插件设置
进入Preferences
,点击Key Bindings
,在弹出的界面右侧用户设置中添加如下代码:
1 [ { "keys": ["alt+m"], "command": "markdown_preview", "args": {"target": "browser", "parser":"markdown"} }, ]
则可以设置 alt + m
组合为预览排版好的 HTML 样式的热键,预览工具是本机上设置的默认浏览器。在对应的Markdown文件中按下快捷键即可在浏览器上预览。此快捷键还可以把鼠标勾选的部分区域内容渲染到浏览器网页上。
开启 Mathjax 数学环境支持
如果想要在 Markdown 中插入数学公式,可以使用 LaTeX 的语法来书写,但是直接使用 LaTeX 语法来书写一段数学公式,使用 Markdown Preview 插件预览时的效果是不成功的,我们需要开启 Mathjax 数学环境支持。进入到Preferences -> Package Settings -> Markdown Preview -> Settings
里面加入以下内容。 与上面的插件不同,这个插件是 pymdownx 提供的,因此添加到字典中, 同时还需要需要提供 js 文件的 URL :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 { "js": [ "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js", "res://MarkdownPreview/js/math_config.js" ], /* Markdown extension configuration. To specify a function in this JSON configuration, create an object with the key "!!python/name" and set it to the import path to the function "module.submodule.etc.function". */ "markdown_extensions": [ // Python Markdown Extra with SuperFences. // You can't include "extra" and "superfences" // as "fenced_code" can not be included with "superfences", // so we include the pieces separately. "markdown.extensions.smart_strong", "markdown.extensions.footnotes", "markdown.extensions.attr_list", "markdown.extensions.def_list", "markdown.extensions.tables", "markdown.extensions.abbr", { "markdown.extensions.codehilite": { "guess_lang": false } }, // Extra's Markdown parsing in raw HTML cannot be // included by itself, but "pymdownx" exposes it so we can. "pymdownx.extrarawhtml", // More default Python Markdown extensions { "markdown.extensions.toc": { "permalink": "\ue157" } }, "markdown.extensions.meta", "markdown.extensions.sane_lists", "markdown.extensions.smarty", "markdown.extensions.wikilinks", "markdown.extensions.admonition", // PyMdown extensions that help give a GitHub-ish feel "pymdownx.superfences", // Nested fences and UML support { "pymdownx.magiclink": { // Auto linkify URLs and email addresses "repo_url_shortener": true, "repo_url_shorthand": true } }, "pymdownx.tasklist", // Task lists { "pymdownx.tilde": { // Provide ~~delete~~ "subscript": false } }, { "pymdownx.emoji": { // Provide GitHub's emojis "emoji_index": {"!!python/name": "pymdownx.emoji.gemoji"}, "emoji_generator": {"!!python/name": "pymdownx.emoji.to_png"}, "alt": "short", "options": { "attributes": { "align": "absmiddle", "height": "20px", "width": "20px" }, "image_path": "https://assets-cdn.github.com/images/icons/emoji/unicode/", "non_standard_image_path": "https://assets-cdn.github.com/images/icons/emoji/" } } }, { "pymdownx.arithmatex": { "generic": true, "smart_dollar": false } } ], }
由于上面用到了math_config.js文件,而Sublime 本身是没有这个文件的,所以需要在对应的 js 目录下新建该文件。
首先,在Sublime工具栏Preferences > Browser Packages…
打开Packages目录,该目录所在的路径就是Sublime中包的保存路径。
然后,由于上面配置文件中设置的 js 路径是res://MarkdownPreview/js/math_config.js
,该路径是相对于sublime包的保存路径而言的,因此我们需要在该目录下新建路径“MarkdownPreview/js/math_config.js”,同时添加math_config.js文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 MathJax.Hub.Config({ config: ["MMLorHTML.js"], extensions: ["tex2jax.js"], jax: ["input/TeX", "output/HTML-CSS", "output/NativeMML"], tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true }, TeX: { extensions: ["AMSmath.js", "AMSsymbols.js"], TagSide: "right", TagIndent: ".8em", MultLineWidth: "85%", equationNumbers: { autoNumber: "AMS", }, unicode: { fonts: "STIXGeneral,'Arial Unicode MS'" } }, displayAlign: "center", showProcessingMessages: false, messageStyle: 'none' });
配置完成后,结果如下:
1 2 3 \begin{equation} \sum\limits_{0}^{+\infty} \dfrac{n^2}{2} \end{equation}
基本语法
段落
非常自然,一行文字就是一个段落。
会被解释成
如果你需要另起一段,请在两个段落之间隔一个空行。
会解释成
1 2 <p>这是一个段落<p> <p>这是另一个段落</p>
粗体 斜体 :
1 2 3 4 *这是斜体* _这也是斜体_ **这是粗体** ***这是粗体+斜体***
会被解释成
1 2 3 4 <em>这是斜体</em> <em>这也是斜体</em> <strong>这是粗体</strong> <strong><em>这是粗体+斜体</strong></em>
删除线
会被解释成
标题
markdown总支持1~6六级标题,通过在一行之前加上不同数量的井号来表示。行尾可以加上任意数量的井号字符,这些字符不会算作标题内容。通常会加上相等数量的字符以保持对称。
1 2 3 4 5 # 这是 H1 # ## 这是 H2 ## ### 这是 H3 ### ... ###### 这是 H6 ######
H1和H2
在文本下方添加底线来实现。
1 2 3 4 5 这是 H1 ======= 这是 H2 -------
引用
通过在行首加上大于号>来添加引用格式。引用可以嵌套,也可以嵌套其他格式。(此行是一个引用的格式)
1 2 3 4 5 6 > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.
列表
无序列表使用星号、加号或是减号作为列表标记(都是等价的):
有序列表则使用数字接着一个英文句点,数字并不会影响输出的 HTML 结果:
内联代码
用反引号来标记内联代码,它们会解释成<code>
标签。如果代码的内容中有反引号,请用两个反引号包裹。代码中的&、<、>符号都会自动转义。
代码区域
可以首行首缩进4个空格。也可以用三个反引号独占一行来标记。
1 2 3 4 这是一个代码区块。 `` ` 这是一个代码区块。 `` `
会被解释成:
1 2 <pre><code>这是一个代码区块。 </code></pre>
换行
换行单倍行距:按键 space, space, enter
换行双倍行距:按键 enter, enter
分隔线
你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
1 2 3 4 5 * * * *** ***** - - - ---------------------------------------
链接
链接的书写格式如下:
1 2 [an example](http://example.com/) [an example](http://example.com/ "Optional Title")
会被解释为
1 2 <a href='http://example.com/'>an example</a> <a href='http://example.com/' title="Optional Title">an example</a>
如果链接的地址和名字重复,可以用尖括号语法将其简化。
表格
表格是github风格独有的语法,但近年来渐渐被大多数编辑器支持。
1 2 3 4 5 | Item | Value | Qty | | :------- | ----: | :---: | | Computer | $1600 | 5 | | Phone | $12 | 12 | | Pipe | $1 | 234 |
会被解释成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <thead> <tr> <th align="left">Item</th> <th align="right">Value</th> <th align="center">Qty</th> </tr> </thead> <tbody><tr> <td align="left">Computer</td> <td align="right">$1600</td> <td align="center">5</td> </tr> <tr> <td align="left">Phone</td> <td align="right">$12</td> <td align="center">12</td> </tr> <tr> <td align="left">Pipe</td> <td align="right">$1</td> <td align="center">234</td> </tr> </tbody></table>
对于一些复杂表格来说,尤其是需要合并单元格的表格,还是推荐用html 的格式来进行书写。
图片
Markdown有自己表示图片的方法如下。然而有些时候我们需要修改图片大小之类的一些参数,而此自带的方法不如html 中<img>标签灵活:
1 2 ![Alt text](/path/to/img.jpg) ![Alt text](/path/to/img.jpg "Optional Title")
会被解释为:
1 2 <img src='/path/to/img.jpg' alt='Alt text' /> <img src='/path/to/img.jpg' alt='Alt text' title='Optional Title' />
转义
markdown支持在以下字符前面插入反斜杠:
1 2 3 4 5 6 7 8 9 10 11 12 \ 反斜线 ` 反引号 * 星号 _ 底线 {} 花括号 [] 方括号 () 括弧 # 井字号 + 加号 - 减号 . 英文句点 ! 惊叹号
插入之后,将不再解析这些字符,而是原样输出。
高级语法
只有少数编辑器支持,使用前请先确认。
数学公式
内联的TeX公式使用一个美元符号标记:
1 $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$
TeX公式块用独占一行的两个美元符号来标记:
也可以用equation的标签表示:
1 2 3 4 5 6 7 8 9 10 11 12 13 \begin{equation} \begin{eqnarray} f(x) = a_nx^n \\ g(x) = x^2 \end{eqnarray} \end{equation} $$ \begin{gather} (a+b) \times c = a\times c + b \times c \notag \\ ac= a\times c \\ \end{gather} $$
比较推荐用第二种写法,但是需要确认自己的编辑器是否支持第二种写法。因为其生成的公式会有序号。而且如果在里面嵌套标签的话,看起来更加和谐。
参考文献: