使用org-babel进行文化编程

Ham*_*aya 16 emacs literate-programming org-mode org-babel

我正在使用org-babel进行识字.我的源码结构如下,

-imports
-utility fns
-game structure
 - detailed explanations
Run Code Online (Sandbox Code Playgroud)

这是代码的正常结构,我想要做的是将实用程序fns的解释移到最后,这样它就不会在生成的pdf文件中首先出现.现在这可以用noweb扩展来完成,但问题是当你有很多小函数时我必须添加一个带有唯一名称的src_block向下滚动文件并在文件中添加对它的引用这真的很烦人.有没有办法在一个部分中命名所有src_blocks?说本节中的所有代码都进入了块A.

tan*_*orm 11

您可以为多个块指定相同的名称.例如,我使用org-tangle生成我的.emacs文件,并在org文件的顶部,我有一个主模板,看起来像这样:

#+begin_src emacs-lisp :tangle "/path/to/.emacs" :comments both :noweb tangle
<<generated-file-warning>
<<includes>>
<<definitions>>
<<settings>>
<<generated-file-warning>
#+end_src
Run Code Online (Sandbox Code Playgroud)

在下面,我有我的大纲与源块像这样:

* extensions
** yasnippet

#+name: early-includes
#+begin_src emacs-lisp
(require 'yasnippet)
(yas/initialize)
#+end_src

#+name: settings
#+begin_src emacs-lisp
(yas/load/directory "/path/to/my/snippets")
#+end_src
Run Code Online (Sandbox Code Playgroud)

注意:对于旧版本的org-mode,您可能需要使用#+srcname:而不是#+name:

您还可以创建一个名为的属性noweb-ref,该属性将相同的名称应用于子树中的所有源块.