Hexo兼容性问题Fix小记

Hexo-Fluid兼容性问题Fix小记

背景

自从2023年开始好久没有捣鼓自己的博客了,也一直没有更新兼容环境。偶然七月的一天发现自己blog里很多公式显示不出来,此外还有很多兼容性错误,于是在此立下一个记录,防止以后迁移到其他工作电脑时再出现兼容性问题。

定期更新

还是要记住定期更新hexo-fluid-theme

1
npm update --save hexo-theme-fluid

更新hexo-math

1
npm update --save hexo-math

更新pandoc: 去githun官方repo看release, Windows用户最好更新在系统目录下(for All users),并且_config.yml中固定下pandoc的路径为:

1
2
pandoc:
pandoc_path: C:/Program Files/Pandoc/pandoc.exe

不然hexo g渲染时会出一些奇怪的Error。

(未完待续……)

Latex公式问题

  1. 尝试Hexo-Fluid主题内置公式插件,渲染结果一直时好时坏。。。最后一狠心全部换成hexo-math的公式插件。详情见这里

  2. 感谢New Bing 教会了我如何使用正则表达式替换$E=mc^2${% mathjax %} E=mc^2 {% endmathjax %}。 手工替换500+$差点人废了,才想起New Bing查一下。。。(AIGC是程序猿的未来。。。)

    Q:

    如何在MarkDown中自动替换$${% mathjax %}` 和 `{% endmathjax %}

    A:

    你可以使用正则表达式来实现这个功能。例如,你可以使用下面的正则表达式来匹配两个美元符号之间的内容:

    1
    \$\$([^\$]*)\$\$

    然后,你可以使用下面的代码来替换它:

    1
    {% mathjax %}$1{% endmathjax %}

    这将把两个美元符号之间的内容替换为 {% mathjax %}` 和 `{% endmathjax %} 标记。

    希望这能帮到你。如果你还有其他问题,请告诉我。

    Q:

    正则表达式中$1代表什么意思?

    A:

    在正则表达式中,$1 表示第一个捕获组的内容。捕获组是由括号括起来的正则表达式的一部分,它们可以用来匹配和提取文本。例如,如果你使用下面的正则表达式:

    1
    (\d{3})-(\d{4})

    它将匹配一个由连字符分隔的电话号码,其中第一个捕获组将匹配前三个数字,第二个捕获组将匹配后四个数字。如果你在替换字符串中使用 $1 和 $2,它们将分别被替换为第一个和第二个捕获组的内容。

  3. 目前探索的,行内公式直接替换为:

    1
    {% mathjax %}$1{% endmathjax %}

    行间公式替换为

    1
    {% mathjax '{ "conversion": { "display": true, "em": 16, "ex": 8 } }' %}$1{% endmathjax %}

    其他说明配置写在_config.yml里,如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # hexo-math https://github.com/hexojs/hexo-math
    math:
    katex:
    css: 'https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css'
    options:
    throwOnError: false
    mathjax:
    css: 'https://cdn.jsdelivr.net/npm/hexo-math@4.0.0/dist/style.css'
    options:
    conversion:
    display: false
    scale: 1.5
    tex:
    tags: 'none'
    svg:

    配置项如何搞参看该README

  4. Markdown中插入tag的时候,不太支持tag之间以及tag和hexo-math插件之前互相嵌套。因此非常建议利用html的方式来实现,可插入便签(note)如下:

1
2
3
<p class="note note-primary">
紫色标签
</p>

1
2
3
<p class="note note-secondary">
灰色标签
</p>

1
2
3
<p class="note note-success">
绿色标签
</p>

1
2
3
<p class="note note-danger">
红色标签
</p>

1
2
3
<p class="note note-warning">
黄色标签
</p>

1
2
3
<p class="note note-info">
蓝色标签
</p>

1
2
3
<p class="note note-light">
黑色标签
</p>

注意用html标签括起来的note中间可以换行,但不能隔着一行及以上(即Markdown中的分段),有空行会显示错误。

改变为行内标签的方式,则为

1
<span class="label label-primary">Label</span>


Hexo兼容性问题Fix小记
https://oier99.cn/posts/eb6bb29/
作者
zhangzw12319
发布于
2023年7月11日
许可协议