我是需要常常写文章和笔记的人。我总是存在于两个模式之中。写作和编辑。
这两个系统的操作模式非常不同。
作为一个编辑的例子。我用 LaTeX 写好了东西,改文章的时候一般是打印出 pdf ,仔细的看。找到了所有有问题的地方,再回到代码那里一次性的做改动。每一个改动平均要花 20 秒的时间来找到它在源代码的哪个地方。如果有所以 60 处小改动,20 分钟就花在了纯粹的寻找上。
有以下两个思考:
所以一个高效文档修改的系统应该存在 3 个不同的部分,并且可以互相对应。也就是以下 3 个层之间的变换。
研究过 Pandoc 这个任意 document 之间的转换器的人会发现这就是 pandoc 的工作形式。Reader 读取输入 X(比如 markdown)到 Pandoc AST, Writer 将 Pandoc AST 写成 Y(如 html, latex 源码)。
的确不少人用这样的系统来做简单的写作。自己写 markdown ,pandoc 编译了就输出 html 显示在另一边。比如我的博客就是这样了。(例子)。这个系统用来写作很不错,但是用来编辑就要累不少,因为输出层和输入层之间的转换有很大的 friction 。博客的好处是东西一般不会很长,但写文章的话那可是随随便便几十页纸(例子)。
如果想要做的再好一点,应该是类似 Typora 那样。输入和输出部分几乎是放在一起的。也就是除了光标所在的地方,几乎都是输出的样式。Typora 的粒度过细。以前的版本改比较大的数学公式的时候各种跳来跳去痛苦极了,不知道现在如何。改为每一行的粒度可能不错。也就是光标所在的行,只显示输入层,光标不在的行都是输出层。或者让用户可以自己选择粒度。
要满足这样的系统,上面三层应该局部对应。这三个不同的树之间,两两应该有简单的局部的双向转换。 这样的系统做好了,vditor这样的工具就会比较容易制造出来,并且可以支持任何输入和输出方式。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.