Noweb imbriqué dans des blocs org src

Sep 06 2020

J'ai les blocs de code suivants:

Le bloc 1 n'est qu'une ligne. C'est un MWE. En réalité, j'ai plusieurs lignes dans le bloc 1.

#+name: block1
#+begin_src python :noweb no :exports none
print("Block 1")
#+end_src

Le bloc 2 a également été réduit pour le bien de MWE.

#+name: block2
#+begin_src python :noweb no :exports none
<<block1>>
print("Block 2")
#+end_src

Cela montre un squelette de myfunc. Je veux inclure ce squelette pour donner un aperçu de myfunc.

#+name: block3
#+begin_src python :noweb no :exports code
def myfunc(x):
    <<block2>>
#+end_src

Enfin, cela montre la spécification complète de myfunc.

#+begin_src python :noweb yes :exports code
<<block3>>
#+end_src

À quoi je m'attends quand il est exporté

def myfunc(x):
    print("Block 1")
    print("Block 2")

À quoi ça ressemble vraiment

def myfunc(x):
    <<block1>>
    print("Block 2")

Comment puis-je agrandir complètement les blocs imbriqués lorsque j'utilise: noweb yes?

Réponses

mankoff Sep 06 2020 at 18:28

Votre exemple fonctionne si je place tous les en-têtes avec :noweb yeset que seul le dernier bloc a :tangle yes.

Un exemple plus simple:

  1. Ajoutez ceci en haut du fichier: #+PROPERTY: header-args :noweb yes :tangle no :exports code
  2. Supprimez tous les arguments d'en-tête des blocs de code.
  3. Ajouter un en- :tangle yestête à la "spécification complète".