流水账〔廿八〕

头疼,也不想闲着,写点是点。昨天提了个问题,其中公式稍微多了一点(其实也就两个),于是就感觉「本地存储」和「网络存储」之间的隔阂。在本地的Word文档里面,使用「公式编辑器」插入公式,而在知乎发表就需要转换成LaTeX语法,于是「备份」就不会「同步」。包括但不限于知乎在内提供公式功能的站点都会遇到这种问题。

站方当然无所谓,恨不得所有用户人手一台「瘦客户机」24×7在线,但是用户可不这么想,即便站方拍胸脯忽悠用户尽管放心的把鸡蛋放在同一个篮子里,万一遇到「不可抗拒的自然力或政治力」被「亦当删去」了岂不是鸡飞蛋打乎?

然后又看到若干学霸提到,在「个人博客」上面使用了啥啥技术实现LaTeX公式编辑功能,这一招也不适合普通用户。需要写公式的用户未必是信息技术精英大拿,自力更生艰苦奋斗自己动手丰衣足食这种事,还得是「数学渣」和「不入流码农」的交集才有资格。

更何况,即便是「个人博客」可以「深度定制」,其「文档」的格式到底是什么吖?若是几乎处处没有公式,以Word或「开放文档格式」都可以实现;若是几乎处处都是公式,那么用LaTeX文件更合适。怕就怕各占一半,哪怕公式稍微多了些,都不好办,正如昨天提问的时候体会到的场合。

这就是说,哪怕「站方」有诚意提供「客户端」,也同样会面临这个问题。因此,咱以一个「精神病仆街写手不入流码农数学渣」的身份,传授一点人生经验,也是之前十几年反复涌现的构思和「创作冲动」当中的微小的一部分。

这个话题的「缘起」也是在之江临安「原创文学论坛」以及曾经的群里。当时有码字巨侠感慨网文站点排版恶心,因为曾经的某网文站点的付费阅读页面曾经是用图片实现防盗版的,其中字体选择甚为非主流,程序功能也有待商榷,尤其是西文部分,除了空格都被「亦当删去」之外,还经常出现各种HTML转码,包括但不限于欧罗巴大陆若干标音记号与标点符号均比较充沛的正字法相关语种。

然后码字巨侠继续感慨,说自己的大作于本地显示如何华丽,似乎还有截屏若干。总之就是运用了包括但不限于「Microsoft™ Word」在内的商用字处理软件内置样式功能加以渲染,按照「门纲目科属种」的级别排列标题,正文中倒是一律憨厚淳朴宋体五号字,不粗不斜无色无味。当被质疑「金玉其外败絮其中」的时候,码字巨侠抱怨「发出去也是纯文本费那个事作甚」。

这时候,「情商负无穷」的我,又出来应景泼冷水了。我说这个「出版界」的内幕,各位专职写手想必比我更清楚,不清楚的还有钦定文豪可以请教。总而言之无论写手自己费多大劲搞装修,到了编辑部还得重新来一遍,实体书需要的效果必须「识大体顾大局懂政治讲规矩守纪律」,那些写手自鸣得意实现的效果,反而是阻挠编辑工作的麻烦。所以,建议有志于享受码字环境的写手,最好还是找个关系户随便要个模板过来,简约的最好,然后在里面按照相应格式填空就成了,不用把时间精力浪费在排版之上。

再然后,就是各种环境的比较,正因为网络文学的纯文本特征,所以市面上涌现出一大批内置已经进入网文公众领域的通用设定极大充沛的码字软件,把功能的重点放在流水线生产的效率之上,包括但不限于锁屏强制完成任务之类。于是,咱继续照例泼冷水,说年轻的时候曾经用过一款「写手咖啡」(Writer’s Café)的写作辅助软件,除了内置通用设定不够充沛之外,功能比起这些玩具来不知高到哪里去了也。

而我自己,在还是有着码字梦的逗哔时期,因为这款软件并非免费,并且习惯于在模板充沛的商用办公软件当中工作而不想面对憨厚淳朴的纯文本,所以其实只需要其素材收集功能。于是,惦记着自力更生艰苦奋斗自己动手丰衣足食,开发了一个半成品「废材争霸」(StuffCraft),截图在群里贴过。就是采用犹如各种电子邮件界面的那种俗套架构:左边树状列表,右边上半部列表视图,下半部编辑器。因为时间原因和开发工具提供内置构件的限制,编辑部分刚完成从纯文本到富文本的过渡,还没有处理图片,也没有搜索功能。

