编辑器单引号如何不被转码_从零打造HoloDoc编辑器(三)

通过前两篇文章的论述发现,增强型输入法方案之于数理文档的即时、高效编辑,有着其他方案无法比拟的诸多优势,是上述列举的诸多方案中的最佳方案,尤其在移动端,该方案的优势更是显而易见。

那么,如何基于增强输入法方案设计实现一个即时、高效、所见所得的数理文档编辑器呢?

一、总体构思

首先,需要实现一个增强型的输入法,不仅能够快速输入文字、标点,还能便捷输入数理符号、结构以及公式。 其次,需要实现一个由格式化数据驱动的数理文档显示引擎,能够实时接收规范化、格式化的数理文档数据,并实时渲染为正确的数理文档。 最后,还需要实现一个针对数理文档显示引擎的光标及焦点管理系统,从而无缝衔接增强型输入法与数理文档显示引擎,实现所见即所得的数理文档编辑效果。

考虑到PC端已经拥有了相对完善的数理文档编辑能力(Word、WPS、LaTeX等的贡献),而移动端仍然十分欠缺这种能力,且增强型输入方案相对于其他方案的独特优势在移动端比在PC端更加显著,加之考虑到项目实现的周期、成本,以及考虑到本人的能力与精力的限制。

综上权衡后,决定:本编辑器初步设计为:

1. 基于uniapp实现
2. 仅限移动端Android、iOS可编辑
3. 可在移动端的Android、iOS、各家小程序、H5,以及PC浏览器显示
4. 支持文档转PDF,以便打印为纸质文档

二、工作原理及细节要求

1、用户通过菜单或命令新建一个数理文档。随即光标管理系统自动置焦文档,并将光标定位到文档的开始处。与此同时,光标管理系统自动弹出编辑器内置的增强型输入法,使新创建的数理文档自动进入编辑状态

2、用户也可以通过菜单或命令打开一个已经存在的数理文档。数理文档显示引擎会自动读取该文档的格式化数据,实时渲染为所见即所得的可视化数理文档,并加以显示。此时,新打开的数理文档默认处于浏览状态,只能阅读无法修改。

3、用户可以通过菜单或命令,或轻触已打开的文档,将处于浏览状态的数理文档切换至编辑状态。则光标管理器将自动置焦该文档,并将光标定位到合适位置,然后自动弹出内置的增强型输入法,使文档进入编辑状态。

4、在编辑状态,用户轻触文档的任意位置,都将触发光标管理系统重新定位光标至文档的合适位置,从而使用户可以在新的位置编辑文档内容,实现所见所得的编辑效果。

5、由于数理文档显示引擎是由格式化数据驱动的,因此所谓的文档编辑过程,其实就是通过输入法更改格式化数据的过程。一方面输入法在光标管理器的管理和用户的编辑操作下,不断更改数理文档显示引擎的格式化数据。另一方面,数理文档显示引擎不断地监测格式化数据的变更,实时渲染更改后的格式化数据,并刷新显示效果。

6、为了满足用户需求,数理文档显示引擎也可以接受LaTeX格式的数据,引擎会首先将LaTeX格式数据转化为引擎所需的JSON格式的数据,再送入引擎内部进行渲染及显示。则其他平台的一切规范化LaTeX文档数据,都可以通过本引擎正确渲染和显示;而本引擎的格式化数据亦可转化为规范化LaTeX文档数据输出去,从而被一切支持规范化LaTeX文档的显示引擎所支持。

7、另外,光标管理系统也可以接受一些输入法指令,从而很好地提升数理文档的编辑体验。常用的输入法特色指令有:

1. 成对符号指令
该指令可用于编辑成对的符号和结构。例如:中英文的单引号‘’、双引号“”、圆括号()、尖括号〈〉、方括号[]、花括号{},中文的六角号〔〕、书名号《》、空心方头括号〖〗、实心方头括号【】、单直引号「」、双直引号『』,写在文字下方的专名号、浪线书名号、着重号、下划线,以及数学的连体上下标结构、简谱的减时线等,都可以使用 成对符号指令进行输入。
2. 光标跳跃指令
该指令可用于管理与成对符号相关的光标移动与定位。某些情况下,当用户轻触文档内容,试图将光标移动到某个位置时(例如单引号‘’的内部),可能会由于触点位置附近的字符或者成对符号的尺寸过小,难以快速准确地定位光标到目标位置。此时可以通过光标跳跃指令快速将光标定位至目标位置:首先轻触文档内容,将光标定目标位置附近,然后用光标跳跃指令,在成对符号外部向左或向右跳转至最近的成对符号的外侧边缘,或进一步跳转至成对符号的内侧边缘;或在成对符号内部向左或向右跳转至成对符号的内侧边缘,或进一步跳转至成对符号的外侧边缘。
3. 光标移动指令
使光标向左、向右移动一个字符,或向上向下移动一行。
4. 光标换焦指令
使光标向左、右、上、下、左上、右上、左下、右下等八个方向切换焦点至另一个编辑框(例如将光标从指数结构的基数处切换至指数处),从而可以快速编辑分式、根式、角标、对数、分段函数、行列式、矩阵、表格等复杂结构。该指令与光标移动指令的显著区别在于,该指令可以嵌套使用。 该指令是本编辑器能够高效编辑数理公式的核心指令之一。

8、另外,增强型输入法本身也应当具备如下特征,从而保证能够高效编辑数理文档:

