Вложенный noweb в блоки src org
Sep 06 2020
У меня есть следующие блоки кода:
Блок 1 - это всего одна линия. Это MWE. На самом деле у меня в блоке 1 несколько строк.
#+name: block1
#+begin_src python :noweb no :exports none
print("Block 1")
#+end_src
Блок 2 также был сокращен ради MWE.
#+name: block2
#+begin_src python :noweb no :exports none
<<block1>>
print("Block 2")
#+end_src
Это показывает скелет myfunc. Я хочу включить этот скелет, чтобы дать обзор myfunc.
#+name: block3
#+begin_src python :noweb no :exports code
def myfunc(x):
<<block2>>
#+end_src
Наконец, это показывает полную спецификацию myfunc.
#+begin_src python :noweb yes :exports code
<<block3>>
#+end_src
Как я ожидаю, что это будет выглядеть при экспорте
def myfunc(x):
print("Block 1")
print("Block 2")
Как это на самом деле выглядит
def myfunc(x):
<<block1>>
print("Block 2")
Как я могу полностью развернуть вложенные блоки, когда использую: noweb yes?
Ответы
mankoff Sep 06 2020 at 18:28
Ваш пример работает, если я установил все заголовки, :noweb yesа затем только последний блок :tangle yes.
Более простой пример:
- Добавьте это вверху файла:
#+PROPERTY: header-args :noweb yes :tangle no :exports code - Удалите все аргументы заголовка из блоков кода.
- Добавьте
:tangle yesзаголовок в «полную спецификацию».