目标对比软件和特性最初我最常使用的Markdown编辑器是Mou,后来是Typora。在公司项目开发的工程中,对工程师团队技术设计文档TDD(Technique Desgin Documents)[1]和工程实现后的DDD(Detail Design Documents)[2]的要求,使用了一段事件的gitbook + plantuml plugins。其中plantuml主要是为了描述流程图和顺序图。 但是gitbook这种方式还是显得有一些过“重”了,尤其是各种非js的工程师不得不去利用npm安装gitbook。我更希望找到一个能够支持流程图和顺序图的Markdown编辑器。于是一不小心,就开始了各种软件的特性对比过程。其中我自己购买使用Day One/Evernote来记录一些日记,Evernote更像是我的信息采集中心。后来又购买了Quiver,本文就是在Quiver中完成的。在同事的帮助下使用了一下Ulysses。其他的软件基本都提供预览版本。 也许下面的一些评测因为时间的缘故或者我当前急需的一些特性而有所侧重或者有失偏颇的情况,欢迎大家能够指出来。我会及时的更新相关的信息。 下面这个表格是我在对比过程中觉得比较重要的一些特性
功能说明Math LaTeX貌似都是使用这个javascript库实现的Mathjax inline 模式: Snip20160614_11.png 块(Block)模式: $$x^2$$ 效果 Snip20160614_8.png 看看复杂的 $$\begin{align} \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\ \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\ \nabla \cdot \vec{\mathbf{B}} & = 0\end{align}$$ Snip20160614_9.png 流程图和顺序图在Markdown(GFM)中用符号 “```” Code Block中支持流程图的表达。我个人认为,作为码农的文章或者文档来说,这个功能真的很重要。尤其在编写项目工程相关的文档的过程中更为重要。 如果考虑希望文章发布在各种平台上,最方便的是工具能够根据你的code block生成对应的图片。 但是作为编辑管理而言,希望能够保留原始的code block而方便对流程图的修改以及历史版本修改的对比。这就需要在发布功能或者导出到XXX的功能中,提供额外的选项,支持Math Latex和顺序图流程图导出时同时变换成png图片的能力,并同时修改原来的code block为图片的引用。 例如我在编辑器中写了一篇文章,此时,需要发布到jianshu.com上。如果能够满足把这些流程图转换成图片,并修改了导出目标的文档对这些新图片的引用,这样我们就能够在同一个编辑器中编写项目文档,又可以轻易转换为发布到网站的格式。 当然,目前还没有任何编辑器这样做。也许可以独立出来一个工具,专门处理这种情况,并负责提供丰富的可扩展的发布接口,帮助大家发布到更多的网站上,顺便也可以帮助把图都发到各种图床上。 流程图 flowchart.jsFlowchart: http://flowchart./ 这样编辑: st=>start: Start:>http://www.google.com[blank]e=>end:>http://www.google.comop1=>operation: My Operationsub1=>subroutine: My Subroutinecond=>condition: Yesor No?:>http://www.google.comio=>inputoutput: catch something...st->op1->condcond(yes)->io->econd(no)->sub1(right)->op1 效果是这样的(截图) DD27E78ACADF4A9BBD63CDEF5D2ABB3F.png 顺序图 js-sequence-diagramsSequence diagram mermaid语法上是兼容的。 js-sequence-diagrams的语法格式在mermaid中也是兼容的。 这样编辑: Title: Here is a titleA->B: Normal lineB-->C: Dashed lineC->>D: Open arrowD-->>A: Dashed open arrow 效果是这样的(截图): 6648A024A69C6D62E2EC240A2693CC53.png mermaid官方网站:https://knsv./mermaid/ 编辑语法 graph TD; A-->B; A-->C; B-->D; C-->D; 效果截图: F7C6E4791BDE09031ADE7CAADC6CA4BE.png
Ascii当然你可以考虑嵌入Ascii的block来实现。 使用其他绘图工具为什么还是需要额外的工具? 因为Markdown中能够嵌入的主要是图片,因此要注意如何管理好每个进入你文章或者文档的图片和原始来源文件的关联。这也是为什么我更希望能够使用code block来描述文档,然后在发布的时候转换成自己需要的格式。
Edit图片Edit - 图片插入Copy&Paste Snip截屏到Clipboard后, Command + v 复制到文档中,实现自动插入,并保存插入的图片到软件的文档库中(即图片拷贝到内部系统)。 Edit - 图片插入Drag&Drop 拖拽一个png图片到文档中,编辑器立即插入图片。 Edit - 图片拷贝到内部系统 无论是用什么方式插入图片,如果图片是本地文件,而不是外部超链接的情况下。编辑器负责拷贝图片文件到自己的管理系统下,而不是依赖文件原本的本地绝对路径。 比如Ulysses的这个功能仅限于内部文档库。而对于外部文件编辑模式下,是不支持图片管理功能。 MarkEditor,MWeb是对外部编辑模式下实现图片内部管理功能的编辑器。 TOC利用 导出导出到Markdown我们本来不就是在用Markdown编辑吗?是的,我们本来就是在用Markdown编辑文档。但是,所有的这些文档你编辑文字和图片,公式和图表之后。我们似乎有时候希望把文章发布到相关的网站上去。Ulysses可以发布到medium, MWeb作者开发了很多发布的目标例如Evernote, wordpress, medium等, MarkEditor则没有提供直接发布到任何网站的功能。 如果我们要发布到jianshu.com怎么办? 除了Typora和MarkEditor,其他的编辑器的主要功能都需要在自己内部的数据库系统或者网络服务的协同下才能完成。 在有导出到Markdown的功能的情况下,这个时候一个有文字有图片的Markdown文档必须尝试利用“导出到Markdown”的功能,把相关的Markdown和图片导出到一个指定目录,然后拷贝粘贴文字到jianshu的编辑器中,接下来找到导出的文档相同目录下的图片目录,然后一个图片,一个图片的插入。 没有这个功能的情况下,例如在Ulysses和Leanote下编译的图文并茂的文档,你难道要手动拷贝所有Markdown文本吗?可以,但是图片怎么办?图片难道要一个一个截屏然后再慢慢插入吗? 在或者如果你希望导出这个文章到你的Jelly,Hugo等静态网站发布系统中时,没有“导出到Markdown”功能将会多么的不顺畅? 因此,有一个完善的“导出到Markdown”功能是对于作者发布到更多的分享平台是多么的重要。 就像上面流程图和顺序图章节说到的,再给一个选项,能够把利用code block来实现的Mathjax, 流程图,顺序图顺便也生成图片,将会大大减少编辑器和发布功能之间的鸿沟。 高级排版功能高级排版
排版导出功能最强大的要属于Ulysses, 其次就是Markeditor。 更多的情况可能需要大家使用自己的转换工具来完成。 编辑器Ulysses & Day One全平台,贵!
MacTalk在自己的文章中推荐过这个软件。
同步和备份: 编辑: 自动版本历史控制: 写作模式和导出格式: 主题:
Ulysses 主题很多:http://styles./themes/?ref=u3_markupPrefs 没有提供实时所见即所得的模式,图片的嵌入功能也很薄弱,但是如果用Ulysses写文字偏多的文章(比如:微信公众号,小说,阅读笔记),它绝对是体验最舒服的,也许就是它的排版处理真的是很不错。 Day One 2
Day One 2我使用的感觉是更多的情况下很适合写日记。有很多插件可以搜集当时的天气,位置等信息,甚至是你的运动手环的数据。 最后Mac Talk的观点:
额外的扩展工具: 里面比较有趣的几个摘选
MWebJianshu上看到MWeb这款软件用户也不少
实时所见即所得的功能中,MWeb是最丝滑的。其次是Leanote。MarkEditor的预览器性能下降很快, Quiver的不对齐的情况也比较多。 导出:
这三种模式下,只有导出到PDF支持了把流程图变成图片显示出来。 发布: 能够轻松的备份到Evernote或者印象笔记,Wordpress的网站 D0494095FABDDAD9D165739E41020F0E.png 其中发布过程中,用户可以选择独立的图片服务保存图片。 但是在发布过程中,对于流程图部分,不是先保存成图片,然后再发布到相关网站上。 备份: 非常有意思的一点是同时备份到三个地方,防止单点失败吗? D558CF8BE51FCF739286C5F962B523C5.png 扩展设置: 目前仍然没有找到如何使用的文档,不知道怎么玩。 MarkEditor
Pro版本的功能支持
MarkEditor无法实现顺序图,Math Latex的表达模式不是用 单MarkEitor在对于管理目录级别的markdown文档的编辑工作上,当人不让的是最好了。美中不足的是双屏预览模式下的性能比Mweb差距还是比较明显的。 Quiver
Slogan 是The Programmer's Notebook。 数据格式主要是Json文档。Markdown中也可以插入图片,图片会被拷贝到文档管理库里,然后插入到Markdown文本中。 对于流程图和顺序图则必须使用Diagram Cell来编辑预览,但是在导出为markdown文件后,会被转换成code block的形式来表达。(sequence,flow) 不支持脚注,这个功能有的时候很重要: https://github.com/HappenApps/Quiver/issues/289 Quiver支持编辑器内部的文档之间的相互索引: 你可以创建链接到另一个笔记:(“笔记”菜单 -> 复制笔记链接 -> 粘贴) Quiver 自带的导出器支持 HTML、 PDF 和 Markdown。你可以导出整个 Quiver 的笔记本为相互链接的 HTML 网页。 导出为 Markdown 时,代码单元格会自动转换为 Markdown 内嵌代码块。这样你可以很方便地将导出的 Markdown 文件上传到 GitHub 或其它使用 Markdown 的平台。 程序小伙伴们的工具扩展:
Leanote商业化程度高,预览和编辑,发布博客文档丰富。 本地文件备份的地方是固定的目录下, Mac os x下的保存路径是: /Users/用户名/Library/Application Support/Leanote。 但是在使用Leanote在线服务的时候,Leanote客户端软件本身没有提供额外的备份功能。此外也没有提供导出到Markdown功能,因此多少让人有些不安。 额外提供独立商业部署版本TeaKKi,该版本提供了更多的针对企业的需求,比如独立部署,LDAP集成等。 Leanote全套开源的版本: 服务器使用golang(revel) + mongodb
其他Editor
MacDown作者本身开发的目的就是替代Mou,免费开源。类似Typora。 Cmd MarkDown
MarkDown Plus官网:
flowchart部分使用mermaid语法实现的,和目前的其他编辑器不太一样。
Markdown Mate纯粹的Previewer. 68 RMB 感觉就是Markdown Plus的显示部分。
其他其实马克飞象等其他编辑器也各有千秋,比如作为工程师很常用的另外一个编辑器是Atom, Atom那个分屏预览Markdown Previewer也是经常使用的功能。 Quicklook in Finder就是在你的Mac机器上用空格可以预览md文件的插件
总结如果你是纯粹文字作者,你可能更喜欢Ulysses的排版效果。 另外,因为最初的目的是找到适合工程项目文档的Markdown编辑器,因此这里对很多纯粹网络服务式的Markdown编辑器没有做过多的深入评测。但是大家在选择这种编辑器的时候要想到一点,如果不提供导出全部Markdown功能的纯粹在线编辑器,如果有一天这个服务不在了,我们怎么办呢?毕竟网盘不是也关闭了很多吗? [1]: 在模块开始之前,进行系统的设计相关的文档。往往在项目实际过程中,设计方案的很多宏观的地方展开,TDD所覆盖的内容就不足够描述系统的细节复杂度。 [2]: 在工程模块开发完成之后,从TDD进化而来的详细的具体设计文档,包括工程实现的方法,有待完善的地方等等。 [4]: Mweb在外部编辑模式下,至少要引入文档所在上层目录才能激活这些功能 著作权归作者所有 |
|