今天发文一直发不出去,百思不得其解,打开 debug 跟踪一下,发现是调用了 doom-emacs 里 chinese 模块的过滤器出错,改用 spacemacs chinese layer 里的代码可以修复此问题(需要禁用 doom-emacs 里的 chinese module)。当然只禁用掉 chinese module 也可以,不过这段代码是在转换为网页时,把自动换行的空白符去掉,这样发布后的网页不会多一些莫名奇妙的空格。
1
2
3
4
5
6
7
8
9
10
11
| (defadvice org-html-paragraph (before 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* ((origin-contents (ad-get-arg 1))
(fix-regexp "[[:multibyte:]]")
(fixed-contents
(replace-regexp-in-string
(concat
"\\(" fix-regexp "\\) *\n *\\(" fix-regexp "\\)") "\\1\\2" origin-contents)))
(ad-set-arg 1 fixed-contents)))
|
**8 月 8 日更新** 使用如下代码彻底解决此问题:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| (defadvice! +chinese--org-html-paragraph-a (args)
"Join consecutive Chinese lines into a single long line without
unwanted space when exporting org-mode to html."
:filter-args #'org-html-paragraph
(cl-destructuring-bind (paragraph content info) args
(let* ((fix-regexp "[[:multibyte:]a-zA-Z0-9]")
(origin-contents content)
(fixed-contents
(replace-regexp-in-string
(concat "\\("
fix-regexp
"\\) *\\(<[Bb][Rr] */>\\)?\n *\\("
fix-regexp
"\\)")
"\\1\\3"
origin-contents)))
(list paragraph fixed-contents info))))
|
**8 月 31 日更新** 上述代码也有 Bug,也就是两边全是英文字符时有不能替换,更新 advice 代码(同时也向 doom-emacs 提交 PR):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| (defadvice! +chinese--org-html-paragraph-a (args)
"Join consecutive Chinese lines into a single long line without
unwanted space when exporting org-mode to html."
:filter-args #'org-html-paragraph
(cl-destructuring-bind (paragraph content info) args
(let* ((fix-regexp "[[:multibyte:]]")
(origin-contents
(replace-regexp-in-string
"<[Bb][Rr] */>"
""
content))
(fixed-contents
(replace-regexp-in-string
(concat "\\(" fix-regexp "\\) *\n *\\(" fix-regexp "\\)")
"\\1\\2"
origin-contents)))
(list paragraph fixed-contents info))))
|