简短回答:替换函数中的字符串org-export-attach-captions-and-attributes
:
diff -u -L /home/eab/.emacs.d/el-get/org-mode/lisp/org-exp.el -L \#\<buffer\ el-get/org-exp.el\> /home/eab/.emacs.d/el-get/org-mode/lisp/org-exp.el /tmp/buffer-content-8644Ge2
--- /home/eab/.emacs.d/el-get/org-mode/lisp/org-exp.el
+++ #<buffer el-get/org-exp.el>
@@ -1935,7 +1935,7 @@
"\\|"
"^[ \t]*\\(|[^-]\\)"
"\\|"
- "^[ \t]*\\[\\[.*\\]\\][ \t]*$"))
+ "^.*\\[\\[.*\\]\\][ \t]*$"))
cap shortn attr label end)
(while (re-search-forward re nil t)
(cond
关于麻烦的长评论。让我们看看函数的源代码,它解析#+ATTR_BACKEND
成文本属性。
(defun org-export-attach-captions-and-attributes (target-alist)
"Move #+CAPTION, #+ATTR_BACKEND, and #+LABEL text into text properties.
If the next thing following is a table, add the text properties to the first
table line. If it is a link, add it to the line containing the link."
(goto-char (point-min))
(remove-text-properties (point-min) (point-max)
'(org-caption nil org-attributes nil))
(let ((case-fold-search t)
(re (concat "^[ \t]*#\\+caption:[ \t]+\\(.*\\)"
"\\|"
"^[ \t]*#\\+attr_" (symbol-name org-export-current-backend) ":[ \t]+\\(.*\\)"
"\\|"
"^[ \t]*#\\+label:[ \t]+\\(.*\\)"
"\\|"
"^[ \t]*\\(|[^-]\\)"
"\\|"
"^[ \t]*\\[\\[.*\\]\\][ \t]*$"))
...)))
org-export-current-backend
在HTML
这种情况下。它适用于此类文本
#+ATTR_HTML: target="_blank"
[[http://cnn.com][CNN]]
像这样:
#+ATTR_HTML: target="_blank"
1)通过正则表达式解析整行"^[ \t]*#\\+attr_"...
[[http://cnn.com][CNN]]
2)通过正则表达式解析整行"^[ \t]*\\[\\[.*\\]\\][ \t]*$"
#+ATTR_HTML: target="_blank"
3)在导出到html之前删除字符串
4) 设置target="_blank"
线的属性[[http://cnn.com][CNN]]
然后 org-mode 准备使用此属性导出的 html 链接。
如果我替换字符串"^[ \t]*\\[\\[.*\\]\\][ \t]*$"
,"^.*\\[\\[.*\\]\\][ \t]*$"
那么这个补丁函数适用于
#+ATTR_HTML: target="_blank"
- [[http://cnn.com][CNN]]
也。但是list有问题
- [[http://cnn.com][CNN]]
- [[http://cnn.com][CNN]]
- some text
如果我ATTR_HTML
在每个链接之前
#+ATTR_HTML: target="_blank"
- [[http://cnn.com][CNN]]
#+ATTR_HTML: target="_blank"
- [[http://cnn.com][CNN]]
- some text
然后我得到这样的输出html
* CNN
* CNN
* some text
列表中有一个额外的空白。所以,我不能得到这样的输出
* CNN
* CNN
* some text
只要
* CNN
* CNN
* some text
这个例子展示了 org-mode 在某些情况下并不灵活。我可以编写 lisp 函数,它为导出文本中的所有链接设置此 html 属性,并将此功能添加到#+OPTIONS:
或其他内容中。但是我不能以这种方式使越来越多的 org-mode 导出系统复杂化,因为存在一些 org-mode 语法限制 - 它很简单。
如果我有这样的 org-publish 问题,我想:除了 org-mode 之外,我可能需要其他东西来化妆吗?)