正在用org写论文. 使用了TODO来做任务的管理,结果导出时每一个标题上的前面都有TODO,给标题打的标签也输出在了标题的后面,于是在想「有没有在这方面做输出选择删去选项的啊」. 但是稍微搜了一下后发现只有说在tex文档最前面添加设置的模版,而没有这方面的选项,在orgguide里也没有看见提到. 想问有人知道有能够在导出latex时以一定条件自动删去内容的方法吗?
肯定有,看看 org 的文档吧,实在找不到办法,就是写 headline hook,把 TODO 替换为 “”
org-export-filter-headline-functions is a variable defined in ‘ox.el’.
Its value is (eh-org-wash-text)
This variable may be risky if used as a file-local variable.
List of functions applied to a transcoded headline.
Each filter is called with three arguments: the transcoded data,
as a string, the back-end, as a symbol, and the communication
channel, as a plist. It must return a string or nil.
我用的一个函数也给你作为参考吧
(defun eh-org-wash-text (text backend _info)
"导出 org file 时,删除中文之间不必要的空格。"
(when (org-export-derived-backend-p backend 'html)
(let ((regexp "[[:multibyte:]]")
(string text))
;; org-mode 默认将一个换行符转换为空格,但中文不需要这个空格,删除。
(setq string
(replace-regexp-in-string
(format "\\(%s\\) *\n *\\(%s\\)" regexp regexp)
"\\1\\2" string))
;; 删除粗体之后的空格
(dolist (str '("</b>" "</code>" "</del>" "</i>"))
(setq string
(replace-regexp-in-string
(format "\\(%s\\)\\(%s\\)[ ]+\\(%s\\)" regexp str regexp)
"\\1\\2\\3" string)))
;; 删除粗体之前的空格
(dolist (str '("<b>" "<code>" "<del>" "<i>" "<span class=\"underline\">"))
(setq string
(replace-regexp-in-string
(format "\\(%s\\)[ ]+\\(%s\\)\\(%s\\)" regexp str regexp)
"\\1\\2\\3" string)))
string)))