Hi Alan, Rainer M Krug <rai...@krugs.de> writes: > Alan Schmitt <alan.schm...@polytechnique.org> writes: > >> Hello, >> >> I have a question I feel is very basic but I did not find the answer in >> the manual. How can I trigger the tangling of a block upon export. > > Tangling and exporting are two different paths (well - one could see > tangling as a special case of exporting). > > You have to use an export hook (see > http://orgmode.org/tmp/worg/org-configs/org-hooks.html for a list of > hooks in org). > > I have done something similar to run a post-tangle hook: > > #+begin_src emacs-lisp > (defvar org-babel-tangle-run-postTangleScript nil > "If non-nil, postTangleScript.sh will be executed") > (put 'org-babel-tangle-run-postTangleScript 'safe-local-variable 'booleanp) > > (defun org-babel-run-post-tangle-script () > (when org-babel-tangle-run-postTangleScript > (message "running the postTangleScript.sh bash shell script") > (shell-command "bash ./postTangleScript.sh"))) > > (add-hook 'org-babel-post-tangle-hook 'org-babel-run-post-tangle-script) > #+end_src > > Cheers, > > Rainer > >> >> More precisely, I want to give the following example in a lecture: >> >> #+name:hello >> #+begin_src ocaml :tangle myprog.ml >> Printf.printf "Bonjour le monde !\n" >> #+end_src >> #+BEGIN_SRC sh :exports both :results verbatim >> ocamlc -o myprog myprog.ml >> ./myprog >> #+END_SRC >> >> where I show a program to be compiled and actually compile it. Is there >> a header I should put on the "hello" block to tangle it when I export >> it? >> >> Thanks, >> >> Alan
if all of this is for a single block, you can get away quite cheaply with sth along (untested) #+begin_src emacs-lisp :results silent (save-excursion ;; tangle (org-babel-goto-named-src-block "hello") (org-babel-tangle '(4))) #+end_src and make sure this gets executed during export. Regards, Andreas