问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Obsidian插件Latex suite:让LaTeX数学排版快如手写

创作时间:
作者:
@小白创作中心

Obsidian插件Latex suite:让LaTeX数学排版快如手写

引用
1
来源
1.
https://pkmer.cn/Pkmer-Docs/10-obsidian/obsidian%E7%A4%BE%E5%8C%BA%E6%8F%92%E4%BB%B6/obsidian-latex-suite/

Obsidian是一款强大的知识管理工具,而LaTeX则是科学论文和数学公式排版的常用语言。为了让用户在Obsidian中更高效地使用LaTeX进行数学排版,社区开发了Latex suite插件。该插件通过代码片段、文本扩展和编辑器增强功能,使LaTeX数学排版速度大幅提升,甚至可以媲美手写速度。

基本功能

Latex suite插件的主要功能包括:

  • 代码片段:通过快捷方式和文本扩展帮助用户更快地编写LaTeX。
  • 文本编辑增强:支持文本模式、正则模式和LaTeX模式,可以通过字符自动触发或Tab键触发。
  • LaTeX增强:内置LaTeX常用片段,支持隐藏LaTeX代码、自动填充括号、大括号、换行等操作,增强LaTeX公式的可读性。

片段设置

片段有两个方式进行设置:

  1. 在设置里有个内置的输入框,但体验不是很好,输入框大小被限制了;
  2. 自定义文件,将一个后缀为js的文件放到库内,然后在设置里指定就好了。

片段编写

典型的片段文件如下:

[
    //环境设置
    {trigger: "$", replacement: " $$0$ ", options: "t"},
    {trigger: "$$", replacement: "$$\n$0\n$$", options: "tA"},
    {trigger: "beg", replacement: "\\begin{$0}\n$1\n\\end{$0}", options: "mA"},
    //begin环境
    {trigger: "equat", replacement: "\\begin{equation}\n$0\n\\end{equation}", options: "mA"},
]

是一个json文件,每一个大括号是一个片段。一个典型的片段如下:

{trigger: string, replacement: string, options: string, description?: string, priority?: number}
  • trigger字段指定触发字符
  • replacement代表将触发字符替换后的字符
  • option是选项,t代表文本模式,m代表LaTeX模式,r代表正则模式,A代表自动触发。文本模式指仅在正文中触发,LaTeX模式指仅在LaTeX块中触发——$包裹的部分,r是使用正则表达式,w代表词边界,仅当触发字符前面(和后面)有单词分隔符时才运行此代码段。
  • $0代表光标跳转的位置,[[0]]代表正则表达式替换的位置。description是片段描述,可选,priority是优先级,当有多个同样的触发字符时,优先级高的会优先触发,默认是0优先级。

以第一个片段为例:指明$为触发字符,将字符替换成$$,替换后光标在两个$符号中间,option中的t代表文本模式,不会自动触发。

LaTeX suite常用正则表达式

下面是一些常用的正则表达式总结:

  • 符号 用处 说明
  • () 形成一个捕获组 可以进行引用
  • [] 不会形成捕获组,且只能匹配其中的任意一个字符 不能进行引用
  • [[0]] 表示提取第一个正则表达式的值
  • [[1]] 表示提取第二个正则表达式的值
  • ([a-zA-Z]) 26个字母大小写的正则表达式 单个字母
  • (\d) 匹配数字的正则表达式 0-9的数字
  • (${GREEK}) 在LaTeX suite中自定义的变量 不能用[${GREEK}]表示
  • (${Symbol}) 同上
  • (${short-symbol}) 同上
  • ^ 表示行首,在[]中的第一个位置时表示否定 [^abc]b表示非a的单个字符
  • ([^’]) 匹配非’的任意符号
  • | 表示或
  • $0 光标的第一个位置
  • \ 需要用\表示
  • \^ 在正则表达式的环境下识别^,必须这样表示 其中$也是这样
  • [^\\] 非\的所有其他单个符号
  • (.*) 匹配任意字符串,即可以不匹配到东西 .表示匹配任意单个字符,*表示重复前面字符零次或多次
  • (.+) 贪婪匹配任意字符串,即至少匹配一个字符串 +表示至少有一个字符
  • ([^=$]*) 匹配的字符中不能包含=和$ 对单个字符有要求,即不能是[=$]中的元素,但是目前来看对?:;不起作用
  • [+=-] 匹配其中的单个字符,并不需要符号|
  • \s 表示空格
  • \b \b 表示匹配其中单个字符,而不是字符串中的东西
  • \d* 匹配可能没有数字的情况
  • \d+ 匹配至少有一个数字的情况
  • \2{1} 表示引用第二个被匹配的字符,且出现一次 a-zA-Z\2{1},即xii
  • (?<!^|\n) 检验是否为行首
  • (?<=…)(?<!) 后瞻断言,检测匹配方向的后方,分为正定和否定
  • (?=…)(?!) 前瞻断言,检测匹配方向的前方,分为正定和否定
  • ? 表示前面字符出现的次数 -?表示-只能出现0次或一次

进阶用法

  • 了解相关option项,编写任意所需公式
  • t 文本方式 仅在数学之外运行此代码片段
  • m 数学模式 仅在数学内运行此代码片段,m模式包含M和n
  • M 块数学模式 仅在$$ ... $$块内运行此代码片段
  • n 内联数学模式 仅在$ ... $块内运行此代码片段
  • A 自动 键入触发器后立即展开此代码片段。如果省略,则Tab必须按下该键才能展开代码片段
  • r Regex trigger将被视为正则表达式
  • v 视觉 仅在选择时运行此代码片段。触发器应为单个字符
  • w 单词边界 仅当触发器位于单词分隔符(例如、或)之前(和之后)时才运行此代码段。.,-
  • c 代码模式 仅在...块内运行此代码片段

精准替换

查看代码对照表如下图,增删改查,得到需要的代码键值对

  • 其中‘$0’代表光标第一个位置,$1’ 为跳转下一个位置

线性代数矩阵支持

该插件在矩阵、行列式的输入上也保持较快的速度

$$
\mathbb{1}_{3\times 3}=\begin{pmatrix}
2 & 3 & 4 \\
3 & k & k  \\
i & 9 & 0 
\end{pmatrix}
$$
$$
\mathbb{1}_{3 \times 3}=\begin{pmatrix}
33 & \theta \cos\epsilon  & 4334 \\
f & 4 & 89  \\
433 & 890 & f 
\end{pmatrix}
$$

Latex Matrics

一款格式化矩阵的插件,可以最大程度避免手打发生错误的插件。

还可以在方格中输入

  • 分数:{n}/{m}
  • 下标:n_{m}
  • 上标:n^{m}
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号