2

org-mode から作成した html では、指定するとリンクを新しいタブで開くことができます。

#+ATTR_HTML: target="_blank" 
[[http://cnn.com][CNN]]

ここで見つけました。

[[http://cnn.com][CNN]]ただし、箇条書きの場合は機能しません。例えば、

#+ATTR_HTML: target="_blank" 
- [[http://cnn.com][CNN]]

または

- #+ATTR_HTML: target="_blank" 
  [[http://cnn.com][CNN]]

1) どうすればこれを機能させることができますか? 2) 上部でこのオプションの何らかの形式を指定することにより、特定のページのすべてのリンクにこの html 属性を設定できます#+OPTIONS:か?

4

3 に答える 3

2

簡単な答え: 関数内の文字列を置き換えます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-backendHTMLこの場合です。このようなテキストで機能します

#+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 に問題がある場合、次のように考えます。)

于 2013-01-09T11:51:18.413 に答える