fasheng的博客

自在 平和 长久 共一

org-mode 导出 html 时中文空格问题的临时解决方法

| Comments | posted in 代码_emacs, 代码_web技术 with tag Q_A, blog, export, html, org_mode

最近开始使用 org-mode 写博客,发现导出为 html 后中文之间掺杂着不少多余的空格,对阅读有一定影响,搜索后发现该问题与 w3c 标准有关[1][2],属于历史遗留问题,短时间内应不会解决。

后通过学习 ox-html 源码,找到一种临时解决方法[3],通过给函数 org-html-paragraph 添加 defadvice,使得导出 html 前自动将段落中的多行中文合并为一行,且不会影响源文件,个人认为还算实用,可供参考(org-mode 8.x 下工作正常):

(defadvice org-html-paragraph (before fsh-org-html-paragraph-advice
                                      (paragraph contents info) activate)
  "Join consecutive Chinese lines into a single long line without
unwanted space when exporting org-mode to html."
  (let ((fixed-contents)
        (orig-contents (ad-get-arg 1))
        (reg-han "[[:multibyte:]]"))
    (setq fixed-contents (replace-regexp-in-string
                          (concat "\\(" reg-han "\\) *\n *\\(" reg-han "\\)")
                          "\\1\\2" orig-contents))
    (ad-set-arg 1 fixed-contents)
    ))

Comments