Грамотное программирование с использованием org-babel

Я использую грамотную программу, использующую org-babel. Мой источник структурирован так,

-imports
-utility fns
-game structure
 - detailed explanations

Это обычная структура кода, я бы хотел переместить объяснения утилиты fns в конец, чтобы она не отображалась первой в сгенерированном файле pdf. Теперь это можно сделать с расширением noweb, но проблема в том, что когда у вас много маленьких функций для каждой, мне нужно добавить src_block с уникальным именем, прокрутите файл вниз и добавьте ссылку на него в файле, который действительно раздражает . Есть ли способ назвать все src_blocks в разделе? скажем, весь код в этом разделе переходит в блок A.


person Hamza Yerlikaya    schedule 14.07.2011    source источник


Ответы (1)


Вы можете дать нескольким чанкам одно и то же имя. Например, я создаю свой файл .emacs с помощью org-tangle, и в верхней части файла org у меня есть главный шаблон, который выглядит примерно так:

#+begin_src emacs-lisp :tangle "/path/to/.emacs" :comments both :noweb tangle
<<generated-file-warning>
<<includes>>
<<definitions>>
<<settings>>
<<generated-file-warning>
#+end_src

Под ним у меня есть схема с такими исходными блоками:

* extensions
** yasnippet

#+name: early-includes
#+begin_src emacs-lisp
(require 'yasnippet)
(yas/initialize)
#+end_src

#+name: settings
#+begin_src emacs-lisp
(yas/load/directory "/path/to/my/snippets")
#+end_src

Примечание. для более старых версий org-mode вам может потребоваться использовать #+srcname: вместо #+name:.

Вы также можете создать свойство с именем noweb-ref, которое применяет одно и то же имя ко всем исходным блокам в подпрограмме. -дерево.

person tangentstorm    schedule 15.12.2011
comment
В руководстве организации говорится: Предполагается, что имена уникальны, а поведение Режим организации, когда два или более блоков имеют одно и то же имя, не определен. - person npostavs; 06.01.2014
comment
Ага. Тем не менее org-babel-tangle ведет себя, как описано. - person tangentstorm; 09.01.2014
comment
Из моего ограниченного эксперимента кажется, что блоки кода с одинаковыми именами будут объединены в порядке их появления в грамотном программном файле. Это может быть поведение, которое требуется @Hamza. - person Yu Shen; 14.10.2016