Hexo兼容性问题Fix小记
Hexo-Fluid兼容性问题Fix小记
背景
自从2023年开始好久没有捣鼓自己的博客了,也一直没有更新兼容环境。偶然七月的一天发现自己blog里很多公式显示不出来,此外还有很多兼容性错误,于是在此立下一个记录,防止以后迁移到其他工作电脑时再出现兼容性问题。
定期更新
还是要记住定期更新hexo-fluid-theme
1 |
|
更新hexo-math
1 |
|
更新pandoc: 去githun官方repo看release,
Windows用户最好更新在系统目录下(for All
users),并且_config.yml
中固定下pandoc的路径为:
1 |
|
不然hexo g
渲染时会出一些奇怪的Error。
(未完待续……)
Latex公式问题
尝试Hexo-Fluid主题内置公式插件,渲染结果一直时好时坏。。。最后一狠心全部换成
hexo-math
的公式插件。详情见这里。感谢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,它们将分别被替换为第一个和第二个捕获组的内容。
目前探索的,行内公式直接替换为:
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
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>