mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-08-26 22:32:52 +00:00
Wrap verbatim examples in @example ... @end example
Note that there are some cases where the #+begin_src itself is part of the example, and others where only the body of the source block is the example.
This commit is contained in:
parent
3cfe6d565b
commit
dbcd54f16f
|
@ -8,10 +8,11 @@
|
|||
@subsection Source Code Block
|
||||
The basic syntax of source code blocks in Org-babel is as follows:
|
||||
|
||||
: #+begin_src language header-arguments
|
||||
: body
|
||||
: #+end_src
|
||||
|
||||
@example
|
||||
#+begin_src language header-arguments
|
||||
body
|
||||
#+end_src
|
||||
@end example
|
||||
- language :: The language of the code in the source code block. Valid
|
||||
values must be members of =org-babel-interpreters=.
|
||||
- header-arguments :: Header arguments control many facets of the
|
||||
|
@ -26,10 +27,12 @@ The basic syntax of source code blocks in Org-babel is as follows:
|
|||
|
||||
This syntax can be expanded by naming the source code block.
|
||||
|
||||
: #+source: name
|
||||
: #+begin_src language header-arguments
|
||||
:
|
||||
: #+end_src
|
||||
@example
|
||||
#+sourcename
|
||||
#+begin_src language header-arguments
|
||||
body
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
- name :: This name is associated with the source code block. This is
|
||||
similar to the =#+tblname= lines that can be used to name tables
|
||||
|
@ -42,33 +45,35 @@ This syntax can be expanded by naming the source code block.
|
|||
@subsection Library of Babel
|
||||
[[file:library-of-babel.org][Library of Babel]] functions can be called using the following syntax.
|
||||
|
||||
: #+lob: R-plot(data=R-plot-example-data)
|
||||
@example
|
||||
#+lob: R-plot(data=R-plot-example-data)
|
||||
@end example
|
||||
|
||||
@subsection Aliases
|
||||
Keyword aliases are intended to make Org-babel feel natural to
|
||||
programmers fluent in a variety of languages. For example,
|
||||
#+begin_example
|
||||
,#+srcname: alias-example
|
||||
,#+begin_src emacs-lisp
|
||||
@example
|
||||
#+srcname: alias-example
|
||||
#+begin_src emacs-lisp
|
||||
'((call lob)
|
||||
(source function srcname)
|
||||
(results resname))
|
||||
,#+end_src
|
||||
#+end_src
|
||||
|
||||
,#+results: alias-example
|
||||
#+results: alias-example
|
||||
| call | lob | |
|
||||
| source | function | srcname |
|
||||
| results | resname | |
|
||||
#+end_example
|
||||
@end example
|
||||
- =#+srcname:= can be replaced with either of two aliases, =#+source:= or =#+function:=.
|
||||
- =#+results:= can be replaced with its alias, =#+resname:=.
|
||||
|
||||
When calling Library of Babel functions, as in the following
|
||||
example, there are two acceptable keywords. The =#+lob= call in
|
||||
the example could be replaced with its alias, =#+call=.
|
||||
#+begin_example
|
||||
,#+lob: R-plot(data=R-plot-example-data)
|
||||
#+end_example
|
||||
@example
|
||||
#+lob: R-plot(data=R-plot-example-data)
|
||||
@end example
|
||||
|
||||
@section Languages
|
||||
:PROPERTIES:
|
||||
|
@ -107,9 +112,9 @@ This syntax can be expanded by naming the source code block.
|
|||
are met, then add a line like the following to your Emacs
|
||||
configuration, (replace "identifier" with one of the
|
||||
entries in the Identifier column of the table).
|
||||
#+begin_src emacs-lisp
|
||||
@example
|
||||
(require 'org-babel-identifier)
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
@section Header Arguments
|
||||
:PROPERTIES:
|
||||
|
@ -133,7 +138,7 @@ each more specific than the last.
|
|||
|
||||
System-wide values of header arguments can be specified by
|
||||
customizing the =org-babel-default-header-args= variable:
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-default-header-args is a variable defined in `org-babel.el'.
|
||||
Its value is
|
||||
((:session . "none")
|
||||
|
@ -145,16 +150,16 @@ each more specific than the last.
|
|||
|
||||
Documentation:
|
||||
Default arguments to use when evaluating a source block.
|
||||
#+end_example
|
||||
@end example
|
||||
[[#default-noweb]]
|
||||
For example, the following example could be used to set the default value
|
||||
of =:noweb= header arguments to =yes=. This would have the effect of
|
||||
expanding =:noweb= references by default when evaluating source code blocks.
|
||||
#+begin_src emacs-lisp :results silent :exports code
|
||||
@example
|
||||
(setq org-babel-default-header-args
|
||||
(cons '(:noweb . "yes")
|
||||
(assq-delete-all :noweb org-babel-default-header-args)))
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
*** Org-mode Properties
|
||||
|
||||
|
@ -162,13 +167,13 @@ each more specific than the last.
|
|||
means they can be set on the outline header level. For example, the
|
||||
value of the =:cache= header argument will default to true in all
|
||||
source code blocks under the following example of an Org-mode outline header:
|
||||
#+begin_example
|
||||
,* outline header
|
||||
@example
|
||||
* outline header
|
||||
:PROPERTIES:
|
||||
:cache: yes
|
||||
:CUSTOM_ID: property-set-header-arguments
|
||||
:END:
|
||||
#+end_example
|
||||
@end example
|
||||
Properties defined in this way override the properties set in
|
||||
=org-babel-default-header-args=. It is convenient to use the
|
||||
=org-set-property= function bound to =C-c C-x p= to set properties
|
||||
|
@ -189,13 +194,13 @@ each more specific than the last.
|
|||
header argument is set to =code=, meaning only the body of the
|
||||
source code block
|
||||
will be preserved on export to HTML or LaTeX.
|
||||
#+begin_example
|
||||
,#+source: factorial
|
||||
,#+begin_src haskell :results silent :exports code
|
||||
@example
|
||||
#+source: factorial
|
||||
#+begin_src haskell :results silent :exports code
|
||||
fac 0 = 1
|
||||
fac n = n * fac (n-1)
|
||||
,#+end_src
|
||||
#+end_example
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
@subsection Specific Header Arguments
|
||||
:PROPERTIES:
|
||||
|
@ -223,64 +228,64 @@ each more specific than the last.
|
|||
The following syntax is used to pass arguments to source code
|
||||
blocks using the =:var= header argument.
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
:var name=assign
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
where =assign= can take one of the following forms
|
||||
|
||||
- literal value :: either a string ="string"= or a number =9=.
|
||||
- reference :: a table name:
|
||||
|
||||
#+begin_example
|
||||
,#+tblname: example-table
|
||||
@example
|
||||
#+tblname: example-table
|
||||
| 1 |
|
||||
| 2 |
|
||||
| 3 |
|
||||
| 4 |
|
||||
|
||||
,#+source: table-length
|
||||
,#+begin_src emacs-lisp :var table=example-table
|
||||
#+source: table-length
|
||||
#+begin_src emacs-lisp :var table=example-table
|
||||
(length table)
|
||||
,#+end_src
|
||||
#+end_src
|
||||
|
||||
,#+results: table-length
|
||||
#+results: table-length
|
||||
: 4
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
a source code block name, as assigned by =#+srcname:=,
|
||||
followed by parentheses:
|
||||
|
||||
#+begin_example
|
||||
,#+begin_src emacs-lisp :var length=table-length()
|
||||
@example
|
||||
#+begin_src emacs-lisp :var length=table-length()
|
||||
(* 2 length)
|
||||
,#+end_src
|
||||
#+end_src
|
||||
|
||||
,#+results:
|
||||
#+results:
|
||||
: 8
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
In addition, an argument can be passed to the source code
|
||||
block referenced by =:var=. The argument is passed within
|
||||
the parentheses following the source code block name:
|
||||
|
||||
#+begin_example
|
||||
,#+source: double
|
||||
,#+begin_src emacs-lisp :var input=8
|
||||
@example
|
||||
#+source: double
|
||||
#+begin_src emacs-lisp :var input=8
|
||||
(* 2 input)
|
||||
,#+end_src
|
||||
#+end_src
|
||||
|
||||
,#+results: double
|
||||
#+results: double
|
||||
: 16
|
||||
|
||||
,#+source: squared
|
||||
,#+begin_src emacs-lisp :var input=double(input=1)
|
||||
#+source: squared
|
||||
#+begin_src emacs-lisp :var input=double(input=1)
|
||||
(* input input)
|
||||
,#+end_src
|
||||
#+end_src
|
||||
|
||||
,#+results: squared
|
||||
#+results: squared
|
||||
: 4
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
**** alternate argument syntax
|
||||
:PROPERTIES:
|
||||
|
@ -291,12 +296,12 @@ each more specific than the last.
|
|||
natural way using the =#+source:= line of a source code block.
|
||||
As in the following example arguments can be packed inside of
|
||||
parenthesis following the source name.
|
||||
#+begin_example
|
||||
,#+source: double(input=0)
|
||||
,#+begin_src emacs-lisp
|
||||
@example
|
||||
#+source: double(input=0)
|
||||
#+begin_src emacs-lisp
|
||||
(* 2 input)
|
||||
,#+end_src
|
||||
#+end_example
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
**** indexable variable values
|
||||
:PROPERTIES:
|
||||
|
@ -308,9 +313,9 @@ each more specific than the last.
|
|||
assigns the second and third rows of the table
|
||||
=example-table= to the variable =data=:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
:var data=example-table[1:2]
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*Note:* ranges are indexed using the =:= operator.
|
||||
|
||||
|
@ -319,9 +324,9 @@ each more specific than the last.
|
|||
The following example assigns the second column of the
|
||||
first row of =example-table= to =data=:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
:var data=example-table[0,1]
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
It is possible to index into the results of source code blocks
|
||||
as well as tables. Any number of dimensions can be indexed.
|
||||
|
@ -330,7 +335,7 @@ each more specific than the last.
|
|||
For more information on indexing behavior see the documentation
|
||||
for the =org-babel-ref-index-list= function -- provided below.
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-ref-index-list is a Lisp function in `org-babel-ref.el'.
|
||||
|
||||
(org-babel-ref-index-list INDEX LIS)
|
||||
|
@ -340,7 +345,7 @@ each more specific than the last.
|
|||
next deepest nesting or dimension. A valid PORTION can consist
|
||||
of either an integer index, or two integers separated by a : in
|
||||
which case the entire range is returned.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*Note:* In Emacs, the documentation for any function or variable
|
||||
can be read using the =describe-function= (M-x describe
|
||||
|
@ -468,22 +473,22 @@ each more specific than the last.
|
|||
In other words, if you want your plot to go into a folder called
|
||||
Work in your home directory, you could use
|
||||
|
||||
#+begin_example
|
||||
,#+begin_src R :file myplot.png :dir ~/Work
|
||||
@example
|
||||
#+begin_src R :file myplot.png :dir ~/Work
|
||||
matplot(matrix(rnorm(100), 10), type="l")
|
||||
,#+end_src
|
||||
#+end_example
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
**** Remote execution
|
||||
A directory on a remote machine can be specified using [[http://www.gnu.org/software/tramp/#Filename-Syntax][tramp
|
||||
filename syntax]], in which case the code will be executed on the
|
||||
remote machine[fn:2]. An example is
|
||||
|
||||
#+begin_example
|
||||
,#+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
|
||||
@example
|
||||
#+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
|
||||
plot(1:10, main=system("hostname", intern=TRUE))
|
||||
,#+end_src
|
||||
#+end_example
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
Text results will be returned to the local org buffer as normal, and
|
||||
file output will be created on the remote machine with relative paths
|
||||
|
@ -493,9 +498,9 @@ remote file will be created.
|
|||
So in the above example a plot will be created on the remote machine,
|
||||
and a link of the following form will be inserted in the org buffer:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
[[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
Most of this functionality follows immediately from the fact that
|
||||
=:dir= sets the value of the emacs variable =default-directory=,
|
||||
|
@ -591,17 +596,17 @@ above features to work correctly.
|
|||
|
||||
This source code block:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
-- <<example>>
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
|
||||
expands to:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
-- this is the
|
||||
-- multi-line body of example
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
Note that noweb replacement text that does *not* contain any
|
||||
newlines will not be affected by this change, so it is still
|
||||
|
@ -683,6 +688,7 @@ above features to work correctly.
|
|||
non-interactive interpreter running as an external process. For
|
||||
example, compare the following two blocks:
|
||||
|
||||
@example
|
||||
#+begin_src python :results output
|
||||
print "hello"
|
||||
2
|
||||
|
@ -692,9 +698,10 @@ above features to work correctly.
|
|||
#+resname:
|
||||
: hello
|
||||
: bye
|
||||
@end example
|
||||
|
||||
In non-session mode, the '2' is not printed and does not appear.
|
||||
|
||||
@example
|
||||
#+begin_src python :results output :session
|
||||
print "hello"
|
||||
2
|
||||
|
@ -705,6 +712,7 @@ above features to work correctly.
|
|||
: hello
|
||||
: 2
|
||||
: bye
|
||||
@end example
|
||||
|
||||
But in =:session= mode, the interactive interpreter receives input '2'
|
||||
and prints out its value, '2'. (Indeed, the other print statements are
|
||||
|
@ -776,7 +784,7 @@ above features to work correctly.
|
|||
:CUSTOM_ID: function-org-babel-execute-src-block
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-execute-src-block is an interactive Lisp function in
|
||||
`org-babel.el'.
|
||||
|
||||
|
@ -793,14 +801,14 @@ above features to work correctly.
|
|||
Optionally supply a value for PARAMS which will be merged with
|
||||
the header arguments specified at the front of the source code
|
||||
block.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-open-src-block-result
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-open-src-block-result
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-open-src-block-result is an interactive Lisp function in
|
||||
`org-babel.el'.
|
||||
|
||||
|
@ -810,14 +818,14 @@ above features to work correctly.
|
|||
source code block, otherwise return nil. With optional prefix
|
||||
argument RE-RUN the source-code block is evaluated even if
|
||||
results already exist.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-load-in-session
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-load-in-session
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-load-in-session is an interactive Lisp function in
|
||||
`org-babel.el'.
|
||||
|
||||
|
@ -828,14 +836,14 @@ above features to work correctly.
|
|||
session. After loading the body this pops open the session.
|
||||
|
||||
[back]
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-pop-to-session
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-pop-to-session
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-pop-to-session is an interactive Lisp function in
|
||||
`org-babel.el'.
|
||||
|
||||
|
@ -847,14 +855,14 @@ above features to work correctly.
|
|||
of the source block to the kill ring.
|
||||
|
||||
[back]
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-tangle
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-tangle
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-tangle is an interactive Lisp function in
|
||||
`org-babel-tangle.el'.
|
||||
|
||||
|
@ -867,14 +875,14 @@ above features to work correctly.
|
|||
TARGET-FILE can be used to specify a default export file for all
|
||||
source blocks. Optional argument LANG can be used to limit the
|
||||
exported source code blocks by language.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-execute-subtree
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-execute-subtree
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-execute-subtree is an interactive Lisp function in
|
||||
`org-babel.el'.
|
||||
|
||||
|
@ -883,14 +891,14 @@ above features to work correctly.
|
|||
(org-babel-execute-subtree &optional ARG)
|
||||
|
||||
Replace EVAL snippets in the entire subtree.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-execute-buffer
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-execute-buffer
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-execute-buffer is an interactive Lisp function in
|
||||
`org-babel.el'.
|
||||
|
||||
|
@ -899,14 +907,14 @@ above features to work correctly.
|
|||
(org-babel-execute-buffer &optional ARG)
|
||||
|
||||
Replace EVAL snippets in the entire buffer.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-sha1-hash
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-sha1-hash
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-sha1-hash is an interactive Lisp function in `org-babel.el'.
|
||||
|
||||
It is bound to C-c M-b h.
|
||||
|
@ -914,14 +922,14 @@ above features to work correctly.
|
|||
(org-babel-sha1-hash &optional INFO)
|
||||
|
||||
Not documented.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-goto-named-source-block
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-goto-named-source-block
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-goto-named-source-block is an interactive Lisp function in
|
||||
`org-babel.el'.
|
||||
|
||||
|
@ -930,14 +938,14 @@ above features to work correctly.
|
|||
(org-babel-goto-named-source-block &optional NAME)
|
||||
|
||||
Go to a named source-code block.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
*** org-babel-lob-ingest
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: function-org-babel-lob-ingest
|
||||
:END:
|
||||
|
||||
#+begin_example
|
||||
@example
|
||||
org-babel-lob-ingest is an interactive Lisp function in
|
||||
`org-babel-lob.el'.
|
||||
|
||||
|
@ -946,7 +954,7 @@ above features to work correctly.
|
|||
(org-babel-lob-ingest &optional FILE)
|
||||
|
||||
Add all source-blocks defined in FILE to `org-babel-library-of-babel'.
|
||||
#+end_example
|
||||
@end example
|
||||
|
||||
@section Batch Execution
|
||||
It is possible to call Org-babel functions from the command line.
|
||||
|
@ -954,7 +962,7 @@ This shell script calls [[function-org-babel-tangle][org-babel-tangle]] on every
|
|||
arguments.
|
||||
|
||||
Be sure to adjust the paths to fit your system.
|
||||
#+begin_src sh
|
||||
@example
|
||||
#!/bin/sh
|
||||
# -*- mode: shell-script -*-
|
||||
#
|
||||
|
@ -977,7 +985,7 @@ Be sure to adjust the paths to fit your system.
|
|||
(find-file (expand-file-name file \"$DIR\"))
|
||||
(org-babel-tangle)
|
||||
(kill-buffer)) '($FILES)))"
|
||||
#+end_src
|
||||
@end example
|
||||
|
||||
@section Footnotes
|
||||
|
||||
|
|
Loading…
Reference in a new issue