obsidian公式无法正常显示

通过简阅摘取csdn的笔记,但是公式无法正常渲染,


原文应该是这样

latex需要使用$ $或者$$ $$包裹公式才能进行渲染
这就好比对代码块abc, 你只是把其内容abc摘录下来了, 但漏掉了其语法形式` `

1 个赞

简悦对公式的支持一般,推荐使用maoxian插件,这个插件可以完美处理公式(来自一个配置简悦N多次且看不懂简悦文档的受害者)

这个不好整…

查了下, CSDN 的数学公式有 LaTeX 和 KaTeX 两版,
前者导出来简单, 后者 (鉴别依据可能是: 该公式不体现为完整对象, 而是可选中其中部分字母, 以及点右键不弹出 MathML 的特有菜单) 想搞到代码有点复杂

但是根据这个帖子 How to convert Katex to latex or mathml? · KaTeX/KaTeX · Discussion #3729 , KaTeX 是蕴含了完整的 LaTeX 公式的

不知道有啥办法能输出? - 我现在只会在浏览器控制台里, 凑出来一句这个:

$("span.katex-mathml").each(function(i, elem) {console.log(`${i}, \$${elem.innerHTML.trim().split('\n').pop().trim() }\$`)}); "log done"

这可以把当前页面大部分公式的精确代码弄出来

建议: 复杂公式复制了用, 简单的就随他乱着吧…


稍微升级了一下, CSDN 难处理的带公式页面, 在浏览器 console 运行

// 替换 .katex--display > .katex-display
$("span.katex-display").each(function(i, elem) {
    var latexFormula = $(elem).find("span.katex-mathml").text().trim().split('\n').pop().trim(); 
    console.log(`${i}, \$${latexFormula}\$`); 
    elem.innerHTML = `<br>\n\$\$${latexFormula}\$\$\n<br>`
}); "replace katex 块状 done"

// 替换 .katex--inline
$("span.katex--inline").each(function(i, elem) {
    var latexFormula = $(elem).find("span.katex-mathml").text().trim().split('\n').pop().trim(); 
    console.log(`${i}, \$${latexFormula}\$`); 
    elem.innerHTML = ` \$${latexFormula}\$ `
}); "replace katex 行内 done"

以上可以做到 行内公式转 $xxx$, 块状公式转 $$yyy$$,
然后利用任何手段以纯文本复制下来贴 Ob 里, 可以对比着看

注意:

  • 所有的内部 \begin xxxx \end 之前会带一套重复 code, 不会清理 (视觉上很明显)
  • 也许还有别的问题, 如复杂的转义等, 免不了需要人工对比, 以防细节出错