菜单
首页/博客/博客踩坑记录

博客踩坑记录

Typora 相关配置

Markdown 编辑器有很多,如常常用于写笔记的 Obsidian。但最终我选用了鉴于 Typora,因为他更轻量一点。

Markdown 相关内容请看本站文章 Markdown、Tex和Mermaid。

在菜单的文件 - 偏好设置中进行设置。我开启的设置有

此外,我倾向于开启用Tab做缩进符,建议开启。

你还可以通过下面这个选项,在右键菜单添加创建 md 文件的快捷项:

image-20260410161201713

自定义命令行导出文件

在偏好设置 - 导出中,你还可以自定义命令行命令,来自定义操作

我在自己的博客仓库中编写了manage.py来处理文件,所以可以调用:

python "path-to-my-site\manage.py" add --config "path-to-my-site\manage.yaml" -i "${currentPath}"

这里的${currentPath}是一个占位符,表示当前单个文件的路径。

注意这个占位符要用引号包括"${currentPath}",或者如果文件路径带空格,命令行命令会有问题。

Marked.js + MathJax + Mermaid 前端渲染

我采用单页面网站,每次后端拉取 md 文件渲染。

Markdown 渲染实在是最大的一个坑,尤其是和 MathJax 一起。

mathjax 渲染

  1. 不渲染
  1. 不换行,行间公式用\\来换行有问题

    可能是某些奇妙问题,我具体也不知道为什么。

    解决方案:给行间公式整体加上\displaylines{ <content> }(在上面的代码里)

    感谢大佬踩坑,这篇博客还有许多其他 MathJax 的坑:MathJax常见问题 | DaNing的博客

  2. 某些功能用不了

    AI 说不能换行、\mathbf{}不能用,也可能是需要加 packages 中的配置。

    但是实测好像没什么影响,在这里给一个配置仅供参考:

    window.MathJax = {
                tex: {
                    inlineMath: [['$', '$'], ['\\(', '\\)']],
                    displayMath: [['$$', '$$'], ['\\[', '\\]']],
                    processEscapes: true,
                    packages: { '[+]': ['boldsymbol', 'ams'] }
                },
                options: {
                    skipHtmlTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
                    ignoreHtmlClass: 'tex2jax_ignore'
                }
            };
    

Mermaid 渲染

marked.js 渲染代码块时,渲染成如<code class="language-js"> console.log("0721") </code>的形式。如果是mermaid,他就属于类language-mermaid。

但是 mermaid 库默认识别的类名是.mermaid,需要自己取.language-mermaid扔给渲染库。

if (window.mermaid) {
    await mermaid.run({
    nodes: mainContent.querySelectorAll('.language-mermaid')
    }).catch(err => console.error('Mermaid Error:', err));
}