Obsidian 插件:Latex suite 通过片段、文本扩展和编辑器增强功能
latex-suite
插件 ID:obsidian-latex-suite
插件作者:artisticat
插件描述:通过片段、文本扩展和编辑器增强功能,使排版 LaTeX 数学与手写一样快
插件版本:1.7.1
插件源码地址:obsidian-latex-suite
插件文档地址:同上
基本功能
- 文本编辑增强:通过使用自定义片段,对常用输入文字快速输入。支持文本模式,正则模式,latex 模式,通过字符自动触发或者
tab
键触发。 - latex 增强:内置 latex 常用片段,隐藏 latex 符号,自动填充括号,大括号,换行等操作,并使得 latex 公式的可读性更强
以下是原速公式输入示例
基本用法
使用该插件的唯一前提就是设置好片段,除了了解内置的 latex 片段外,就是自定义的文本编辑片段。除此之外,就是熟练度的问题了,多多练习,输入公式比手写快得多。
片段设置
片段有两个方式进行设置,一个是在设置里有个内置的输入框,这个体验不是很好,输入框大小被限制了;另一个是自定义文件,将一个后缀为 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 常用正则表达式
下面文章来自 math-feng 贡献
在使用 LaTeX suite 插件时,会遇到一些正则表达式,我对常用的做了一个总结,后续我给大家分享一下我常用的模板,比如我想要写一个名字为 definition 的 callout,只需输入 bdef+Tab
即可。
符号 | 用处 | 说明 |
---|---|---|
() | 形成一个捕获组 | 可以进行引用 |
[] | 不会形成捕获组,且只能匹配其中的任意一个字符 | 不能进行引用 |
[[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](x|y|i|j|k)\\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}
讨论
若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。