2013-03-10 65 views
5

問:有沒有辦法在emacs org-mode中進行轉換?emacs org模式下的ISO跨越?

通過「transclusion」,我的意思是在fileA.org和fileB.org的某處,「包含」fileInc.org,並讓fileInc.org中的樹出現在兩處。其實出現,不僅僅是聯繫在一起。 (可能有條件包含,變換,例如嵌套深度(***的數量))。

我知道#setupfile,但似乎只適用於模式,而不是真正的文本。

我知道關於http://orgmode.org/manual/Include-files.html, 但是AFAIK他們只在出口時工作。

我正在尋找一些在正常的emacs組織模式緩衝區中工作的東西。 (實際上,在非組織模式緩衝區中工作的東西可能會很好。)

我有多個文件中包含的鍋爐板。

是否有這樣的事情存在?

回答

7

嗯...我不認爲這樣的東西存在,但很容易寫一個動態塊來做到這一點。下面elisp的工作對我來說:

(defun org-dblock-write:transclusion (params) 
    (progn 
    (with-temp-buffer 
     (insert-file-contents (plist-get params :filename)) 
     (let ((range-start (or (plist-get params :min) (line-number-at-pos (point-min)))) 
      (range-end (or (plist-get params :max) (line-number-at-pos (point-max))))) 
     (copy-region-as-kill (line-beginning-position range-start) 
          (line-end-position range-end)))) 
    (yank))) 

然後包括來自給定文件中的行範圍,你可以像這樣創建的動態塊的:

#+BEGIN: transclusion :filename "~/testfile.org" :min 2 :max 4 
#+END: 

而且隨着C-c C-x C-u自動填充。跳過最小和最大參數以包含整個文件。請注意,您可以將org-update-all-dblocks綁定到掛鉤,以便在您訪問文件或保存時更新此範圍。

有關動態塊的更多信息,請致電http://orgmode.org/org.html#Dynamic-blocks。希望這可以幫助!

+0

有沒有人適應這個採取特定的標題?我還沒有發現任何公開的東西(我在這裏發佈了一個相關的問題,如果有人找到或做這樣的事情http://emacs.stackexchange.com/questions/12562/org-mode-headings-in-multiple-places- at-once-transclusion – avv 2015-06-03 19:00:50

+0

用##INCLUDE'的方式使用標籤就可以了。 – AlwaysLearning 2017-06-14 11:13:02

+0

請問您能解釋一下,函數名稱中列的含義是什麼? – AlwaysLearning 2017-06-14 11:14:01