以「精神病仆街写手」角度观察的「缘起」到这里差不多就结束了。而从「不入流码农」角度观察,「缘起」才刚开始。在那历史の转折点,2010年夏至前后,微软的开发环境「其命维新」过一次。在前面的流水帐当中也提到了,适合网络的文档不是「书籍」式页面布局,而是「卷轴」那种「不分页只翻页」或曰「页面不等长」的布局,页面内部图文混排也很少有「环绕效果」,除非专门编码实现。这种格式,称为「流文档」(Flow Document),感兴趣的读者可以自行搜索技术细节。

所以,虽然那之后不再关注业界前沿发展,但是对于既存技术实现个人需求的构思却没有停止下来。结合前面提到的,为了在互联网上发表包括图片和公式对象在内的文章,需要一个功能足够、格式简约但模板充沛的码字环境,以及相应的文档格式。所以,在「开放文档格式」的字处理部分也是页面布局的情况下,暂时决定了以「流文档」这种形式为基础。

说「为基础」,那还是因为数学渣一贯的职业习惯,「凡事往坏处想」「不惮以最大的恶意揣测」「战略上藐视战术上重视」「未算胜先算败」,万一豪门贵种走兽派豢养的奴才足够充沛,将微软及其关系户渗透得如同筛子一般,那么使用微软技术实现岂不是「自投罗网」「在一棵树上吊死」「膝盖生根头顶绿得发黑贱到骨子里去了」咩//

而「文档格式」并不复杂,哪怕只看知乎在线编辑器提供的装修选项也知道,不过是适合浏览器以及HTML/CSS规范之下可以标准化处理极大减轻码农维护工作量的那几种而已。所以,哪怕「流文档」格式有专利,照样可以从「开放文档格式」当中删繁就简,或者干脆自行定制一套出来,当体力活干也不麻烦吖。

运行环境就需要考虑了,并且通常是与开发环境绑定的。能和微软竞争的,并且市面保有量也足够充沛的,就是Java™那一套。但是呢,因为「搅屎棍Oracle™」是个「伪装成信息技术企业的律师事务所」,并且在「OpenOffice.org」领域还有「前科」,所以不可不防。于是,挑了个打着红旗反红旗唱对台戏的方案,也就是「日食」(eclipse)那一套,IBM出力甚大。

这里稍微解释一下,包括但不限于知乎的用户体验,各位网友都知道了,「编辑器」内部本身就是有格式的,不是LaTeX那种纯文本代码需要编译后显示的方式,也就是通常称呼中的「所见即所得」。因此,如果惦记着「客户端」提供相同或者类似的用户体验,最起码「本地编辑」总不能比「在线编辑」还弱对吧?而不要认为「在线编辑」实现困难,因为浏览器本身已经提供了相当丰富的各种格式了,只是在编辑和显示之间切换的时候的脚本编写比较麻烦,并非功能本身限制。

市面上其它各种非主流字处理软件,各位网友也见多识广过,因此,完全自行实现本地编辑功能,属于重新发明轮子,那么就需要寻找将类似功能封装的组件在其基础上继续开发。而在微软的开发工具已经内置了「富文本编辑」控件可以处理自家「流文档」的情况下,需要一个Java™阵营的类似控件,于是「eclipse/swt」这一套当中的「样式文本」(StyledText)就这样走入「不入流码农」视线了也。

再往后就不需要展开了,仅提示「Qt」也有类似的功能,也有开源协议,与「写手咖啡」使用的「wxWidgets」相比性能更出色功能更强大并且还更流行,不过「wxWidgets」可以用「Python」开发哟。所以,不仅「苹果」看见「微软」在「码字界」的「商用解决方案」可被替代的时候乐出来却没想过自己的处境,其它阵营也以此类推,幸灾乐祸还嫌太早,这帮手电筒总是不长记性。

因为我自己已经与「业界」前沿脱节七八年,对于日新月异层出不穷的极大充沛的信息技术一无所知,所以没有什么细节之上的建议。总之,前台利用内嵌对象实现公式的显示,以及后台使用开源的各种LaTeX库渲染公式,都是可以做到的。如此一来,就可以实现网络与本地之间备份的同步,并且格式统一不需要转换。

实现手段不止一套,并且贫穷限制了咱的想像力,只能选择开源或免费的解决方案。所以,惦记着刷政绩的党国栋梁青年才俊,可以多方下注左右逢源,互相良性竞争的同时,与惦记着捞钱的党国栋梁青年才俊那商用软件路径依赖的解决方案,进行恶性竞争。

如此一来,即可激化矛盾制造冲突增加剧情跌宕起伏程度,以满足新时代中国特色社会主义之下人民群众日益增长的美好精神文化生活需要,球安民乐岂不美哉?


2018.1.5, Venelis