Как импортировать / расширять ссылки noweb в оцененных (экспортируемых) исходных блоках в org-babel?

Я пытаюсь сделать что-то вроде этого:

* Define some functions
#+begin_src python :noweb_ref defs
   def f1(a,b,c):
     return True
   def f2(d,e,f):
     return False
#+end_src

* Use them in a results-exported block later
#+begin_src python :results output :exports both :tangle yes
<<defs>>
print "test results:"
print f1(1,2,3)
#end_src

Я хочу, чтобы << defs >> был расширен в стиле клубка, когда блок оценивается для получения результата экспорта. На самом деле происходит то, что << defs >> вычисляется буквально и вызывает синтаксическую ошибку.

При перепутывании таких блоков в выходной файл все работает отлично, но я не могу понять, как сделать то же самое при экспорте буфера.

Предложения?

2 ответа

Решение

Я не уверен, чтобы действительно понять вашу мысль... но

1) ты скучаешь noweb:yes аргумент заголовка

2) вы можете использовать <<func()>> вставить результаты оценки func (вместо кода func) - вот здесь я не уверен, что вы действительно хотите.

Вы также можете использовать :noweb no-export, Это показывает синтаксис noweb в экспортируемых файлах, но расширяет блоки кода при оценке или запутывании файлов.

:noweb strip-export отлично, если вы просто хотите показать алгоритм:

<<prep>>
result = A + B
<<plot>>

Экспортированный файл затем показывает это:

result = A + B
Другие вопросы по тегам