Next: Key bindings and useful functions, Previous: Results of evaluation, Up: Working With Source Code [Contents][Index]

### 14.10 Noweb reference syntax

The “noweb” (see http://www.cs.tufts.edu/~nr/noweb/) Literate Programming system allows named blocks of code to be referenced by using the familiar Noweb syntax:

    <<code-block-name>>

When a code block is tangled or evaluated, whether or not “noweb” references are expanded depends upon the value of the `:noweb` header argument. If `:noweb yes`, then a Noweb reference is expanded before evaluation. If `:noweb no`, the default, then the reference is not expanded before evaluation. See the noweb-ref header argument for a more flexible way to resolve noweb references.

It is possible to include the results of a code block rather than the body. This is done by appending parenthesis to the code block name which may optionally contain arguments to the code block as shown below.

    <<code-block-name(optional arguments)>>

Note: the default value, `:noweb no`, was chosen to ensure that correct code is not broken in a language, such as Ruby, where `<<arg>>` is a syntactically valid construct. If `<<arg>>` is not syntactically valid in languages that you use, then please consider setting the default value.

Note: if noweb tangling is slow in large Org mode files consider setting the `org-babel-use-quick-and-dirty-noweb-expansion` variable to `t`. This will result in faster noweb reference resolution at the expense of not correctly resolving inherited values of the `:noweb-ref` header argument.