Как импортировать / расширять ссылки 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