|
@@ -11651,19 +11651,26 @@ The following sections describe Org-mode's code block handling facilities.
|
|
|
@section Structure of code blocks
|
|
|
@cindex code block, structure
|
|
|
@cindex source code, block structure
|
|
|
+@cindex #+NAME
|
|
|
+@ciindex #+BEGIN_SRC
|
|
|
|
|
|
-The structure of code blocks is as follows (empty code blocks may be inserted
|
|
|
-using Org-mode's @ref{Easy Templates} system):
|
|
|
+Live code blocks can be specified with a @samp{src} block or
|
|
|
+inline@footnote{Note that @samp{src} blocks may be inserted using Org-mode's
|
|
|
+@ref{Easy Templates} system}. The structure of a @samp{src} block is
|
|
|
|
|
|
@example
|
|
|
-#+srcname: <name>
|
|
|
-#+begin_src <language> <switches> <header arguments>
|
|
|
+#+NAME: <name>
|
|
|
+#+BEGIN_SRC <language> <switches> <header arguments>
|
|
|
<body>
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
@end example
|
|
|
|
|
|
-Switches and header arguments are optional. Code can also be embedded in text
|
|
|
-inline using
|
|
|
+The @code{#+NAME:} line is optional, and can be used to name the code
|
|
|
+block. Live code blocks require that a language be specified on the
|
|
|
+@code{#+BEGIN_SRC} line. Switches and header arguments are optional.
|
|
|
+@cindex source code, inline
|
|
|
+
|
|
|
+Live code blocks can also be specified inline using
|
|
|
|
|
|
@example
|
|
|
src_<language>@{<body>@}
|
|
@@ -11676,26 +11683,30 @@ src_<language>[<header arguments>]@{<body>@}
|
|
|
@end example
|
|
|
|
|
|
@table @code
|
|
|
-@item <name>
|
|
|
-This name is associated with the code block. This is similar to the
|
|
|
-@samp{#+tblname} lines that can be used to name tables in Org-mode files.
|
|
|
-Referencing the name of a code block makes it possible to evaluate the
|
|
|
-block from other places in the file, other files, or from Org-mode table
|
|
|
-formulas (see @ref{The spreadsheet}). Names are assumed to be unique by
|
|
|
-evaluation functions and the behavior of multiple blocks of the same name is
|
|
|
+@item <#+NAME: name>
|
|
|
+This line associates a name with the code block. This is similar to the
|
|
|
+@code{#+TBLNAME: NAME} lines that can be used to name tables in Org-mode
|
|
|
+files. Referencing the name of a code block makes it possible to evaluate
|
|
|
+the block from other places in the file, from other files, or from Org-mode
|
|
|
+table formulas (see @ref{The spreadsheet}). Names are assumed to be unique
|
|
|
+and the behavior of Org-mode when two or more blocks share the same name is
|
|
|
undefined.
|
|
|
+@cindex #+NAME
|
|
|
@item <language>
|
|
|
-The language of the code in the block.
|
|
|
+The language of the code in the block (see @ref{Languages}).
|
|
|
+@cindex source code, language
|
|
|
@item <switches>
|
|
|
-Optional switches controlling exportation of the code block (see switches discussion in
|
|
|
+Optional switches control code block export (see the discussion of switches in
|
|
|
@ref{Literal examples})
|
|
|
+@cindex source code, switches
|
|
|
@item <header arguments>
|
|
|
Optional header arguments control many aspects of evaluation, export and
|
|
|
-tangling of code blocks. See the @ref{Header arguments}.
|
|
|
+tangling of code blocks (see @ref{Header arguments}).
|
|
|
Header arguments can also be set on a per-buffer or per-subtree
|
|
|
basis using properties.
|
|
|
+@item source code, header arguments
|
|
|
@item <body>
|
|
|
-The source code.
|
|
|
+Source code in the specified language.
|
|
|
@end table
|
|
|
|
|
|
@comment node-name, next, previous, up
|
|
@@ -11744,12 +11755,12 @@ variable @code{org-src-fontify-natively}.
|
|
|
@cindex code block, exporting
|
|
|
@cindex source code, exporting
|
|
|
|
|
|
-It is possible to export the @emph{contents} of code blocks, the
|
|
|
-@emph{results} of code block evaluation, @emph{neither}, or @emph{both}. For
|
|
|
-most languages, the default exports the contents of code blocks. However, for
|
|
|
-some languages (e.g.@: @code{ditaa}) the default exports the results of code
|
|
|
-block evaluation. For information on exporting code block bodies, see
|
|
|
-@ref{Literal examples}.
|
|
|
+It is possible to export the @emph{code} of code blocks, the @emph{results}
|
|
|
+of code block evaluation, @emph{both} the code and the results of code block
|
|
|
+evaluation, or @emph{none}. For most languages, the default exports code.
|
|
|
+However, for some languages (e.g.@: @code{ditaa}) the default exports the
|
|
|
+results of code block evaluation. For information on exporting code block
|
|
|
+bodies, see @ref{Literal examples}.
|
|
|
|
|
|
The @code{:exports} header argument can be used to specify export
|
|
|
behavior:
|
|
@@ -11827,14 +11838,15 @@ of tangled code files.
|
|
|
@cindex source code, evaluating
|
|
|
|
|
|
Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
|
|
|
-potential for that code to do harm. Org-mode provides a number of safeguards
|
|
|
-to ensure that it only evaluates code with explicit confirmation from the
|
|
|
-user. For information on these safeguards (and on how to disable them) see
|
|
|
-@ref{Code evaluation security}.} and the results placed in the Org-mode
|
|
|
-buffer. By default, evaluation is only turned on for @code{emacs-lisp} code
|
|
|
-blocks, however support exists for evaluating blocks in many languages. See
|
|
|
-@ref{Languages} for a list of supported languages. See @ref{Structure of
|
|
|
-code blocks} for information on the syntax used to define a code block.
|
|
|
+potential for that code to do harm. Org-mode provides safeguards to ensure
|
|
|
+that code is only evaluated after explicit confirmation from the user. For
|
|
|
+information on these safeguards (and on how to disable them) see @ref{Code
|
|
|
+evaluation security}.} and the results of evaluation optionally placed in the
|
|
|
+Org-mode buffer. By default, the evaluation facility is only enabled for
|
|
|
+Lisp code blocks specified as @code{emacs-lisp}. However, souce code blocks
|
|
|
+in many languages can be evaluated within Org-mode (see @ref{Languages} for a
|
|
|
+list of supported languages and @ref{Structure of code blocks} for
|
|
|
+information on the syntax used to define a code block).
|
|
|
|
|
|
@kindex C-c C-c
|
|
|
There are a number of ways to evaluate code blocks. The simplest is to press
|
|
@@ -11843,63 +11855,51 @@ There are a number of ways to evaluate code blocks. The simplest is to press
|
|
|
evaluation from the @kbd{C-c C-c} key binding.}. This will call the
|
|
|
@code{org-babel-execute-src-block} function to evaluate the block and insert
|
|
|
its results into the Org-mode buffer.
|
|
|
+@cindex #+CALL
|
|
|
|
|
|
It is also possible to evaluate named code blocks from anywhere in an
|
|
|
-Org-mode buffer or an Org-mode table. @code{#+call} (or synonymously
|
|
|
-@code{#+function} or @code{#+lob}) lines can be used to remotely execute code
|
|
|
-blocks located in the current Org-mode buffer or in the ``Library of Babel''
|
|
|
-(see @ref{Library of Babel}). These lines use the following syntax to place
|
|
|
-a call on a line by itself.
|
|
|
+Org-mode buffer or an Org-mode table. Live code blocks located in the current
|
|
|
+Org-mode buffer or in the ``Library of Babel'' (see @ref{Library of Babel})
|
|
|
+can be executed. Named code blocks can be executed with a separate
|
|
|
+@code{#+CALL:} line or inline within a block of text.
|
|
|
+
|
|
|
+The syntax of the @code{#+CALL:} line is
|
|
|
|
|
|
@example
|
|
|
-#+call: <name>(<arguments>)
|
|
|
-#+call: <name>[<header args>](<arguments>) <header args>
|
|
|
+#+CALL: <name>(<arguments>)
|
|
|
+#+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
|
|
|
@end example
|
|
|
|
|
|
-The following syntax can be used to place these calls within a block of
|
|
|
-prose.
|
|
|
+The syntax for inline evaluation of named code blocks is
|
|
|
|
|
|
@example
|
|
|
-...prose... call_<name>(<arguments>) ...prose...
|
|
|
-...prose... call_<name>[<header args>](<arguments>)[<header args>] ...prose...
|
|
|
+... call_<name>(<arguments>) ...
|
|
|
+... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
|
|
|
@end example
|
|
|
|
|
|
@table @code
|
|
|
@item <name>
|
|
|
-The name of the code block to be evaluated.
|
|
|
+The name of the code block to be evaluated (see @ref{Structure of code blocks}).
|
|
|
@item <arguments>
|
|
|
Arguments specified in this section will be passed to the code block. These
|
|
|
-arguments should relate to @code{:var} header arguments in the called code
|
|
|
-block expressed using standard function call syntax. For example if the
|
|
|
-original code block named @code{double} has the header argument @code{:var
|
|
|
-n=2}, then the call line passing the number four to that block would be
|
|
|
-written as @code{#+call: double(n=2)}.
|
|
|
-@item <header args>
|
|
|
-Header arguments can be placed either inside the call to the code block or at
|
|
|
-the end of the line as shown below.
|
|
|
-
|
|
|
-@example
|
|
|
-#+call: code_bloc_name[XXXX](arguments) YYYY
|
|
|
-@end example
|
|
|
-
|
|
|
-Header arguments located in these two locations are treated differently.
|
|
|
-
|
|
|
-@table @code
|
|
|
-@item XXXX
|
|
|
-Those placed in the @code{XXXX} location are passed through and applied to
|
|
|
-the code block being called. These header arguments affect how the code
|
|
|
-block is evaluated, for example @code{[:results output]} will collect the
|
|
|
-results from @code{STDOUT} of the called code block.
|
|
|
-@item YYYY
|
|
|
-Those placed in the @code{YYYY} location are applied to the call line and do
|
|
|
-not affect the code block being called. These header arguments affect how
|
|
|
-the results are incorporated into the Org-mode buffer when the call line is
|
|
|
-evaluated, and how the call line is exported. For example @code{:results
|
|
|
-org} at the end of the call line will insert the results of the call line
|
|
|
-inside of an Org-mode block.
|
|
|
-@end table
|
|
|
-
|
|
|
-For more examples of passing header arguments to @code{#+call:} lines see
|
|
|
+arguments use standard function call syntax, rather than
|
|
|
+header argument syntax. For example, a @code{#+CALL:} line that passes the
|
|
|
+number four to a code block named @code{double}, which declares the header
|
|
|
+argument @code{:var n=2}, would be written as @code{#+CALL: double(n=4)}.
|
|
|
+@item <inside header arguments>
|
|
|
+Inside header arguments are passed through and applied to the named code
|
|
|
+block. These arguments use header argument syntax rather than standard
|
|
|
+function call syntax. Inside header arguments affect how the code block is
|
|
|
+evaluated. For example, @code{[:results output]} will collect the results of
|
|
|
+everything printed to @code{STDOUT} during execution of the code block.
|
|
|
+@item <end header arguments>
|
|
|
+End header arguments are applied to the calling instance and do not affect
|
|
|
+evaluation of the named code block. They affect how the results are
|
|
|
+incorporated into the Org-mode buffer and how the call line is exported. For
|
|
|
+example, @code{:results html} will insert the results of the call line
|
|
|
+evaluation in the Org buffer, wrapped in a @code{BEGIN_HTML:} block.
|
|
|
+
|
|
|
+For more examples of passing header arguments to @code{#+CALL:} lines see
|
|
|
@ref{Header arguments in function calls}.
|
|
|
@end table
|
|
|
|
|
@@ -11909,15 +11909,19 @@ For more examples of passing header arguments to @code{#+call:} lines see
|
|
|
@cindex source code, library
|
|
|
@cindex code block, library
|
|
|
|
|
|
-The ``Library of Babel'' is a library of code blocks
|
|
|
-that can be called from any Org-mode file. The library is housed in an
|
|
|
-Org-mode file located in the @samp{contrib} directory of Org-mode.
|
|
|
-Org-mode users can deposit functions they believe to be generally
|
|
|
-useful in the library.
|
|
|
+The ``Library of Babel'' consists of code blocks that can be called from any
|
|
|
+Org-mode file. Code blocks defined in the ``Library of Babel'' can be called
|
|
|
+remotely as if they were in the current Org-mode buffer (see @ref{Evaluating
|
|
|
+code blocks} for information on the syntax of remote code block evaluation).
|
|
|
+
|
|
|
+
|
|
|
+The central repository of code blocks in the ``Library of Babel'' is housed
|
|
|
+in an Org-mode file located in the @samp{contrib} directory of Org-mode.
|
|
|
+
|
|
|
+Users can add code blocks they believe to be generally useful to their
|
|
|
+``Library of Babel.'' The code blocks can be stored in any Org-mode file and
|
|
|
+then loaded into the library with @code{org-babel-lob-ingest}.
|
|
|
|
|
|
-Code blocks defined in the ``Library of Babel'' can be called remotely as if
|
|
|
-they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
|
|
|
-for information on the syntax of remote code block evaluation).
|
|
|
|
|
|
@kindex C-c C-v i
|
|
|
Code blocks located in any Org-mode file can be loaded into the ``Library of
|
|
@@ -12111,7 +12115,7 @@ in Org-mode documents.
|
|
|
|
|
|
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 @code{#+begin_src} line.
|
|
|
+arguments and their values as part of the @code{#+BEGIN_SRC} line.
|
|
|
Properties set in this way override both the values of
|
|
|
@code{org-babel-default-header-args} and header arguments specified as
|
|
|
properties. In the following example, the @code{:results} header argument
|
|
@@ -12121,28 +12125,30 @@ inserted in the buffer, and the @code{:exports} header argument is set to
|
|
|
preserved on export to HTML or LaTeX.
|
|
|
|
|
|
@example
|
|
|
-#+source: factorial
|
|
|
-#+begin_src haskell :results silent :exports code :var n=0
|
|
|
+#+NAME: factorial
|
|
|
+#+BEGIN_SRC haskell :results silent :exports code :var n=0
|
|
|
fac 0 = 1
|
|
|
fac n = n * fac (n-1)
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
@end example
|
|
|
-Similarly, it is possible to set header arguments for inline code blocks:
|
|
|
+Similarly, it is possible to set header arguments for inline code blocks
|
|
|
|
|
|
@example
|
|
|
src_haskell[:exports both]@{fac 5@}
|
|
|
@end example
|
|
|
|
|
|
-Code block header arguments can span multiple lines using =#+header:= or
|
|
|
-=#+headers:= lines preceding a code block or nested in between the name and
|
|
|
-body of a named code block.
|
|
|
+Code block header arguments can span multiple lines using @code{#+HEADER:} or
|
|
|
+@code{#+HEADERS:} lines preceding a code block or nested between the
|
|
|
+@code{#+NAME:} line and the @code{#+BEGIN_SRC} line of a named code block.
|
|
|
+@cindex #+HEADER:
|
|
|
+@cindex #+HEADERS:
|
|
|
|
|
|
Multi-line header arguments on an un-named code block:
|
|
|
@example
|
|
|
- #+headers: :var data1=1
|
|
|
- #+begin_src emacs-lisp :var data2=2
|
|
|
+ #+HEADERS: :var data1=1
|
|
|
+ #+BEGIN_SRC emacs-lisp :var data2=2
|
|
|
(message "data1:%S, data2:%S" data1 data2)
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
|
|
|
#+results:
|
|
|
: data1:1, data2:2
|
|
@@ -12150,11 +12156,11 @@ Multi-line header arguments on an un-named code block:
|
|
|
|
|
|
Multi-line header arguments on a named code block:
|
|
|
@example
|
|
|
- #+source: named-block
|
|
|
- #+header: :var data=2
|
|
|
- #+begin_src emacs-lisp
|
|
|
+ #+NAME: named-block
|
|
|
+ #+HEADER: :var data=2
|
|
|
+ #+BEGIN_SRC emacs-lisp
|
|
|
(message "data:%S" data)
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
|
|
|
#+results: named-block
|
|
|
: data:2
|
|
@@ -12165,20 +12171,20 @@ Multi-line header arguments on a named code block:
|
|
|
@subsubheading Header arguments in function calls
|
|
|
|
|
|
At the most specific level, header arguments for ``Library of Babel'' or
|
|
|
-function call lines can be set as shown in the two examples below. For more
|
|
|
-information on the structure of @code{#+call:} lines see @ref{Evaluating code
|
|
|
+@code{#+CALL:} lines can be set as shown in the two examples below. For more
|
|
|
+information on the structure of @code{#+CALL:} lines see @ref{Evaluating code
|
|
|
blocks}.
|
|
|
|
|
|
The following will apply the @code{:exports results} header argument to the
|
|
|
-evaluation of the @code{#+call:} line.
|
|
|
+evaluation of the @code{#+CALL:} line.
|
|
|
@example
|
|
|
-#+call: factorial(n=5) :exports results
|
|
|
+#+CALL: factorial(n=5) :exports results
|
|
|
@end example
|
|
|
|
|
|
The following will apply the @code{:session special} header argument to the
|
|
|
evaluation of the @code{factorial} code block.
|
|
|
@example
|
|
|
-#+call: factorial[:session special](n=5)
|
|
|
+#+CALL: factorial[:session special](n=5)
|
|
|
@end example
|
|
|
|
|
|
@node Specific header arguments, , Using header arguments, Header arguments
|
|
@@ -12223,14 +12229,18 @@ Additional header arguments are defined on a language-specific basis, see
|
|
|
The @code{:var} header argument is used to pass arguments to code blocks.
|
|
|
The specifics of how arguments are included in a code block vary by language;
|
|
|
these are addressed in the language-specific documentation. However, the
|
|
|
-syntax used to specify arguments is the same across all languages. The
|
|
|
-values passed to arguments can be literal values, values from org-mode tables
|
|
|
-and literal example blocks, the results of other code blocks, or Emacs Lisp
|
|
|
-code---see the ``Emacs Lisp evaluation of variables'' heading below. In
|
|
|
-every case, variables require a default value when they are declared.
|
|
|
+syntax used to specify arguments is the same across all languages. In every
|
|
|
+case, variables require a default value when they are declared.
|
|
|
|
|
|
-These values can be indexed in a manner similar to arrays---see the
|
|
|
-``indexable variable values'' heading below.
|
|
|
+The values passed to arguments can either be literal values, references, or
|
|
|
+Emacs Lisp code (see @ref{Emacs Lisp evaluation of variables}). References
|
|
|
+include anything in the Org-mode file that takes a @code{#+NAME:},
|
|
|
+@code{#+TBLNAME:}, or @code{#+RESULTS:} line. This includes tables, lists,
|
|
|
+@code{#+BEGIN_EXAMPLE} blocks, other code blocks, and the results of other
|
|
|
+code blocks.
|
|
|
+
|
|
|
+Argument values can be indexed in a manner similar to arrays (see
|
|
|
+@ref{Indexable variable values}).
|
|
|
|
|
|
The following syntax is used to pass arguments to code blocks using the
|
|
|
@code{:var} header argument.
|
|
@@ -12241,74 +12251,134 @@ The following syntax is used to pass arguments to code blocks using the
|
|
|
|
|
|
where @code{assign} can take one of the following forms
|
|
|
|
|
|
-@itemize @bullet
|
|
|
+@table @asis
|
|
|
@item literal value
|
|
|
-either a string @code{"string"} or a number @code{9}.
|
|
|
+either a string @samp{"string"} or a number @samp{9}.
|
|
|
@item reference
|
|
|
-a table name:
|
|
|
+tables, lists, literal examples, other code blocks, and results blocks can
|
|
|
+all be passed by reference
|
|
|
+@table @asis
|
|
|
+@item table
|
|
|
|
|
|
@example
|
|
|
-#+tblname: example-table
|
|
|
+#+TBLNAME: example-table
|
|
|
| 1 |
|
|
|
| 2 |
|
|
|
| 3 |
|
|
|
| 4 |
|
|
|
|
|
|
-#+source: table-length
|
|
|
-#+begin_src emacs-lisp :var table=example-table
|
|
|
+#+NAME: table-length
|
|
|
+#+BEGIN_SRC emacs-lisp :var table=example-table
|
|
|
(length table)
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results: table-length
|
|
|
: 4
|
|
|
@end example
|
|
|
|
|
|
-a code block name, as assigned by @code{#+srcname:}, followed by
|
|
|
+@item list
|
|
|
+a named, simple list. Nesting is not carried through to the source code
|
|
|
+block.
|
|
|
+
|
|
|
+@example
|
|
|
+#+NAME: example-list
|
|
|
+ - simple
|
|
|
+ - not
|
|
|
+ - nested
|
|
|
+ - lists
|
|
|
+
|
|
|
+#+BEGIN_SRC emacs-lisp :var x=example-list
|
|
|
+ (print x)
|
|
|
+#+END_SRC
|
|
|
+
|
|
|
+#+RESULTS:
|
|
|
+| simple | lists |
|
|
|
+@end example
|
|
|
+
|
|
|
+@item code block
|
|
|
+a code block name, as assigned by @code{#+NAME:}, followed by
|
|
|
parentheses:
|
|
|
|
|
|
@example
|
|
|
-#+begin_src emacs-lisp :var length=table-length()
|
|
|
+#+BEGIN_SRC emacs-lisp :var length=table-length()
|
|
|
(* 2 length)
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results:
|
|
|
: 8
|
|
|
@end example
|
|
|
|
|
|
-In addition, an argument can be passed to the code block referenced
|
|
|
-by @code{:var}. The argument is passed within the parentheses following the
|
|
|
-code block name:
|
|
|
+In addition, an argument can be passed to the code block referenced by
|
|
|
+@code{:var}. The argument is passed within the parentheses following the
|
|
|
+code block name using standard function call syntax:
|
|
|
|
|
|
@example
|
|
|
-#+source: double
|
|
|
-#+begin_src emacs-lisp :var input=8
|
|
|
+#+NAME: double
|
|
|
+#+BEGIN_SRC emacs-lisp :var input=8
|
|
|
(* 2 input)
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results: double
|
|
|
: 16
|
|
|
|
|
|
-#+source: squared
|
|
|
-#+begin_src emacs-lisp :var input=double(input=1)
|
|
|
+#+NAME: squared
|
|
|
+#+BEGIN_SRC emacs-lisp :var input=double(input=1)
|
|
|
(* input input)
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results: squared
|
|
|
: 4
|
|
|
@end example
|
|
|
-@end itemize
|
|
|
+
|
|
|
+@item literal example
|
|
|
+named literal examples are passed intact
|
|
|
+
|
|
|
+@example
|
|
|
+#+NAME: literal-example
|
|
|
+#+BEGIN_EXAMPLE
|
|
|
+A literal example
|
|
|
+on two lines
|
|
|
+#+END_EXAMPLE
|
|
|
+
|
|
|
+#+NAME: read-literal-example
|
|
|
+#+BEGIN_SRC emacs-lisp :var x=literal-example
|
|
|
+ (concatenate 'string x " for you.")
|
|
|
+#+END_SRC
|
|
|
+
|
|
|
+#+results: read-literal-example
|
|
|
+: A literal example
|
|
|
+: on two lines for you.
|
|
|
+
|
|
|
+@end example
|
|
|
+
|
|
|
+@item results block
|
|
|
+
|
|
|
+named results blocks are passed intact. Referring to the results of the last
|
|
|
+example
|
|
|
+
|
|
|
+@example
|
|
|
+#+BEGIN_SRC emacs-lisp :var x=read-literal-example
|
|
|
+ (concatenate 'string x "\nAgain.")
|
|
|
+#+END_SRC
|
|
|
+
|
|
|
+#+results:
|
|
|
+: A literal example
|
|
|
+: on two lines for you.
|
|
|
+: Again.
|
|
|
+@end example
|
|
|
+@end table
|
|
|
|
|
|
@subsubheading Alternate argument syntax
|
|
|
It is also possible to specify arguments in a potentially more natural way
|
|
|
-using the @code{#+source:} line of a code block. As in the following
|
|
|
-example arguments can be packed inside of parenthesis, separated by commas,
|
|
|
+using the @code{#+NAME:} line of a code block. As in the following
|
|
|
+example, arguments can be packed inside of parenthesis, separated by commas,
|
|
|
following the source name.
|
|
|
|
|
|
@example
|
|
|
-#+source: double(input=0, x=2)
|
|
|
-#+begin_src emacs-lisp
|
|
|
+#+NAME: double(input=0, x=2)
|
|
|
+#+BEGIN_SRC emacs-lisp
|
|
|
(* 2 (+ input x))
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
@end example
|
|
|
|
|
|
@subsubheading Indexable variable values
|
|
@@ -12322,15 +12392,15 @@ following example assigns the last cell of the first row the table
|
|
|
@code{example-table} to the variable @code{data}:
|
|
|
|
|
|
@example
|
|
|
-#+results: example-table
|
|
|
+#+NAME: example-table
|
|
|
| 1 | a |
|
|
|
| 2 | b |
|
|
|
| 3 | c |
|
|
|
| 4 | d |
|
|
|
|
|
|
-#+begin_src emacs-lisp :var data=example-table[0,-1]
|
|
|
+#+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
|
|
|
data
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results:
|
|
|
: a
|
|
@@ -12342,16 +12412,16 @@ example the following assigns the middle three rows of @code{example-table}
|
|
|
to @code{data}.
|
|
|
|
|
|
@example
|
|
|
-#+results: example-table
|
|
|
+#+NAME: example-table
|
|
|
| 1 | a |
|
|
|
| 2 | b |
|
|
|
| 3 | c |
|
|
|
| 4 | d |
|
|
|
| 5 | 3 |
|
|
|
|
|
|
-#+begin_src emacs-lisp :var data=example-table[1:3]
|
|
|
+#+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
|
|
|
data
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results:
|
|
|
| 2 | b |
|
|
@@ -12365,15 +12435,15 @@ interpreted to mean the entire range and as such are equivalent to
|
|
|
column is referenced.
|
|
|
|
|
|
@example
|
|
|
-#+results: example-table
|
|
|
+#+NAME: example-table
|
|
|
| 1 | a |
|
|
|
| 2 | b |
|
|
|
| 3 | c |
|
|
|
| 4 | d |
|
|
|
|
|
|
-#+begin_src emacs-lisp :var data=example-table[,0]
|
|
|
+#+BEGIN_SRC emacs-lisp :var data=example-table[,0]
|
|
|
data
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results:
|
|
|
| 1 | 2 | 3 | 4 |
|
|
@@ -12384,16 +12454,16 @@ Any number of dimensions can be indexed. Dimensions are separated from one
|
|
|
another by commas, as shown in the following example.
|
|
|
|
|
|
@example
|
|
|
-#+source: 3D
|
|
|
-#+begin_src emacs-lisp
|
|
|
+#+NAME: 3D
|
|
|
+#+BEGIN_SRC emacs-lisp
|
|
|
'(((1 2 3) (4 5 6) (7 8 9))
|
|
|
((10 11 12) (13 14 15) (16 17 18))
|
|
|
((19 20 21) (22 23 24) (25 26 27)))
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
-#+begin_src emacs-lisp :var data=3D[1,,1]
|
|
|
+#+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
|
|
|
data
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results:
|
|
|
| 11 | 14 | 17 |
|
|
@@ -12402,31 +12472,31 @@ another by commas, as shown in the following example.
|
|
|
@subsubheading Emacs Lisp evaluation of variables
|
|
|
|
|
|
Emacs lisp code can be used to initialize variable values. When a variable
|
|
|
-value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be evaluated as
|
|
|
-Emacs Lisp and the result of the evaluation will be assigned as the variable
|
|
|
-value. The following example demonstrates use of this evaluation to reliably
|
|
|
-pass the file-name of the org-mode buffer to a code block---note that
|
|
|
-evaluation of header arguments is guaranteed to take place in the original
|
|
|
-org-mode file, while there is no such guarantee for evaluation of the code
|
|
|
-block body.
|
|
|
+value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be
|
|
|
+evaluated as Emacs Lisp and the result of the evaluation will be assigned as
|
|
|
+the variable value. The following example demonstrates use of this
|
|
|
+evaluation to reliably pass the file-name of the org-mode buffer to a code
|
|
|
+block---note that evaluation of header arguments is guaranteed to take place
|
|
|
+in the original Org-mode file, while there is no such guarantee for
|
|
|
+evaluation of the code block body.
|
|
|
|
|
|
@example
|
|
|
-#+begin_src sh :var filename=(buffer-file-name) :exports both
|
|
|
+#+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
|
|
|
wc -w $filename
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
@end example
|
|
|
|
|
|
Note that values read from tables and lists will not be evaluated as
|
|
|
Emacs Lisp, as shown in the following example.
|
|
|
|
|
|
@example
|
|
|
-#+results: table
|
|
|
+#+NAME: table
|
|
|
| (a b c) |
|
|
|
|
|
|
-#+headers: :var data=table[0,0]
|
|
|
-#+begin_src perl
|
|
|
+#+HEADERS: :var data=table[0,0]
|
|
|
+#+BEGIN_SRC perl
|
|
|
$data
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results:
|
|
|
: (a b c)
|
|
@@ -12569,9 +12639,9 @@ In other words, if you want your plot to go into a folder called @file{Work}
|
|
|
in your home directory, you could use
|
|
|
|
|
|
@example
|
|
|
-#+begin_src R :file myplot.png :dir ~/Work
|
|
|
+#+BEGIN_SRC R :file myplot.png :dir ~/Work
|
|
|
matplot(matrix(rnorm(100), 10), type="l")
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
@end example
|
|
|
|
|
|
@subsubheading Remote execution
|
|
@@ -12579,9 +12649,9 @@ A directory on a remote machine can be specified using tramp file syntax, in
|
|
|
which case the code will be evaluated on the remote machine. An example is
|
|
|
|
|
|
@example
|
|
|
-#+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
|
|
|
+#+BEGIN_SRC R :file plot.png :dir /dand@@yakuba.princeton.edu:
|
|
|
plot(1:10, main=system("hostname", intern=TRUE))
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
@end example
|
|
|
|
|
|
Text results will be returned to the local Org-mode buffer as usual, and file
|
|
@@ -12612,7 +12682,7 @@ currently made to alter the directory associated with an existing session.
|
|
|
@code{:dir} should typically not be used to create files during export with
|
|
|
@code{:exports results} or @code{:exports both}. The reason is that, in order
|
|
|
to retain portability of exported material between machines, during export
|
|
|
-links inserted into the buffer will *not* be expanded against @code{default
|
|
|
+links inserted into the buffer will @emph{not} be expanded against @code{default
|
|
|
directory}. Therefore, if @code{default-directory} is altered using
|
|
|
@code{:dir}, it is probable that the file will be created in a location to
|
|
|
which the link does not point.
|
|
@@ -12786,33 +12856,33 @@ following Org-mode file, the bodies of code blocks will be concatenated into
|
|
|
the resulting pure code file.
|
|
|
|
|
|
@example
|
|
|
- #+begin_src sh :tangle yes :noweb yes :shebang #!/bin/sh
|
|
|
+ #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
|
|
|
<<fullest-disk>>
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
* the mount point of the fullest disk
|
|
|
:PROPERTIES:
|
|
|
:noweb-ref: fullest-disk
|
|
|
:END:
|
|
|
|
|
|
** query all mounted disks
|
|
|
- #+begin_src sh
|
|
|
+ #+BEGIN_SRC sh
|
|
|
df \
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
|
|
|
** strip the header row
|
|
|
- #+begin_src sh
|
|
|
+ #+BEGIN_SRC sh
|
|
|
|sed '1d' \
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
|
|
|
** sort by the percent full
|
|
|
- #+begin_src sh
|
|
|
+ #+BEGIN_SRC sh
|
|
|
|awk '@{print $5 " " $6@}'|sort -n |tail -1 \
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
|
|
|
** extract the mount point
|
|
|
- #+begin_src sh
|
|
|
+ #+BEGIN_SRC sh
|
|
|
|awk '@{print $2@}'
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
@end example
|
|
|
|
|
|
@node cache, sep, noweb-ref, Specific header arguments
|
|
@@ -12842,18 +12912,18 @@ invalidated and the code block is re-run. In the following example,
|
|
|
changed since it was last run.
|
|
|
|
|
|
@example
|
|
|
- #+srcname: random
|
|
|
- #+begin_src R :cache yes
|
|
|
+ #+NAME: random
|
|
|
+ #+BEGIN_SRC R :cache yes
|
|
|
runif(1)
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
|
|
|
#+results[a2a72cd647ad44515fab62e144796432793d68e1]: random
|
|
|
0.4659510825295
|
|
|
|
|
|
- #+srcname: caller
|
|
|
- #+begin_src emacs-lisp :var x=random :cache yes
|
|
|
+ #+NAME: caller
|
|
|
+ #+BEGIN_SRC emacs-lisp :var x=random :cache yes
|
|
|
x
|
|
|
- #+end_src
|
|
|
+ #+END_SRC
|
|
|
|
|
|
#+results[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
|
|
|
0.254227238707244
|
|
@@ -12887,17 +12957,17 @@ variable and raises an error. Setting @code{:hlines no} or relying on the
|
|
|
default value yields the following results.
|
|
|
|
|
|
@example
|
|
|
-#+tblname: many-cols
|
|
|
+#+TBLNAME: many-cols
|
|
|
| a | b | c |
|
|
|
|---+---+---|
|
|
|
| d | e | f |
|
|
|
|---+---+---|
|
|
|
| g | h | i |
|
|
|
|
|
|
-#+source: echo-table
|
|
|
-#+begin_src python :var tab=many-cols
|
|
|
+#+NAME: echo-table
|
|
|
+#+BEGIN_SRC python :var tab=many-cols
|
|
|
return tab
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results: echo-table
|
|
|
| a | b | c |
|
|
@@ -12909,17 +12979,17 @@ default value yields the following results.
|
|
|
Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
|
|
|
|
|
|
@example
|
|
|
-#+tblname: many-cols
|
|
|
+#+TBLNAME: many-cols
|
|
|
| a | b | c |
|
|
|
|---+---+---|
|
|
|
| d | e | f |
|
|
|
|---+---+---|
|
|
|
| g | h | i |
|
|
|
|
|
|
-#+source: echo-table
|
|
|
-#+begin_src python :var tab=many-cols :hlines yes
|
|
|
+#+NAME: echo-table
|
|
|
+#+BEGIN_SRC python :var tab=many-cols :hlines yes
|
|
|
return tab
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results: echo-table
|
|
|
| a | b | c |
|
|
@@ -12944,16 +13014,16 @@ names will be removed from the table before
|
|
|
processing, then reapplied to the results.
|
|
|
|
|
|
@example
|
|
|
-#+tblname: less-cols
|
|
|
+#+TBLNAME: less-cols
|
|
|
| a |
|
|
|
|---|
|
|
|
| b |
|
|
|
| c |
|
|
|
|
|
|
-#+srcname: echo-table-again
|
|
|
-#+begin_src python :var tab=less-cols
|
|
|
+#+NAME: echo-table-again
|
|
|
+#+BEGIN_SRC python :var tab=less-cols
|
|
|
return [[val + '*' for val in row] for row in tab]
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results: echo-table-again
|
|
|
| a |
|
|
@@ -12989,14 +13059,14 @@ The first column of the table is removed from the table before processing,
|
|
|
and is then reapplied to the results.
|
|
|
|
|
|
@example
|
|
|
-#+tblname: with-rownames
|
|
|
+#+TBLNAME: with-rownames
|
|
|
| one | 1 | 2 | 3 | 4 | 5 |
|
|
|
| two | 6 | 7 | 8 | 9 | 10 |
|
|
|
|
|
|
-#+srcname: echo-table-once-again
|
|
|
-#+begin_src python :var tab=with-rownames :rownames yes
|
|
|
+#+NAME: echo-table-once-again
|
|
|
+#+BEGIN_SRC python :var tab=with-rownames :rownames yes
|
|
|
return [[val + 10 for val in row] for row in tab]
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
#+results: echo-table-once-again
|
|
|
| one | 11 | 12 | 13 | 14 | 15 |
|
|
@@ -13093,26 +13163,26 @@ were passed to a non-interactive interpreter running as an external
|
|
|
process. For example, compare the following two blocks:
|
|
|
|
|
|
@example
|
|
|
-#+begin_src python :results output
|
|
|
+#+BEGIN_SRC python :results output
|
|
|
print "hello"
|
|
|
2
|
|
|
print "bye"
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
-#+resname:
|
|
|
+#+results:
|
|
|
: hello
|
|
|
: bye
|
|
|
@end example
|
|
|
|
|
|
In non-session mode, the `2' is not printed and does not appear.
|
|
|
@example
|
|
|
-#+begin_src python :results output :session
|
|
|
+#+BEGIN_SRC python :results output :session
|
|
|
print "hello"
|
|
|
2
|
|
|
print "bye"
|
|
|
-#+end_src
|
|
|
+#+END_SRC
|
|
|
|
|
|
-#+resname:
|
|
|
+#+results:
|
|
|
: hello
|
|
|
: 2
|
|
|
: bye
|