将ChatGPT公式格式转换为Obsidian兼容格式

ChatGPT生成的公式使用了以下格式:

1
2
3
\[
公式内容
\]

而Obsidian中的公式渲染使用的是以下格式:

1
2
3
$$
公式内容
$$

当我们将ChatGPT的公式复制到Obsidian中时,这种差异会导致无法正确渲染。

解决方案

我们可以创建一个Obsidian脚本,在粘贴操作时自动替换公式的格式。

1. 创建脚本

可以使用Obsidian中的插件来解决这个问题。

在你的库中,在template目录下创建一个文件fixlatex.js,并输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module.exports = async (params) => {
const { quickAddApi } = params;

// 获取剪贴板内容
const clipboardContent = await quickAddApi.utility.getClipboard();

// 检查是否成功获取内容
if (!clipboardContent) {
new Notice("剪贴板为空或无法访问。");
return;
}

const modifiedContent = clipboardContent
.replace(/\\\[|\\\]/g, '$$$$') // 转换 \[ \] 为 $$ $$
.replace(/\\\(\s*|\s*\\\)/g, '$$'); // 转换 \( \) 为 $

// 将修改后的内容写回剪贴板
await navigator.clipboard.writeText(modifiedContent);

new Notice("剪贴板内容已处理并修改!");
};

2. 在QuickAdd中设置脚本

安装QuickAdd插件,并创建一个Macro,按如下图中的配置进行设置并保存。Macro的第一步是执行我们刚刚创建的用户脚本fixlatex.js,第二步是等待100毫秒,第三步是执行粘贴操作。

3. 在Commander中设置侧边快捷键

安装Commander插件,并将刚刚创建的QuickAdd操作设置为侧边栏的快捷键。你也可以跳过这一步,直接使用Obsidian命令执行这个操作。

4. 验证效果

现在,在ChatGPT的网页中(目前在APP中点击复制按钮似乎有点问题),点击复制按钮后,在Obsidian中点击侧边栏快捷键,或者手动执行QuickAdd命令,就可以将ChatGPT中的内容复制到Obsidian中,并自动转换Latex格式。