2013-08-18 76 views
1

我們希望完全從組織模式的babel文件生成Leiningen項目樹 。我們希望這樣做,以便我們 也可以通過 org-latex-export-to-pdf創建漂亮的排版文檔。我們希望不低於來自組織模式的Clojure中的全文識別 編程。組織模式babel糾結可以產生leiningen目錄嗎?

以下命令:

$ lein new ex1 

產生的樹,看起來像這樣:

ex1 
ex1/.gitignore 
ex1/doc 
ex1/doc/intro.md 
ex1/project.clj 
ex1/README.md 
ex1/resources 
ex1/src 
ex1/src/ex1 
ex1/src/ex1/core.clj 
ex1/test 
ex1/test/ex1 
ex1/test/ex1/core_test.clj 

我們想要做相同的事情只是通過運行 org-babel-tangle,並沒有更多的,在我們的組織在 emacs模式緩衝區。

難題出現:而tangle高興地產生像srctest現有子目錄 文件,它似乎不願意生產子目錄,如果它們不存在。這意味着我們必須通過一些其他方式創建目錄結構 - 除非我們可以通過 獲得tangle來爲我們做這件事,並且這是 的主題StackOverflow問題。

目錄結構中有六個文件由Leiningen創建。我可以將它們全部刪除,並從我的組織文件與BEGIN_SRC塊重新創建它們,如下面的

#+BEGIN_SRC clojure :tangle ./ex1/src/ex1/core.clj 
(ns ex1.core) 

(defn foo 
    "I don't do a whole lot." 
    [x] 
    (println x "Hello, World!")) 
#+END_SRC 

通知子目錄路徑的特別名字

#+BEGIN_SRC clojure :tangle ./ex1/src/ex1/core.clj 

一切都很好,如果我們的目錄結構已經存在。 org-mode的tangle將 創建或更新上述所有六個文件並在任何現有目錄中創建新文件。我們不知道如何 得到tangle來產生目錄;它抱怨說沒有這樣的 目錄。

如果您想了解更多詳細信息,可以找到想要的.org文件的副本here

+1

你有沒有考慮fogus.github .io/marginalia /作爲一個起點? –

+0

現在看它 - 不知道它 –

+1

我的.2C org-babel比marginalia強大得多 –

回答

6

使用下面的頭在begin_src部分有可能,

:mkdirp yes 
+0

有沒有辦法在一個地方指定文件中的每個* BEGIN_SRC都應該有':mkdirp yes'? –

+1

如果你使用noweb,你可以有一個部分收集所有片段並創建目錄,你不必將它添加到所有源頭部 –

+1

以供參考,https://raw.github.com/nakkaya/nakkaya.com/ master/resources/posts/2011-06-29-ferret-an-experimental-clojure-compiler.org使用org-babel和noweb他的大多數帖子都是用org-babel編寫的 –