如何组织模式图像输出html的绝对路径?

时间:2013-02-04 09:57:47

标签: emacs elisp org-mode

我需要在emacs org-mode文件中导出html中的absoluted Image url:

当我写下面的代码时:

[[file:/images/a.jgp]]

导出html代码是:

<img src="file:///images/a.jpg" >

但我需要的是:

<img src="/images/a.jgp">

那么如何导出我想要的内容,而不是使用#+BEGIN_HTML标签?

ps:我的emacs配置:

 16 ;; org-mode project define
 17 (setq org-publish-project-alist
 18       '(
 19         ("org-blog-content"
 20          ;; Path to your org files.
 21          :base-directory "~/ChinaXing.org/org/"
 22          :base-extension "org"
 23 
 24          ;; Path to your jekyll project.
 25          :publishing-directory "~/ChinaXing.org/jekyll/"
 26          :recursive t
 27          :publishing-function org-publish-org-to-html
 28          :headline-levels 4
 29          :html-extension "html"
 30          :table-of-contents t
 31          :body-only t ;; Only export section between <body></body>
 32          )
 33 
 34         ("org-blog-static"
 35          :base-directory "~/ChinaXing.org/org/"
 36          :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|php\\|svg"
 37          :publishing-directory "~/ChinaXing.org/jekyll/"
 38          :recursive t
 39          :publishing-function org-publish-attachment)
 40         ("blog" :components ("org-blog-content" "org-blog-static"))
 41         ))

2 个答案:

答案 0 :(得分:9)

这样做的方法是使用org-add-link-type在org-mode中注册一种新类型的链接。这使您可以提供自定义导出格式。

org-add-link-type需要一个前缀,“点击链接时会发生什么?”功能和导出功能。

我使用前缀img,因此我的链接看起来像[[img:logo.png][Logo]]。 我的图片文件位于../images/(相对于.org文件),以及来自/images/中显示的网络服务器。因此,对于这些设置,将其放在.emacs中可提供解决方案:

(defun org-custom-link-img-follow (path)
  (org-open-file-with-emacs
   (format "../images/%s" path)))

(defun org-custom-link-img-export (path desc format)
  (cond
   ((eq format 'html)
    (format "<img src=\"/images/%s\" alt=\"%s\"/>" path desc))))

(org-add-link-type "img" 'org-custom-link-img-follow 'org-custom-link-img-export)

您可能需要修改设置的路径,但这是配方。正如您所期望的那样, C-h f org-add-link-type将为您提供完整的血腥细节。

哦,为了它的价值,这里是我用于帖子间链接的代码(如[[post:otherfile.org][Other File]])。输出格式中有一点Jekyll魔法,所以请注意双倍%s。

(defun org-custom-link-post-follow (path)
  (org-open-file-with-emacs path))

(defun org-custom-link-post-export (path desc format)
  (cond
   ((eq format 'html)
    (format "<a href=\"{%% post_url %s %%}\">%s</a>" path desc))))

(org-add-link-type "post" 'org-custom-link-post-follow 'org-custom-link-post-export)

答案 1 :(得分:1)

另一个答案是使用 #+ATTR_HTML,请参阅以下内容:

#+ATTR_HTML: :src /images/a.png
[[file:./images/a.png]]

有了它,您将能够使用内嵌图像并以您想要的方式导出。