本文 首发于 🌱 煎茶转载 请注明 来源

你是否经常遇到这种情况:辛苦调好格式写好的 word 文档到其他人电脑上格式就莫名其妙的乱了;word 和 wps 处理的 docx 文档,不同的软件之间打开就是会出现一些很细微的差异。不得不说,就连微软自己将 office 系列软件的定位就是指一款 文字处理软件,在这样的软件之上可以完成几乎所有的格式调整工作,但并不保证不同的设备、软件之间可以互相通用;此外如果是记录笔记或是进行文字创作,等格式调整完毕或许创作热情早就燃烧殆尽,word 在此时就不是一个很好的选择了。

2020-01-09-14-02-53-.png

本人一直在寻找这样一种解决方案,可以让我记录下的文字保证最大限度的兼容性,不至于从一个平台到另外一个平台发布就需要进行繁琐的格式调整工作,此外最好能够有工具支持直接转换到我需要的格式(如docx,html)。

“众里寻她千百度,蓦然回首那人却在灯火阑珊处!”

经过许久的探索,终于发现了一种目前看来最完美的解决方案——Markdown.

Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(英语:John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge等。甚至Markdown能被使用来撰写电子书。(来源:维基百科)

此前一直有使用 Markdown,如果你是一位程序员或是对此有一些了解,相信你对它就不会陌生,全球最大的代码托管平台 GitHub 默认使用 .md 格式的 README 文件做项目自述的,可以说 README.md 是开源项目必不可少的一份文件,GitHub 会将使用 Markdown 进行格式标记并命名为 README.md 的文件渲染后让在代码仓库首页,以便大家快速了解这个项目。

2020-01-09-14-34-26-.png

Markdown 快速入门

Markdown 的使用非常简单,可以让作者专心于内容本身而不需要过多的考虑格式,它将最经典常用的几种格式使用特定符号标注,在这里提供一个最简单的 Markdown 示例文本:

# 一级标题
## 二级标题
### 三级标题

> 引用

`行内代码`

\```
多行代码(去掉'\')
\```

**强调**

*斜体*

~~删除线~~

- [ ] 清单

[超链接文本](https://frytea.com)
---

将以上代码复制进入一个新的 test.md 文件中,使用 Typora 打开,就可以看到渲染好的包括 分级标题、引用字块、行内代码、多行代码、超链接等效果了;或是在 GitHub 新建一个仓库在 README.md 文件中写入以上内容也可以看到效果。

使用这些格式就已经可以实现大部分的文档撰写需求了,更多的 Markdown 语法可以在 GitHub 的 younghz/Markdown 仓库中查看,除此之外扩展的语法还可以实现甘特图、数学公式等特殊格式,如果还不能满足需求还可以使用 html 原生地排版语法直接撰写,markdown 没有提供过多复杂的格式,使用这些有限的语法就可以给人一种简单愉悦的写作感受。

2020-01-09-15-03-52-.png

许多平台都是支持 Markdown 渲染的,市面上也有很多的可用于渲染 Markdown 的编辑器,搜索 Markdown 在线编辑 就可以找到许多可以实现 Markwown 渲染的工具,直接复制渲染好的内容就可以粘贴到富文本编辑器(如微信公众平台),一些博客平台例如 简书 都是支持 Markdown 编辑器的,自建博客大都是使用 Markdown 进行内容编辑及渲染,此外 bear、为之笔记、蚂蚁笔记、有道云笔记 等笔记本都是支持 Markdown 内容笔记的,另外语雀等知识库平台也是支持 Markdown 的。因此,使用 Markdown 撰写的内容是可以做到完全的格式兼容的,只要使用规范的语法撰写就不用的担心自己的格式会有多大的偏差。如果这些还是不能满足需求,Markdown 还能玩一个大变身。

MarkDown 变身

上文提到,Markdown 在任何支持其语法的平台都是可以做到格式兼容的,真正做到了一处撰写处处渲染,可是有时候写好的东西需要在特定的环境下以特定的格式提交,这时怎么处理呢?此时就要用到文档界的瑞士军刀——Pandoc了。

Pandoc是由John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”。Pandoc使用Haskell语言编写,以命令行形式实现与用户的交互,可支持多种操作系统;Pandoc采用GNU GPL授权协议发布,属于自由软件。(来源:维基百科)

Pandoc 可以实现许多文档格式之间的互转,详细可以在 Pandoc 官网了解。今天主要使用 Pandoc 由 .md.docx 的功能将 Markdown 文件转换为 word 等软件可直接使用的文档格式。

pandoc-diagram.jpg

首先安装 Pandoc,这个不同的版本安装方法不同,烹茶室 使用的基于 Ubuntu 的 Linux 发行版只需要使用下列命令即可完成安装:

$ sudo apt-get install pandoc

至于 WindowsOS X 可以在这里下载对应的安装包安装:https://github.com/jgm/pandoc/releases/latest

安传完毕,打开命令行,就可以畅游这款神器,使用下列命令就可以将 Markdown 文档转换为 docx,还可以直接生成 html等格式:

$ pandoc test.md -o test.docx

$ pandoc test.md -o test.html

需要注意的是,使用 Pandoc 直接生成 PDF 文件时,需要安装 LaTeX。并且,Pandoc 自带的 PDF 引擎不支持中文,必须为中文配置额外的引擎和模板。因此中文的 markdown 文档是无法直接生成 pdf 的,但可以通过先生成 html 再通过系统自带的打印输出 pdf。

2020-01-09-16-13-32-.png

使用 markdown 作为种子,就可以生成多种文档格式,是不是还挺神奇的。

最后,本人一直在寻找一种比较好的记录笔记的方式,曾经是印象笔记的重度用户,但是由于印象笔记使用的是富文本编辑器,兼容性不好,和兼容性强大的 markdown 比起来就有些捉衿见肘。但不得不说的是,印象笔记的云端同步以及共享、跨平台还是很不错的。如果 markdown 来记录笔记,可以使用 github, coding, gitea,gitee 等作为托管平台,还附带版本控制,可以任意的回到任何版本的笔记,可保证笔记万无一失,再也不害怕误操作。

至此,本文主要介绍了一种高兼容性的文本标记语言 makrdown 及文档格式转换的瑞士军刀 pandoc,二者结合使用即实现一种高兼容度的通用文档解决方案,可以使用 markdown 完成大多数文档撰写工作,作为程序员更是在多数情况下都要使用 markdown 进行文档撰写,特别是在开源项目上。此外本文还提出可使用github等代码托管平台作markdown文档托管,并附带版本控制,提出一种几乎完美的笔记留存同步解决方案,本人一直在使用这种方案记录笔记,等时机成熟再撰文推荐。

使用markdown撰写源文档,可直接发布到博客平台,使用 pandoc 转换为docx格式就可以直接导入秀米进行排版,使用markdown甚至还可以直接撰写ppt(nodeppt),写代码也可以干得过写ppt的。本文若有疏漏或是不严谨之出敬请留言指出,若有好灵感好点子也欢迎留言交流,让我们共同发掘让工作生活更美好的方式。

拓展阅读