何明
1
遇到的问题
win10+Obsidian V1.6.7
markdown源代码包含非独立公式和独立公式,代码如下:
上述代码显示的效果,与本论坛的显示效果是一样的,如下:
为了推导公式 (2.2),我们从给定的平稳过程 (\Delta y_t) 的 (\mathrm{MA}(\infty)) 表达式开始:
[
\Delta y_t = \psi(L) \varepsilon_t
]
很显然,段内公式和独立公式都没有正常显示
已尝试的解决方案
把“\[, \]”换成“$$”,把“\(, \)”换成“$”就能正常显示。
请问这是什么原因?最简单的解决方法是什么?需要安装第三方插件么?安哪个?
Probe
(Probe)
2
原因是 markdown 格式使用 $...$ 和 $$...$$ 表示数学公式, 而不用 \[ ... \]
但既然两边都是纯文本, 那转换起来也是很容易的
const input = `
context1
\\[
\\Delta y_t = \\psi(L) \\varepsilon_t
\\]
context2
\\[
\\Delta y_t = \\psi(L) \\varepsilon_t
\\]
context3
`;
const regex = /\\\[(.+?)\\\]/gs;
const output = input.replaceAll(regex, "$$$$$1$$$$");
console.log(output);
// context1
// $$
// \Delta y_t = \psi(L) \varepsilon_t
// $$
// context2
// $$
// \Delta y_t = \psi(L) \varepsilon_t
// $$
// context3
推荐先找个在线 regex 编辑器 (如 ref ) 或者 VSCode, 把转换规则测稳妥了, 再去仓库里转换
另外也见 一键将带 (math),[math] (chatgpt格式的数学公式)的文本转换为 obsidian 能识别的用 $math$,$$math$$ 表示的文本 - 经验分享 这个讨论的方案
ob是底层是使用markdown语言。
不是ob的问题,是markdown语言的问题。
因此除了替换没有办法解决。
我记得你在QQ群里也问过来着吧,不是自己写了个脚本解决了么~
wuzhi
(无执)
4
插件 KaTEX to MathJax,已经测试过可以用
1 个赞
MatStein
(Bao Jiachen)
6
我有一个很好的解决方案可供大家参考,用到 QuickAdd 插件。 
- 在你的 Obsidian 库根目录下(即与 .obsidian 同级),新建一个文件夹,例如:scripts/。在这个 scripts/ 文件夹中,新建一个 .js 文件,命名为:latex-to-dollar.js。
- 将如下脚本代码粘贴到 .js 文件中:
module.exports = async function(params) {
const { app, quickAddApi, obsidian } = params;
const activeView = app.workspace.getActiveViewOfType(obsidian.MarkdownView);
if (!activeView || !activeView.editor) {
new obsidian.Notice("请在 Markdown 编辑器中运行此命令");
return;
}
const editor = activeView.editor;
let text = editor.getSelection();
const hasSelection = !!text;
if (!text) text = editor.getValue();
text = text.replace(/\\\(\s*([\s\S]*?)\s*\\\)/g, (_, inner) => {
return `$${inner}$`;
});
text = text.replace(/^\s*\\\[\s*([\s\S]*?)\s*\\\]\s*$/mg, (_, inner) => {
return `$$\n${inner}\n$$`;
});
text = text.replace(/\\\[\s*([\s\S]*?)\s*\\\]/g, (_, inner) => {
return `$$${inner}$$`;
});
if (hasSelection) {
editor.replaceSelection(text);
} else {
editor.setValue(text);
}
new obsidian.Notice("LaTeX 转换为 Dollar 格式成功!");
};
- 保存文件后打开 Obsidian 设置找到 QuickAdd,点击最上面的下拉框找到 Macros 标签页,名字设置好,点击你设置好后的小齿轮设置页面,在 User Scripts 区域,点击 Browse,导航到你刚刚创建的 scripts/latex-to-dollar.js 文件,选择它并点击 Add。
- 配置完成后,直接对你要改的文本 ‘ctrl+all’ ,然后 ‘ctrl+p’ 找到 QuickAdd,你就能找到他并运行它。
这样的配置其实对于AI来说编写比较困难,我让 Grok 、Qwen 还有豆包都写了好几次都没写对,最后是看了官方的文档才解决问题。
MatStein
(Bao Jiachen)
7
我也写了一个脚本,直接在黑曜石里面快捷键能替换得方便一些,