使用 org-babel 进行文学编程

发布于 2024-11-24 00:55:57 字数 330 浏览 0 评论 0原文

我正在使用 org-babel 进行读写程序。我的源代码的结构如下,

-imports
-utility fns
-game structure
 - detailed explanations

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

I am on a literate program using org-babel. My source is structured like so,

-imports
-utility fns
-game structure
 - detailed explanations

This is the normal structure of the code, what I would like to do is move explanations of the utility fns to the end so it does not show up first in the generated pdf file. Now this can be done with noweb extension, but the problem is when you have lots of little functions for each one I have to add a src_block with a unique name scroll down the file and add a reference to that in the file which is really annoying. Is there a way to name all the src_blocks in a section? say all code in this section goes into block A.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野侃 2024-12-01 00:55:57

您可以为多个块指定相同的名称。例如,我使用 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

在它下面,我的大纲包含源代码块,如下所示:

* 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

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

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

You can give multiple chunks the same name. For example, I generate my .emacs file with org-tangle, and at the top of the org file, I have a master template that looks something like this:

#+begin_src emacs-lisp :tangle "/path/to/.emacs" :comments both :noweb tangle
<<generated-file-warning>
<<includes>>
<<definitions>>
<<settings>>
<<generated-file-warning>
#+end_src

Underneath that, I have my outline with source blocks like so:

* 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

Note: for older versions of org-mode, you may need to use #+srcname: instead of #+name:

You can also create a property called noweb-ref, which applies the same name to all source blocks in a sub-tree.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文