2013-02-04 27 views
5

tôi cần phải xuất khẩu absoluted Url hình ảnh trong html trong emacs org-mode file:cách org hình ảnh đường dẫn tuyệt đối của chế độ xuất html?

khi tôi viết đoạn mã sau:

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

xuất khẩu mã html là:

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

nhưng mà tôi cần là:

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

vậy làm cách nào tôi có thể xuất những gì tôi muốn ed, thay vì sử dụng thẻ #+BEGIN_HTML?

ps: emacs của tôi cấu hình:

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  )) 

Trả lời

9

Cách để làm điều này là để đăng ký một loại mới của liên kết trong org-mode, sử dụng org-add-link-type. Điều đó cho phép bạn cung cấp định dạng xuất tùy chỉnh.

org-add-link-type yêu cầu tiền tố, "điều gì xảy ra khi bạn nhấp vào liên kết?" và chức năng xuất.

Tôi sử dụng tiền tố img, vì vậy các liên kết của tôi trông giống như [[img:logo.png][Logo]]. Tệp hình ảnh của tôi nằm trong ../images/ (liên quan đến tệp .org) và từ máy chủ web, chúng hiển thị trong /images/. Vì vậy, đối với những thiết lập, đặt này trong .emacs cung cấp giải pháp:

(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) 

Bạn có lẽ sẽ cần phải sửa đổi các đường dẫn cho các thiết lập của bạn, nhưng đó là công thức. Như bạn mong đợi, C-hforg-add-link-type sẽ cung cấp cho bạn đầy đủ chi tiết đẫm máu.

Ồ, và về giá trị của nó, đây là mã tôi đang sử dụng cho các liên kết liên bài (như [[post:otherfile.org][Other File]]). Có một chút phép thuật Jekyll ở định dạng đầu ra, vì vậy hãy xem hai% 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) 
+0

Tôi muốn sử dụng chế độ iimage, phương pháp này sẽ không hỗ trợ? làm thế nào để ? – Chinaxing

+0

Điều này thật tuyệt vời, cảm ơn. Bạn có biết làm thế nào tôi có thể nhận được emacs để hình ảnh nội tuyến bằng cách sử dụng 'img:' loại liên kết với 'org-redisplay-inline-images'? –

+0

Một lưu ý: Org-mode v 9. báo cáo loại org-add-link là lỗi thời (mặc dù xuất vẫn hoạt động và tạo ra img src = "/ etc/anImg.png"). Email đến [danh sách gửi thư org] (http://lists.gnu.org/archive/html/emacs-orgmode/2017-04/msg00188.html), đề xuất giải pháp cho chế độ org phiên bản 9: (org-link-set-parameters "img" : theo 'org-custom-link-img-follow : xuất' org-custom-link-img-export) – mzimmermann

Các vấn đề liên quan