Markdown+Pandoc 最佳写作拍档 (mailp.in)
<h2>Markdown+Pandoc 最佳写作拍档</h2>
<h3>我们为什么写作?</h3>
自从人们开始写作,写作便是记录、抒发、批判、反省的好工具。从石板上的刻印到笔墨纸砚,再到如今的信息时代。从静态的个人主页到托管博客,从个人博客到微博,从wordpress到jekyll。无数投入写作中的人们写作的目的大同,写作的方式越简单越好,这样才能让我们专注于写作而不是为其他格式所困扰。另外现在智能终端快速普及,文件格式的多平台使用也成为了写作的一大问题。
为了更好的写作,今天介绍的 Markdown & Pandoc 便能提供完美的辅助。
Markdown的用法
1 .Markdown是什么?
Markdown 是一种轻量级标记语言,创始人为John Gruber和Aaron Swartz。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 [1]
2 .为什么要用Markdown?
windows下常用的编辑工具是word,mac上常用的编辑工具是page,linux上常用的编辑工具就是vim了,一份文章编辑完后为了要在不同平台中保存完整的模样时就必需同时准备多种文本格式的文件,这是多么痛苦的一件事。我们写作的初衷是为了写作呀,反而被这些格式烦恼。所以我们要用Markdown,它让你关注内容,格式怎么显示不是要你在写得时候关注的。而在写Markdown时你只需要用一个纯文本的方式进行,不用担心平台与格式的困扰。
3 .Markdown的语法
Markdown 的语法全由一些符号所组成,这些符号经过精挑细选,其作用一目了然。比如:在文字两旁加上星号,看起来就像 强调
。Markdown 的列表看起来,嗯,就是列表。Markdown 的区块引用看起来就真的像是引用一段文字,就像你曾在电子邮件中见过的那样。
最常用格式
<pre class="prettyprint hljs markdown"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"> 空一行(两个回车)分段
行末加两个或多个空格才是真正的换行,否则正常的一个回车就像在 HTML 代码中一样,被当作空格处理
插入链接: [链接文字](url)
图片跟链接很像,在前面加个叹号:![alt 文字](图片 URL)
列表
<pre class="prettyprint hljs markdown"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"><span class="hljs-bullet">* </span>无序(没有编号的)列表中的一项
* 一个子项,要以一个制表符或者4个空格缩进
* 无序列表中的另一个项
1. 有序(排好序,有编号的)列表中的一项
2. 有序列表中的另一个项
标题
<pre class="prettyprint hljs markdown"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"><span class="hljs-section"># 一级标题</span>
#### 四级标题
一级标题
===================
二级标题
--------------------
代码
代码可以采取两种方法:
一是用(`)将代码包起来
<pre class="prettyprint hljs ruby"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;">夹杂着<span class="hljs-string">`一些代码`</span>的文字内容,
二是在代码块前面加上4个空格或者一个TAB
<pre class="prettyprint hljs python"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"> <span class="hljs-keyword">import</span> random
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CardGame</span><span class="hljs-params">(object)</span>:</span>
<span class="hljs-string">""" a sample python class """</span>
NB_CARDS = <span class="hljs-number">32</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, cards=<span class="hljs-number">5</span>)</span>:</span>
self.cards = random.sample(range(self.NB_CARDS), <span class="hljs-number">5</span>)
<span class="hljs-keyword">print</span> <span class="hljs-string">'ready to play'</span>
代码高亮可以由github提供的js实现
分割线
要生成水平分割线,可以在单独一行里输入3个或以上的短横线、星号或者下划线实现。短横线和星号之间可以输入任意空格。以下每一行都产生一条水平分割线。
<pre class="prettyprint hljs markdown"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;">===========
**
_ _ _
Markdown的常用语法差不多就是这些了,详细的介绍请参考 Markdowm 语法说明
4 .Markdown的常用编辑工具
- Mac等平台下推荐 Mou
- Windows平台推荐 MarkdownPad
- Sublime Text
编辑器是我的最爱,并且它是跨平台的,结合 Markdown preview
插件能更好的编辑 - markdown-here
借助Chrome插件,将gmail、Evernote、Hotmail等写作窗口变为Markdown在线写作窗口 - web版推荐国人 草依山
写的 MaHua
,支持vim快捷键和多种主题。
Markdown越来越流行,不是因为它复杂,而是因为它足够简单。尝试过MD后就能体会到单纯的写作带来的快乐,一般Markdown文件保存格式都是以md、mdownx现实。为了文档的分享,多平台的使用,需要对MD进行格式转化。这是就更体现了它的方便之处,它是本身是一个结构标记语言,能对多种格式文档进行转换,这里介绍一款强大的格式转换工具 Pandoc
。
Pandoc 格式转换的瑞士军刀
1 .Pandoc的介绍
Pandoc是一个用于从一种标记格式转换为另一种的Haskell库,它的功能是在多种常见的标记语言进行相互转换。
其中包括 Markdown, reStructuredText, Textilte, HTML, PDF,LaTeX 等。利用它,你可以用简单的 Markdown 语法生成pdf文档,还可以写 Beamer 演示文稿。更强大的是,它还能将以上提到的这些语言所写文件转换成 xdoc 文档。
2 .Pandoc的用法
2.1 Web版Pandoc
首先我们可以看下Pandoc的官网 http://johnmacfarlane.net/pandoc/
在介绍中我们知道Pandoc支持linux,Mac OS,Win多平台,还有简易的web版提供我们在线转换格式。打开web版 http://johnmacfarlane.net/pandoc/try
,便可以进行简单的格式转换了。不过网页版的反应速度不是很快,不适合大型文件的格式转换,一两篇文章还是可以的。
2.2 Linux版Pandoc
就我自己用的ubuntu下安装Pandoc,还算是非常简单的。以下是ubuntu下的使用步骤:
<pre class="prettyprint hljs nginx"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"><span class="hljs-attribute">sudo</span> apt-get install pandoc
如果apt-get安装的pandoc功能不齐全,可以如官网上一样先安装cable,再安装pandoc:
<pre class="prettyprint hljs sql"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;">sudo apt-get <span class="hljs-keyword">install</span> cabal-<span class="hljs-keyword">install</span>
cabal update
cabal install pandoc
然后就可以尝试着用一下了:
<pre class="prettyprint hljs css"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"><span class="hljs-selector-tag">pandoc</span> <span class="hljs-selector-tag">demo</span><span class="hljs-selector-class">.md</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">demo</span><span class="hljs-selector-class">.html</span>
这样便可以简单的将demo的markdown文件转换成html文档了。另外还可以强制格式转换如下:
<pre class="prettyprint hljs css"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"><span class="hljs-selector-tag">pandoc</span> <span class="hljs-selector-tag">demo</span><span class="hljs-selector-class">.txt</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">demo</span><span class="hljs-selector-class">.html</span> <span class="hljs-selector-tag">-f</span> <span class="hljs-selector-tag">markdown</span> <span class="hljs-selector-tag">-t</span> <span class="hljs-selector-tag">html</span>
上面的代码便是将demo.txt中的文档以markdown的格式转换成html并存入demo.html中了。
最关键的 PDF文件
到了,PDF文档能在不同平台保持一致的表现,是许多文档传输的首选。在转换PDF之前,还需要安装一个texlive的包:
<pre class="prettyprint hljs nginx"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"> <span class="hljs-attribute">sodu</span> apt-get install texlive
然后便可以自如的转换PDF文件了:
<pre class="prettyprint hljs css"><code class="text language-text" data-lang="text" data-mce-style="padding: 0px;" style="padding: 0px;"><span class="hljs-selector-tag">pandoc</span> <span class="hljs-selector-tag">demo</span><span class="hljs-selector-class">.md</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">demo</span><span class="hljs-selector-class">.pdf</span>
英文文件转换状况良好,中文字体问题请参考 Pandoc 用命令行转换标记语言
Markdown与Pandoc的用法也就说到这了,无疑它们搭配起来会让写作变得更加简单专注,这也就是我们的初衷。另外在写作中多结合Git,将文档推到GitHub上会是很好的尝试。
参考文档
- Markdown写作浅谈
, 阳志平 - 黑魔法利器pandoc
, 雁起平沙 - Pandoc 用命令行转换标记语言
, 林雪凡 - Pandoc 官网
, John MacFarlane - Markdown 语法说明
, riku
Markdown+Pandoc 最佳写作拍档 (mailp.in)的更多相关文章
- Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc
Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc 文章转载自 http://iout.in/archives/454.html 我们为什么写作? 自从人们开始写作,写作便是记录. ...
- 使用Markdown+Pandoc+LaTex+Beamer制作幻灯片
概述 为什么使用markdown? mardown是一种轻量级的标记语言,语法简单,可读性好,并且容易转化成其他格式的文档, 在技术文档撰写中得到越来越广泛的应用.相信大家对markdown都有一定了 ...
- 用MarkDown来排版写作
Latex排版系统太复杂,MD很好用,微软开源了一套Madoko的开源在线MD编辑器,它提供了一台MD扩展,可以生成PDF(中间先生成Tex,再生成的PDF),幻灯片还有html.非常方便.写作,写p ...
- Markdown写作
What is markdown? Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown ...
- [置顶]
献给写作者的 Markdown 新手指南
作者:http://jianshu.io/p/q81RER 出处:http://jianshu.io/p/q81RER 献给写作者的 Markdown 新手指南 简书 「简书」作为一款「写作软件」在诞 ...
- 【转载】Markdown使用笔记
献给写作者的 Markdown 新手指南 http://www.jianshu.com/p/q81RER 「简书」作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电 ...
- 文件转换神器Pandoc使用
最近记录笔记,改用Markdown格式.但有时需要分享下笔记,对于不懂markdown格式的同学来说阅读感觉不是那么友好.因此就一直在寻找一款文件转换的软件,之前因为用markdownpad来编写,可 ...
- 献给写作者的 Markdown 新手指南
「简书」作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电子邮件」风格的「标记语言」,我们强烈推荐所有写作者学习和掌握该语言.为什么?可以参考: 『为什么作家应该用 ...
- Markdown语法 中文版
文章翻译自Markdown创始人JOHN GRUBER的 个人博客, 英文原文请参见 Markdown Syntax; 本文地址: http://www.cnblogs.com/ayning/p/43 ...
随机推荐
- POJ 2195 Going Home (带权二分图匹配)
POJ 2195 Going Home (带权二分图匹配) Description On a grid map there are n little men and n houses. In each ...
- 关于shell脚本函数、数组、字符串截取、svn更新发布实例
#/bin/bash #功能:QA服根据模板创建区配置文件并提交到svn上. SOURCE_PATH=/data/source_code SVN_PATH=/code/psm #svn发布目录,要 ...
- ASP.NET MVC5 怒跨 Linux 平台
安装CentOS 安装Mono #安装yum工具包 yum -y install yum-utils #通过rpm添加Mono源 rpm --import "http://keyserver ...
- 分页功能的实现——Jdbc && JSP
@目录 什么是分页 ? 两个子模块功能的问题分析 和 解决方案 有条件查和无条件查询的影响 和 解决方案 项目案例: mysql + commons-dbutils+itcast-tools+Base ...
- 【javascript】回调函数
1. 定义 回调函数,即当条件满足时执行的函数.有三种方法实现调用回调函数 call 1)call 用法:call(thisObj, Obj) 主要区别:call 方法会将函数对象上下文修改为this ...
- super 与 this 同时使用问题
大家都知道this 和 super 调用构造函数时都必须放在第一句,今天同学问我的一个问题有点意思. 那么:我怎么在子类中 显式的用 super 初始化父类同时用 this 初始化子类? ------ ...
- Java映射
1.Student类 package com.zdsofe.javaweb.lianxi1; public class Student { public String stuName; private ...
- 说一说Jquery中的empty()与remove()的区别和用法
今天在改一个新人写的代码,好吧,我承认改代码比自己写代码要来的痛苦. 主要是在测试一个table.table中有一列是删除操作.我的删除功能是 这样的,当点击删除的时候,判断这个table中的tr行是 ...
- css简单实现五角星评分、点赞收藏、展示评分(半颗星、1/3颗星)
1.前言 之前做的好几个项目中,都会遇到打分,评分,点赞这样的需求,写了很多次,每次需要再写的时候,就会翻出之前写过的代码,然后copy过来.总觉得这样的话没有进步,没有把知识放进脑袋里,所以,自己花 ...
- teamviewer试用期到期解决
1.命令行输入:%appdata%删除teamviewer文件夹2.命令行输入:regedit删除teamviewer文件夹3.卸载tv4.控制面板->设备管理器->网络适配器->f ...