ChatGPT生成的公式使用了以下格式:
\[
公式内容
\]
而Obsidian中的公式渲染使用的是以下格式:
$$
公式内容
$$
当我们将ChatGPT的公式复制到Obsidian中时,这种差异会导致无法正确渲染。
解决方案
我们可以创建一个Obsidian脚本,在粘贴操作时自动替换公式的格式。
1. 创建脚本
可以使用Obsidian中的插件来解决这个问题。
在你的库中,在template
目录下创建一个文件fixlatex.js
,并输入以下内容:
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格式。