【发布时间】:2013-08-18 17:32:34
【问题描述】:
我们希望自动生成 Leiningen 项目树
完全来自 org-mode babel 文件。我们想这样做,以便我们
还可以通过以下方式创建漂亮的排版文档
org-latex-export-to-pdf。我们要不低于完全识字
从 org-mode 在 Clojure 中编程。
以下命令:
$ 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,仅此而已,在我们的 org-mode 缓冲区中
emacs。
出现了一个困难:而tangle 很乐意生产
src 和 test 等现有子目录中的文件,如果子目录不存在,似乎不愿意生成子目录。这意味着我们必须
通过其他方式创建目录结构——除非我们可以
让tangle 为我们做这件事,这就是本文的主题
StackOverflow 问题。
Leiningen 创建的目录结构中有六个文件。我可以将它们全部删除并使用 BEGIN_SRC 块从我的 org 文件中重新创建它们,如下所示
#+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 生成目录;它抱怨说没有这样的
目录。
如果您想了解更多详细信息,可以在here 找到所需的.org 文件的副本。
【问题讨论】:
-
您是否考虑过以fogus.github.io/marginalia/作为起点?
-
现在看——不知道
-
我的 .2c org-babel 比边缘化强大得多
-
我们的 babel 用例是我们有 很多 数学需要在
LaTeX中排版,还有很多图表 a-laTikz和PGF,我们真的希望Clojure 代码就在隔壁,这样我们就有机会保证代码和文档不会漂移。我们的文档/代码/项目将运行超过 1k 页。
标签: clojure org-mode leiningen literate-programming org-babel