我在我的 Babel 库中有许多 Org Babel 代码块,我经常按顺序调用它们。
是否可能创建一个 Org Babel 代码块以按顺序调用这些其他代码块?
#+name: clean
#+begin_src ...
...
#+end_src
#+name: plot
#+begin_src :var data=clean
...
#+end_src
#+name: ex\n#+begin_example xml
而不是 begin_src
,然后稍后可以使用 #+begin_src sh :var f=ex\necho "$f" | xmllint --format -\n#end_src
。 - unhammer是的,我有几个org-babel文件,在那里我这样做。以下是一种方法:
#+srcname: foo
#+begin_src python :exports code :tangle yes
def foo():
print "I'm foo()"
#+end_src
#+name: bar
#+begin_src python :exports code :tangle yes
def bar():
foo()
print "I'm bar()'"
#+end_src
#+srcname: main
#+begin_src python :exports code :tangle yes
foo()
bar()
#+end_src
def foo():
print "I'm foo()"
def bar():
foo()
print "I'm bar()'"
foo()
bar()
如果org文件中的代码顺序与您想生成的顺序不同,可以使用noweb标签以所需的顺序生成代码文件,例如:
#+name: bar
#+begin_src python :noweb-ref bar :tangle no
def bar():
foo()
print "I'm bar()'"
#+end_src
#+srcname: foo
#+begin_src python :noweb-ref foo :tangle no
def foo():
print "I'm foo()"
#+end_src
#+begin_src python :noweb tangle :tangle yes
<<foo>>
<<bar>>
foo()
bar()
#+end_src
def foo():
print "I'm foo()"
def bar():
foo()
print "I'm bar()'"
foo()
bar()