5

バックグラウンド

  1. 優れたhtmlize.elを使用して、org-mode バッファーの内容をフォントhi-lock でエクスポートします。
  2. Emacs org-mode にはLink 形式があります。

問題

たとえば、次の内容を含む org-mode ファイルを次に示します。

[[http://hunmr.blogspot.com][blog]]

Htmlize.elを使用してバッファを HTML コンテンツに HTML 化すると、リンクが見つかりませんでした。次のような HTML を生成します。

<span style="hyperlinkFOOBAR">blog</span>

期待される

次のようなクリック可能なリンクが生成されると予想しました。

<a style="hyperlinkFOOBAR" href="http://hunmr.blogspot.com">blog</a>

質問

EDIT1 org-export-as-html はリンクをエクスポートできますが、ハイロック用の CSS を作成できません。

  • 組織モードのリンクを HTML にエクスポートする他の方法を知っていますか?
  • elisp を使用して組織モード バッファ内の実際のリンクを読み取るには、どうすればよいですか? テキスト プロパティを読み取りますか?

事前に感謝します。あなたの助けが高く評価されます。

4

2 に答える 2

1

@Andreasのヒントをありがとう、htmlize.elに次のコードを追加します。現在、org-linkはクリック可能なリンクにhtml化できます。

コードはgithubで共有されました:

https://github.com/whunmr/dotemacs/blob/master/site-lisp/htmlize.el

http://hunmr.blogspot.com/2012/08/enhance-htmlizeel-now-can-export-org.html

以下はメインコードです:

(defun expand-org-link (&optional buffer)
  "Change [[url][shortname]] to [[url] [shortname]] by adding a space between url and shortname"
  (goto-char (point-min))
  (while (re-search-forward "\\[\\[\\([^][]+\\)\\]\\(\\[\\([^][]+\\)\\]\\)?\\]"
                nil t)
    (let ((url (match-string 1))
      (link-text (match-string 3)))
      (delete-region (match-beginning 0) (match-end 0))
      (insert "[[" url "] [" link-text "]]"))))

(defun shrink-org-link (&optional buffer)
  "Change [[url] [shortname]] to [[url][shortname]], remove the space between url and shortname"
  (goto-char (point-min))
  (while (re-search-forward "\\[\\[\\([^][]+\\)\\] \\(\\[\\([^][]+\\)\\]\\)?\\]"
                nil t)
    (let ((url (match-string 1))
      (link-text (match-string 3)))
      (delete-region (match-beginning 0) (match-end 0))
      (insert "[[" url "][" link-text "]]"))))

(defun transform-org-link ()
  "transform htmlized <span> to <a>"
  (goto-char (point-min))
  (while (re-search-forward "\\[\\[<span \\([^>]+\\)>\\([^][]+\\)</span>\\] \\[\\([^][]+\\)\\]\\]"
                nil t)
    (let ((style (match-string 1))
          (url (match-string 2))
      (link-text (match-string 3)))
      (delete-region (match-beginning 0) (match-end 0))
      (insert "<a " style " href=\"" url "\">" link-text "</a>"))))
于 2012-08-17T13:16:31.367 に答える
1

org-export-as-html は DTRT にする必要があります

于 2012-08-14T09:06:50.520 に答える