书写「数学公式」一直都是写作中的一个难点,使用 Word 之类的软件的时候,往往需要类似 MathType 之类的第三方插件来帮助输入,而且输入效率低下。
如今编写数学公式,「LaTeX 式数学公式」已经成为了事实标准,无论是 LaTeX 自身,还是 Markdown,甚至是 Word 里面的使用的 MathType 和 AxMath,事实上都支持 LaTeX 式的语法,其特点是类似 \int_a^b xdx
这样,特殊符号使用以 反斜杠 开头的 命令 来表示。
然而,直接使用 LaTeX 式的语法来写,输入效率依然很差。但是在使用了 VS Code 和 Markdown,以及一些 VS Code 插件 之后,输入效率会 大幅提升,甚至能达到比手写更快的效果。
这一期文章,我们均以在 VS Code 中编辑 Markdown 作为写作环境,介绍 LaTeX 式数学公式的书写方法。当然,这套书写方法在 VS Code 中编写 LaTeX 时也同样适用。
初学者刚开始学习如何编辑数学公式时,很容易就会碰到这两款软件。分别是 和 ,它们均可以内嵌到 Word 里。
说实话,我们 强烈不建议 购买这类公式软件。这类公式软件唯一优点就是可以附在 Word 文档里面,并且可以后续继续编辑。
然而,实际上,如果你编辑数学公式的需求 比较少,那么可以直接使用下文会提到的 在线 LaTeX 数学公式编辑器,不仅支持 可视化操作,而且 完全免费,能够生成 多种图片格式 以供内嵌到 Word 文档中。
如果你编辑数学公式的需求 比较多,那为什么不花费一两个小时,学习一下 LaTeX 或 Markdown 中数学公式的编辑方法呢?不仅 完全免费,而且 方便后续编辑,并且使用 VS Code 及插件之后,输入效率会高几个数量级。
LaTeX 原生支持数学公式,再加上 amsmath 宏包,就能以清晰美观的方式编辑数学公式。
除了可视化编辑和 LaTeX 式编辑之外,我们还可以考虑 数学公式识别。当前数学公式识别做得比较好的是 .
Mathpix Snip 有着 超高的识别精准度,甚至能够精准地识别手写的数学公式。
不过它也有缺点,就是收费昂贵。每个人每个月只能免费识别 50 次。可以订阅 pro 版本,每个月 5 美刀,最多能识别 5000 次。
我们当然也有相应的 JS 库来实现 LaTeX 式数学公式在 网页上 的 渲染,甚至是 编辑。当前常见的渲染库有 和
我个人常用的是 KaTeX,因为它渲染速度快,而且也支持了我需要的所有功能。
除了数学渲染,也有支持 可视化编辑 的数学公式库,例如 。
顺便要提到的是一个 在线 LaTeX 数学公式编辑器,它是由 UP 主 借助 MathJax 和 Mathpix 接口 开发的一个在线工具。使用这个在线网站,就可以避免使用 MathType 和 AxMath 这类收费软件了。
除此之外,你还需要安装 HyperSnips for Math 插件,在插件面板搜索安装即可。
在该文件夹新建一个文件 markdown.hsnips
,并将 里面的内容输入进去,保存,就可以了。
这个插件是用来实现 自动补全 和 自动展开 的。
会将数学环境内将 RR
自动扩展成 \mathbb{R}
,更多详细的语法介绍会放在文末和下一篇博文中。
顺带一提,我的 HyperSnips 的「设计理念」是「不用输入反斜杠」。如果你用到了反斜杠 \
,可以使用 Open Snippets File
打开 .hsnips
文件,然后 Ctrl + F
搜索一下你想要用到的「自动扩展」。
Markdown 的行内公式和行间公式语法很简单。
顺带一提,在行内公式前面加上 \displaystyle
可以将行内公式以 行间公式大小 展示。
Tips:按下 Tab 键可以跳转光标。
LaTeX 也区分行内公式和行间公式
Tips:按下 Tab 键可以跳转光标。
注意:不要在公式内写中文
数学公式中的 空格和换行 都会在编译时 被忽略,想要实现「空格」的效果,需要用特别的命令。
Tips:按下 Tab 键可以跳转光标。
tips:按下 Tab 键可以切换到下一个位置。
还有特别重要的数集、向量、矩阵符号:
注意:不要在公式内写中文
不知道你有没有见过这篇文章。
接下来就是简单地介绍一下 HyperSnips 的语法。
这是一个在数学环境中自动展开的 Snippet, 它有三个标示符 iAm
, 分别代表 "在词语内部也会触发", "自动展开" 和 "数学环境".
再看个 正则表达式 的例子:
这是一个在数学环境中自动展开的 Snippet, 它有两个标示符 'Am', 分别代表 '自动展开' 和 '数学环境'. 用处是:
这个语法会保存最近选中的内容 (5 秒内), 然后替换掉 ${VISUAL}
部分.
A
: 自动展开,不设置的话,就需要在自动补全的窗口展示出来后,按 Tab 或 Enter 来选择;
i
: 词内展开,即可以在词语内部展开;
w
: 词外展开,与词内展开相对;
b
: 行首展开,只有在一行的开头,才会展开;
M
: 多行模式,如果不设置,默认只会获取当前行文本,设置了的话就会获取多行文本来检测触发条件;
一些有用的变量定义如下:
rv
: 返回值,在 Snippet 被触发的时候,会以里面的值替换代码块;
t
: 占位符所包含文本组成的字符串数组,你可以用它来实现一些有趣的动态功能;
m
: 正则表达式匹配组。m[0]
是正则表达式匹配到的全部具体内容,m[1]
开始就是每个组的具体内容;
w
: 当前打开工作区的 URI 字符串;
这个例子可以生成一个「盒子」动态包裹住你输入的内容。
这个例子表明你甚至可以使用 NodeJS 的库函数,进而实现非常强大的功能。你甚至能用 VS Code 的 API。
一份十分详尽的 LaTeX 2 介绍。
Wiki Book 上有关的介绍(英文)。
Overleaf 家数学公式文档(英文)。
该篇文章是 OrangeX4 所写的「计算机学生的第零课」系列文章其中的一篇。您可以通过下方链接查看完整目录。
该篇文章首发于 上,采用 许可协议,禁止商用,转载请注明出处。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。