Emacs 25.3和Enriched mode——杂谈所见即所得和标记语言


#1

转载一个我自己的文章,希望引起大家的讨论,原文

https://chriszheng.science/2017/09/12/Emacs-25-3-and-Enriched-mode/

Emacs 25.3发布了,这个版本只是为了修复Enriched mode允许执行任意指令的Bug。这个Bug和这个修复版本没有什么好说的,就是一个设计上的漏洞,允许在文件中嵌入和执行Lisp语句,其实其他的模式也有类似的设计,但这个Enriched mode实在是古老和naïve,根本没有考虑安全性。既然Enriched mode又火了一把(存在了18年的漏洞,影响千百万用户……),想说说Enriched mode以及其背后的所见即所得和标记语言之争。

Enriched mode与所见即所得

正如上面说的,Enriched mode古老而幼稚,但人家出身还不错哟,实现的是一个国际化的标准RFC 1563,具体来说,是实现了一种简单化的支持所见即所得编辑的文件格式。今天的Bug也是为了实现功能而引入的,因为要在文件中更改高级的格式,如颜色,上下标等,必须要用Lisp来扩展,可以执行Lisp代码自然把危险引入了系统中。这背后的哲学就是所见即所得(WYSIWYG,What You See Is What You Get)的编辑模式。你看到的格式,如颜色、大小和布局就是你期望的,保存后打开,还是原来的样子(为了修复Bug,Enriched mode现在不支持颜色等高级的格式了)。标记语言则不同。

标记语言的特质

标记语言,如Org mode和Markdown,格式以一些符号标记,如*等保存在文件中,也就是说,你期望的效果是没法实时看到(如果你非要看,可以借助预览的手段,但这与标记语言的初衷违背)。这样设计的优点是

  • 兼容性好
  • 实现简单
  • 专注内容

主要的缺点就是不能实时预览。而所见即所得的有缺点正好和标记语言的相反,实现复杂,但更易于使用。

说到这里,需要插一句,数年前,RMS曾经期望Emacs成为一个所见即所得的编辑器,但讨论了一月左右,没有下文了。实现的困难以及目标用户数量过少是失败的主要原因,Enriched mode在当年就是向这方面发展的一个尝试。

另外一个圣战

在编辑领域,标记语言和所见即所得的战争发生在LaTeX和MS Word之间,它们俩分别代表了两种操作模式,二者孰优孰劣甚至有研究论文发表。对于用户而言,适合的就是最好的,不是么?

延伸阅读

另外,我以前写过Markdown和Org-mode的比较,算本文的一个延伸阅读。

把文章转载过来引起了大家的讨论,有不少的回复,还部分解决了我上面文章中提出的Org mode无法良好处理化学名的问题。能生产一个话题我非常高兴,接着各位大神的话再说几句我的观点

  1. 标记语言的一个功能是方便作者快速写作,提高「文字→出版」的效率。这点做不好,不能算「好」的标记语言。

  2. 再次强调,适合的才是最好的。我不喜欢Org mode,可能是因为它不适合我,所以我在上面说了一些负面的评论。我想说,如果Org或别的什么工具不适合你,换个适合的就好。

  3. 内容和样式分离可以提高写作效率,一定要善于使用,标记语言也是为此而生的。

  4. Emacs的用户不大喜欢所见即所得的方式,这点也就没有引起什么讨论。但不能就此轻视它,因为很多人对于Markdown实时渲染的需求,不就可以用所见即所得编辑来解决么?

  5. 再次感谢各位的阅读和讨论。


有什么推荐的编写 word 文档的方法?
#2

这是要引战吗?我看链接的博文说得很不客观啊,怎么叫 “org-mode 折腾了以后只是达到了其它工具的平均水平”?楼主怕是没有考虑 org-mode 的文学编程能力吧?

你要只把它当作排版工具那我无话可说


#3

Markdown 和 org mode 的比较不够深入细致,导致文章有直接跳到结论的感觉。

不过结论大体上是没有问题的。不可否认 org mode 有 @et2010 所说的文学编程能力,但作者的使用场景显然是静态博客写作,从这点上说结论不算错。

