优化数学公式体验

本贴最后更新于 1454 天前,其中的信息可能已经时移俗易

这些想法由来已久了。

在思源 1.2 版本更新后,数学公式编辑机制更改,变成了类似 notion 的浮窗更改。
这种编辑方式在对于行级公式,也就是比较稀疏的公式是可以接受的,甚至更优于原先的方案。
但是对于比较密集的行内公式,编辑体验明显下降。

从创建和修改两方面来说。

创建时,有两种渠道:直接输入 $$ 以及按快捷键 Ctrl+M 呼出公式浮窗。
直接输入此时有一个 Critical Issue:转义。因此很多时候直接输入会被转义而导致格式出错,例如 \dfrac{\pi}{2},如果先输入 \dfrac{}{} 再输入 \dfrac{\pi}{2},就会对 } 进行转义导致输入失败。在触发转义之后,几乎一定是无法正常编辑的,因为 \} 会吞走一个斜杠。这个可以通过调整输入顺序来避免,但总归是时不时出现的烦心事。此外,上下标等语法也会与公式输入的内容冲突,导致莫名其妙的显示效果。
而另一种方法,按快捷键呼出公式浮窗,则涉及到一个操作步骤繁琐的问题,即要按专门快捷键呼出、按 Esc 关闭浮窗。不过其实还是可以接受的,习惯后并没有多么复杂。

那么对于创建,一个优化的思路就是直接砍掉传统的 $$ 输入方式,强迫用户习惯新的方式。
另一个思路是在开始输入 $ 之后暂停转义,直到输入完成后再继续转义。这个方案的问题在于,有的用户会需要单独输入 $,因此可能难以判断其是否打算输入数学公式。不过转义的使用频率非常低(大概?),或许可以作为配置项。(冗余配置项又增加了、、、)

而更大的问题在于修改。
对于行级公式,由于本身比较稀疏,而且体积大,用鼠标点击这种比较低效的方式进行修改也是可以接受的。
但对于行内公式,用鼠标慢吞吞地定位、打开、修改、关闭面板一套流程走下来,成本很大。
现在增加了选中公式用快捷键 Ctrl+M 呼出面板的功能,一定程度上缓解了这个问题,但其实还没有解决。因为选中公式并不快捷

选中涉及到一个定位到前后,然后按住 Shift 键进行光标移动的过程。与数学公式有关的光标经常出神奇的 bug,选中后显示效果也经常出神奇的 bug.
而且行内数学公式一般与前后都有空格隔开,这让选中的精力负担又有所增加、、、

2.gif

\ce{Cl2},选中之后出现神秘的 X,如果带前后空格选中了再按 Ctrl+M 就会出现神秘的 bug.

在我看来,这都是现在对数学公式的选中处理不到位导致的。

我们应该对选中数学公式进行特殊处理。数学公式可以获得鼠标的焦点,被点击,那么它也应该可以获得光标的焦点,被用键盘“点击”。

因此,一个思路就是在用键盘移动光标时,给数学公式添加一个焦点。
123X456,其中 X 是数学公式,那么我们移动到 3 与 X 之间有一个光标停留位置,在 X 与 4 之间有一个光标停留位置,这是现行的设计。
而我们还可以让光标直接停留在 X 身上,在此时就赋予其类似选中的效果,然后再按下 Ctrl+M 进行修改的心智负担就会显著减小。(事实上,此时可以直接设计成按 Enter/Space 呼出修改面板,因为已经确定是数学公式)

在视觉上也可以加以强化选中的感觉,比如添加一个蓝色边框。(我总是对这种交互有种莫名的熟悉感)

image.png

有点像是选中超链接的这种感觉?然后按下 Enter/Space 键开始编辑,挺自然的。

还有退出一方面,Esc 键本身在键盘的最左上角,其实按压成本相对过高。用 Vim 之类的软件也会有这样的问题(不过我用的是 61 键的小键盘,把 Esc 改到了大小写键的位置,所以其实没什么所谓、、、),一个思路就是在编辑面板按下 Ctrl + Enter 就保存编辑,类似 QQ 的发送键,操作起来可能更流畅一些。

以上是我的一些想法。我使用行内公式的频率很高,说实话现在也差不多适应了,不会感到有多难受,但总归是想能不能更流畅、更丝滑一点。这里也给出了一些设想的方案,但不知道可行性如何,也不知道是否真的能改善数学公式输入体验,欢迎大家的讨论。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26454 引用 • 110028 回帖
1 操作
Clouder 在 2021-07-28 22:28:49 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    376 引用 • 1861 回帖 • 1 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    108 引用 • 153 回帖 • 1 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 397 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 649 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 563 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26454 引用 • 110025 回帖 • 1 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 4 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖 • 2 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 262 关注
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 281 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 43 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • V2Ray
    1 引用 • 15 回帖 • 5 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • 叶归
    14 引用 • 62 回帖 • 23 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 9 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 6 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 2 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 824 关注