1. 较强的通用文字输入能力
常规的拼音输入法,重音和重码都很严重;因而通过智能排序技术,将常用字词前置,而将不常用字词后置。这种做法在日常使用时没问题,因为日常使用的字词非常有限,几乎不会涉及生僻字词。但在数理文档编辑状态下,往往涉及较多的专业技术术语、且日常不太使用的表达方式,用到不常用字词和生僻字词的概率大增,智能排序技术的弊端就会突显。因 而增强型输入法需要提供一种能力,使得当用户遇到到不常用字词和生僻字词时,能够有一种便捷的办法,在几十上百个候选中快速找到目标字词。
2. 强大的多元文本混合输入能力
在编辑数理文档时,不可避免有更大的概率遇到如下需求:编辑语文教育相关文献时,能够高效输入任意中文标点符号;编辑英文教育相关文献时,能够高效输入任意英文标点符号;编辑数理文档时,能够编辑编辑中文为主、夹杂较多英文术语且术语有大小写混杂,夹杂较多中文、英文标点符号,夹杂较多的数字与数学运算符,夹杂较多数学字母和数学符号。这就 要求增强型输入法需要提供一种多元字符混合能力,能够在尽量不切换键盘,或尽量少切换键盘的情况下,便捷地混合输入含有中文,英文(含大小写),标点符号(含中英文),数字,数学运算符,数理各科专用的特殊字母、特殊符号、特殊结构以及特殊数字等多种类型的字符的多元混合文本,避免在输入混合多元文本时由于频繁切换键盘和频繁滚页查找字符而浪费大量时间,大幅降低数理文档的编辑效率。
3、数理专用字符的便捷输入能力
这种能力包含两层要求:一是具备一种简洁易记、容易上手的低门槛特殊字符输入规则;而是通过这种规则,用户能够快速完成任意特殊字符的输入。对于第一层要求,LaTeX提供了一种规则简洁但是难记、难以上手的高门槛特殊字符输入规则,属于反例;虽然配合具有自动提示能力的编辑器后,LaTeX稍微降低了门槛,但依然无法满足第二层要求,无法让用户快速完成任意特殊字符的输入。
因而增强型输入法提供了如下三种输入组合来同时达成上述两层要求:一是将所有特殊字符按照外观进行科学分类,然后采用类似于五笔字型编码的原理进行编码(但编码规则简单得多,几乎无需刻意记忆规则就能掌握,例如⊙,可由“○”和“•”二者组成,输入规则为○+•),使得用户只需简单理解编码规则,就能够字符根据外观、通过编码规则快速输入任意特殊字符;二、按照特殊字符的中文发音、英文命名分别独立编码,并将混入正常的中文词汇的码表中,从而实现类似于万能输入法那样的混合输入方式。三、对于任意一个特殊字符,用户均可任意采用形码方式,也可以采用音码方式,或者通过直接输入英文单词,快速输入;四、增加强大的容错能力、联想能力,用户输入的编码只要稍有相似,即便是错误的,也依然能够将正确的字符上屏,或者通过相似性联想间接上屏,从而进一步降低特殊字符的输入难度。

三、发展展望

本编辑器完成初步设计之后,如果条件允许,将会进一步维护和发展。主要在三个方面:

1、显示引擎发展方向是,不断增加更多板块的显示能力。

目前,显示引擎已经能够渲染和显示普通文本、角标、分式、根式、分段函数、行列式、矩阵、表格、图片、超链接、化学式、简单的化学方程式、富文本排版。

后期将不断拓展其它渲染能力,如化学电子式、化学结构式、化学结构简式、氧化还原反应的化学方程式(含电子得失箭头结构及说明),数理各科数据图表、绘图、动画、视频……;简谱、五线谱……

只要是能够在电子显示屏上显示的各科学和技术领域的专有结构的文本,都争取能够显示。与此同时,为了不显得臃肿,采取弹性设计方案,组件化各功能模块,从而在不同的场合按需取用。

2、光标管理系统,发展方向是开发更多的实用指令,并提高现有指令的执行效率

3、增强型输入法,发展方向是丰富词库、字库、符库、结构库,以及公式库,同时增加更多类型的特殊字符的输入能力,并优化现有的输入能力及输入效率;也可以在输入法成熟之后,将源码嵌入具有保密需要的APP中、或嵌入有规避大厂输入法收集用户隐私需求的APP中。

4、整个编辑器,发展方向是开发更多的富文本文档模板,使得同样的格式化数据,在同样的模板下拥有相同的富文本显示效果,且在不同的模板下拥有不同的富文本显示效果,实现样式与内容的分离。

5、整个编辑器,其另一个发展方向是扩展更多的使用场景:编辑的文档可以直接打印;编辑的文档可以进行云存储;编辑的文档可以一键分享到朋友圈、微信公众号,以及一切接入了显示引擎的网站平台;编辑的文档可以多人在线编辑。

6、整个编辑器,其再一个发展方向是,可以实现即时的数理文本编辑,嵌入到在线教育类即时聊天软件的聊天窗口内,实现即时的技术交流;嵌入到在线教育平台的在线学习系统的答题模块中,方便学生在线答题;可以嵌入题库网站的后台,方便后台题库编辑人员快速编辑全新题库;可嵌入AI教育平台的答题模块中,便于AI系统更深入地收集学生的答题信息,更精准地判断学生的知识结构,从而更精准地规划学生未来的学习路径,实现更精确的人工教育智能。

基于这样的一种设计思想,我将上述理想的、能够显示任意类型文本内容的数据文本,称为全息文本(HoloText);由此渲染出来的文档,称为全息文档(HoloDoc);为编辑此文档而设计的输入法,称为全息输入法(HoloInputMethod);由此而设计的整个编辑器系统,称为全息编辑器(HoloDocEditor)(英语水平不佳,将就着用)。

当然,理想虽然丰满,也还得看实际能力;就目前来说,实现基本的、可用的、有一定效率的数理文档编辑能力,就已经是当下的最高目标了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值