惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
J
Java Code Geeks
月光博客
月光博客
博客园_首页
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
B
Blog RSS Feed
博客园 - 聂微东
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
Jina AI
Jina AI
S
SegmentFault 最新的问题
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
量子位
Martin Fowler
Martin Fowler
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
一个简单的功能,让你再不为编辑公式发愁 - 少数派
2025-02-26 · via 少数派

几乎每个理工科研究生以及文章作者都会遇到编辑数学公式问题。我至今都记得当我试图在word毕业论文中插入一个大型公式的时候,office那个公式编辑器给我带来的巨大麻烦。word公式不仅需要你在编辑的时候反复打开符号表寻找重复使用的那几个符号,而且还很可能在不同设备上打开之后格式就乱掉,大大增加你的血压。

为了解决这个问题,很多人开始诉诸于手写公式智能识别之类的手段。不过这种方法一般依赖于一些外设设备(比如iPad,手绘板),而且修改起来还是很麻烦。

如果你看过我之前写的那些用数学笔记做案例的文章,你可能会好奇一件事:我写一篇笔记需要插入如此多数学公式,这不累吗?用打字的方法写数学公式,其难度远高于手写公式,会不会导致做笔记效率低下?

在这个问题上,我可以负责任地告诉你不会。在长期的探索中我总结出来了一套可以高效输入数学公式的方法。只要掌握了这套方法,任何人都可以快速并且轻易地创造出排版雅观的数学笔记。这是我输入数学公式的一般速度:

本文我将会从头开始,一步一步教你如何实现公式的快速输入,让数学等最重要的学问纳入到自己的知识管理体系中来成为可能。

少数派编辑器不支持数学公式,所以下文中的公式演示全部用截图代替,敬请谅解。

数学公式的排版

数学是一门极度古老的学问,其使用的符号系统是手写时代发明的,这导致数学公式比起文本来说更像是图画,给电子时代的排版造成了巨大的困难。

为了解决这个问题,人们决定使用文本代码来描述字体、大小以及相对位置等信息,然后把代码渲染为矢量图形,从而以图片的形式把公式插入到文章中。这种思路的代表产品是LaTeX。如今你看到的大部分理工类书籍、论文都是用LaTeX实现排版的;几乎所有的markdown编辑器也都使用LaTeX来渲染公式。比如这是LaTeX渲染的连续型随机变量的贝叶斯公式:

P(X=x|Y=y)=
\frac{P(X=x,Y=y)}{P(Y=y)}=
\frac{P(Y=y|X=x)P(X=x)}{\int_{-\infty}^{+\infty} P(X=x)P(Y=y|X=x) \, dx }

然而LaTeX也有许多显著的缺点:

  1. 语法极其繁琐冗杂(从上述公式的代码多达113个字符);
  2. 至今(2025)都不支持实时渲染。

虽然后来MathJax以及KaTeX等渲染器实现了对LaTeX公式进行实时渲染,但是LaTeX语法冗杂的特点使得输入公式的效率极低,这成了其硬伤。而且由于理工人长期以来都是一个庞大却被忽视的群体,这导致绝大多数笔记软件对公式的支持极差,这才导致了数学在笔记以及知识管理上的巨大问题。

有许多人都在为解决LaTeX语法冗杂的问题而努力。比如asciimath、orgmode以及typst之类的标记语言就对公式语法进行了大量简化,大大改善了输入公式的体验。不过这些产品目前还属于小众领域,市面上主流的网站以及笔记软件几乎都不支持;只有Obsidian有插件可以支持渲染笔记中的asciimath以及typst公式。

解决方案:Code Snippet

Code Snippet是一个在代码编辑器中很常见、很简单、但是很小众的功能。你可以预先设置一些snippet规则,当编辑器检测到你输入特定字符之后,就会将其替换为snippet规定的一段文本。Code Snippet是冗杂语法最有效的克星,一直以来都为经常遇到这种问题的前端程序员所使用。

比如说,希腊字母使用频率很高,但是输入很麻烦。于是我就设置一系列规则:

  1. aa->\alpha
  2. bb->\beta
  3. gg->\gamma

于是我就可以愉快地在公式中使用希腊字母了:

LaTeX中的花括号、换行需要用矩阵元素,输入起来非常麻烦,于是我也可以用简单的指令替换它们:

有些公式极为常用,但是输入起来却很麻烦。我希望能直接生成整个公式,然后留空让我去替换几个位置。这可以使用Code Snippet的占位符功能: 

这样的解决方案思路启发了一个叫做Gilles Castel的数学系学生。他根据自己的现实需要编写并且打磨了一整套涵盖数学的方方面面的Snippet规则,然后配合上纯熟的vim技巧,用纯LaTeX做笔记。这是他展示的笔记例子: 

这是他使用vim+latex做笔记的速度(渲染已经跟不上他的速度): 

就像编程的效率瓶颈不是写代码的速度而是思考的速度一样,我们也不必为了追求这样的极致速度去苦学vim。接下来我会讲述我是如何具体去写数学笔记,并且提供我自己的模板。

Obsidian数学笔记

Code Snippet是个很简单的功能,但是支持Code Snippet的笔记软件寥寥无几。市面上红火的笔记软件(比如Notion、语雀、思源笔记)几乎都把精力花在了开发数据库、思维导图、多维表等复杂、且利用率也堪忧的功能上,这让我时常觉得它们根本不管一众理科人的死活。不过好在Obsidian提供了LaTeX Suite这样一个插件来担此大任。LaTeX Suite在之前的插件推荐中介绍过,其将Gilles Castel的snippet方案迁移到了Obsidian中,并且支持自定义snippet规则。上面我提供的所有例子都是使用Obsidian+Latex Suite实现的。自定义配置文件入口:

不过默认提供的snippet规则并不能完全照顾到我们的需求,还需要进一步修改,为自己做适配。于是我首先是修改了部分常用的希腊字母的触发文本:

  1. tt->\theta
  2. ld->\lambda
  3. LD->\Lambda

Λ以及θ都是很常用的希腊字母,但是原版规则里没有方便的输入方式。

我们经常需要使用的min, max, log没有输入快捷键,于是我让输入这些符号的时候在前面加上一个\,于是这些运算符就可以和使用斜体字体的普通变量区分开了。

有时候我们经常需要输入序列,这相当麻烦,于是我设置了自动生成序列,并且可以方便地修改内容:

此外,对于巨算符(求和、连乘等),我也单独做了优化。我让它可以自动添加顶部和底部:

除了上述这些,我还有许多其他的优化,不限于数学公式。如果你想要获得我使用的snippet配置文件,可以关注我的公众号「西郊次生林」,在后台回复「latex suite配置」获取。

总结

数学公式是理工科文章的一个重要部分,几乎每个科研工作者以及markdown笔记实践者都会学习如何编写LaTeX来渲染公式。但是作为一门标记语言,LaTeX本身的历史痕迹太重,语法过于冗杂,这大大限制了我们编辑公式的效率。

Code Snippet是一个简单但是实用的功能。通过设置snippet,我们可以将简单的指令拓展为模板,从而实现快速编辑公式。大多数代码编辑器(VSCode,Vim,Atom等)以及Obsidian具有这个功能,合理设置之后可以实现高速编辑LaTeX公式,甚至可以满足课堂笔记的需要。我比较推荐大家以Gilles Castel的Snippet方案为蓝本,根据自己的使用习惯打造自己的公式编辑方案。这样有助于实现效率最大化。

我是@西郊次生林,一个关注学习方法/效率工具/知识管理且热衷写作的研究生。希望我的文章对你有帮助。