簡単な答え: 関数内の文字列を置き換えます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]]
このような:
1) 行全体#+ATTR_HTML: target="_blank"
を正規表現でパースする"^[ \t]*#\\+attr_"...
2) 行全体[[http://cnn.com][CNN]]
を正規表現でパースする"^[ \t]*\\[\\[.*\\]\\][ \t]*$"
#+ATTR_HTML: target="_blank"
3) html にエクスポートする前に文字列を削除する
target="_blank"
4)行のプロパティを設定する[[http://cnn.com][CNN]]
次に、org-mode は、このプロパティを使用してエクスポート用の html リンクを準備します。
"^[ \t]*\\[\\[.*\\]\\][ \t]*$"
文字列を次のように置き換えると"^.*\\[\\[.*\\]\\][ \t]*$"
、このパッチを適用した関数は次のように機能します
#+ATTR_HTML: target="_blank"
- [[http://cnn.com][CNN]]
それも。しかし、リストには問題があります
- [[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
この例は、組織モードが柔軟でない場合があることを示しています。エクスポートされたテキスト内のすべてのリンクにこの html 属性を設定する Lisp 関数を作成し、この機能を#+OPTIONS:
何かに追加できます。しかし、このように組織モードのエクスポート システムをますます複雑にすることはできません。なぜなら、いくつかの組織モード構文の制限があるからです。単純です。
このような org-publish に問題がある場合、次のように考えます。)