可惜了 Markdown 最后也没有标准化,仅仅止步于当前。


#4

感觉 markdown 里面最万能的应该是 pandoc markdown了


#5

Hexo 生成 Blog 的速度比 Hugo 速度慢多了,更何况 Hugo 支持 Org-mode 语法。

Org-mode 和 Trello 结合的产物,能够把本地的 Ogr-mode 状态更新到 Trello 上,也能把 Trello 最新的动态更新到 Org-mode 上,这些都是一键完成的。电脑不在身边使用 Trello 的手机端,有空的时候在和本地的Org-mode 同步。

Kanban 的功能:当你在 Org-mode 的 Table 中更新任务状态从 Todo 到 Done,下面的文本也能及时更新。

大作家纳博科夫的工作法就是写卡片,这不就是 Org-capture 吗?Org-mode 有 Tags 的功能,很容易给自己的写好的 Org-mode 文件立 Tags,这样找起来也及其方便。

这世界上还有什么工具能做到上面这几点的呢?况且我连 Elisp 水平还是半吊子,也没有折腾就能用 Org-mode 实现我想要的功能了。


#6

这个我不怎么清楚。静态博客方面我用过 python 工具链,扩展语法和大多数收费/免费的 markdown 客户端基本一致。名字好像叫 multi-markdown,但是这个界限其实也比较模糊。


#7

可惜我只能点一次赞,我很好奇这么多冷门的东西是专门搜到的吗?我指的是看板


#8

说实在我对 org 没有别的抱怨,如果性能上再优化一下就完美了。


#9

:joy:似乎真的引起讨论了。链接的博文反映了我之前非常片面的认识,也确实没考虑文学编程能力


#10

Kanban 在 Planet Emacs 上一篇搜录的文章上提到,我偶然发现哒。


#11

上一次查看 Hugo 的时候,它还仅支持 markdown 呢。当时感觉 go 风格的 markdown 扩展比较残疾,就没再继续关注了。我一会再看看。

要说支持格式多的静态博客,非 Nikola 莫属。支持 org 哦。https://getnikola.com/handbook.html#supported-input-formats

最近在搞一个 Nikola 的主题,发现坑也是比较多。嗯,欢迎一起入坑。


#12

自从 GitHub Flavored Markdown (GFM) 之后, MultiMarkdown /Markdown Extra 就渐渐的没人关注了,至少我个人感觉是这样的。

曾经 CommonMark 跳出来准备扛起标准化大旗,结果 Markdown 作者当面泼冷水,连名字都被迫改了。

Pandoc 是个奇特的存在,仗着全面通吃和强大的扩展能力,也无所谓什么 Pandoc’s Markdown 了,想怎么插就怎么插。


#13

所以我后来又学了 reStructuredText,计划用这个来写博客以及搞其它东东。

我喜新厌旧很快的 :rofl:

Markdown 标准化受阻确实让人痛惜,虽然完成目前的一些任务还算不错,但总是希望她还能有更多作为。


#14

AsciiDoc 也不错,可以看作是改良版 Markdown:

http://asciidoctor.org/docs/user-manual/#comparison-by-example


#15

我不信能比用直接 pandoc 当后端的那几个生成器支持的格式多。:neutral_face:


#16

我有一个比较片面的认识。总觉得使用纯文本的语言总是要好过一大堆乱七八糟的自定义格式。

不信可以去看看macOS下的Microsoft Office相关讨论,看有多少不兼容的东西。。。 我始终觉得,最后的渲染这种事情还是交给机器做,这样永远能在适合的设备上得到最好的结果——前提是别友人出来搞专有语法。

而且学这种东西一点都不会造成什么负担,本社很多从来不知道编程为何物的社员,没过半天就已经学会markdown了,而且饱受语法复杂诟病的LaTeX也没传说中的那么复杂。更别说Emacs有org-mode这种神物


#17

敢问是什么社?


#18

某说服不被认可的爱情的社团。


#19

看不懂 :joy:


#20

对了,我对org放弃的一个原因是有些东西打不出来,比如我文章中说的那个化合物名。不知现在怎么样了。