让org输出的html支持彩色中文标签

因为从来没有提交过PR, 所以发到这里看看有没有人顺手给提交了。

目前org在导出html时(ox-html.el),标签的 class 命名会通过函数org-html-fix-class-name生成符合css命名标准的类名。

当前函数如下:

(defun org-html-fix-class-name (kwd)	; audit callers of this function
  "Turn todo keyword KWD into a valid class name.  Replaces invalid characters with \"_\"."
   (replace-regexp-in-string "[^a-zA-Z0-9_]" "_" kwd nil t))

但函数中的正则会将中文字符也替换成下划线,导致自动生成的类命无法匹配。 查了一下w3c的标准,类名是可以使用中文的。 https://www.w3.org/TR/CSS21/grammar.html#scanner

所以只需要把正则匹配规则修改一下,就可以生成包含中文的标签类名。

(replace-regexp-in-string "[[:punct:][:space:][:cntrl:]]" "_" kwd nil t))

经过以上修改,就可以在org文件中实现中文标签:

#+HTML_HEAD: .tag .标签1 {padding: 2px; background-color: red; color: white;}
#+HTML_HEAD: .tag .标签2 {padding: 2px; background-color: red; color: white;}

** 测试中文标签 :标签1:标签2:

生成的html是这样的: css:

.tag .标签1 {padding: 2px; background-color: red; color: white;}
.tag .标签2 {padding: 2px; background-color: red; color: white;}

html:

<li>1.4. 测试中文标签&#xa0;&#xa0;&#xa0;<span class="tag"><span class="标签1">标签1</span>&#xa0;<span class="标签2">标签2</span></span></a></li>