工具链

我对 web 开发和 ruby 不熟悉,磕磕碰碰用下面的技术和工具把博客搭起来了:

AsciiDoc

标准化的 markup 语言。和各家 markdown 不一样,它有标准化的工具链。

AsciiDoctor

AsciiDoc 的参考实现。

jekyll-asciidoc

jekyll 的 AsciiDoc 插件。通过它就能用 AsciiDoc 写网站了。

jekyll-text-theme

一开始用的 minima 主题虽然开箱即用,但是这个主题的红色主题一下子让人有些亲近感。忍不住还是套用上了。

一些补丁

另外做了一些修改:

  • jekyll-asciidoc 没法支持一些插件。 至少用这个补丁是修好了。 测试的时候如果用自己本地的 jekyll-asciidoc 的话,需要参考 bundler 的文档, 让 bundler 用本地 repo,而不是 RubyGems 上的版本。这也是为什么我用 Gemfile 管理 jekyll 插件的原因。感觉这样更接近 Ruby 一些,方便理解 bundler 是如何找到插件的。

  • asciidoctor_cjk_breaks 是 asciidoctor 的扩展。因为有时候一句话太长了,就希望分成几行写。但是和英文不一样,中文的字和字之间一般是不加空格的,asciidoctor 看到 linebreak 就当成了空格处理,输出的 HTML 中行尾和行首中间就加了个空格。读者看起来就很变扭,所以这个扩展就把空格去掉了。这个问题在 asciidoctor 也有报告,但是还没得到解决。这个扩展很久以前写的,可能这两年没有更新,所以改了一下,让它能和比较新的 asciidoctor 2.x 一起用。

  • jekyll-TeXt-theme 自带的 archive.html 页面如果用 prettier 处理的话,它会报错。用上这个补丁就没问题了。

一些设置

  • CNAME:

    • 配置 GitHub 让我的域名成为 canonical domainname

    • 配置我的域名服务商加了 CNAME 指向 GitHub

  • GitHub Actions: 因为贪图用新的的 jekyll。GitHub Pages 提供的版本就有点旧了。所以用他家的 Actions 来做 CI,自动编译页面。用了下面几个 action

    1. actions/checkout

    2. ruby/setup-ruby

    3. limjh16/jekyll-action-ts

    4. peaceiris/actions-gh-pages

  • jekyll-TeXt-theme: 把它的配置抄了一堆。

  • CSS: rouge 的语法高亮在 jekyll-text-theme 中无法生效,因为后者没有定义一些 rouge 要的 CSS 规则。 所以从 minima 拷贝了一份 _syntax-highlighting.scss 然后按照个人喜好改了一下,放到了 _sass/custom.scss。网上也能找到好些好看的 rouge 语法高亮的主题。因为 rouge 高亮的 HTML 输出和 pygments 是兼容的,所以那些 pygments 的主题也可以拿来用。 其实之前并不知道应该用这个名字,只是觉得 text-theme 缺了这些定义,应该补上,是后来分析了它的 assets/css/main.scss,看着 custom.scss 的名字,找到它,发现这是个空的文件。才猜测这是给用户自定义的一个 stub。

写作要注意的事项

多余的空格

加链接的时候,如果里面的文本是中文。通常我们不希望在链接前面有空格。所以只能用

这个行星上最大的link:https://github.com/[交友网站]
结果就像这样

这个行星上最大的交友网站

要是用

这个行星上最大的 https://github.com/[交友网站]
结果就像这样

这个行星上最大的 交友网站

“交友网站”前面多了个空格。

嵌入\(LaTeX\)公式

AsciiDoc 的文档里写得很清楚。但是为了方便查找,还是自己记一下。

inline 的 \(LaTeX\) 公式用

inline 的 latexmath:[$LaTeX$] 公式用

block 的可以用

e = mc^2

结果是:

\[e = mc^2\]

记得在 AsciiDoc 文件头里加入

:page-mathjax: true

虽然也可以在 _config.yml 里加

mathjax: true
mathjax_autoNumber: false

但是我觉得会减慢页面加载的速度,毕竟 MathJax.js 还有一些支持的字体体积也不小。

常规维护

另外,如果以后要加个插件或者其他 ruby 包,先修改 Gemfile,然后

sudo aptitude install ruby-bundler
bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems/
bundle install

就行了。