Next: , Previous: Language-specific header arguments in Org mode properties, Up: Using header arguments

Code block specific header arguments

The most common way to assign values to header arguments is at the code block level. This can be done by listing a sequence of header arguments and their values as part of the #+BEGIN_SRC line. Properties set in this way override both the values of org-babel-default-header-args and header arguments specified as properties. In the following example, the :results header argument is set to silent, meaning the results of execution will not be inserted in the buffer, and the :exports header argument is set to code, meaning only the body of the code block will be preserved on export to HTML or LaTeX.

     #+NAME: factorial
     #+BEGIN_SRC haskell :results silent :exports code :var n=0
     fac 0 = 1
     fac n = n * fac (n-1)
     #+END_SRC

Similarly, it is possible to set header arguments for inline code blocks

     src_haskell[:exports both]{fac 5}

Code block header arguments can span multiple lines using #+HEADER: or #+HEADERS: lines preceding a code block or nested between the #+NAME: line and the #+BEGIN_SRC line of a named code block. Multi-line header arguments on an un-named code block:

      #+HEADERS: :var data1=1
      #+BEGIN_SRC emacs-lisp :var data2=2
        (message "data1:%S, data2:%S" data1 data2)
      #+END_SRC
     
      #+RESULTS:
      : data1:1, data2:2

Multi-line header arguments on a named code block:

        #+NAME: named-block
        #+HEADER: :var data=2
        #+BEGIN_SRC emacs-lisp
          (message "data:%S" data)
        #+END_SRC
     
        #+RESULTS: named-block
        : data:2