Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(英语:John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。
由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge等。甚至Markdown能被使用来撰写电子书。
Markdown语法参见:Markdown语法介绍(Coding)、Markdown基本语法(简书)
Markdown写作生成环境包括写作环境和文档生成环境两部分:
Markdown的规范本身就是文本文档,故任何文本文件编辑器均可进行markdown文件的编辑,编辑markdown文件可以使用专业的编辑器,也可以在IDE环境中安装markdown的插件。
目前业内常用的markdown文件编辑器主要包括:
IDE环境:
markdown生成pdf主要需要使用pandoc和latex(texlive/miktex)两个工具,具体安装方式如下:
Pandoc是由John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”。Pandoc使用Haskell语言编写,以命令行形式实现与用户的交互,可支持多种操作系统。
详细的安装说明参见:官方安装文档
latex工具,在windows下建议安装miktex,Linux和MacOS下建议安装texlive
为保证生成的pdf格式(自动插入封面、目录页、页眉页脚等信息),需要使用latex的template,具体使用方式是:
配置完成后即可在通过pandoc命令生成pdf文件:
上述命令中各个参数的说明:
注:考虑到上述命令过长,在Linux、MacOS下可以分别通过修改~/.bashrc、~/.bash_profile文件来设置alias,即可减少每次的输入
在每个markdown最前面增加metadata信息,metadata内容开始行内容为三个“-”,结束行为三个“.”,示例如下:
--- title: "示例文档" subtitle: "示例文档子标题" author: [jinlong.hao] date: "2019-08" titlepage: true toc-own-page: true secnumdepth: 5 header-left: "示例文档子标题" ...
上述文档设置说明:
更多设置参见pandoc官方文档和eipsvogel说明
为保证markdown转pdf不报错,在编写markdown的时候有几个原则要求:
总而言之,每个不同的格式和内容前后都需要有空行
--- title: "示例文档" subtitle: "示例文档子目录" author: "jinlong.hao" date: "2019-08" titlepage: true toc-own-page: true secnumdepth: 5 ... # 文档概述 ## 本文说明 本文是markdown转换为pdf的示例文件,主要用于演示如何通过markdown转换为pdf文件 ## 文档保密要求 本文无任何保密要求,任何和均可自由使用 # 内容示例 ## 这是正文内容 这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文 这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文 这是正文 这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文 这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文 这是正文这是正文 ## 基本格式 **加粗字体** *斜体* ~~删除线~~ > 这是引用 ## 分割线 ---- ## 超链接 [百度](http://www.baidu.com) ## 列表 ### 有编码列表 1. 列表 2. 列表 1. 列表 2. 列表 1. 列表 ### 无编号列表 * 编号 * 编号 * 编号 * 编号 * 编号 * 编号 ## 表格 | 标题1 | 标题2 | 标题3 | | ------ | ----- | ----- | | 1 | aaa | aaaaa | | 2 | bbb | bbbbb | ## 代码 ~~~ java public static void main(){ System.out.println("Hello, world!"); } ~~~
生成的PDF文件为:sample.pdf