Need of my blog

以后所有关于blog的坑都记录在这里,记不下了再开新坑。

Steps

Change - 2020-10-25

主题换成了 indigo, 并对原始的主题进行了微调,包括:

  • 替换 banner 等一系列图片。
  • 使用 KaTeX 渲染公式。

但是现在 categories 和 tags 仅仅有了 index, index 的内容还没写,留到下次改了。还需要修改留言部分最后更新的部分。

Change - 2020-06-06


改了下时间显示,现在可以在标题下显示发布时间和更新时间了。 使用post.updated可以控制发布时间。

仍然想搞一个“按更新时间排序”的功能。暂时还没弄清是怎么对posts进行排序的,看起来这部分可能是hexo负责,而且可能是按照id来的?

所以姑且直接加了一个侧栏“最近更新文章”,直接把原有的侧栏“最近文章”修改了下,不过算是有这个功能了。 在原有的基础上,可以像归档一样,单独有一个整理的页面,但是我感觉实用性一般就先鸽了。

Change - 2020-04-21


我换回了KaTeX,然后用的是官网给的加载的代码,原来丑的问题因为字体,现在字体的问题解决了,加载也快,行内行间公式分别也显示了,真香。

显示测试如下:

  • 行间公式和行内公式:(以前KaTeX无论行间行内公式都是双大括号)

${a^{\ast}+b^{\mathcal{K}}}$: a+bK{a^{\ast}+b^{\mathcal{K}}}

a+bK{a^{\ast}+b^{\mathcal{K}}}

  • 双大括号的情况,尤其是用到集合时:

集合${\left\{x^{\ast}_{0},\cdots,x^{\ast}_{n}\right\}}$ {x0,,xn}{\left\{x^{\ast}_{0},\cdots,x^{\ast}_{n}\right\}}

下面一段文字:${\{\{x\}\}_{t}}${{x}}t{\{\{x\}\}_{t}},但是其实用到双大括号会导致的是主题渲染认为是代码的关系,会在server的地方报错的,所以难以避免。

  • 跨行大括号:

δ(x)={+ifx=00else{ \delta(x) = \left\{ \begin{aligned} +\infty &\qquad \text{if} \quad x = 0 \\ 0 &\qquad else \\ \end{aligned} \right. }

Change - 2020-04-21


我换回了KaTeX,然后用的是官网给的加载的代码,原来丑的问题因为字体,现在字体的问题解决了,加载也快,行内行间公式分别也显示了,真香。

显示测试如下:

  • 行间公式和行内公式:(以前KaTeX无论行间行内公式都是双大括号)

${a^{\ast}+b^{\mathcal{K}}}$: a+bK{a^{\ast}+b^{\mathcal{K}}}

a+bK{a^{\ast}+b^{\mathcal{K}}}

  • 双大括号的情况,尤其是用到集合时:

集合${\left\{x^{\ast}_{0},\cdots,x^{\ast}_{n}\right\}}$ {x0,,xn}{\left\{x^{\ast}_{0},\cdots,x^{\ast}_{n}\right\}}

下面一段文字:${\{\{x\}\}_{t}}${{x}}t{\{\{x\}\}_{t}},但是其实用到双大括号会导致的是主题渲染认为是代码的关系,会在server的地方报错的,所以难以避免。

  • 跨行大括号:

δ(x)={+ifx=00else{ \delta(x) = \left\{ \begin{aligned} +\infty &\qquad \text{if} \quad x = 0 \\ 0 &\qquad else \\ \end{aligned} \right. }

Change - 2020-04-19


更换markdown渲染器为hexo-renderer-markdown-it-plus,并还是使用mathjax作公式渲染(hexo-renderer-markdown-it-plus默认KaTeX,但是在landscape主题下太丑了)。

不知道为什么hexo-renderer-markdown-it-plus下不能够 disenable markdown-it-katex,所以我直接在renderer.js中注释掉了markdown-it-katex

_config.yml中指定markdown-it-mathjax开启:

1
2
3
4
5
6
7
8
9
markdown_it_plus:
# 中间的省略
plugins:
- plugin:
name: '@iktakahiro/markdown-it-katex'
enable: false
- plugin:
name: markdown-it-mathjax
enable: true

然后在header.js中添加Mathjax解析的<script type="text/javascript"></script>:主要是参考了这篇回答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<% if(page.math){ %>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({"HTML-CSS": { preferredFont: "TeX", availableFonts: ["STIX","TeX"], linebreaks: { automatic:true }, EqnChunk: (MathJax.Hub.Browser.isMobile ? 10 : 50) },
tex2jax: { inlineMath: [ ["$", "$"], ["\\(","\\)"] ], processEscapes: true, ignoreClass: "tex2jax_ignore|dno",skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']},
TeX: { noUndefined: { attributes: { mathcolor: "red", mathbackground: "#FFEEEE", mathsize: "90%" } }, Macros: { href: "{}" } },
messageStyle: "none"
});
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Queue(function() {
var all = MathJax.Hub.getAllJax(), i;
for(i=0; i < all.length; i += 1) {
all[i].SourceElement().parentNode.className += ' has-jax';
}
});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<% } %>

这时候还是会出现和mathjax解析不兼容的问题,已知的包括:

  • [x] 两个_解析成斜体:还是老方法,不使用_强调了,在markdown-itemphasis.js中将以下行替换掉。
1
2
// if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }
if (marker !== 0x2A /* * */) { return false; } // Only use * to emphasis, for compatible with `Mathjax`
  • [x] 因为默认包含markdown-it-sup,所以两个^会解析成sup上标。 这里我还是在renderer.js中把它注释掉了,现在我也用不到这个包。
  • [ ] 针对大括号\left\{会把\{直接转义成{,但是在 LaTeX 中公式中需要再次转义,所以很难办。。。 未解决

未来目标

  • 可能还是尽早换个KaTeX比较好看的主题吧。 主题要求:
    • KaTeX 兼容好,渲染的公式美观。
    • 多级缩进美观。
    • 字体大小合适。
    • 支持 - [ ] 待办事项语法。