用 Markdown 写作,用什么文本编辑器?

关注者
5,325
被浏览
1,312,131

258 个回答

如果你心情好到想用 Markdown 写论文、出幻灯片的话,那就试试 MS Research 开源的

Madoko

在线 IDE 吧。

Madoko 除了提供一套强大且系统的 Markdown 语法拓展之外,其输出部分也是很有意思。Madoko 的输出提供 HTML 和 PDF,其中 PDF 部分交给 LaTeX(官方默认配置是 TeXLive XeLaTeX)处理。

Madoko 的 PDF 输出长这样(

research.microsoft.com/

):

相比之下

research.microsoft.com/

的正经版本丑多了,毕竟没高亮没对齐(。

网页可以拖拽上传 Document Class 定义(*.cls),这些 madoko.net 上面都有。还有个差不多大的文档的例子:

From Monads to Effects and Back

Madoko 的幻灯片输出可以用 Reveal.js 做 HTML,同时 PDF 使用 Beamer:

(删掉目录去掉 INCLUDE 就可以拉扁成普通文档…)

这块实现是和 madoko 核心解耦合的:

madoko: styles/presentation.mdk

自带模板:

嗯 Presentation 是那堆模板之一。

可以在浏览器中带语法高亮地编辑 TeX、BiB、CSS、JS(包括 MDK 里面用 TeXRaw Block 以及 script/style tag 内嵌的),当然还有 MaDoKo:

这东西还提供 HTML/mdk 实体、引用标识符自动补全,和 Visual Studio online 一样用的是作者 daan 自己写的 monaco-editor。

另外还有诸如编程语言语法高亮可以自定义 Tokenizer 规则拓展(当然你也可以用 Prettify 之类的东西)、使用非等宽字体打印代码时支持对齐之类的特性。和这玩意比起来,StackEdit 之流的 Markdown Extra 彻底成了小打小闹。网盘同步也是有的(包括 Dropbox 和 GitHub 的三路合并和实时队友位置显示),还有 ReStructuredText 里面的手绘复杂表格也有。要注意这些都是一式两份同时给 HTML 和 TeXLive PDF 输出的哟。

详细的手册页可以看

Madoko Reference

。你问作者是谁?

Daan Leijen

。嗯,Parsec 那个。daan 自己搞了个带副作用的面向函数编程语言

Koka

,然后就造了个 Markdown in Koka。

对了,这玩意支持文件头定义导入任意 TeXLive 包(例如 ctex),并且还能导入 LaTeX 文档,同时支持用 Snippet Block 插入任何 LaTeX 片段的渲染结果(DVI -> SVG)。TiKZ/pgf、tikz-uml、graphviz,爱用啥用啥。如果你要贯彻落实 Madoko 自定义 Block 的精神,自己加上 WebGraphViz、flowchart.js、js-sequence-diagrams 之类的东西,那也行,以后写在哪个文件里面当模板 INCLUDE 就好了。

我看到这玩意的各种框支持“写作……读作……”那样处理,这样可以高亮器接受到的是一般源码,最终输出的结果可以接受一大堆变换。bhuztez 的 J 语言可以自动转写成人话了。另外 tests 目录里面有一个用这玩意写成的

SKI combinator expander

* * *

CJK 处理指南

要优化 Madoko 的 CJK 输出其实很简单。

对于 HTML 输出,使用 html-lang 属性定义 DOM 节点的 html 'lang=' attribute:

.madoko { html-lang: zh-Hans-CN; } <!-- 全文定义,头上来一行就够 -->
<!-- 可以写成 class:-->
.cn { html-lang: zh-Hans-CN } <!-- 谁给个日语版的 CN block 那一段,我好改成 ja? -->
.tw { html-lang: zh-Hans-TW }

……一点示例文字,那么给你们作为一个示范。

我一篇安利 MSR Redmond 大法的文章,怎麼就被选進日報去了?
{.tw} <!-- 一段紧接一行加类 CSS 定义就是整段定义 -->

<!-- 或者这样: -->
He then said, [苟利国家生死以]{html-lang: zh-Hans-CN} <!-- 对方括号部分定义 -->

~ CN  <!-- 定义 class 就是定义了一个 block -->
这篇文章呢,一共就做了三件事:

1. 
2.
3.

还有呢,就是为开 [MadokoCJK] 这个坑打下了理论基础,这个对……
~
  [MadokoCJK]: https://github.com/Arthur2e5/MadokoCJK

稍微配合一点点 before after 以及 TexRaw 魔法的话也可以让 CTeX 有意思起来。

这样浏览器会自己选择该用的字体和排版方式。

对于 XeLaTeX PDF 输出,我们可以用 ctex 宏包(

@郭昊

在评论区提到的):

Package: [UTF8]ctex
<!-- 类似于:
~ TexRaw
\usepackage[UTF8]{ctex}
~
-->

要用 xecjk 也是一个道理,当然你也可以像 madoko 自己那样手撸 fontspec。咦,怎么谈 LaTeX 了?

* * *

v2ex.com/t/249268

处也有一些讨论。

#region 2016-3-19 更新
MarkdownEditor的UWP版本MarkDown.UWP已经发布啦,欢迎Win10用户(PC、平板、手机)下载。

UWP版下载地址:

microsoft.com/store/app

#endregion //2016-3-19 更新

作为一只软狗,我研究了一下Windows平台的下的免费桌面版的Markdown编辑器,并做了一个详细的对比表格(截至2016/2/10):

上面Atom中的问号,表示原始版本中没有,但可以通过安装插件来实现的功能

高清大图:

chenguanzhou.com/2016/0

哈哈,我就是来安利我写的MarkDownEditor的。

我一直觉得windows下面的MarkdownPad2挺不错的,但是免费版有好多功能不能用(比如导出pdf啥的),今年春节闲来无事,我就用

@vczh

推荐的WPF+MVVM模式写了一个Metro风格的MarkDownEditor。

截图如下:

主要功能其实在上面的表格里面都有介绍,我就捡几个重要的feature说:

  1. 支持Markdown,Strict Markdown,Github Markdown,PHP Markdown Extra,MultiMarkdown,CommonMark这6中Markdown解析器,并可以动态切换
  2. 中英双语UI,切换后重启生效
  3. 可以隐藏预览(编辑模式),也可以隐藏编辑器(阅读模式)
  4. 可以导出为纯html,带css的html,rtf,pdf,docxepub,latex,pdf
  5. 动态切换主题色(这也算?)
  6. 支持查找/替换
  7. 支持上传本地图片
  8. 支持自定义css以及css动态切换
  9. 夜间模式
  10. MathJax支持(仅限Markdown Processor,0.3.8新增)

    更重要的的是,MarkDownEditor是免费开源的。反正我通过这个项目,终于知道WPF依赖项属性是啥了(当年看轮子哥推荐的wpf的书,看到这里,愣是不知所云)。也终于知道了c#桌面程序怎么国际化/本地化了。还入门了用WIX搭建安装模块。总之已经有收获了,就不在乎钱了。

    (当然真正的原因,是因为我用了pandoc的exe,必须得GPL开源啊 )

    官网:chenguanzhou.github.io/
    Github:github.com/chenguanzhou
    下载页面
    Github:Releases · chenguanzhou/MarkDownEditor · GitHub

    欢迎大家来找bug,共同改进。(逃


    ======================分割线======================
  • 0.2.3及之前版本,有闪退bug
  • 0.2.4及之前版本选择非默认markdown processor导出会失败

请下载最新的版本替换安装