Encodings should be known, not divined.

问题描述

在前一篇我们使用 pandoc 的 lua filter 解决了 markdown 转 html 中链接问题,但是在调试代码的过程中发现了一个问题,在不同的 shell 中执行 lua 脚本时,输出中文有时会乱码,有时又不会乱码,搞得有点烦,本篇就针对字符串问题做一个探究,搞清楚乱码的源头以及解决方案。

首先看一个简单的示例,下面是一段简单的 c 语言 hello world

1
2
3
4
5
6
#include <stdio.h>

int main(int argc,char** argv) {
printf("你好,世界!😉");
return 0;
}

文件保存格式为:UTF-8(注意看 vscode 的右下角,写着 UTF-8)

阅读全文 »

Hexo Plugin

参考官方文档,我们有两种创建插件方式

  1. 以脚本(Scripts)形式(单个文件)
  2. 以 npm package 形式创建(支持多文件)

对于一般的插件而言,如果代码并不复杂且依赖较少,可以直接写成脚本形式,放在 hexo 根目录下的 scripts 文件夹即可(不存在直接创建一个即可),在介绍插件具体写法之前,先看一个简单的例子:

文件:scripts/test.js

1
2
3
4
5
hexo.extend.filter.register('before_post_render', (data) => {
const {log} = hexo;
log.debug("hello from test.js!!!");
return data;
});

然后执行下列命令查看效果

1
hexo clean && hexo generate --debug

这一条命令包含两个子命令,hexo clean 清除之前的生成文件,之后的 hexo generate 用来生成静态页面文件。

--debug 标志会使 hexo 在终端显示调试信息,在所有的 hexo-cli 命令中都可以使用)

阅读全文 »

之前我们已经配置好了 hexo 对 LaTex 公式的支持(在 markdown 的 Front Matter 中添加 mathjax: true 开启 LaTex 公式渲染支持),支持两种形式的公式输入

  • 内联公式(inline),通过 $...$ 进行包裹(必须在同一行)

    例:markdown 代码 $\phi = 30$ 对应内联公式渲染结果 \(\phi = 30\)

    $ 和公式之间不能存在空格,也就是说,对于$ \phi = 30 $ 并不能得到正确的渲染结果

  • 块公式(block),通过 $$...$$ 进行包裹(两个$$必须在不同行)

    例:markdown 代码

    1
    2
    3
    $$
    \int _0 ^\pi \sin(x) = 2
    $$

    对应块渲染结果 \[ \int _0 ^ \pi \sin x = 2 \]

现在我们可以在 markdown 文档中添加并渲染公式了,那么下一步就是如何正确书写公式,以及一些常用公式符号。

阅读全文 »

之前都是在知乎上写博客,这样看的人也多,方便讨论,但是知乎的 markdown 编辑器不是很好用,本地写完后还需要一张一张上传图片,太麻烦了,就自己搭一个博客,又不想进行域名备案啥的,服务器也要出钱 :( 。最后搜到 Github 有提供免费的静态页面部署功能,这样写完 markdown 笔记可以直接上传到 Github,还可以通过网页访问,nice!(白嫖的感觉真好)

Github Pages

创建主页仓库

通过 Github Pages,我们可以将 markdown 撰写的笔记转换成静态网页,并进行部署。其创建流程也十分简单,只需要创建一个名为 <username>.github.io 的仓库,如下图所示

此处我们选择的是 Private 仓库,只有我们能进行修改,但是主页是公开访问的,这样可以保证笔记源文件安全 :) 。

阅读全文 »
0%