Nikola + orgmode 发布博客代码高亮无法实现

根据 Nikola 官方的 orgmode 插件文档 orgmode | Plugins for Nikola

By default, the plugin uses pygments for syntax highlighting. You can disable this by setting nikola-use-pygments to nil in init.el or conf.el (see Customization section below).

To get proper syntax highlighting, you will need to add custom CSS to your theme. You can generate this CSS …

and make sure that custom.css is included in your site by your theme. The various available style options for <PYGMENTS_STYLE> can be found using the command pygmentize -L style.

关于如何在主题文件中引用 custom.css 只是一带而过, 我按照 google 到的方法在默认 bootstrap 主题的 base-helper.tmpl文件中引用 /assets/css/bootstrap.min.css 的后面用同样的格式引用 custom.css:

<link href="/assets/css/custom.css" rel="stylesheet" type="text/css">

还是不起作用, 我是完全按照文档里面操作的, 这里面到底有什么幺蛾子?

用的 Nikola + ReST 组合,不过原理应该差不多。至于你的问题:

  1. 印象中,应该是不用跑去修改模板文件的——把 custom.css 文件放到正确的文件夹就好。可能模板文件改坏了,或者 custom.css 文件放错位置了。这是一种可能。

  2. custom.css 里的 class 与 HTML 里的 class 对应不上,导致代码没有高亮。这个可能性比较小。但如果是真的,那么 pygments 可能根本就没被调用。

无论哪种可能,打开网页检视器看一下,就能清楚 custom.css 有没有被正确加载,class 对应上没有。静态博客就那几个页面,搞清哪个文件是干嘛用的还是很快的。

1 个赞

感谢回复,

抱歉我没描述清楚问题的具体情况, 现在貌似问题误打误撞解决了.

那个支持 orgmode 文档里的说法是, 如果需要自己配置代码高亮, 除了生成这个 css 文件之外, 还需要把插件 init.el 文件的 nikola-use-pygments 改成 nil, 就是关掉这个功能, 如果关掉的话, 最后的结果里代码部分根本不会被处理, 糊成一堆;

如果设置位 t, 然后在有这个 css 文件的情况下, 代码块处理不完整 (妈的其实是 pygmens 生成的 monokai 主题的 custom.css 文件有问题, 其他主题最后的效果都是 ok 的, 害的我瞎搞了一上午)

但是这样的化这个 nikola 官方支持 orgmode 插件的文档描述就有问题了?

刚跳转过去看了一下,人家插件的文档描述没有问题。

By default, the plugin uses pygments for syntax highlighting. You can disable this by setting nikola-use-pygments to nil in init.el or conf.el (see Customization section below).

说的明白:默认使用 pygments 高亮代码。如果不想用,那就把 init.elconf.el 文件里的 nikola-use-pygments 值设为 nil。没让你关掉这个功能,只是提供个额外的选择。比如可能就有人不想要代码高亮功能或者没安装 pygments 也不想安装,那就设为 nil 禁用。

另外,不太可能就 monokai 主题有问题,因为都是同一套代码逻辑生成的。

建议还是多用网页监视器看看,又不涉及 JavaScript,一下子就全都明白了。

文档中的这句话放在那个位置我以为是要实现自定义的代码高亮, 就得必须这样配置, 是我想当然了.

我试了五六个主题, 就只有 monokai 有问题, 其他的我就不一一试过去了.

嗯 好使就行。余下的慢慢折腾。:grin: