ox: Ignore INCLUDE keywords in commented headlines
[org-mode/org-tableheadings.git] / contrib / orgmanual.org
blob21011cd96c37cbb50972c14942620057ca242adb
1 #+TITLE:     Org Mode
2 #+AUTHOR:    Carsten Dominik
3 #+EMAIL:     tsd@tsdye.com
4 #+DATE:      {{{modification-time}}}
5 #+SUBTITLE:  Release {{{version}}}
6 #+SUBAUTHOR: with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, Thomas Dye and Jambunathan K.
8 #+LANGUAGE:  en
9 #+OPTIONS:   H:4 num:t toc:t \n:nil ::t |:t ^:nil -:t f:t *:t <:t
10 #+OPTIONS:   d:nil todo:nil pri:nil tags:not-in-toc
11 #+SELECT_TAGS: export
12 #+EXCLUDE_TAGS: noexport
14 #+TEXINFO_DIR_CATEGORY: Emacs editing modes
15 #+TEXINFO_DIR_TITLE: Org Mode: (org)
16 #+TEXINFO_DIR_DESC: Outline-based notes management and organizer
18 # Use proper quote and backtick for code sections in PDF output
19 # Cf. Texinfo manual 14.2
20 #+TEXINFO_HEADER: @set txicodequoteundirected
21 #+TEXINFO_HEADER: @set txicodequotebacktick
23 # Contact Info
24 #+TEXINFO_HEADER: @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
25 #+TEXINFO_HEADER: @set MAINTAINER Carsten Dominik
26 #+TEXINFO_HEADER: @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
27 #+TEXINFO_HEADER: @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
29 #+STARTUP: overview
30 #+TODO: FIXME | FIXED
32 * Introduction
33   :PROPERTIES:
34   :TITLE: Introduction
35   :DESCRIPTION: Getting started
36   :END:
37 #+cindex: introduction
39 ** Summary
40    :PROPERTIES:
41    :DESCRIPTION: Brief summary of what Org-mode does
42    :END:
43 #+cindex: summary
45 Org is a mode for keeping notes, maintaining TODO lists, and doing
46 project planning with a fast and effective plain-text system.
48 Org develops organizational tasks around NOTES files that contain
49 lists or information about projects as plain text.  Org is implemented
50 on top of Outline mode, which makes it possible to keep the content of
51 large files well structured.  Visibility cycling and structure editing
52 help to work with the tree.  Tables are easily created with a built-in
53 table editor.  Org supports TODO items, deadlines, timestamps, and
54 scheduling.  It dynamically compiles entries into an agenda that
55 utilizes and smoothly integrates much of the Emacs calendar and diary.
56 Plain text URL-like links connect to websites, emails, Usenet
57 messages, BBDB entries, and any files related to the projects.  For
58 printing and sharing of notes, an Org file can be exported as a
59 structured ASCII file, as HTML, or as an iCalendar file.[fn:1]  It can
60 also serve as a publishing tool for a set of linked web pages.
62 As a project planning environment, Org works by adding metadata to
63 outline nodes.  Based on this data, specific entries can be extracted
64 in queries and create dynamic /agenda views/.
66 Org mode contains the Org Babel environment which allows you to work
67 with embedded source code blocks in a file, to facilitate code
68 evaluation, documentation, and literate programming techniques.
70 Org's automatic, context-sensitive table editor with spreadsheet
71 capabilities can be integrated into any major mode by activating the
72 minor Orgtbl mode.  Using a translation step, it can be used to
73 maintain tables in arbitrary file types, for example in LaTeX.  The
74 structure editing and list creation capabilities can be used outside
75 Org with the minor Orgstruct mode.
77 Org keeps simple things simple.  When first fired up, it should feel
78 like a straightforward, easy to use outliner.  Complexity is not
79 imposed, but a large amount of functionality is available when you
80 need it.  Org is a toolbox and can be used in different ways and for
81 different ends, for example:
83   - an outline extension with visibility cycling and structure editing
84   - an ASCII system and table editor for taking structured notes
85   - a TODO list editor
86   - a full agenda and planner with deadlines and work scheduling
87     #+pindex: GTD, Getting Things Done
88   - an environment in which to implement David Allen's GTD system
89   - a simple hypertext system, with HTML and LaTeX export
90   - a publishing tool to create a set of interlinked web pages
91   - an environment for literate programming
93 #+cindex: FAQ
95 There is a [[http://orgmode.org][website for Org]] that provides links to the newest version
96 of Org, as well as additional information, frequently asked questions
97 (FAQ), links to tutorials, etc.
99 #+cindex: print edition
101 Version 7.3 of this manual is available as a [[http://www.network-theory.co.uk/org/manual/][paperback book from
102 Network Theory Ltd.]]
104 {{{page}}}
106 ** Installation
107    :PROPERTIES:
108    :DESCRIPTION: How to install a downloaded version of Org-mode
109    :END:
111 #+cindex: installation
112 #+cindex: XEmacs
114 *Important:* If you have the version of Org that comes with Emacs or
115 as a XEmacs package, please skip this section and go directly to
116 [[Activation]].  If you downloaded Org as an ELPA package, please read the
117 instructions on the [[http://orgmode.org/elpa.html][Org ELPA page]].  To see what version of Org (if any)
118 is part of your Emacs distribution, type {{{kbd(M-x org-version)}}}.[fn:2]
120 Installation of Org mode uses a build system, which is described in more
121 detail on [[http://orgmode.org/worg/dev/org-build-system.html][Worg]].
123 If you have downloaded Org from the Web as a distribution {{{file(.zip)}}} or
124 {{{file(.tar.gz)}}} archive, take the following steps to install it:
126   - Unpack the distribution archive
127   - Change into (~cd~) the Org directory
128   - Run ~make help config~ and then check and edit the file
129     {{{file(local.mk)}}} if the default configuration does not match
130     your system
132     - Set the name of the Emacs binary (likely either
133       {{{file(emacs)}}} or {{{file(xemacs)}}}), and the paths to the
134       directories where local Lisp and Info files will be installed
135     - If the Emacs binary is not in your path, give the full path to
136       the executable
137     - Avoid spaces in any path names
139   - Run ~make config~ again to check the configuration
140   - Run ~make install~ or ~sudo make install~ to build and install Org
141     mode on your system
143 If you use a cloned Git repository, then the procedure is slightly
144 different.  The following description assumes that you are using the
145 ~master~ branch.[fn:3] You could also use the ~maint~ branch instead,
146 where the release versions are published, just replace ~master~ with
147 ~maint~ in the description below.
149   - Change into (~cd~) the Org repository
150   - Run ~git checkout master~ to switch to the ~master~ branch of the
151     Org repository
152   - Run ~make help~ and then check and edit the file {{{file(local.mk)}}}
154     - You must set the name of the Emacs binary
155       (likely either {{{file(emacs)}}} or {{{file(xemacs)}}}), and the
156       paths to the directories where local Lisp and Info files will be
157       installed
158     - If the Emacs binary is not in your path, you must give
159       the full path to the executable
160     - Avoid spaces in any path names
162   - Run ~make config~ to check the configuration
163   - Optionally run ~make test~ to build Org mode and then run the full
164     test suite
165   - Run ~make update2~ or ~make up2~ to update the Git repository and
166     build and install Org mode.  The latter invocation runs the
167     complete test suite before installation and installs only if the
168     build passes all tests
170 If you don't have access to the system-wide directories and you don't
171 want to install somewhere into your home directory, you can run Org
172 directly from the distribution directory or Org repository by
173 compiling Org mode in place:
175   - Change into (~cd~) the Org repository
176   - Run ~git checkout master~ to switch to the ~master~ branch of the
177     Org repository
178   - Run ~make compile~
180 Last but not least you can also run Org mode directly from an Org repository
181 without any compilation.  Simply replace the last step in the recipe above
182 with ~make uncompiled~.
184 Then add the following line to {{{file(.emacs)}}}:
186 #+header: :exports code
187 #+header: :eval no
188 #+begin_src emacs-lisp
189 (add-to-list 'load-path "~/path/to/orgdir/lisp")
190 #+end_src
192 {{{noindent}}}
193 If you plan to use code files from the {{{file(contrib)}}} subdirectory without
194 compiling them, do a similar step for this directory:
196 #+header: :exports code
197 #+header: :eval no
198 #+begin_src emacs-lisp
199 (add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t)
200 #+end_src
202 If you want to include those files with the build and install, please
203 customize the variable ~ORG_ADD_CONTRIB~ instead in your
204 ~local.mk~ file.  For more details please see this
205 [[http://orgmode.org/worg/dev/org-build-system.html#sec-4-1-2][description on Worg]].
207 Installing Info files is system dependent, because of differences in
208 the {{{file(install-info)}}} program.  The Info documentation is
209 installed together with the rest of Org mode.  If you don't install Org
210 mode, it is possible to install the Info documentation separately if you
211 have install-info on your system.[fn:4]  
213 The command to do this is:
215 #+begin_example
216    make install-info
217 #+end_example
219 Do not forget to activate Org as described in the following section.
220 {{{page}}}
222 ** Activation
223    :PROPERTIES:
224    :DESCRIPTION: How to activate Org-mode for certain buffers
225    :END:
226 #+cindex: activation
227 #+cindex: autoload
228 #+cindex: ELPA
229 #+cindex: global key bindings
230 #+cindex: key bindings, global
231 #+findex: org-agenda
232 #+findex: org-capture
233 #+findex: org-store-link
234 #+findex: org-iswitchb
236 Since Emacs 22.2, files with the {{{file(.org)}}} extension use Org mode by
237 default.  If you are using an earlier version of Emacs, add this line to your
238 {{{file(.emacs)}}} file:
240 #+header: :exports code
241 #+header: :eval no
242 #+begin_src emacs-lisp
243 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
244 #+end_src
246 Org mode buffers need font-lock to be turned on - this is the default in
247 Emacs.[fn:5]
249 There are compatibility issues between Org mode and some other Elisp
250 packages, please take the time to check the list (see [[Conflicts]]).
252 The four Org commands {{{command(org-store-link)}}},
253 {{{command(org-capture)}}}, {{{command(org-agenda)}}}, and
254 {{{command(org-iswitchb)}}} should be accessible through global keys
255 (i.e., anywhere in Emacs, not just in Org buffers).  Here are
256 suggested bindings for these keys, please modify the keys to your own
257 liking.
259 #+header: :exports code
260 #+header: :eval no
261 #+begin_src emacs-lisp
262 (global-set-key "\C-cl" 'org-store-link)
263 (global-set-key "\C-cc" 'org-capture)
264 (global-set-key "\C-ca" 'org-agenda)
265 (global-set-key "\C-cb" 'org-iswitchb)
266 #+end_src
268 #+cindex: Org mode, turning on
269 With this setup, all files with extension {{{samp(.org)}}} will be put
270 into Org mode.  As an alternative, make the first line of a file look
271 like this:
273 #+begin_example
274    MY PROJECTS    -*- mode: org; -*-
275 #+end_example
277 #+vindex: org-insert-mode-line-in-empty-file
278 {{{noindent}}}
279 which will select Org mode for this buffer no matter what the file's
280 name is.  See also the variable
281 ~org-insert-mode-line-in-empty-file~.
283 Many commands in Org work on the region if the region is /active/.  To
284 make use of this, you need to have ~transient-mark-mode~
285 (~zmacs-regions~ in XEmacs) turned on.  In Emacs 23 this is the
286 default, in Emacs 22 you need to do this yourself with
288 #+header: :exports code
289 #+header: :eval no
290 #+begin_src emacs-lisp
291 (transient-mark-mode 1)
292 #+end_src
294 {{{noindent}}} If you do not like ~transient-mark-mode~, you can
295 create an active region by using the mouse to select a region, or
296 pressing {{{kbdkey(C-,SPC)}}} twice before moving the cursor.
298 ** Feedback
299    :PROPERTIES:
300    :DESCRIPTION: Bug reports, ideas, patches, etc.
301    :END:
302 #+cindex: feedback
303 #+cindex: bug reports
304 #+cindex: maintainer
305 #+cindex: author
307 If you find problems with Org, or if you have questions, remarks, or
308 ideas about it, please mail to the Org mailing list
309 [[mailto:emacs-orgmode@gnu.org]].  If you are not a member of
310 the mailing list, your mail will be passed to the list after a
311 moderator has approved it.[fn:6]
313 For bug reports, please first try to reproduce the bug with the latest
314 version of Org available---if you are running an outdated version, it
315 is quite possible that the bug has been fixed already.  If the bug
316 persists, prepare a report and provide as much information as
317 possible, including the version information of Emacs ({{{kbdspckey(M-x
318 emacs-version,RET)}}}) and Org ({{{kbdspckey(M-x org-version,RET)}}}),
319 as well as the Org related setup in {{{file(.emacs)}}}.  The easiest
320 way to do this is to use the command {{{kbd(M-x
321 org-submit-bug-report)}}}, which will put all this information into an
322 Emacs mail buffer so that you only need to add your description.  If
323 you are not sending the Email from within Emacs, please copy and paste
324 the content into your Email program.
326 Sometimes you might face a problem due to an error in your Emacs or
327 Org mode setup.  Before reporting a bug, it is very helpful to start
328 Emacs with minimal customizations and reproduce the problem.  Doing so
329 often helps you determine if the problem is with your customization or
330 with Org mode itself.  You can start a typical minimal session with a
331 command like the example below.
333 #+begin_src sh :exports code
334 $ emacs -Q -l /path/to/minimal-org.el
335 #+end_src
337 However if you are using Org mode distributed with Emacs, a minimal
338 setup is not necessary.  In that case it is sufficient to start Emacs
339 as ~emacs -Q~.  The ~minimal-org.el~ setup
340 file can have contents as shown below.
342 #+header: :exports code
343 #+header: :eval no
344 #+begin_src emacs-lisp
345 ;;; Minimal setup to load latest `org-mode'
347 ;; activate debugging
348 (setq debug-on-error t
349       debug-on-signal nil
350       debug-on-quit nil)
352 ;; add latest org-mode to load path
353 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
354 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp" t))
355 #+end_src
357 If an error occurs, a backtrace can be very useful (see [[How to
358 create a useful backtrace]]).  Often a small example file helps, along
359 with clear information about:
361   1. What exactly did you do?
362   2. What did you expect to happen?
363   3. What happened instead?
365 {{{noindent}}} Thank you for helping to improve this program.
367 ** How to create a useful backtrace
368    :PROPERTIES:
369    :DESCRIPTION: The best way to report an error
370    :END:
372 #+cindex: backtrace of an error
374 If working with Org produces an error with a message you don't
375 understand, you may have hit a bug.  The best way to report this is by
376 providing, in addition to what was mentioned above, a /backtrace/.
377 This is information from the built-in debugger about where and how the
378 error occurred.  Here is how to produce a useful backtrace:
380   1. Reload uncompiled versions of all Org mode Lisp files.  The
381      backtrace contains much more information if it is produced with
382      uncompiled code.  To do this, use
383      {{{kbdspckey(C-u M-x org-reload,RET)}}} or select 
384      ~Org -> Refresh/Reload -> Reload Org uncompiled~ from the menu.
386   2. Go to the ~Options~ menu and select ~Enter Debugger on Error~
387      (XEmacs has this option in the ~Troubleshooting~ sub-menu).
389   3. Do whatever you have to do to hit the error.  Don't forget to
390      document the steps you take.
392   4. When you hit the error, a {{{file(*Backtrace*)}}} buffer will
393      appear on the screen.  Save this buffer to a file (for example
394      using {{{kbd(C-x C-w)}}}) and attach it to your bug report.
396 ** Conventions
397    :PROPERTIES:
398    :DESCRIPTION: Typesetting conventions in the manual
399    :END:
401 Conventions for typesetting keywords, keybindings, and commands in
402 this manual are described.
404 *** Three types of keywords
405     :PROPERTIES:
406     :DESCRIPTION: TODO, tags, and properties
407     :END:
409 Org mainly uses three types of keywords: TODO keywords, tags and property
410 names.  In this manual we use the following conventions:
412   - TODO, WAITING :: TODO keywords are written with all capitals, even if they
413     are user-defined.
414   - boss, ARCHIVE :: User-defined tags are written in lowercase; built-in
415                tags with special meaning are written with all capitals.
416   - Release, PRIORITY :: User-defined properties are capitalized; built-in
417                 properties with special meaning are written with all capitals.
419 Moreover, Org uses /option keywords/ (like ~#+TITLE~ to set the title)
420 and /environment keywords/ (like ~#+BEGIN_HTML~ to start a ~HTML~
421 environment).  They are written in uppercase in the manual to enhance
422 its readability, but you can use lowercase in your Org files.[fn:7]
424 *** Keybindings and commands
425     :PROPERTIES:
426     :DESCRIPTION: Bind useful commands to keys
427     :END:
429 #+kindex: C-c a
430 #+findex: org-agenda
431 #+kindex: C-c c
432 #+findex: org-capture
434 The manual suggests two global keybindings: {{{kbd(C-c a)}}} for
435 ~org-agenda~ and {{{kbd(C-c c)}}} for ~org-capture~.  These are only
436 suggestions, but the rest of the manual assumes that you are using
437 these keybindings.
439 Also, the manual lists both the keys and the corresponding commands
440 for accessing a functionality.  Org mode often uses the same key for
441 different functions, depending on context.  The command that is bound
442 to such keys has a generic name, like ~org-metaright~.  In the manual
443 we will, wherever possible, give the function that is internally
444 called by the generic command.  For example, in the chapter on document
445 structure, {{{kbdkey(M-,right)}}} will be listed to call
446 ~org-do-demote~, while in the chapter on tables, it will be listed to
447 call ~org-table-move-column-right~. 
449 # If you prefer, you can compile the manual without the command names by unsetting the flag ~cmdnames~ in {{{file(org.texi)}}}.
451 * Document structure
452   :PROPERTIES:
453   :DESCRIPTION: A tree works like your brain
454   :ALT_TITLE: Document Structure
455   :END:
456 #+cindex: document structure
457 #+cindex: structure of document
459 Org is based on Outline mode and provides flexible commands to
460 edit the structure of the document.
462 ** Outlines
463    :PROPERTIES:
464    :DESCRIPTION: Org mode is based on Outline mode
465    :END:
466 #+cindex: outlines
467 #+cindex: Outline mode
469 Org is implemented on top of Outline mode.  Outlines allow a document
470 to be organized in a hierarchical structure, which (at least for me)
471 is the best representation of notes and thoughts.  An overview of this
472 structure is achieved by folding (hiding) large parts of the document
473 to show only the general document structure and the parts currently
474 being worked on.  Org greatly simplifies the use of outlines by
475 compressing the entire show/hide functionality into a single command,
476 {{{command(org-cycle)}}}, which is bound to the {{{key(TAB)}}} key.
478 ** Headlines
479    :PROPERTIES:
480    :DESCRIPTION: How to typeset Org tree headlines
481    :END:
482 #+cindex: headlines
483 #+cindex: outline tree
484 #+vindex: org-special-ctrl-a/e
485 #+vindex: org-special-ctrl-k
486 #+vindex: org-ctrl-k-protect-subtree
488 Headlines define the structure of an outline tree.  The headlines in Org
489 start with one or more stars, on the left margin.[fn:8]  For example:
491 #+begin_src org
492   ,* Top level headline
493   ,** Second level
494   ,*** Third level
495       some text
496   ,*** Third level
497       more text
498   ,* Another top level headline
499 #+end_src
501 {{{noindent}}} Some people find the many stars too noisy and would
502 prefer an outline that has whitespace followed by a single star as
503 headline starters.  A setup to realize this is described in the
504 section, [[Clean view]]. 
506 #+vindex: org-cycle-separator-lines
507 An empty line after the end of a subtree is considered part of it and
508 will be hidden when the subtree is folded.  However, if you leave at
509 least two empty lines, one empty line will remain visible after folding
510 the subtree, in order to structure the collapsed view.  See the
511 variable ~org-cycle-separator-lines~ to modify this behavior.
513 ** Visibility cycling
514    :PROPERTIES:
515    :DESCRIPTION: Show and hide, much simplified
516    :ALT_TITLE: Visibility cycling
517    :END:
518 #+cindex: cycling, visibility
519 #+cindex: visibility cycling
520 #+cindex: trees, visibility
521 #+cindex: show hidden text
522 #+cindex: hide text
524 Outlines make it possible to hide parts of the text in the buffer.
525 Org uses just two commands, bound to {{{key(TAB)}}} and
526 {{{kbdkey(S-,TAB)}}} to change the visibility in the buffer.
528 #+cindex: subtree visibility states
529 #+cindex: subtree cycling
530 #+cindex: folded, subtree visibility state
531 #+cindex: children, subtree visibility state
532 #+cindex: subtree, subtree visibility state
534 #+attr_texinfo: :table-type table :indic @asis
535 - {{{key(TAB)}}}, ~org-cycle~ :: Subtrees can be cycled through three
536      states:
537      #+kindex: TAB
538      #+findex: org-cycle
539      
540      #+begin_src example
541        ,-> FOLDED -> CHILDREN -> SUBTREE --.
542        '-----------------------------------'
543      #+end_src
545      #+vindex: org-cycle-emulate-tab
546      #+vindex: org-cycle-global-at-bob
548      By default, the cursor must be on a headline for this to work,
549      but this behavior can be modified with the
550      ~org-cycle-emulate-tab~ option.  When the cursor is at the
551      beginning of the buffer and the first line is not a headline,
552      then {{{key(TAB)}}} actually runs global cycling (see
553      below).[fn:9] Also, when called with a prefix argument
554      ({{{kbdspckey(C-u,TAB)}}}), global cycling is invoked.
556 - {{{kbdkey(S-,TAB)}}} or {{{kbdspckey(C-u,TAB)}}}, ~org-global-cycle~ :: 
557      Global cycling: Rotate the entire buffer among the states
559      #+cindex: global visibility states
560      #+cindex: global cycling
561      #+cindex: overview, global visibility state
562      #+cindex: contents, global visibility state
563      #+cindex: show all, global visibility state
564      #+kindex: C-u TAB
565      #+kindex: S-TAB
566      #+findex: org-global-cycle
568      #+begin_example
569         ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
570         '--------------------------------------'
571      #+end_example
573      When {{{kbdkey(S-,TAB)}}} is called with a numeric prefix
574      argument, ~N~, the CONTENTS view up to headlines of level N will
575      be shown.  Note that inside tables, {{{kbdkey(S-,TAB)}}} jumps
576      to the previous field.
578 - {{{kbdspckey(C-u C-u C-u,TAB)}}}, ~show-all~ :: Show all, including
579      drawers.
581      #+kindex: C-u C-u C-u TAB
582      #+findex: show-all
583      #+cindex: show all, command
584 - {{{kbd(C-c C-r)}}}, ~org-reveal~ :: Reveal context around point,
585      showing the current entry, the following heading and the
586      hierarchy above.  Useful for working near a location that has
587      been exposed by a sparse tree command (see [[Sparse trees]]) or an
588      agenda command (see [[Agenda commands]]).  With a prefix argument
589      show, on each level, all sibling headings.  With a double prefix
590      argument, also show the entire subtree of the parent.
592      #+cindex: revealing context
593      #+kindex: C-c C-r
594      #+findex: org-reveal
595 - {{{kbd(C-c C-k)}}}, ~show-branches~ :: Expose all the headings of
596      the subtree, CONTENT view for just one subtree.
598      #+kindex: C-c C-k
599      #+findex: show-branches
600      #+cindex: show branches, command
601 - {{{kbdspckey(C-c,TAB)}}}, ~show-children~ :: Expose all direct
602      children of the subtree.  With a numeric prefix argument, ~N~,
603      expose all children down to level N.
605      #+kindex: C-c TAB
606      #+findex: show-children
607      #+cindex: show children, command
608 - {{{kbd(C-c C-x b)}}}, ~org-tree-to-indirect-buffer~ :: Show the
609      current subtree in an indirect buffer.[fn:10] With a numeric
610      prefix argument, ~N~, go up to level N and then take that tree.
611      If N is negative then go up that many levels.  With a
612      {{{kbd(C-u)}}} prefix, do not remove the previously used indirect
613      buffer.
615      #+kindex: C-c C-x b
616      #+findex: org-tree-to-indirect-buffer
617 - {{{kbd(C-c C-x v)}}}, ~org-copy-visible~ :: Copy the /visible/ text
618      in the region into the kill ring.
620 #+vindex: org-startup-folded
621 #+cindex: ~overview~, STARTUP keyword
622 #+cindex: ~content~, STARTUP keyword
623 #+cindex: ~showall~, STARTUP keyword
624 #+cindex: ~showeverything~, STARTUP keyword
626 When Emacs first visits an Org file, the global state is set to
627 OVERVIEW, i.e., only the top level headlines are visible.  This can be
628 configured through the variable ~org-startup-folded~, or on a
629 per-file basis by adding one of the following lines anywhere in the
630 buffer:
632 #+begin_src org 
633   ,#+STARTUP: overview
634   ,#+STARTUP: content
635   ,#+STARTUP: showall
636   ,#+STARTUP: showeverything
637 #+end_src
639 #+cindex: property, VISIBILITY
641 {{{noindent}}} Furthermore, any entries with a {{{samp(VISIBILITY)}}}
642 property (see [[Properties and columns]]) will get their visibility
643 adapted accordingly.  Allowed values for this property are ~folded~,
644 ~children~, ~content~, and ~all~.
646 #+attr_texinfo: :indic @asis
647 - {{{kbdspckey(C-u C-u,TAB)}}}, ~org-set-startup-visibility~ :: Switch
648      back to the startup visibility of the buffer, i.e., whatever is
649      requested by startup options and {{{samp(VISIBILITY)}}}
650      properties in individual entries.
652 ** Motion
653    :PROPERTIES:
654    :DESCRIPTION: Jumping to other headlines
655    :END:
656 #+cindex: motion, between headlines
657 #+cindex: jumping, to headlines
658 #+cindex: headline navigation
659 The following commands jump to other headlines in the buffer.
661 #+attr_texinfo: :table-type table :indic @asis
662   - {{{kbd(C-c C-n)}}}, ~outline-next-visible-heading~ :: Next heading.
663        #+kindex: C-c C-n
664        #+findex: outline-next-visible-heading
665   - {{{kbd(C-c C-p)}}}, ~outline-previous-visible-heading~ :: Previous heading.
666        #+kindex: C-c C-p
667        #+findex: outline-previous-visible-heading
668   - {{{kbd(C-c C-f)}}}, ~org-forward-same-level~ :: Next heading same level.
669        #+kindex: C-c C-f
670        #+findex: org-forward-same-level
671   - {{{kbd(C-c C-b)}}}, ~org-backward-same-level~ :: Previous heading same level.
672        #+kindex: C-c C-b
673        #+findex: org-backward-same-level
674   - {{{kbd(C-c C-u)}}}, ~outline-up-heading~ :: Backward to higher level heading.
675        #+kindex: C-c C-u
676        #+findex: outline-up-heading
677   - {{{kbd(C-c C-j)}}}, ~org-goto~ :: Jump to a different place without
678        changing the current outline visibility.  Shows the document
679        structure in a temporary buffer, where you can use the
680        following keys to find your destination:
682        #+kindex: C-c C-j
683        #+findex: org-goto
684        #+vindex: org-goto-auto-isearch
685     - {{{key(TAB)}}} ::  Cycle visibility.
686     - {{{key(down)}}} / {{{key(up)}}} ::   Next/previous visible headline.
687     - {{{key(RET)}}} :: Select this location.
688     - {{{kbd(/)}}} :: Do a Sparse-tree search
689       The following keys work if you turn off ~org-goto-auto-isearch~
690       - n / p ::  Next/previous visible headline.
691       - f / b ::   Next/previous headline same level.
692       - u  ::  One level up.
693       - 0--9 ::  Digit argument.
694       - q :: Quit.
696 #+vindex: org-goto-interface
697 {{{noindent}}} See also the variable ~org-goto-interface~.
699 ** Structure editing
700    :PROPERTIES:
701    :DESCRIPTION: Changing sequence and level of headlines
702    :ALT_TITLE: Structure editing
703    :END:
704 #+cindex: structure editing
705 #+cindex: headline, promotion and demotion
706 #+cindex: promotion, of subtrees
707 #+cindex: demotion, of subtrees
708 #+cindex: subtree, cut and paste
709 #+cindex: pasting, of subtrees
710 #+cindex: cutting, of subtrees
711 #+cindex: copying, of subtrees
712 #+cindex: sorting, of subtrees
713 #+cindex: subtrees, cut and paste
715 #+attr_texinfo: :table-type table :indic @asis
716   - {{{kbdkey(M-,RET)}}}, ~org-insert-heading~ :: Insert new heading
717        with same level as current.  If the cursor is in a plain list
718        item, a new item is created (see [[Plain lists]]).  To force
719        creation of a new headline, use a prefix argument.  When this
720        command is used in the middle of a line, the line is split and
721        the rest of the line becomes the new headline.[fn:11] If the
722        command is used at the beginning of a headline, the new
723        headline is created before the current line.  If at the
724        beginning of any other line, the content of that line is made
725        the new heading.  If the command is used at the end of a folded
726        subtree (i.e., behind the ellipses at the end of a headline),
727        then a headline like the current one will be inserted after the
728        end of the subtree.
730        #+kindex: M-RET
731        #+findex: org-insert-heading
732        #+vindex: org-M-RET-may-split-line
733   - {{{kbdkey(C-,RET)}}}, ~org-insert-heading-respect-content~ :: Just
734        like {{{kbdkey(M-,RET)}}}, except when adding a new heading
735        below the current heading, the new heading is placed after the
736        body instead of before it.  This command works from anywhere in
737        the entry.
739        #+kindex: C-RET
740        #+findex: org-insert-heading-respect-content
741   - {{{kbdkey(M-S-,RET)}}}, ~org-insert-todo-heading~ :: Insert new
742        TODO entry with same level as current heading.  See also the
743        variable ~org-treat-insert-todo-heading-as-state-change~.
745        #+kindex: M-S-RET
746        #+findex: org-insert-todo-heading
747        #+vindex: org-treat-insert-todo-heading-as-state-change
748   - {{{kbdkey(C-S-,RET)}}}, ~org-insert-todo-heading-respect-content~ :: Insert
749        new TODO entry with same level as current heading.  Like
750        {{{kbdkey(C-,RET)}}}, the new headline will be inserted after
751        the current subtree.
753        #+kindex: C-S-RET
754        #+findex: org-insert-todo-heading-respect-content
755   - {{{key(TAB)}}}, ~org-cycle~ :: In a new entry with no text
756        yet, the first {{{key(TAB)}}} demotes the entry to become a
757        child of the previous one.  The next {{{key(TAB)}}} makes it a
758        parent, and so on, all the way to top level.  Yet another
759        {{{key(TAB)}}}, and you are back to the initial level.
761        #+kindex: @key{TAB}
762        #+findex: org-cycle
763   - {{{kbdkey(M-,left)}}}, ~org-do-promote~ :: Promote current heading
764        by one level.
766        #+kindex: M-left
767        #+findex: org-do-promote
768   - {{{kbdkey(M-,right)}}}, ~org-do-demote~ :: Demote current heading
769        by one level.
771        #+kindex: M-right
772        #+findex: org-do-demote
773   - {{{kbdkey(M-S-,left)}}}, ~org-promote-subtree~ :: Promote the
774        current subtree by one level.
776        #+kindex: M-S-left
777        #+findex: org-promote-subtree
778   - {{{kbdkey(M-S-,right)}}}, ~org-demote-subtree~ :: Demote the
779        current subtree by one level.
781        #+kindex: M-S-right
782        #+findex: org-demote-subtree
783   - {{{kbdkey(M-S-,up)}}}, ~org-move-subtree-up~ :: Move subtree up
784        (swap with previous subtree of same level).
786        #+kindex: M-S-up
787        #+findex: org-move-subtree-up
788   - {{{kbdkey(M-S-,down)}}}, ~org-move-subtree-down~ :: Move subtree
789        down (swap with next subtree of same level).
791        #+kindex: M-S-,down
792        #+findex: org-move-subtree-down
793   - {{{kbd(C-c C-x C-w)}}}, ~org-cut-subtree~ :: Kill subtree, i.e.,
794        remove it from buffer but save in kill ring.  With a numeric
795        prefix argument N, kill N sequential subtrees.
797        #+kindex: C-c C-x C-w
798        #+findex: org-cut-subtree
799   - {{{kbd(C-c C-x M-w)}}}, ~org-copy-subtree~ :: Copy subtree to kill
800        ring.  With a numeric prefix argument N, copy the N sequential
801        subtrees.
803        #+kindex: C-c C-x M-w
804        #+findex: org-copy-subtree
805   - {{{kbd(C-c C-x C-y)}}}, ~org-paste-subtree~ :: Yank subtree from
806        kill ring.  This does modify the level of the subtree to make
807        sure the tree fits in nicely at the yank position.  The yank
808        level can also be specified with a numeric prefix argument, or
809        by yanking after a headline marker like {{{samp(****)}}}.
811        #+kindex: C-c C-x C-y
812        #+findex: org-paste-subtree
813   - {{{kbd(C-y)}}}, ~org-yank~ :: Depending on the variables
814        ~org-yank-adjusted-subtrees~ and ~org-yank-folded-subtrees~,
815        Org's internal ~yank~ command will paste subtrees folded and in
816        a clever way, using the same command as {{{kbd(C-c C-x C-y)}}}.
817        With the default settings, no level adjustment will take place,
818        but the yanked tree will be folded unless doing so would
819        swallow text previously visible.  Any prefix argument to this
820        command will force a normal ~yank~ to be executed, with the
821        prefix passed along.  A good way to force a normal yank is
822        {{{kbd(C-u C-y)}}}.  If you use ~yank-pop~ after a yank, it
823        will yank previous kill items plainly, without adjustment and
824        folding.
826        #+kindex: C-y
827        #+findex: org-yank
828        #+vindex: org-yank-adjusted-subtrees
829        #+vindex: org-yank-folded-subtrees
830   - {{{kbd(C-c C-x c)}}}, ~org-clone-subtree-with-time-shift~ :: Clone
831        a subtree by making a number of sibling copies of it.  You will
832        be prompted for the number of copies to make, and you can also
833        specify if any timestamps in the entry should be shifted.  This
834        can be useful, for example, to create a number of tasks related
835        to a series of lectures to prepare.  For more details, see the
836        docstring of the command ~org-clone-subtree-with-time-shift~.
838        #+kindex: C-c C-x c
839        #+findex: org-clone-subtree-with-time-shift
840   - {{{kbd(C-c C-w)}}}, ~org-refile~ :: Refile entry or region to a
841        different location.  See [[Refile and copy]].
843        #+kindex: C-c C-w
844        #+findex: org-refile
845   - {{{kbd(C-c ^)}}}, ~org-sort~ :: Sort same-level entries.  When
846        there is an active region, all entries in the region will be
847        sorted.  Otherwise the children of the current headline are
848        sorted.  The command prompts for the sorting method, which can
849        be alphabetically, numerically, by time (first timestamp with
850        active preferred, creation time, scheduled time, deadline
851        time), by priority, by TODO keyword (in the sequence the
852        keywords have been defined in the setup) or by the value of a
853        property.  Reverse sorting is possible as well.  You can also
854        supply your own function to extract the sorting key.  With a
855        {{{kbd(C-u)}}} prefix, sorting will be case-sensitive.
857        #+kindex: C-c ^
858        #+findex: org-sort
859   - {{{kbd(C-x n s)}}}, ~org-narrow-to-subtree~ :: Narrow buffer to
860        current subtree.
862        #+kindex: C-x n s
863        #+findex: org-narrow-to-subtree
864   - {{{kbd(C-x n b)}}}, ~org-narrow-to-block~ :: Narrow buffer to
865        current block.
867        #+kindex: C-x n b
868        #+findex: org-narrow-to-block
869   - {{{kbd(C-x n w)}}}, ~widen~ :: Widen buffer to remove narrowing.
871        #+kindex: C-x n w
872        #+findex: widen
873   - {{{kbd(C-c *)}}}, ~org-toggle-heading~ :: Turn a normal line or
874        plain list item into a headline (so that it becomes a
875        subheading at its location).  Also turn a headline into a normal
876        line by removing the stars.  If there is an active region, turn
877        all lines in the region into headlines.  If the first line in
878        the region was an item, turn only the item lines into
879        headlines.  Finally, if the first line is a headline, remove the
880        stars from all headlines in the region.
882        #+kindex: C-c *
883        #+findex: org-toggle-heading
885 #+cindex: region, active
886 #+cindex: active region
887 #+cindex: transient mark mode
889 When there is an active region (Transient Mark mode), promotion and
890 demotion work on all headlines in the region.  To select a region of
891 headlines, it is best to place both point and mark at the beginning of
892 a line, mark at the beginning of the first headline, and point at the
893 line just after the last headline to change.  Note that when the
894 cursor is inside a table (see [[Tables]]), the Meta-Cursor keys have
895 different functionality.
897 ** Sparse trees
898    :PROPERTIES:
899    :DESCRIPTION: Matches embedded in context
900    :ALT_TITLE: Sparse trees
901    :END:
902 #+cindex: sparse trees
903 #+cindex: trees, sparse
904 #+cindex: folding, sparse trees
905 #+cindex: occur, command
906 #+vindex: org-show-hierarchy-above
907 #+vindex: org-show-following-heading
908 #+vindex: org-show-siblings
909 #+vindex: org-show-entry-below
911 An important feature of Org mode is the ability to construct /sparse
912 trees/ for selected information in an outline tree, so that the entire
913 document is folded as much as possible, but the selected information
914 is made visible along with the headline structure above it.[fn:12]
915 Just try it out and you will see immediately how it works.
917 Org mode contains several commands creating such trees, all these
918 commands can be accessed through a dispatcher:
920 #+attr_texinfo: :table-type table :indic @asis
921   - {{{kbd(C-c /)}}}, ~org-sparse-tree~ :: This prompts for an extra
922        key to select a sparse-tree creating command.
924        #+kindex: C-c /
925        #+findex: org-sparse-tree
926   - {{{kbd(C-c / r)}}}, ~org-occur~ :: Prompts for a regexp and shows a
927        sparse tree with all matches.  If the match is in a headline,
928        the headline is made visible.  If the match is in the body of an
929        entry, headline and body are made visible.  In order to provide
930        minimal context, also the full hierarchy of headlines above the
931        match is shown, as well as the headline following the
932        match.  Each match is also highlighted; the highlights disappear
933        when the buffer is changed by an editing command, or by
934        pressing {{{kbd(C-c C-c)}}}.[fn:13] When called with a {{{kbd(C-u)}}}
935        prefix argument, previous highlights are kept, so several calls
936        to this command can be stacked.
938        #+kindex: C-c / r
939        #+findex: org-occur
940        #+vindex: org-remove-highlights-with-change
941   - {{{kbd(M-g n)}}}, ~next-error~ ::
942        @@info:@itemx@@ {{{kbd(M-g M-n)}}}
943        
944        Jump to the next sparse tree match in this buffer.
946        #+kindex: M-g n
947        #+kindex: M-g M-n
948        #+findex: next-error
949   - {{{kbd(M-g p)}}}, ~previous-error~ ::
950        @@info:@itemx@@ {{{kbd(M-g M-p)}}}
952        Jump to the previous sparse tree match in this buffer.
954        #+kindex: M-g p
955        #+kindex: M-g M-p
956        #+findex: previous-error
957 #+vindex: org-agenda-custom-commands
959 {{{noindent}}} For frequently used sparse trees of specific search
960 strings, you can use the variable ~org-agenda-custom-commands~ to
961 define fast keyboard access to specific sparse trees.  These commands
962 will then be accessible through the agenda dispatcher
963 (see [[Agenda dispatcher]]).  For example:
965 #+header: :exports code
966 #+header: :eval no
967 #+begin_src emacs-lisp
968   (setq org-agenda-custom-commands
969         '(("f" occur-tree "FIXME")))
970 #+end_src
972 {{{noindent}}} will define the key {{{kbd(C-c a f)}}} as a
973 shortcut for creating a sparse tree matching the string
974 {{{samp(FIXME)}}}.
976 The other sparse tree commands select headings based on TODO keywords,
977 tags, or properties and will be discussed later in this manual.
979 #+kindex: C-c C-e v
980 #+cindex: printing sparse trees
981 #+cindex: visible text, printing
983 To print a sparse tree, you can use the Emacs command
984 ~ps-print-buffer-with-faces~ which does not print
985 invisible parts of the document.[fn:14] Or you can use the command
986 {{{kbd(C-c C-e v)}}} to export only the visible part of the
987 document and print the resulting file.
989 ** Plain lists
990    :PROPERTIES:
991    :DESCRIPTION: Additional structure within an entry
992    :ALT_TITLE: Plain lists
993    :END:
994 #+cindex: plain lists
995 #+cindex: lists, plain
996 #+cindex: lists, ordered
997 #+cindex: ordered lists
999 Within an entry of the outline tree, hand-formatted lists can provide
1000 additional structure.  They also provide a way to create lists of
1001 checkboxes (see [[Checkboxes]]).  Org supports editing
1002 such lists, and every exporter (see [[Exporting]])
1003 can parse and format them.
1005 Org knows ordered lists, unordered lists, and description lists.
1007 #+attr_texinfo: :table-type table :indic @bullet
1008   - /Unordered/ list items start with ~-~, ~+~, or ~*~ as bullets.[fn:15]
1010   - /Ordered/ list items start with a numeral followed by either a
1011     period or a right parenthesis,[fn:16] such as
1012     ~1.~ or ~1~.[fn:170] If you want a list to
1013     start with a different value (e.g., 20), start the text of the
1014     item with ~[@20]~.[fn:17] Those constructs can be used
1015     in any item of the list in order to enforce a particular
1016     numbering.
1017     #+vindex: org-plain-list-ordered-item-terminator
1018     #+vindex: org-alphabetical-lists
1020   - /Description/ list items are unordered list items, and contain the
1021     separator {{{samp( :: )}}} to distinguish the description
1022     /term/ from the description.
1025 Items belonging to the same list must have the same indentation on the
1026 first line.  In particular, if an ordered list reaches number
1027 {{{samp(10.)}}}, then the 2--digit numbers must be written
1028 left-aligned with the other numbers in the list.  An item ends before
1029 the next line that is less or equally indented than its bullet/number.
1031 #+vindex: org-empty-line-terminates-plain-lists
1032 A list ends whenever every item has ended, which means before any line less
1033 or equally indented than items at top level.  It also ends before two blank
1034 lines.[fn:171]  In that case, all items are closed.  Here is an example:
1036 #+begin_src texinfo
1037   ,** Lord of the Rings                                
1038      My favorite scenes are (in this order)
1039      1. The attack of the Rohirrim
1040      2. Eowyn's fight with the witch king
1041         + this was already my favorite scene in the book
1042         + I really like Miranda Otto.
1043      3. Peter Jackson being shot by Legolas
1044         - on DVD only
1045         He makes a really funny face when it happens.
1046      But in the end, no individual scenes matter but the film as a whole.
1047      Important actors in this film are:
1048      - @b{Elijah Wood} :: He plays Frodo
1049      - @b{Sean Austin} :: He plays Sam, Frodo's friend.  I still remember
1050        him very well from his role as Mikey Walsh in @i{The Goonies}.
1051 #+end_src
1053 Org supports these lists by tuning filling and wrapping commands to
1054 deal with them correctly.[fn:18] To turn this on, put into
1055 {{{file(.emacs)}}}: ~(require 'filladapt)~}, and by exporting them
1056 properly (see [[Exporting]]).  Since indentation is
1057 what governs the structure of these lists, many structural constructs
1058 like ~#+BEGIN_ ...~ blocks can be indented to signal that they belong
1059 to a particular item.
1061 #+vindex: org-list-demote-modify-bullet
1062 #+vindex: org-list-indent-offset
1063 If you find that using a different bullet for a sub-list (than that used for
1064 the current list-level) improves readability, customize the variable
1065 ~org-list-demote-modify-bullet~.  To get a greater difference of
1066 indentation between items and theirs sub-items, customize
1067 ~org-list-indent-offset~.
1069 #+vindex: org-list-automatic-rules
1070 The following commands act on items when the cursor is in the first line of
1071 an item (the line with the bullet or number).  Some of them imply the
1072 application of automatic rules to keep list structure intact.  If some of
1073 these actions get in your way, configure ~org-list-automatic-rules~
1074 to disable them individually.
1077 #+attr_texinfo: :table-type table :indic @asis
1078   - {{{key(TAB)}}}, ~org-cycle~ :: 
1079     #+cindex: cycling, in plain lists
1080     #+kindex: TAB
1081     #+findex: org-cycle
1082     #+vindex: org-cycle-include-plain-lists
1084     Items can be folded just like headline levels.  Normally this
1085     works only if the cursor is on a plain list item.  For more
1086     details, see the variable ~org-cycle-include-plain-lists~.  If
1087     this variable is set to ~integrate~, plain list items will be
1088     treated like low-level headlines.  The level of an item is then
1089     given by the indentation of the bullet/number.  Items are always
1090     subordinate to real headlines, however; the hierarchies remain
1091     completely separated.  In a new item with no text yet, the first
1092     {{{key(TAB)}}} demotes the item to become a child of the
1093     previous one.  Subsequent {{{key(TAB)}}}s move the item to
1094     meaningful levels in the list and eventually get it back to its
1095     initial position.
1097   - {{{kbdkey(M-,RET)}}}, ~org-insert-heading~ :: 
1098     #+kindex: M-RET
1099     #+findex: org-insert-heading
1100     #+vindex: org-M-RET-may-split-line
1101     #+vindex: org-list-automatic-rules
1103     Insert new item at current level.  With a prefix argument, force
1104     a new heading (see [[Structure editing]]).  If this command is used
1105     in the middle of an item, that item is /split/ in two, and the
1106     second part becomes the new item.[fn:19] If this command is
1107     executed /before item's body/, the new item is created /before/
1108     the current one.
1110   - {{{kbdkey(M-S-,RET)}}} :: 
1111     #+kindex: M-S-RET
1113     Insert a new item with a checkbox (see [[Checkboxes]]).
1114   
1115   - {{{kbdkey(S-,up)}}} :: 
1116     @@info:@itemx@@ {{{kbdkey(S-,down)}}}
1118        Jump to the previous/next item in the current list, but
1119        only if ~org-support-shift-select~ is off.[fn:20]  If not, you can
1120        still use paragraph jumping commands like {{{kbdkey(C-,up)}}}
1121        and {{{kbdkey(C-,down)}}} to quite similar effect.
1122        
1123        #+kindex: S-up
1124        #+kindex: S-down
1125        #+cindex: shift-selection-mode
1126        #+vindex: org-support-shift-select
1127        #+vindex: org-list-use-circular-motion
1128   - {{{kbdkey(M-,up)}}} ::
1129        @@info:@itemx@@ {{{kbdkey(M-,down)}}}
1131        Move the item including subitems up/down (swap with
1132        previous/next item of same indentation).[fn:21]  If the list is
1133        ordered, renumbering is automatic.
1135        #+kindex: M-up
1136        #+kindex: M-down
1137   - {{{kbdkey(M-,left)}}} :: 
1138        @@info:@itemx@@ {{{kbdkey(M-,right)}}}
1140        Decrease/increase the indentation of an item, leaving children
1141        alone.
1143        #+kindex: M-left
1144        #+kindex: M-right
1145   - {{{kbdkey(M-S-,left)}}} :: 
1146        @@info:@itemx@@ {{{kbdkey(M-S-,right)}}}
1148        Decrease/increase the indentation of the item, including
1149        subitems.  Initially, the item tree is selected based on
1150        current indentation.  When these commands are executed several
1151        times in direct succession, the initially selected region is
1152        used, even if the new indentation would imply a different
1153        hierarchy.  To use the new hierarchy, break the command chain
1154        with a cursor motion or so.
1156        #+kindex: M-S-left
1157        #+kindex: M-S-right
1159        As a special case, using this command on the very first item of
1160        a list will move the whole list.  This behavior can be disabled
1161        by configuring ~org-list-automatic-rules~.  The global
1162        indentation of a list has no influence on the text /after/ the
1163        list.
1164   - {{{kbd(C-c C-c)}}} :: If there is a checkbox (see [[Checkboxes]]) in
1165        the item line, toggle the state of the checkbox.  In any case,
1166        verify bullets and indentation consistency in the whole list.
1168        #+kindex: C-c C-c
1169   - {{{kbd(C-c -)}}} :: Cycle the entire list level through the
1170        different itemize/enumerate bullets ({{{samp(-)}}},
1171        {{{samp(+)}}}, {{{samp(*)}}}, {{{samp(1.)}}}, {{{samp(1))}}})
1172        or a subset of them, depending on
1173        ~org-plain-list-ordered-item-terminator~, the type of list, and
1174        its indentation.  With a numeric prefix argument N, select the
1175        Nth bullet from this list.  If there is an active region when
1176        calling this, selected text will be changed into an item.  With
1177        a prefix argument, all lines will be converted to list items.
1178        If the first line already was a list item, any item marker will
1179        be removed from the list.  Finally, even without an active
1180        region, a normal line will be converted into a list item.
1182        #+kindex: C-c -
1183        #+vindex: org-plain-list-ordered-item-terminator
1184   - {{{kbd(C-c *)}}} :: Turn a plain list item into a headline (so
1185        that it becomes a subheading at its location).  See
1186        [[Structure editing]], for a detailed explanation.
1188        #+kindex: C-c *
1189   - {{{kbd(C-c C-*)}}} :: Turn the whole plain list into a subtree of
1190        the current heading.  Checkboxes (see [[Checkboxes]]) will become
1191        TODO (resp.  DONE) keywords when unchecked (resp.  checked).
1193        #+kindex: C-c C-*
1194   - {{{kbd(S-left/right)}}} :: This command also cycles bullet styles
1195        when the cursor in on the bullet or anywhere in an item line,
1196        details depending on ~org-support-shift-select~.
1198        #+vindex: org-support-shift-select
1199        #+kindex: S-left
1200        #+kindex: S-right
1201   - {{{kbd(C-c ^)}}} :: Sort the plain list.  You will be prompted for
1202        the sorting method: numerically, alphabetically, by time, or by
1203        custom function.
1205        #+kindex: C-c ^
1207 ** Drawers
1208    :PROPERTIES:
1209    :DESCRIPTION: Tucking stuff away
1210    :END:
1211 #+cindex: drawers
1212 #+cindex: #+DRAWERS
1213 #+cindex: visibility cycling, drawers
1215 #+vindex: org-drawers
1216 #+cindex: org-insert-drawer
1217 #+kindex: C-c C-x d
1218 Sometimes you want to keep information associated with an entry, but you
1219 normally don't want to see it.  For this, Org mode has /drawers/.
1220 Drawers need to be configured with the variable
1221 ~org-drawers~.[fn:172] Drawers
1222 look like this:
1224 #+begin_src org
1225   ,** This is a headline
1226      Still outside the drawer
1227      :DRAWERNAME:
1228      This is inside the drawer.
1229      :END:
1230      After the drawer.
1231 #+end_src
1234 You can interactively insert drawers at point by calling
1235 ~org-insert-drawer~, which is bound to {{{kbd(C-c C-x d)}}}.
1236 With an active region, this command will put the region inside the
1237 drawer.  With a prefix argument, this command calls
1238 ~org-insert-property-drawer~ and add a property drawer right
1239 below the current headline.  Completion over drawer keywords is also
1240 possible using {{{key(M-TAB)}}}.
1242 Visibility cycling (see [[Visibility cycling]]) on the headline
1243 will hide and show the entry, but keep the drawer collapsed to a
1244 single line.  In order to look inside the drawer, you need to move the
1245 cursor to the drawer line and press {{{key(TAB)}}} there.  Org mode
1246 uses the ~PROPERTIES~ drawer for storing properties
1247 (see [[Properties and columns]]), and you can also arrange for
1248 state change notes (see [[Tracking TODO state changes]) and
1249 clock times (see [[Clocking work time]) to be stored in a drawer
1250 ~LOGBOOK~.  If you want to store a quick note in the LOGBOOK
1251 drawer, in a similar way to state changes, use
1253 #+attr_texinfo: :table-type table :indic @asis
1254  - {{{kbd(C-c C-z)}}} :: Add a time-stamped note to the LOGBOOK
1255       drawer.
1257       #+kindex: C-c C-z
1259 ** Blocks
1260    :PROPERTIES:
1261    :DESCRIPTION: Folding blocks
1262    :END:
1263 #+vindex: org-hide-block-startup
1264 #+cindex: blocks, folding
1266 Org mode uses ~begin~ ...  ~end~ blocks for various purposes from including
1267 source code examples (see [[Literal examples]]) to capturing time logging
1268 information (see [[Clocking work time]]).  These blocks can be folded
1269 and unfolded by pressing TAB in the begin line.  You can also get all
1270 blocks folded at startup by configuring the variable
1271 ~org-hide-block-startup~ or on a per-file basis by using
1273 #+cindex: @code{hideblocks}, STARTUP keyword
1274 #+cindex: @code{nohideblocks}, STARTUP keyword
1275 #+begin_src org
1276   ,#+STARTUP: hideblocks
1277   ,#+STARTUP: nohideblocks
1278 #+end_src
1280 ** Creating footnotes
1281    :PROPERTIES:
1282    :DESCRIPTION: Define footnotes in Org syntax
1283    :END:
1284 #+cindex: footnotes
1286 Org mode supports the creation of footnotes.  In contrast to the
1287 {{{file(footnote.el)}}} package, Org mode's footnotes are designed for
1288 work on a larger document, not only for one-off documents like emails.
1289 The basic syntax is similar to the one used by
1290 {{{file(footnote.el)}}}, i.e., a footnote is defined in a paragraph
1291 that is started by a footnote marker in square brackets in column 0,
1292 no indentation allowed.  If you need a paragraph break inside a
1293 footnote, use the LaTeX idiom ~\par~.  The footnote reference is simply
1294 the marker in square brackets, inside text.  For example:
1296 #+begin_example
1297    The Org homepage[fn:1] now looks a lot better than it used to.
1298    ...
1299    [fn:1] The link is: http://orgmode.org
1300 #+end_example
1302 Org mode extends the number-based syntax to /named/ footnotes and
1303 optional inline definition.  Using plain numbers as markers (as
1304 {{{file(footnote.el)}}} does) is supported for backward compatibility,
1305 but not encouraged because of possible conflicts with LaTeX
1306 snippets (see [[Embedded LaTeX]]).  Here are
1307 the valid references:
1309 #+attr_texinfo: :table-type table :indic @asis
1310   - ~[1]~ :: A plain numeric footnote marker.  Compatible with
1311            {{{file(footnote.el)}}}, but not recommended because
1312            something like ~[1]~ could easily be part of a
1313            code snippet.
1315   - ~[fn:name]~ :: A named footnote reference, where ~name~ is
1316                  a unique label word, or, for simplicity of automatic
1317                  creation, a number.
1318   - ~[fn:: This is the inline definition of this footnote]~ :: A
1319        LaTeX-like anonymous footnote where the definition
1320        is given directly at the reference point.
1321   - ~[fn:name: a definition]~ :: An inline definition of a footnote,
1322        which also specifies a name for the note.  Since Org allows
1323        multiple references to the same note, you can then use
1324        ~[fn:name]~ to create additional references.
1327 #+vindex: org-footnote-auto-label
1328 Footnote labels can be created automatically, or you can create names
1329 yourself.  This is handled by the variable
1330 ~org-footnote-auto-label~ and its corresponding
1331 ~#+STARTUP~ keywords.  See the docstring of that variable for
1332 details.
1334 {{{noindent}}} The following command handles footnotes:
1336 #+attr_texinfo: :table-type table :indic @asis
1337   - {{{kbd(C-c C-x f)}}} :: The footnote action command.
1338                  #+kindex: C-c C-x f
1340                  When the cursor is on a footnote reference, jump to the
1341                  definition.  When it is at a definition, jump to the
1342                  (first) reference.
1344                  #+vindex: org-footnote-define-inline
1345                  #+vindex: org-footnote-section
1346                  #+vindex: org-footnote-auto-adjust
1348                  Otherwise, create a new footnote.  Depending on the
1349                  variable ~org-footnote-define-inline~, the
1350                  definition will be placed right into the text as part
1351                  of the reference, or separately into the location
1352                  determined by the variable ~org-footnote-section~.[fn:173]
1354                  When this command is called with a prefix argument, a
1355                  menu of additional options is offered:
1357     - {{{kbd(s)}}} ::  Sort the footnote definitions by reference sequence.
1358             During editing, Org makes no effort to sort footnote
1359             definitions into a particular sequence.  If you want them
1360             sorted, use this command, which will also move entries
1361             according to ~org-footnote-section~.  Automatic sorting
1362             after each insertion/deletion can be configured using the
1363             variable ~org-footnote-auto-adjust~.
1364     - {{{kbd(r)}}} ::  Renumber the simple ~fn:N~ footnotes.  Automatic
1365             renumbering after each insertion/deletion can be
1366             configured using the variable ~org-footnote-auto-adjust~.
1367     - {{{kbd(S)}}} ::  Short for first ~r~, then ~s~ action.
1368     - {{{kbd(n)}}} ::  Normalize the footnotes by collecting all definitions
1369             (including inline definitions) into a special section, and
1370             then numbering them in sequence.  The references will then
1371             also be numbers.  This is meant to be the final step
1372             before finishing a document (e.g., sending off an email).
1373             The exporters do this automatically, and so could
1374             something like ~message-send-hook~.
1375     - {{{kbd(d)}}} ::  Delete the footnote at point, and all definitions of and
1376             references to it.
1378     Depending on the variable ~org-footnote-auto-adjust~, renumbering
1379        and sorting footnotes can be automatic after each insertion or
1380        deletion.[fn:174]
1382   - {{{kbd(C-c C-c)}}} :: If the cursor is on a footnote reference, jump to the
1383                definition.  If it is a the definition, jump back to
1384                the reference.  When called at a footnote location with
1385                a prefix argument, offer the same menu as {{{kbd(C-c C-x f)}}}.
1387     #+kindex: C-c C-c
1389   - {{{kbd(C-c C-o)}}} or {{{kbd(mouse-1/2)}}} :: Footnote labels are also
1390        links to the corresponding definition/reference, and you can
1391        use the usual commands to follow these links.
1393     #+kindex: C-c C-o
1394     #+kindex: mouse-1
1395     #+kindex: mouse-2
1397 ** Orgstruct mode 
1398    :PROPERTIES:
1399    :DESCRIPTION: Structure editing outside Org
1400    :ALT_TITLE: Orgstruct mode
1401    :END:
1402 #+cindex: Orgstruct mode
1403 #+cindex: minor mode for structure editing
1405 If you like the intuitive way the Org mode structure editing and list
1406 formatting works, you might want to use these commands in other modes
1407 like Text mode or Mail mode as well.  The minor mode ~orgstruct-mode~
1408 makes this possible.  Toggle the mode with {{{kbd(M-x orgstruct-mode)}}}, or turn it on by default, for example in Message
1409 mode, with one of:
1411 #+header: :exports code
1412 #+header: :eval no
1413 #+begin_src emacs-lisp
1414   (add-hook 'message-mode-hook 'turn-on-orgstruct)
1415   (add-hook 'message-mode-hook 'turn-on-orgstruct++)
1416 #+end_src
1418 When this mode is active and the cursor is on a line that looks to Org
1419 like a headline or the first line of a list item, most structure
1420 editing commands will work, even if the same keys normally have
1421 different functionality in the major mode you are using.  If the
1422 cursor is not in one of those special lines, Orgstruct mode lurks
1423 silently in the shadows.  When you use ~orgstruct++-mode~, Org will
1424 also export indentation and autofill settings into that mode, and
1425 detect item context after the first line of an item.
1427 * Tables
1428   :PROPERTIES:
1429   :DESCRIPTION: Pure magic for quick formatting
1430   :END:
1431 #+cindex: tables
1432 #+cindex: editing tables
1434 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1435 calculations are supported using the Emacs {{{file(calc)}}} package
1436 ([[info:calc]]).
1438 ** Built-in table editor 
1439    :PROPERTIES:
1440    :DESCRIPTION: Simple tables
1441    :END:
1442 #+cindex: table editor, built-in
1444 Org makes it easy to format tables in plain ASCII.  Any line with
1445 {{{samp(|)}}} as the first non-whitespace character is considered part
1446 of a table.  {{{samp(|)}}} is also the column separator.[fn:22] A table
1447 might look like this:
1449 #+begin_src org
1450   | Name  | Phone | Age |
1451   |-------+-------+-----|
1452   | Peter |  1234 |  17 |
1453   | Anna  |  4321 |  25 |
1454 #+end_src
1457 A table is re-aligned automatically each time you press {{{key(TAB)}}}
1458 or {{{key(RET)}}} or {{{kbd(C-c C-c)}}} inside the table.
1459 {{{key(TAB)}}} also moves to the next field ({{{key(RET)}}} to the
1460 next row) and creates new table rows at the end of the table or before
1461 horizontal lines.  The indentation of the table is set by the first
1462 line.  Any line starting with {{{samp(|-)}}} is considered as a
1463 horizontal separator line and will be expanded on the next re-align to
1464 span the whole table width.  So, to create the above table, you would
1465 only type
1467 #+begin_src org
1468   |Name|Phone|Age|
1469   |-
1470 #+end_src
1473 {{{noindent}}} and then press {{{key(TAB)}}} to align the table and
1474 start filling in fields.  Even faster would be to type
1475 ~|Name|Phone|Age~ followed by {{{kbdspckey(C-c,RET)}}}.
1477 #+vindex: org-enable-table-editor
1478 #+vindex: org-table-auto-blank-field
1480 When typing text into a field, Org treats {{{key(DEL)}}},
1481 {{{key(Backspace)}}}, and all character keys in a special way, so that
1482 inserting and deleting avoids shifting other fields.  Also, when
1483 typing /immediately/ after the cursor was moved into a new field with
1484 {{{key(TAB)}}}, {{{kbdkey(S-,TAB)}}} or {{{key(RET)}}}, the field is
1485 automatically made blank.  If this behavior is too unpredictable for
1486 you, configure the variables ~org-enable-table-editor~ and
1487 ~org-table-auto-blank-field~.
1488 *** Creation and conversion
1489     :PROPERTIES:
1490     :DESCRIPTION: Creating tabular data in Org
1491     :END:
1492 #+attr_texinfo: :table-type table :indic @asis
1493 - {{{kbd(C-c |)}}}, ~org-table-create-or-convert-from-region~ :: Convert
1494      the active region to table.  If every line contains at least one
1495      {{{key(TAB)}}} character, the function assumes that the material
1496      is tab separated.  If every line contains a comma, comma-separated
1497      values (CSV) are assumed.  If not, lines are split at whitespace
1498      into fields.  You can use a prefix argument to force a specific
1499      separator: {{{kbd(C-u)}}} forces CSV, {{{kbd(C-u C-u)}}} forces
1500      {{{key(TAB)}}}, and a numeric argument ~N~ indicates that at
1501      least N consecutive spaces, or alternatively a {{{key(TAB)}}}
1502      will be the separator.  If there is no active region, this command
1503      creates an empty Org table.  But it is easier just to start
1504      typing, like {{{kbdspckey(|Name|Phone|Age,RET)}}} {{{kbdkey(|-
1505      ,TAB)}}}.
1507      #+kindex: C-c |
1508      #+findex: org-table-create-or-convert-from-region
1510 *** Re-aligning and field motion
1511     :PROPERTIES:
1512     :DESCRIPTION: Navigating and tidying
1513     :END:
1514 #+attr_texinfo: :table-type table :indic @asis
1515 - {{{kbd(C-c C-c)}}}, ~org-table-align~ :: Re-align the table without
1516      moving the cursor.
1518      #+kindex: C-c C-c
1519      #+findex: org-table-align
1520 - {{{kbd(<TAB>)}}}, ~org-table-next-field~ :: Re-align the table, move
1521      to the next field.  Creates a new row if necessary.
1523      #+kindex: <TAB>
1524      #+findex: org-table-next-field
1525 - {{{kbdkey(S-,TAB)}}}, ~org-table-previous-field~ :: Re-align, move to
1526      previous field.
1528      #+kindex: S-TAB
1529      #+findex: org-table-previous-field
1530 - {{{key(RET)}}}, ~org-table-next-row~ :: Re-align the table and move
1531      down to next row.  Creates a new row if necessary.  At the
1532      beginning or end of a line, {{{key(RET)}}} still does NEWLINE, so
1533      it can be used to split a table.
1535      #+kindex: RET
1536      #+findex: org-table-next-row
1537 - {{{kbd(M-a)}}}, ~org-table-beginning-of-field~ :: Move to beginning
1538      of the current table field, or on to the previous field.
1540      #+kindex: M-a
1541      #+findex: org-table-beginning-of-field
1542 - {{{kbd(M-e)}}}, ~org-table-end-of-field~ :: Move to end of the
1543      current table field, or on to the next field.
1545      #+kindex: M-e
1546      #+findex: org-table-end-of-field
1548 *** Column and row editing
1549     :PROPERTIES:
1550     :DESCRIPTION: Insert, kill, or move
1551     :END:
1552 #+attr_texinfo: :table-type table :indic @asis
1553 - {{{kbdkey(M-,left)}}}, ~org-table-move-column-left~ ::
1554   #+kindex: M-left
1555   #+findex: org-table-move-column-left
1556      
1557   Move the current column left.
1559 - {{{kbdkey(M-,right)}}}, ~org-table-move-column-right~ ::
1560   #+kindex: M-right
1561   #+findex: org-table-move-column-right
1563   Move the current column right.
1565 - {{{kbdkey(M-S-,left)}}}, ~org-table-delete-column~ :: 
1566   #+kindex: M-S-left
1567   #+findex: org-table-delete-column
1569   Kill the current column.
1571 - {{{kbdkey(M-S-,right)}}}, ~org-table-insert-column~ :: 
1572   #+kindex: M-S-right
1573   #+findex: org-table-insert-column
1575   Insert a new column to the left of the cursor position.
1577 - {{{kbdkey(M-,up)}}}, ~org-table-move-row-up~ ::
1578   #+kindex: M-up
1579   #+findex: org-table-move-row-up
1581   Move the current row up.
1583 - {{{kbdkey(M-,down)}}}, ~org-table-move-row-down~ ::
1584   #+kindex: M-down
1585   #+findex: org-table-move-row-down
1586      
1587   Move the current row down.
1589 - {{{kbdkey(M-S-,up)}}}, ~org-table-kill-row~ :: Kill the current row
1590      or horizontal line.
1592      #+kindex: M-S-up
1593      #+findex: org-table-kill-row
1595 - {{{kbdkey(M-S-,down)}}}, ~org-table-insert-row~ :: Insert a new row
1596      above the current row.  With a prefix argument, the line is
1597      created below the current one.
1599      #+kindex: M-S-down
1600      #+findex: org-table-insert-row
1602 - {{{kbd(C-c -)}}}, ~org-table-insert-hline~ :: Insert a horizontal
1603      line below current row.  With a prefix argument, the line is
1604      created above the current line.
1606      #+kindex: C-c -
1607      #+findex: org-table-insert-hline
1609 - {{{kbdspckey(C-c,RET)}}}, ~org-table-hline-and-move~ :: Insert a
1610      horizontal line below current row, and move the cursor into the
1611      row below that line.
1613      #+kindex: C-c RET
1614      #+findex: org-table-hline-and-move
1616 - {{{kbd(C-c ^)}}}, ~org-table-sort-lines~ :: Sort the table lines in
1617      the region.  The position of point indicates the column to be
1618      used for sorting, and the range of lines is the range between the
1619      nearest horizontal separator lines, or the entire table.  If
1620      point is before the first column, you will be prompted for the
1621      sorting column.  If there is an active region, the mark specifies
1622      the first line and the sorting column, while point should be in
1623      the last line to be included into the sorting.  The command
1624      prompts for the sorting type (alphabetically, numerically, or by
1625      time).  When called with a prefix argument, alphabetic sorting
1626      will be case-sensitive.
1628      #+kindex: C-c ^
1629      #+findex: org-table-sort-lines
1630 *** Regions
1631     :PROPERTIES:
1632     :DESCRIPTION: Manipulate parts of a table
1633     :END:
1634 #+attr_texinfo: :table-type table :indic @asis
1635 - {{{kbd(C-c C-x M-w)}}}, ~org-table-copy-region~ :: Copy a rectangular
1636      region from a table to a special clipboard.  Point and mark
1637      determine edge fields of the rectangle.  If there is no active
1638      region, copy just the current field.  The process ignores
1639      horizontal separator lines.
1641      #+kindex: C-c C-x M-w
1642      #+findex: org-table-copy-region
1643 - {{{kbd(C-c C-x C-w)}}}, ~org-table-cut-region~ :: Copy a rectangular
1644      region from a table to a special clipboard, and blank all fields
1645      in the rectangle.  So this is the ``cut'' operation.
1647      #+kindex: C-c C-x C-w
1648      #+findex: org-table-cut-region
1649 - {{{kbd(C-c C-x C-y)}}}, ~org-table-paste-rectangle~ :: Paste a
1650      rectangular region into a table.  The upper left corner ends up
1651      in the current field.  All involved fields will be overwritten.
1652      If the rectangle does not fit into the present table, the table
1653      is enlarged as needed.  The process ignores horizontal separator
1654      lines.
1656      #+kindex: C-c C-x C-y
1657      #+findex: org-table-paste-rectangle
1658 - {{{kbdkey(M-,RET)}}}, ~org-table-wrap-region~ :: Split the current
1659      field at the cursor position and move the rest to the line below.
1660      If there is an active region, and both point and mark are in the
1661      same column, the text in the column is wrapped to minimum width
1662      for the given number of lines.  A numeric prefix argument may be
1663      used to change the number of desired lines.  If there is no
1664      region, but you specify a prefix argument, the current field is
1665      made blank, and the content is appended to the field above.
1667      #+kindex: M-RET
1668      #+findex: org-table-wrap-region
1669 *** Calculations
1670     :PROPERTIES:
1671     :DESCRIPTION: Sum and copy
1672     :END:
1673 #+cindex: formula, in tables
1674 #+cindex: calculations, in tables
1675 #+cindex: region, active
1676 #+cindex: active region
1677 #+cindex: transient mark mode
1679 #+attr_texinfo: :table-type table :indic @asis
1680 - {{{kbd(C-c +)}}}, ~org-table-sum~ :: Sum the numbers in the current
1681      column, or in the rectangle defined by the active region.  The
1682      result is shown in the echo area and can be inserted with
1683      {{{kbd(C-y)}}}.
1685   #+kindex: C-c +
1686   #+findex: org-table-sum
1687 - {{{kbdkey(S-,RET)}}}, ~org-table-copy-down~ :: When current field is
1688      empty, copy from first non-empty field above.  When not empty,
1689      copy current field down to next row and move cursor along with
1690      it.  Depending on the variable ~org-table-copy-increment~,
1691      integer field values will be incremented during copy.  Integers
1692      that are too large will not be incremented.  Also, a ~0~ prefix
1693      argument temporarily disables the increment.  This key is also
1694      used by shift-selection and related modes (see [[Conflicts]]).
1696      #+kindex: S-RET
1697      #+findex: org-table-copy-down
1698      #+vindex: org-table-copy-increment
1700 *** Misc
1701     :PROPERTIES:
1702     :DESCRIPTION: Some other useful operations
1703     :END:
1704 #+attr_texinfo: :table-type table :indic @asis
1705 - {{{kbd(C-c `)}}}, ~org-table-edit-field~ :: Edit the current field in
1706      a separate window.  This is useful for fields that are not fully
1707      visible (see [[Column width and alignment]]).  When called with a
1708      {{{kbd(C-u)}}} prefix, just make the full field visible, so that
1709      it can be edited in place.  When called with two {{{kbd(C-u)}}}
1710      prefixes, make the editor window follow the cursor through the
1711      table and always show the current field.  The follow mode exits
1712      automatically when the cursor leaves the table, or when you
1713      repeat this command with {{{kbd(C-u C-u C-c `)}}}.
1715      #+kindex: C-c `
1716      #+findex: org-table-edit-field
1717 - {{{kbd(M-x org-table-import)}}} :: Import a file as a table.  The
1718      table should be TAB or whitespace separated.  Use, for example,
1719      to import a spreadsheet table or data from a database, because
1720      these programs generally can write TAB-separated text files.
1721      This command works by inserting the file into the buffer and then
1722      converting the region to a table.  Any prefix argument is passed
1723      on to the converter, which uses it to determine the separator.
1725 - {{{kbd(C-c |)}}}, ~org-table-create-or-convert-from-region~ :: Tables
1726      can also be imported by pasting tabular text into the Org buffer,
1727      selecting the pasted text with {{{kbd(C-x C-x)}}} and then using
1728      the {{{kbd(C-c |)}}} command (see [[Creation and conversion]]).
1730      #+kindex: C-c |
1731      #+findex: org-table-create-or-convert-from-region
1732 - {{{kbd(M-x org-table-export)}}} :: Export the table, by default as a
1733      TAB-separated file.  Use for data exchange with, for example,
1734      spreadsheet or database programs.  The format used to export the
1735      file can be configured in the variable
1736      ~org-table-export-default-format~.  You may also use properties
1737      ~TABLE_EXPORT_FILE~ and ~TABLE_EXPORT_FORMAT~ to specify the file
1738      name and the format for table export in a subtree.  Org supports
1739      quite general formats for exported tables.  The exporter format
1740      is the same as the format used by Orgtbl radio tables, see
1741      [[Translator functions], for a detailed description.
1743      #+findex: org-table-export
1744      #+vindex: org-table-export-default-format
1746 If you don't like the automatic table editor because it gets in your
1747 way on lines which you would like to start with {{{samp(|)}}}, you can
1748 turn it off with
1750 #+header: :exports code
1751 #+header: :eval no
1752 #+begin_src emacs-lisp
1753 (setq org-enable-table-editor nil)
1754 #+end_src
1757 {{{noindent}}} Then the only table command that still works is
1758 {{{kbd(C-c C-c)}}} to do a manual re-align.
1760 ** Column width and alignment
1761    :PROPERTIES:
1762    :DESCRIPTION: Overrule the automatic settings
1763    :END:
1764 #+cindex: narrow columns in tables
1765 #+cindex: alignment in tables
1767 The width of columns is automatically determined by the table editor.
1768 And also the alignment of a column is determined automatically from
1769 the fraction of number-like versus non-number fields in the column.
1771 Sometimes a single field or a few fields need to carry more text,
1772 leading to inconveniently wide columns.  Or maybe you want to make a
1773 table with several columns having a fixed width, regardless of
1774 content.  To set the width of a column, one field anywhere in the
1775 column may contain just the string ~<N>~ where ~N~
1776 is an integer specifying the width of the column in characters.[fn:23]
1777 The next re-align will then set the width of this column to this
1778 value.
1780 #+begin_example
1781    |---+------------------------------|               |---+--------|
1782    |   |                              |               |   | <6>    |
1783    | 1 | one                          |               | 1 | one    |
1784    | 2 | two                          |     ----\     | 2 | two    |
1785    | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
1786    | 4 | four                         |               | 4 | four   |
1787    |---+------------------------------|               |---+--------|
1788 #+end_example
1790 {{{noindent}}} Fields that are wider become clipped and end in the
1791 string {{{samp(=>)}}}.  Note that the full text is still in the buffer
1792 but is hidden.  To see the full text, hold the mouse over the
1793 field---a tool-tip window will show the full content.  To edit such a
1794 field, use the command {{{kbd(C-c `)}}} (that is {{{kbd(C-c)}}}
1795 followed by the backquote).  This will open a new window with the full
1796 field.  Edit it and finish with {{{kbd(C-c C-c)}}}.
1798 #+vindex: org-startup-align-all-tables
1800 When visiting a file containing a table with narrowed columns, the
1801 necessary character hiding has not yet happened, and the table needs
1802 to be aligned before it looks nice.  Setting the option
1803 ~org-startup-align-all-tables~ will realign all tables in a file upon
1804 visiting, but also slow down startup.  You can also set this option on
1805 a per-file basis with:
1807 #+begin_src org
1808   ,#+STARTUP: align
1809   ,#+STARTUP: noalign
1810 #+end_src
1812 If you would like to overrule the automatic alignment of number-rich
1813 columns to the right and of string-rich columns to the left, you can
1814 use ~<r>~, ~<c>~ or ~<l>~ in a similar fashion.[fn:24] You may also
1815 combine alignment and field width like this: ~<l10>~.
1817 A line that only contains these formatting cookies will be removed
1818 automatically when exporting the document.
1820 ** Column groups
1821    :PROPERTIES:
1822    :DESCRIPTION: Grouping to trigger vertical lines
1823    :END:
1824 #+cindex: grouping columns in tables
1826 When Org exports tables, it does so by default without vertical lines
1827 because that is visually more satisfying in general.  Occasionally
1828 however, vertical lines can be useful to structure a table into groups
1829 of columns, much like horizontal lines can do for groups of rows.  In
1830 order to specify column groups, you can use a special row where the
1831 first field contains only {{{samp(/)}}}.  The further fields can either
1832 contain ~<~ to indicate that this column should start a group,
1833 ~>~ to indicate the end of a column, or ~<>~ (no space
1834 between ~<~ and ~>~) to make a column a group of its own.  Boundaries
1835 between column groups will upon export be marked with vertical lines.
1836 Here is an example:
1838 #+begin_src org
1839   | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1840   |---+-----+-----+-----+---------+------------|
1841   | / |   < |     |   > |       < |          > |
1842   | 1 |   1 |   1 |   1 |       1 |          1 |
1843   | 2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
1844   | 3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
1845   |---+-----+-----+-----+---------+------------|
1846   ,#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
1847 #+end_src
1849 It is also sufficient to just insert the column group starters after
1850 every vertical line you would like to have:
1852 #+begin_src org
1853   |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1854   |----+-----+-----+-----+---------+------------|
1855   | /  | <   |     |     | <       |            |
1856 #+end_src
1858 ** The Orgtbl mode minor mode
1859    :PROPERTIES:
1860    :DESCRIPTION: The table editor as minor mode
1861    :ALT_TITLE: Ogtbl mode
1862    :END:
1863 #+cindex: Orgtbl mode
1864 #+cindex: minor mode for tables
1866 If you like the intuitive way the Org table editor works, you might
1867 also want to use it in other modes like Text mode or Mail mode.  The
1868 minor mode Orgtbl mode makes this possible.  You can always toggle the
1869 mode with {{{kbd(M-x orgtbl-mode)}}}.  To turn it on by default, for
1870 example in Message mode, use
1872 #+header: :exports code
1873 #+header: :eval no
1874 #+begin_src emacs-lisp
1875 (add-hook 'message-mode-hook 'turn-on-orgtbl)
1876 #+end_src
1878 Furthermore, with some special setup, it is possible to maintain
1879 tables in arbitrary syntax with Orgtbl mode.  For example, it is
1880 possible to construct LaTeX tables with the underlying ease and
1881 power of Orgtbl mode, including spreadsheet capabilities.  For
1882 details, see [[Tables in arbitrary syntax]].
1884 ** The spreadsheet
1885    :PROPERTIES:
1886    :DESCRIPTION: The table editor has spreadsheet capabilities
1887    :END:
1888 #+cindex: calculations, in tables
1889 #+cindex: spreadsheet capabilities
1890 #+cindex: @file{calc} package
1892 The table editor makes use of the Emacs {{{file(calc)}}} package to
1893 implement spreadsheet-like capabilities.  It can also evaluate Emacs
1894 Lisp forms to derive fields from other fields.  While fully featured,
1895 Org's implementation is not identical to other spreadsheets.  For
1896 example, Org knows the concept of a /column formula/ that will be
1897 applied to all non-header fields in a column without having to copy
1898 the formula to each relevant field.  There is also a formula debugger,
1899 and a formula editor with features for highlighting fields in the
1900 table corresponding to the references at the point in the formula,
1901 moving these references by arrow keys
1903 *** References
1904     :PROPERTIES:
1905     :DESCRIPTION: How to refer to another field or range
1906     :END:
1907 #+cindex: references
1909 To compute fields in the table from other fields, formulas must
1910 reference other fields or ranges.  In Org, fields can be referenced by
1911 name, by absolute coordinates, and by relative coordinates.  To find
1912 out what the coordinates of a field are, press {{{kbd(C-c ?)}}} in
1913 that field, or press {{{kbd(C-c })}}} to toggle the display of a
1914 grid.
1916 **** Field references
1917      :PROPERTIES:
1918      :DESCRIPTION: Refer to a particular field
1919      :END:
1920 #+cindex: field references
1921 #+cindex: references, to fields
1923 Formulas can reference the value of another field in two ways.  Like
1924 in any other spreadsheet, you may reference fields with a
1925 letter/number combination like ~B3~, meaning the 2nd field in the 3rd
1926 row.
1928 #+vindex: org-table-use-standard-references
1929 However, Org prefers to use another, more general representation that
1930 looks like this:[fn:25]
1932 #+begin_example
1933    @ROW$COLUMN
1934 #+end_example
1936 Column specifications can be absolute like ~$1~, ~$2~, ..., ~$N~, or
1937 relative to the current column (i.e., the column of the field which is
1938 being computed) like ~$+1~ or ~$-2~.  ~$<~ and ~$>~ are immutable
1939 references to the first and last column, respectively, and you can use
1940 ~$>>>~ to indicate the third column from the right.
1942 The row specification only counts data lines and ignores horizontal
1943 separator lines (hlines).  Like with columns, you can use absolute row
1944 numbers ~@1~, ~@2~, ..., ~@N~, and row numbers relative to the current
1945 row like ~@+3~ or ~@-1~.  ~@<~ and ~@>~ are immutable references the
1946 first and last row in the table, respectively.[fn:26] You may also
1947 specify the row relative to one of the hlines: ~@I~ refers to the
1948 first hline, ~@II~ to the second, etc.  ~@-I~ refers to the first such
1949 line above the current line, ~@+I~ to the first such line below the
1950 current line.  You can also write ~@III+2~ which is the second data
1951 line after the third hline in the table.
1953 ~@0~ and ~$0~ refer to the current row and column, respectively, i.e.,
1954 to the row/column for the field being computed.  Also, if you omit
1955 either the column or the row part of the reference, the current
1956 row/column is implied.
1958 Org's references with /unsigned/ numbers are fixed references in the
1959 sense that if you use the same reference in the formula for two
1960 different fields, the same field will be referenced each time.  Org's
1961 references with /signed/ numbers are floating references because the
1962 same reference operator can reference different fields depending on
1963 the field being calculated by the formula.
1965 Here are a few examples:
1967 #+attr_texinfo: :table-type table :indic @code
1968   - @2$3 :: 2nd row, 3rd column (same as ~C2~)
1969   - $5 :: column 5 in the current row (same as ~E&~)
1970   - @2 :: current column, row 2
1971   - @-1$-3 :: the field one row up, three columns to the left
1972   - @-I$2 :: field just under hline above current row, column 2
1973   - @>$5 :: field in the last row, in column 5
1975 **** Range references
1976      :PROPERTIES:
1977      :DESCRIPTION: Refer to a range of fields
1978      :END:
1979 #+cindex: range references
1980 #+cindex: references, to ranges
1982 You may reference a rectangular range of fields by specifying two
1983 field references connected by two dots ~..~.  If both fields are in
1984 the current row, you may simply use ~$2..$7~, but if at least one
1985 field is in a different row, you need to use the general ~@row$column~
1986 format at least for the first field (i.e., the reference must start
1987 with ~@~ in order to be interpreted correctly).  Examples:
1989 #+attr_texinfo: :table-type table :indic @code
1990   - $1..$3      :: first three fields in the current row
1991   - $P..$Q      :: range, using column names (see under Advanced)
1992   - $<<<..$>>   :: start in third column, continue to the one but last
1993   - @2$1..@4$3  ::  six fields between these two fields (same as
1994                    ~A2..C4~)
1995   - @-1$-2..@-1 :: three numbers from the column to the left, 2 up to
1996                    current row
1997   - @I..II      ::  between first and second hline, short for ~@I..@II~
2000 {{{noindent}}} Range references return a vector of values that can be
2001 fed into Calc vector functions.  Empty fields in ranges are normally
2002 suppressed, so that the vector contains only the non-empty fields (but
2003 see the ~E~ mode switch below).  If there are no non-empty fields,
2004 ~[0]~ is returned to avoid syntax errors in formulas.
2006 **** Field coordinates in formulas
2007      :PROPERTIES:
2008      :DESCRIPTION: Refer to fields in Lisp or Calc
2009      :END:
2010 #+cindex: field coordinates
2011 #+cindex: coordinates, of field
2012 #+cindex: row, of field coordinates
2013 #+cindex: column, of field coordinates
2015 For Calc formulas and Lisp formulas ~@#~ and ~$#~ can be used to get
2016 the row or column number of the field where the formula result goes.
2017 The traditional Lisp formula equivalents are ~org-table-current-dline~
2018 and ~org-table-current-column~.  Examples:
2020 #+attr_texinfo: :table-type table :indic @code
2021   - if(@# % 2, $#, string("")) :: column number on odd lines only
2022   - $3 = remote(FOO, @#$2)    :: copy column 2 from table FOO into
2023        column 3 of the current table
2025 {{{noindent}}} For the second example, table FOO must have at least as
2026 many rows as the current table.  Note that this is inefficient for
2027 large number of rows.[fn:27]
2029 **** Named references
2030      :PROPERTIES:
2031      :DESCRIPTION: Name columns or constants
2032      :END:
2033 #+cindex: named references
2034 #+cindex: references, named
2035 #+cindex: name, of column or field
2036 #+cindex: constants, in calculations
2037 #+cindex: #+CONSTANTS
2038 #+vindex: org-table-formula-constants
2040 {{{samp($name)}}} is interpreted as the name of a column, parameter or
2041 constant.  Constants are defined globally through the variable
2042 ~org-table-formula-constants~, and locally (for the file) through a
2043 line like this example:
2045 #+begin_src org
2046   ,#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2047 #+end_src
2049 {{{noindent}}}
2050 #+vindex: constants-unit-system
2051 #+pindex: constants.el
2053 Also, properties (see [[Properties and columns]]) can be used as constants
2054 in table formulas: for a property ~:Xyz:~ use the name ~$PROP_Xyz~,
2055 and the property will be searched in the current outline entry and in
2056 the hierarchy above it.  If you have the {{{file(constants.el)}}}
2057 package, it will also be used to resolve constants, including natural
2058 constants like ~$h~ for Planck's constant, and units like ~$km~ for
2059 kilometers.  Column names and parameters can be specified in special
2060 table lines.  These are described in the section, [[Advanced features]].
2061 All names must start with a letter, and further consist of letters and
2062 numbers.[fn:175]
2064 **** Remote references
2065      :PROPERTIES:
2066      :DESCRIPTION: Refer to information in other tables
2067      :END:
2068 #+cindex: remote references
2069 #+cindex: references, remote
2070 #+cindex: references, to a different table
2071 #+cindex: name, of column or field
2072 #+cindex: constants, in calculations
2073 #+cindex: #+TBLNAME
2075 You may also reference constants, fields and ranges from a different
2076 table, either in the current file or even in a different file.  The
2077 syntax is
2079 #+begin_example
2080    remote(NAME-OR-ID,REF)
2081 #+end_example
2083 {{{noindent}}} where NAME can be the name of a table in the current
2084 file as set by a ~#+TBLNAME: NAME~ line before the table.  It can also
2085 be the ID of an entry, even in a different file, and the reference
2086 then refers to the first table in that entry.  REF is an absolute field
2087 or range reference as described above for example ~@3$3~ or
2088 ~$somename~, valid in the referenced table.
2090 *** Formula syntax for Calc
2091     :PROPERTIES:
2092     :DESCRIPTION: Using Calc to compute stuff
2093     :END:
2094 #+cindex: formula syntax, Calc
2095 #+cindex: syntax, of formulas
2097 A formula can be any algebraic expression understood by the Emacs
2098 {{{file(Calc)}}} package.[fn:28] Before evaluation by ~calc-eval~ (see
2099 [[info:calc#Calling Calc from Your Programs][Calling Calc from Your Lisp Programs]]), variable substitution takes
2100 place according to the rules described above.
2102 #+cindex: vectors, in table calculations
2103 The range vectors can be directly fed into the Calc vector functions
2104 like ~vmean~ and ~vsum~.
2106 #+cindex: format specifier
2107 #+cindex: mode, for @file{calc}
2108 #+vindex: org-calc-default-modes
2110 A formula can contain an optional mode string after a semicolon.  This
2111 string consists of flags to influence Calc and other modes during
2112 execution.  By default, Org uses the standard Calc modes (precision
2113 12, angular units degrees, fraction and symbolic modes off).  The
2114 display format, however, has been changed to ~(float 8)~ to keep
2115 tables compact.  The default settings can be configured using the
2116 variable ~org-calc-default-modes~.
2118 #+attr_texinfo: :table-type table :indic @code
2119   - p20 :: set the internal Calc calculation precision to 20 digits
2120   - n3 s3 e2 f4 :: normal, scientific, engineering, or fixed format of
2121                    the result of Calc passed back to Org.  Calc
2122                    formatting is unlimited in precision as long as the
2123                    Calc calculation precision is greater.
2124   - D R :: angle modes: degrees, radians
2125   - F S :: fraction and symbolic modes
2126   - N :: interpret all fields as numbers, use 0 for non-numbers
2127   - E :: keep empty fields in ranges
2128   - L :: literal
2130 {{{noindent}}} Unless you use large integer numbers or
2131 high-precision-calculation and -display for floating point numbers you
2132 may alternatively provide a ~printf~ format specifier to reformat the
2133 Calc result after it has been passed back to Org instead of letting
2134 Calc already do the formatting.[fn:29] A few examples:
2136 #+attr_texinfo: :table-type table :indic @code
2137   - $1+$2            :: Sum of first and second field
2138   - $1+$2;%.2f       :: Same, format result to two decimals
2139   - exp($2)+exp($1)  :: Math functions can be used
2140   - $0;%.1f          :: Reformat current cell to 1 decimal
2141   - ($3-32)*5/9      :: Degrees F -> C conversion
2142   - $c/$1/$cm        :: Hz -> cm conversion, using
2143        {{{file(constants.el)}}}
2144   - tan($1);Dp3s1    :: Compute in degrees, precision 3, display SCI 1
2145   - sin($1);Dp3%.1e  :: Same, but use ~printf~ specifier for display
2146   - vmean($2..$7)    :: Compute column range mean, using vector
2147        function
2148   - vmean($2..$7);EN :: Same, but treat empty fields as 0
2149   - taylor($3,x=7,2) :: Taylor series of $3, at x=7, second degree
2151 Calc also contains a complete set of logical operations.  For example
2153 #+attr_texinfo: :table-type table :indic @code
2154   - if($1<20,teen,string("")) ::  "teen" if age $1 less than 20, else empty
2157 Note that you can also use two org-specific flags ~T~ and ~t~ for
2158 durations computations [[Duration and time values]].
2160 You can add your own Calc functions defined in Emacs Lisp with
2161 ~defmath~ and use them in formula syntax for Calc.
2163 *** Emacs Lisp forms as formulas
2164     :PROPERTIES:
2165     :DESCRIPTION: Writing formulas in Emacs Lisp
2166     :ALT_TITLE: Formula syntax for Lisp
2167     :END:
2168 #+cindex: Lisp forms, as table formulas
2170 It is also possible to write a formula in Emacs Lisp.  This can be
2171 useful for string manipulation and control structures, if Calc's
2172 functionality is not enough.
2174 If a formula starts with a single-quote followed by an opening
2175 parenthesis, then it is evaluated as a Lisp form.  The evaluation
2176 should return either a string or a number.  Just as with
2177 {{{file(calc)}}} formulas, you can specify modes and a printf format
2178 after a semicolon.
2180 With Emacs Lisp forms, you need to be conscious about the way field
2181 references are interpolated into the form.  By default, a reference
2182 will be interpolated as a Lisp string (in double-quotes) containing
2183 the field.  If you provide the {{{samp(N)}}} mode switch, all
2184 referenced elements will be numbers (non-number fields will be zero)
2185 and interpolated as Lisp numbers, without quotes.  If you provide the
2186 {{{samp(L)}}} flag, all fields will be interpolated literally, without
2187 quotes.  I.e., if you want a reference to be interpreted as a string by
2188 the Lisp form, enclose the reference operator itself in double-quotes,
2189 like ~"$3"~.  Ranges are inserted as space-separated fields, so you can
2190 embed them in list or vector syntax.
2192 Here are a few examples---note how the {{{samp(N)}}} mode is used when
2193 we do computations in Lisp.
2195 Swap the first two characters of the content of column 1:
2196 #+header: :exports code
2197 #+header: :eval no
2198 #+begin_src emacs-lisp
2199   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2200 #+end_src
2202 Add columns 1 and 2, equivalent to Calc's ~$1+$2~:
2203 #+header: :exports code
2204 #+header: :eval no
2205 #+begin_src emacs-lisp
2206   '(+ $1 $2);N
2207 #+end_src
2209 Compute the sum of columns 1-4, like Calc's ~vsum($1..$4)~}:
2210 #+header: :exports code
2211 #+header: :eval no
2212 #+begin_src emacs-lisp
2213   '(apply '+ '($1..$4));N
2214 #+end_src
2216 *** Duration and time values
2217     :PROPERTIES:
2218     :DESCRIPTION: How to compute duration and time values
2219     :END:
2220 #+cindex: Duration, computing
2221 #+cindex: Time, computing
2222 #+vindex: org-table-duration-custom-format
2224 If you want to compute time values use the ~T~ flag, either in Calc
2225 formulas or Elisp formulas:
2227 #+begin_example
2228    |  Task 1 |   Task 2 |    Total |
2229    |---------+----------+----------|
2230    |    2:12 |     1:47 | 03:59:00 |
2231    | 3:02:20 | -2:07:00 |     0.92 |
2232    #+TBLFM: @2$3=$1+$2;T::@3$3=$1+$2;t
2233 #+end_example
2235 Input duration values must be of the form ~[HH:MM[:SS]~, where seconds
2236 are optional.  With the ~T~ flag, computed durations will be displayed
2237 as ~HH:MM:SS~ (see the first formula above).  With the ~t~ flag,
2238 computed durations will be displayed according to the value of the
2239 variable ~org-table-duration-custom-format~, which defaults to
2240 ~'hours~ and will display the result as a fraction of hours (see the
2241 second formula in the example above).
2243 Negative duration values can be manipulated as well, and integers will
2244 be considered as seconds in addition and subtraction.
2246 *** Field and range formulas
2247     :PROPERTIES:
2248     :DESCRIPTION: Formulas for specific (ranges of) fields
2249     :END:
2250 #+cindex: field formula
2251 #+cindex: range formula
2252 #+cindex: formula, for individual table field
2253 #+cindex: formula, for range of fields
2255 To assign a formula to a particular field, type it directly into the
2256 field, preceded by ~:=~, for example ~vsum(@II..III)~.  When you press
2257 {{{key(TAB)}}} or {{{key(RET)}}} or {{{kbd(C-c C-c)}}} with the cursor
2258 still in the field, the formula will be stored as the formula for this
2259 field, evaluated, and the current field will be replaced with the
2260 result.
2262 #+cindex: #+TBLFM
2263 Formulas are stored in a special line starting with ~#+TBLFM:~
2264 directly below the table.  If you type the equation in the fourth field
2265 of the third data line in the table, the formula will look like
2266 ~@3$4=$1+$2~.  When inserting/deleting/swapping column and rows with
2267 the appropriate commands, /absolute references/ (but not relative
2268 ones) in stored formulas are modified in order to still reference the
2269 same field.  To avoid this from happening, in particular in range
2270 references, anchor ranges at the table borders (using ~@<~, ~@>~,
2271 ~$<~, ~$>~), or at hlines using the ~@I~ notation.  Automatic
2272 adaptation of field references does of course not happen if you edit
2273 the table structure with normal editing commands---then you must fix
2274 the equations yourself.
2276 Instead of typing an equation into the field, you may also use the
2277 following command
2279 #+attr_texinfo: :table-type table :indic @asis
2280   - {{{kbd(C-u C-c =)}}}, ~org-table-eval-formula~ :: Install a new
2281        formula for the current field.  The command prompts for a
2282        formula with default taken from the {{{samp(#+TBLFM:)}}} line,
2283        applies it to the current field, and stores it.
2285        #+kindex: C-u C-c =
2286        #+findex: org-table-eval-formula
2287 The left-hand side of a formula can also be a special expression in
2288 order to assign the formula to a number of different fields.  There is
2289 no keyboard shortcut to enter such range formulas.  To add them, use
2290 the formula editor (see [[Editing and debugging formulas]]) or edit the
2291 ~#+TBLFM:~ line directly.
2293 #+attr_texinfo: :table-type table :indic @code
2294   - $2= :: Column formula, valid for the entire column.  This is so
2295            common that Org treats these formulas in a special way, see
2296            [[Column formulas]].
2297   - @3= :: Row formula, applies to all fields in the specified row.
2298             ~@@>=~ means the last row.
2299   - @1$2..@4$3= :: Range formula, applies to all fields in the given
2300                      rectangular range.  This can also be used to
2301                      assign a formula to some but not all fields in a
2302                      row.
2303   - $name= :: Named field, see [[Advanced features]].
2305 *** Column formulas
2306     :PROPERTIES:
2307     :DESCRIPTION: Formulas valid for an entire column
2308     :END:
2309 #+cindex: column formula
2310 #+cindex: formula, for table column
2312 When you assign a formula to a simple column reference like ~$3=~, the
2313 same formula will be used in all fields of that column, with the
2314 following very convenient exceptions:
2316   -  If the table contains horizontal separator hlines with rows above
2317      and below, everything before the first such hline is considered
2318      part of the table /header/ and will not be modified by column
2319      formulas.  Therefore a header is mandatory when you use column
2320      formulas and want to add hlines to group rows, like for example
2321      to separate a total row at the bottom from the summand rows
2322      above.
2324   -  Fields that already get a value from a field/range formula will
2325      be left alone by column formulas.  These conditions make column
2326      formulas very easy to use.
2328 To assign a formula to a column, type it directly into any field in
2329 the column, preceded by an equal sign, like {{{samp(=$1+$2)}}}.  When
2330 you press {{{key(TAB)}}} or {{{key(RET)}}} or {{{kbd(C-c C-c)}}} with
2331 the cursor still in the field, the formula will be stored as the
2332 formula for the current column, evaluated and the current field
2333 replaced with the result.  If the field contains only {{{samp(=)}}},
2334 the previously stored formula for this column is used.  For each
2335 column, Org will only remember the most recently used formula.  In the
2336 {{{samp(#+TBLFM:)}}} line, column formulas will look like
2337 {{{samp($4=$1+$2)}}}.  The left-hand side of a column formula can not
2338 be the name of column, it must be the numeric column reference or
2339 ~$>~.
2341 Instead of typing an equation into the field, you may also use the
2342 following command:
2344 #+attr_texinfo: :table-type table :indic @asis
2345   - {{{kbd(C-c =)}}}, ~org-table-eval-formula~ :: Install a new formula
2346        for the current column and replace current field with the
2347        result of the formula.  The command prompts for a formula, with
2348        default taken from the {{{samp(#+TBLFM)}}} line, applies it to
2349        the current field and stores it.  With a numeric prefix
2350        argument(e.g., {{{kbd(C-5 C-c =)}}}) the command will apply it
2351        to that many consecutive fields in the current column.
2353        #+kindex: C-c =
2354        #+findex: org-table-eval-formula
2355 *** Lookup functions
2356     :PROPERTIES:
2357     :DESCRIPTION: Lookup functions for searching tables
2358     :END:
2359 #+cindex: lookup functions in tables
2360 #+cindex: table lookup functions
2362 Org has three predefined Emacs Lisp functions for lookups in tables.
2364 #+attr_texinfo: :table-type table :indic @code
2365   - (org-lookup-first VAL S-LIST R-LIST &optional PREDICATE) :: Searches
2366        for the first element ~S~ in list ~S-LIST~ for which
2368        #+findex: org-lookup-first
2370        #+header: :exports code
2371        #+header: :eval no
2372        #+begin_src emacs-lisp
2373          (PREDICATE VAL S)
2374        #+end_src
2375        is ~t~; returns the value from the corresponding position in
2376        list ~R-LIST~.  The default ~PREDICATE~ is ~equal~.  Note that
2377        the parameters ~VAL~ and ~S~ are passed to ~PREDICATE~ in the
2378        same order as the correspoding parameters are in the call to
2379        ~org-lookup-first~, where ~VAL~ precedes ~S-LIST~.  If ~R-LIST~
2380        is ~nil~, the matching element ~S~ of ~S-LIST~ is returned.
2381   - (org-lookup-last VAL S-LIST R-LIST &optional PREDICATE) :: Similar
2382        to ~org-lookup-first~ above, but searches for the /last/
2383        element for which ~PREDICATE~ is ~t~.
2385        #+findex: org-lookup-last
2386   - (org-lookup-all VAL S-LIST R-LIST &optional PREDICATE) :: Similar
2387        to ~org-lookup-first~, but searches for /all/ elements for
2388        which ~PREDICATE~ is ~t~, and returns /all/ corresponding
2389        values.  This function can not be used by itself in a formula,
2390        because it returns a list of values.  However, powerful lookups
2391        can be built when this function is combined with other Emacs
2392        Lisp functions.
2394        #+findex: org-lookup-all
2396 If the ranges used in these functions contain empty fields, the ~E~
2397 mode for the formula should usually be specified: otherwise empty
2398 fields will not be included in ~S-LIST~ and/or ~R-LIST~ which can, for
2399 example, result in an incorrect mapping from an element of ~S-LIST~ to
2400 the corresponding element of ~R-LIST~.
2402 These three functions can be used to implement associative arrays,
2403 count matching cells, rank results, group data, etc.  For practical
2404 examples see [[http://orgmode.org/worg/org-tutorials/org-lookups.html][this tutorial on Worg]].
2406 *** Editing and debugging formulas
2407     :PROPERTIES:
2408     :DESCRIPTION: Fixing formulas
2409     :END:
2410 #+cindex: formula editing
2411 #+cindex: editing, of table formulas
2413 #+vindex: org-table-use-standard-references You can edit
2414 individual formulas in the minibuffer or directly in the field.  Org
2415 can also prepare a special buffer with all active formulas of a table.
2416 When offering a formula for editing, Org converts references to the
2417 standard format (like ~B3~ or ~D&~) if possible.  If you prefer to
2418 only work with the internal format (like ~@3$2~ or ~$4~), configure
2419 the variable ~org-table-use-standard-references~.
2421 #+attr_texinfo: :table-type table :indic @asis
2422   - {{{kbd(C-c =)}}} or {{{kbd(C-u C-c =)}}}, ~org-table-eval-formula~ ::
2424        Edit the formula associated with the current column/field in the
2425        minibuffer.  See [[Column formulas]], and [[Field and range formulas]].
2427        #+kindex: C-c =
2428        #+kindex: C-u C-c =
2429        #+findex: org-table-eval-formula
2430   - {{{kbd(C-u C-u C-c =)}}}, ~org-table-eval-formula~ :: Re-insert the
2431        active formula (either a field formula, or a column formula)
2432        into the current field, so that you can edit it directly in the
2433        field.  The advantage over editing in the minibuffer is that
2434        you can use the command {{{kbd(C-c ?)}}}.
2436        #+kindex: C-u C-u C-c =
2437        #+findex: org-table-eval-formula
2439   - {{{kbd(C-c ?)}}}, ~org-table-field-info~ :: While editing a formula
2440        in a table field, highlight the field(s) referenced by the
2441        reference at the cursor position in the formula.
2443        #+kindex: C-c ?
2444        #+findex: org-table-field-info
2446   - {{{kbd(C-c })}}}, ~org-table-toggle-coordinate-overlays~ :: Toggle
2447        the display of row and column numbers for a table, using
2448        overlays ({{{command(org-table-toggle-coordinate-overlays)}}}).
2449        These are updated each time the table is aligned; you can force
2450        it with {{{kbd(C-c C-c)}}}.
2452        #+kindex: C-c @}
2453        #+findex: org-table-toggle-coordinate-overlays
2455   - {{{kbd(C-c {)}}}, ~org-table-toggle-formula-debugger~ :: Toggle
2456        the formula debugger on and off.  See below.
2458        #+kindex: C-c @{
2459        #+findex: org-table-toggle-formula-debugger
2461   - {{{kbd(C-c ')}}}, ~org-table-edit-formulas~ :: Edit all formulas
2462        for the current table in a special buffer, where the formulas
2463        will be displayed one per line.  If the current field has an
2464        active formula, the cursor in the formula editor will mark it.
2465        While inside the special buffer, Org will automatically
2466        highlight any field or range reference at the cursor position.
2467        You may edit, remove and add formulas, and use the following
2468        commands:
2470        #+kindex: C-c '
2471        #+findex: org-table-edit-formulas
2473 #+attr_texinfo: :table-type table :indic @asis
2474   - {{{kbd(C-c C-c)}}} or {{{kbd(C-x C-s)}}}, ~org-table-fedit-finish~ :: 
2476        Exit the formula editor and store the modified formulas.  With
2477        {{{kbd(C-u)}}} prefix, also apply the new formulas to the
2478        entire table.
2480        #+kindex: C-x C-s
2481        #+kindex: C-c C-c
2482        #+findex: org-table-fedit-finish
2483   - {{{kbd(C-c C-q)}}}, ~org-table-fedit-abort~ :: Exit the formula
2484        editor without installing changes.
2486        #+kindex: C-c C-q
2487        #+findex: org-table-fedit-abort
2488   - {{{kbd(C-c C-r)}}}, ~org-table-fedit-toggle-ref-type~ :: Toggle all
2489        references in the formula editor between standard (like ~B3~)
2490        and internal (like ~@3$2~).
2492        #+kindex: C-c C-r
2493        #+findex: org-table-fedit-toggle-ref-type
2494   - {{{key(TAB)}}}, ~org-table-fedit-lisp-indent~ :: Pretty-print or
2495        indent Lisp formula at point.  When in a line containing a Lisp
2496        formula, format the formula according to Emacs Lisp rules.
2497        Another {{{key(TAB)}}} collapses the formula back again.  In
2498        the open formula, {{{key(TAB)}}} re-indents just like in Emacs
2499        Lisp mode.
2501        #+kindex: TAB
2502        #+findex: org-table-fedit-lisp-indent
2503   - {{{kbdkey(M-,TAB)}}}, ~lisp-complete-symbol~ :: Complete Lisp
2504        symbols, just like in Emacs Lisp mode.
2506        #+kindex: M-TAB
2507        #+findex: lisp-complete-symbol
2508   - {{{kbdkey(S-,up)}}}/{{{key(down)}}}/{{{key(left)}}}/{{{key(right)}}} :: Shift
2509        the reference at point.  For example, if the reference is ~B3~
2510        and you press {{{kbdkey(S-,right)}}}, it will become ~C3~.
2511        This also works for relative references and for hline
2512        references.
2514        #+kindex: S-up
2515        #+kindex: S-down
2516        #+kindex: S-left
2517        #+kindex: S-right
2518        #+findex: org-table-fedit-ref-up
2519        #+findex: org-table-fedit-ref-down
2520        #+findex: org-table-fedit-ref-left
2521        #+findex: org-table-fedit-ref-right
2522   - {{{kbdkey(M-S-,up)}}}, ~org-table-fedit-line-up~ ::
2524        Move the test line for column formulas up in the Org buffer.
2526        #+kindex: M-S-up
2527        #+findex: org-table-fedit-line-up
2529   - {{{kbdkey(M-S-,down)}}}, ~org-table-fedit-line-down~ ::
2531        Move the test line for column formulas down in the Org buffer.
2533        #+kindex: M-S-down
2534        #+findex: org-table-fedit-line-down
2536   - {{{kbdkey(M-,up)}}}, ~org-table-fedit-scroll-up~ ::
2538        Scroll up the window displaying the table.
2540        #+kindex: M-up
2541        #+findex: org-table-fedit-scroll-up
2543   - {{{kbdkey(M-,down)}}}, ~org-table-fedit-scroll-down~ ::
2545        Scroll down the window displaying the table.
2547        #+kindex: M-down
2548        #+findex: org-table-fedit-scroll-down
2550   - {{{kbd(C-c })}}} :: Turn the coordinate grid in the table on and
2551        off.
2553        #+kindex: C-c @@
2554        #+findex: org-table-toggle-coordinate-overlays
2556 Making a table field blank does not remove the formula associated with
2557 the field, because that is stored in a different line (the
2558 {{{samp(#+TBLFM)}}} line)---during the next recalculation the field
2559 will be filled again.  To remove a formula from a field, you have to
2560 give an empty reply when prompted for the formula, or to edit the
2561 {{{samp(#+TBLFM)}}} line.
2563 #+kindex: C-c C-c
2564 You may edit the {{{samp(#+TBLFM)}}} directly and re-apply the changed
2565 equations with {{{kbd(C-c C-c)}}} in that line or with the normal
2566 recalculation commands in the table.
2568 *** Debugging formulas
2569     :PROPERTIES:
2570     :DESCRIPTION: Help fixing formulas
2571     :END:
2573 #+cindex: formula debugging
2574 #+cindex: debugging, of table formulas
2576 When the evaluation of a formula leads to an error, the field content
2577 becomes the string {{{samp(#ERROR)}}}.  If you would like see what is
2578 going on during variable substitution and calculation in order to find
2579 a bug, turn on formula debugging in the ~Tbl~ menu and repeat the
2580 calculation, for example by pressing {{{kbdspckey(C-u C-u C-c =,RET)}}}
2581 in a field.  Detailed information will be displayed.
2583 *** Updating the table
2584     :PROPERTIES:
2585     :DESCRIPTION: Recomputing all dependent fields
2586     :END:
2587 #+cindex: recomputing table fields
2588 #+cindex: updating, table
2590 Recalculation of a table is normally not automatic, but needs to be
2591 triggered by a command.  See [[Advanced features]], for a way to make
2592 recalculation at least semi-automatic.
2594 In order to recalculate a line of a table or the entire table, use the
2595 following commands:
2597 #+attr_texinfo: :table-type table :indic @asis
2598   - {{{kbd(C-c *)}}}, ~org-table-recalculate~ :: Recalculate the
2599        current row by first applying the stored column formulas from
2600        left to right, and all field/range formulas in the current row.
2602        #+kindex: C-c *
2603        #+findex: org-table-recalculate
2604   - {{{kbd(C-u C-c *)}}} or {{{kbd(C-u C-c C-c)}}} :: Recompute the
2605        entire table, line by line.  Any lines before the first hline
2606        are left alone, assuming that these are part of the table
2607        header.
2609        #+kindex: C-u C-c *
2610        #+kindex: C-u C-c C-c
2611   - {{{kbd(C-u C-u C-c *)}}} or {{{kbd(C-u C-u C-c C-c)}}}, ~org-table-iterate~ ::
2612        
2613        Iterate the table by recomputing it until no further changes
2614        occur.  This may be necessary if some computed fields use the
2615        value of other fields that are computed /later/ in the
2616        calculation sequence.
2618        #+kindex: C-u C-u C-c *
2619        #+kindex: C-u C-u C-c C-c
2620        #+findex: org-table-iterate
2621   - {{{kbd(M-x org-table-recalculate-buffer-tables)}}} :: Recompute
2622        all tables in the current buffer.
2624        #+findex: org-table-recalculate-buffer-tables
2625   - {{{kbd(M-x org-table-iterate-buffer-tables)}}} :: Iterate all
2626        tables in the current buffer, in order to converge
2627        table-to-table dependencies.
2629        #+findex: org-table-iterate-buffer-tables
2630 *** Advanced features
2631     :PROPERTIES:
2632     :DESCRIPTION: Field and column names, parameters, and automatic recalc
2633     :END:
2634 If you want the recalculation of fields to happen automatically, or if
2635 you want to be able to assign /names/ to fields and columns,
2636 you need to reserve the first column of the table for special marking
2637 characters.[fn:30]
2639 #+attr_texinfo: :table-type table :indic @asis
2640   - {{{kbd(C-#)}}}, ~org-table-rotate-recalc-marks~ :: Rotate the
2641        calculation mark in first column through the states {{{samp( )}}}, {{{samp(#)}}}, {{{samp(*)}}}, {{{samp(!)}}},
2642        {{{samp($)}}}.  When there is an active region, change all
2643        marks in the region.
2645        #+kindex: C-#
2646        #+findex: org-table-rotate-recalc-marks
2647 Here is an example of a table that collects exam results of students
2648 and makes use of these features:
2650 #+begin_src org
2651   |---+---------+--------+--------+--------+-------+------|
2652   |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2653   |---+---------+--------+--------+--------+-------+------|
2654   | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2655   | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2656   | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2657   |---+---------+--------+--------+--------+-------+------|
2658   | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2659   | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2660   |---+---------+--------+--------+--------+-------+------|
2661   |   | Average |        |        |        |  25.0 |      |
2662   | ^ |         |        |        |        |    at |      |
2663   | $ | max=50  |        |        |        |       |      |
2664   |---+---------+--------+--------+--------+-------+------|
2665   ,#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@-II..@-I);%.1f
2666 #+end_src
2668 {{{noindent}}} Important: please note that for these special tables,
2669 recalculating the table with {{{kbd(C-u C-c *)}}} will only affect
2670 rows that are marked ~#~ or ~*~, and fields that
2671 have a formula assigned to the field itself.  The column formulas are
2672 not applied in rows with empty first field.
2674 #+cindex: marking characters, tables
2675 The marking characters have the following meaning:
2676 #+attr_texinfo: :table-type table :indic @samp
2677   - ! :: The fields in this line define names for the columns, so that
2678          you may refer to a column as {{{samp($Tot)}}} instead of
2679          {{{samp($6)}}}.
2680   - ^ :: This row defines names for the fields @emph{above} the row.
2681          With such a definition, any formula in the table may use
2682          {{{samp($m1)}}} to refer to the value {{{samp(10)}}}.  Also,
2683          if you assign a formula to a names field, it will be stored
2684          as ~$name= ...~.
2685   - _ :: Similar to {{{samp(^)}}}, but defines names for the fields in
2686          the row /below/.
2687   - $ :: Fields in this row can define /parameters/ for formulas.  For
2688          example, if a field in a {{{samp($)}}} row contains
2689          {{{samp(max=50)}}}, then formulas in this table can refer to
2690          the value 50 using {{{samp($max)}}}.  Parameters work exactly
2691          like constants, only that they can be defined on a per-table
2692          basis.
2693   - # :: Fields in this row are automatically recalculated when
2694          pressing {{{key(TAB)}}} or {{{key(RET)}}} or
2695          {{{kbdkey(S-,TAB)}}} in this row.  Also, this row is selected
2696          for a global recalculation with {{{kbd(C-u C-c *)}}}.
2697          Unmarked lines will be left alone by this command.
2698   - * :: Selects this line for global recalculation with {{{kbd(C-u C-c *)}}}, but not for automatic recalculation.  Use this
2699          when automatic recalculation slows down editing too much.
2700   - \nbsp :: Unmarked lines are exempt from recalculation with {{{kbd(C-u C-c *)}}}.  All lines that should be recalculated should be
2701        marked with ~#~ or ~*~.
2702   - / :: Do not export this line.  Useful for lines that contain the
2703          narrowing ~<N>~ markers or column group markers.
2706 Finally, just to whet your appetite for what can be done with the
2707 fantastic {{{file(calc.el)}}} package, here is a table that computes
2708 the Taylor series of degree ~n~ at location ~x~ for a couple of
2709 functions.
2711 #+begin_src org
2712   |---+-------------+---+-----+--------------------------------------|
2713   |   | Func        | n | x   | Result                               |
2714   |---+-------------+---+-----+--------------------------------------|
2715   | # | exp(x)      | 1 | x   | 1 + x                                |
2716   | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
2717   | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
2718   | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2719   | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
2720   | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
2721   |---+-------------+---+-----+--------------------------------------|
2722   ,#+TBLFM: $5=taylor($2,$4,$3);n3
2723 #+end_src
2725 ** Org-Plot
2726    :PROPERTIES:
2727    :DESCRIPTION: Plotting from Org tables
2728    :END:
2729 #+cindex: graph, in tables
2730 #+cindex: plot tables using Gnuplot
2731 #+cindex: #+PLOT
2733 Org-Plot can produce 2D and 3D graphs of information stored in org
2734 tables using [[http://www.gnuplot.info/][Gnuplot]] and [[http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html][gnuplot-mode]].  To see this in action, ensure
2735 that you have both Gnuplot and Gnuplot-mode installed on your system,
2736 then call ~org-plot/gnuplot~ on the following table.
2738 #+begin_src org
2739   ,#+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2740   | Sede      | Max cites | H-index |
2741   |-----------+-----------+---------|
2742   | Chile     |    257.72 |   21.39 |
2743   | Leeds     |    165.77 |   19.68 |
2744   | Sao Paolo |     71.00 |   11.50 |
2745   | Stockholm |    134.19 |   14.33 |
2746   | Morels    |    257.56 |   17.67 |
2747 #+end_src
2749 Notice that Org Plot is smart enough to apply the table's headers as
2750 labels.  Further control over the labels, type, content, and appearance
2751 of plots can be exercised through the ~#+PLOT:~ lines preceding a
2752 table.  See below for a complete list of Org-plot options.  For more
2753 information and examples see the [[http://orgmode.org/worg/org-tutorials/org-plot.html][Org-plot tutorial]].
2755 Org-Plot recognizes the following options:
2757 #+attr_texinfo: :table-type table :indic @code
2758   - set :: Specify any {{{command(gnuplot)}}} option to be set when
2759            graphing.
2760   - title :: Specify the title of the plot.
2761   - ind :: Specify which column of the table to use as the ~x~ axis.
2762   - deps :: Specify the columns to graph as a Lisp style list,
2763             surrounded by parentheses and separated by spaces for
2764             example ~dep:(3 4)~ to graph the third and fourth columns
2765             (defaults to graphing all other columns aside from the
2766             ~ind~ column).
2767   - type :: Specify whether the plot will be ~2d~, ~3d~, or ~grid~.
2768   - with :: Specify a ~with~ option to be inserted for every col being
2769             plotted (e.g., ~lines~, ~points~, ~boxes~, ~impulses~,
2770             etc.).  Defaults to ~lines~.
2771   - file :: If you want to plot to a file, specify
2772             ~"{path/to/desired/output-file}"~.
2773   - labels :: List of labels to be used for the ~deps~ (defaults to
2774               the column headers if they exist).
2775   - line :: Specify an entire line to be inserted in the Gnuplot
2776             script.
2777   - map :: When plotting ~3d~ or ~grid~ types, set this to ~t~ to
2778            graph a flat mapping rather than a ~3d~ slope.
2779   - timefmt ::  Specify format of Org mode timestamps as they will be
2780                 parsed by Gnuplot.  Defaults to
2781                 {{{samp(%Y-%m-%d-%H:%M:%S)}}}.
2782   - script :: If you want total control, you can specify a script file
2783               (place the file name between double-quotes) which will
2784               be used to plot.  Before plotting, every instance of
2785               ~$datafile~ in the specified script will be replaced
2786               with the path to the generated data file.  Note: even if
2787               you set this option, you may still want to specify the
2788               plot type, as that can impact the content of the data
2789               file.
2791 * Hyperlinks
2792   :PROPERTIES:
2793   :DESCRIPTION: Notes in context
2794   :ORDERED:  t
2795   :END:
2796 #+cindex: hyperlinks
2798 Like HTML, Org provides links inside a file, external links to
2799 other files, Usenet articles, emails, and much more.
2801 ** Link format
2802    :PROPERTIES:
2803    :DESCRIPTION: How links in Org are formatted
2804    :END:
2805 #+cindex: link format
2806 #+cindex: format, of links
2808 Org will recognize plain URL-like links and activate them as clickable
2809 links.  The general link format, however, looks like this:
2811 #+begin_src org
2812   [[link][description]] or  [[link]]
2813 #+end_src
2816 {{{noindent}}} Once a link in the buffer is complete (all brackets
2817 present), Org will change the display so that {{{samp(description)}}}
2818 is displayed instead of ~[[link][description]]~ and {{{samp(link)}}}
2819 is displayed instead of ~[[link]]~.  Links will be highlighted
2820 in the face ~org-link~, which by default is an underlined face.  You
2821 can directly edit the visible part of a link.  Note that this can be
2822 either the {{{samp(link)}}} part (if there is no description) or the
2823 {{{samp(description)}}} part.  To edit also the invisible
2824 {{{samp(link)}}} part, use {{{kbd(C-c C-l)}}} with the cursor on the
2825 link.
2827 If you place the cursor at the beginning or just behind the end of the
2828 displayed text and press {{{key(BACKSPACE)}}}, you will remove the
2829 (invisible) bracket at that location.  This makes the link incomplete
2830 and the internals are again displayed as plain text.  Inserting the
2831 missing bracket hides the link internals again.  To show the internal
2832 structure of all links, use the menu entry ~Org->Hyperlinks->Literal
2833 links~.
2835 ** Internal links
2836    :PROPERTIES:
2837    :DESCRIPTION: Links to other places in the current file
2838    :END:
2839 #+cindex: internal links
2840 #+cindex: links, internal
2841 #+cindex: targets, for links
2842 #+cindex: property, CUSTOM_ID
2844 If the link does not look like a URL, it is considered to be internal
2845 in the current file.  The most important case is a link like
2846 ~[[#my-custom-id]]~ which will link to the entry with the
2847 ~CUSTOM_ID~ property {{{samp(my-custom-id)}}}.  Such custom IDs are
2848 very good for HTML export (see [[HTML export]]) where they produce pretty
2849 section links.  You are responsible yourself to make sure these custom
2850 IDs are unique in a file.
2852 Links such as the two in the following example:
2854 #+begin_example
2855    [[My Target]] or [[My Target][Find my target]]
2856 #+end_example
2858 {{{noindent}}} lead to a text search in the current file.
2860 The link can be followed with {{{kbd(C-c C-o)}}} when the cursor is on
2861 the link, or with a mouse click (see [[Handling links]]).  Links to custom
2862 IDs will point to the corresponding headline.  The preferred match for
2863 a text link is a /dedicated target/: the same string in double angular
2864 brackets.  Targets may be located anywhere; sometimes it is convenient
2865 to put them into a comment line.  For example
2867 #+begin_src org
2868   # <<My Target>>
2869 #+end_src
2871 {{{noindent}}} In HTML export (see [[HTML export]]), such targets will
2872 become named anchors for direct access through {{{samp(http)}}}
2873 links.[fn:31]
2875 If no dedicated target exists, Org will search for a headline that is
2876 exactly the link text but may also include a TODO keyword and
2877 tags.[fn:32] In non-Org files, the search will look for the words in
2878 the link text.  In the above example the search would be for ~my target~.
2880 Following a link pushes a mark onto Org's own mark ring.  You can
2881 return to the previous position with {{{kbd(C-c &)}}}.  Using this
2882 command several times in direct succession goes back to positions
2883 recorded earlier.
2885 ** Radio targets
2886     :PROPERTIES:
2887     :DESCRIPTION: Automatically create internal links
2888     :END:
2889 #+cindex: radio targets
2890 #+cindex: targets, radio
2891 #+cindex: links, radio targets
2893 Org can automatically turn any occurrences of certain target names in
2894 normal text into a link.  So without explicitly creating a link, the
2895 text connects to the target radioing its position.  Radio targets are
2896 enclosed by triple angular brackets.  For example, a target
2897 ~<<<My Target>>>~ causes each occurrence of ~my target~ in
2898 normal text to become activated as a link.  The Org file is scanned
2899 automatically for radio targets only when the file is first loaded
2900 into Emacs.  To update the target list during editing, press 
2901 {{{kbd(C-c C-c)}}} with the cursor on or at a target.
2903 ** External links
2904    :PROPERTIES:
2905    :DESCRIPTION: URL-like links to the world
2906    :END:
2907 #+cindex: links, external
2908 #+cindex: external links
2909 #+cindex: links, external
2910 #+cindex: Gnus links
2911 #+cindex: BBDB links
2912 #+cindex: IRC links
2913 #+cindex: URL links
2914 #+cindex: file links
2915 #+cindex: VM links
2916 #+cindex: RMAIL links
2917 #+cindex: WANDERLUST links
2918 #+cindex: MH-E links
2919 #+cindex: USENET links
2920 #+cindex: SHELL links
2921 #+cindex: Info links
2922 #+cindex: Elisp links
2924 Org supports links to files, websites, Usenet and email messages, BBDB
2925 database entries and links to both IRC conversations and their logs.
2926 External links are URL-like locators.  They start with a short
2927 identifying string followed by a colon.  There can be no space after
2928 the colon.  The following list shows examples for each link type.
2930 #+attr_texinfo: :table-type table :indic @asis
2931  - ~http://www.astro.uva.nl/~dominik~          :: on the web
2932  - ~doi:10.1000/182~                           :: DOI for an electronic resource
2933  - ~file:/home/dominik/images/jupiter.jpg~     :: file, absolute path
2934  - ~/home/dominik/images/jupiter.jpg~          :: same as above
2935  - ~file:papers/last.pdf~                      :: file, relative path
2936  - ~./papers/last.pdf~                         :: same as above
2937  - ~file:/myself@some.where:papers/last.pdf~   :: file, path on remote machine
2938  - ~/myself@some.where:papers/last.pdf~        :: same as above
2939  - ~file:sometextfile::NNN~                    :: file, jump to line number
2940  - ~file:projects.org~                         :: another Org file
2941  - ~file:projects.org::some words~             :: text search in Org file[fn:33]
2942  - ~file:projects.org::*task title~            :: heading search in Org file
2943  - ~file+sys:/path/to/file~                    :: open via OS, like double-click
2944  - ~file+emacs:/path/to/file~                  :: force opening by Emacs
2945  - ~docview:papers/last.pdf::NNN~              :: open in doc-view mode at page
2946  - ~id:B7423F4D-2E8A-471B-8810-C40F074717E9~   :: Link to heading by ID
2947  - ~news:comp.emacs~                           :: Usenet link
2948  - ~mailto:adent@galaxy.net~                   :: Mail link
2949  - ~vm:folder~                                 :: VM folder link
2950  - ~vm:folder#id~                              :: VM message link
2951  - ~vm://myself@some.where.org/folder#id~      :: VM on remote machine
2952  - ~vm-imap:account:folder~                    :: VM IMAP folder link
2953  - ~vm-imap:account:folder#id~                 :: VM IMAP message link
2954  - ~wl:folder~                                 :: WANDERLUST folder link
2955  - ~wl:folder#id~                              :: WANDERLUST message link
2956  - ~mhe:folder~                                :: MH-E folder link
2957  - ~mhe:folder#id~                             :: MH-E message link
2958  - ~rmail:folder~                              :: RMAIL folder link
2959  - ~rmail:folder#id~                           :: RMAIL message link
2960  - ~gnus:group~                                :: Gnus group link
2961  - ~gnus:group#id~                             :: Gnus article link
2962  - ~bbdb:R.*Stallman~                          :: BBDB link (with regexp)
2963  - ~irc:/irc.com/#emacs/bob~                   :: IRC link
2964  - ~info:org#External links~                   :: Info node link
2965  - ~shell:ls *.org~                            :: A shell command
2966  - ~elisp:org-agenda~                          :: Interactive Elisp command
2967  - ~elisp:(find-file-other-frame "Elisp.org")~ :: Elisp form to evaluate
2970 For customizing Org to add new link types [[Adding hyperlink types]].
2972 A link should be enclosed in double brackets and may contain a
2973 descriptive text to be displayed instead of the URL (see [[Link format]]),
2974 for example:
2976 #+begin_src org
2977   [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2978 #+end_src
2980 {{{noindent}}} If the description is a file name or URL that points to
2981 an image, HTML export (see [[HTML export]]) will inline the image as a
2982 clickable button.  If there is no description at all and the link
2983 points to an image, that image will be inlined into the exported HTML
2984 file.
2986 #+cindex: square brackets, around links
2987 #+cindex: plain text external links
2989 Org also finds external links in the normal text and activates them as
2990 links.  If spaces must be part of the link (for example in
2991 {{{samp(bbdb:Richard Stallman)}}}), or if you need to remove
2992 ambiguities about the end of the link, enclose them in square
2993 brackets.
2995 ** Handling links
2996    :PROPERTIES:
2997    :DESCRIPTION: URL-like links to the world
2998    :END:
2999 #+cindex: links, handling
3001 Org provides methods to create a link in the correct syntax, to
3002 insert it into an Org file, and to follow the link.
3004 #+attr_texinfo: :table-type table :indic @asis
3005   - {{{kbd(C-c l)}}}, ~org-store-link~ :: Store a link to the current
3006        location.  This is a /global/ command (you must create the key
3007        binding yourself) which can be used in any buffer to create a
3008        link.  The link will be stored for later insertion into an Org
3009        buffer (see below).  What kind of link will be created depends
3010        on the current buffer:
3012        #+cindex: storing links
3013        #+kindex: C-c l
3014        #+findex: org-store-link
3015     - Org mode buffers :: For Org files, if there is a
3016          ~<<target>>~ at the cursor, the link points to the
3017          target.  Otherwise it points to the current headline, which
3018          will also be the description.[fn:34]
3020          #+vindex: org-link-to-org-use-id
3021          #+cindex: property, CUSTOM_ID
3022          #+cindex: property, ID
3024          If the headline has a ~CUSTOM_ID~ property, a link to this
3025          custom ID will be stored.  In addition or alternatively
3026          (depending on the value of ~org-link-to-org-use-id~), a
3027          globally unique ~ID~ property will be created and/or used to
3028          construct a link.[fn:176]  So using this command in Org buffers will
3029          potentially create two links: a human-readable link from the
3030          custom ID, and one that is globally unique and works even if
3031          the entry is moved from file to file.  Later, when inserting
3032          the link, you need to decide which one to use.
3034     - Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus :: Pretty
3035          much all Emacs mail clients are supported.  The link will
3036          point to the current article, or, in some GNUS buffers, to
3037          the group.  The description is constructed from the author
3038          and the subject.
3040     - Web browsers: W3 and W3M :: Here the link will be the current
3041          URL, with the page title as description.
3043     - Contacts: BBDB :: Links created in a BBDB buffer will point to
3044                         the current entry.
3045     - Chat: IRC :: For IRC links, if you set the variable
3046                    ~org-irc-link-to-logs~ to ~t~, a ~file:~
3047                    style link to the relevant point in the logs for
3048                    the current conversation is created.  Otherwise an
3049                    ~irc:/~ style link to the
3050                    user/channel/server under the point will be stored.
3052                    #+vindex: org-irc-link-to-logs
3053                    
3054     - Other files :: For any other files, the link will point to the
3055                      file, with a search string (see [[Search options]])
3056                      pointing to the contents of the current line.  If
3057                      there is an active region, the selected words
3058                      will form the basis of the search string.  If the
3059                      automatically created link is not working
3060                      correctly or accurately enough, you can write
3061                      custom functions to select the search string and
3062                      to do the search for particular file types---see
3063                      [[Custom searches]].  The key binding {{{kbd(C-c l)}}}
3064                      is only a suggestion---see [[Installation]].
3066     - Agenda view :: When the cursor is in an agenda view, the created
3067                      link points to the entry referenced by the
3068                      current line.
3070   - {{{kbd(C-c C-l)}}}, ~org-insert-link~ :: Insert a link.[fn:35] This
3071        prompts for a link to be inserted into the buffer.  You can just
3072        type a link, using text for an internal link, or one of the
3073        link type prefixes mentioned in the examples above.  The link
3074        will be inserted into the buffer, along with a
3075        descriptive text.[fn:36] If some text was selected when this command
3076        is called, the selected text becomes the default description.
3078        #+cindex: link completion
3079        #+cindex: completion, of links
3080        #+cindex: inserting links
3081        #+vindex: org-keep-stored-link-after-insertion
3082        #+kindex: C-c C-l
3083        #+findex: org-insert-link
3084     - Inserting stored links :: All links stored during the current
3085          session are part of the history for this prompt, so you can
3086          access them with {{{key(up)}}} and {{{key(down)}}} (or
3087          {{{kbd(M-p/n)}}}).
3089     - Completion support :: Completion with {{{key(TAB)}}} will help
3090          you to insert valid link prefixes like ~http:~ or
3091          ~ftp:~, including the prefixes defined through link
3092          abbreviations (see [[Link abbreviations]]).  If you press
3093          {{{key(RET)}}} after inserting only the
3094          {{{var(prefix)}}}, Org will offer specific completion
3095          support for some link types.[fn:37] For example, if you type
3096          {{{kbdspckey(file,RET)}}}, file name completion (alternative
3097          access: {{{kbd(C-u C-c C-l)}}}, see below) will be offered,
3098          and after {{{kbdspckey(bbdb,RET)}}} you can complete contact
3099          names.
3101   - {{{kbd(C-u C-c C-l)}}} :: When {{{kbd(C-c C-l)}}} is called with a
3102        {{{kbd(C-u)}}} prefix argument, a link to a file will be
3103        inserted and you may use file name completion to select the
3104        name of the file.  The path to the file is inserted relative to
3105        the directory of the current Org file, if the linked file is in
3106        the current directory or in a sub-directory of it, or if the
3107        path is written relative to the current directory using
3108        {{{samp(../)}}}.  Otherwise an absolute path is used, if
3109        possible with {{{samp(~/)}}} for your home directory.  You can
3110        force an absolute path with two {{{kbd(C-u)}}} prefixes.
3112        #+cindex: file name completion
3113        #+cindex: completion, of file names
3114        #+kindex: C-u C-c C-l
3116   - {{{kbd(C-c C-l)}}} (with cursor on existing link) :: When the
3117        cursor is on an existing link, {{{kbd(C-c C-l)}}} allows you to
3118        edit the link and description parts of the link.
3120        #+cindex: following links
3122     - {{{kbd(C-c C-o)}}}, ~org-open-at-point~ :: Open link at
3123          point.  This will launch a web browser for URLs (using
3124          {{{command(browse-url-at-point)}}}), run
3125          VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for the corresponding
3126          links, and execute the command in a shell link.  When the
3127          cursor is on an internal link, this command runs the
3128          corresponding search.  When the cursor is on a TAG list in a
3129          headline, it creates the corresponding TAGS view.  If the
3130          cursor is on a timestamp, it compiles the agenda for that
3131          date.  Furthermore, it will visit text and remote files in
3132          ~file:~ links with Emacs and select a suitable
3133          application for local non-text files.  Classification of files
3134          is based on file extension only.  See option ~org-file-apps~.
3135          If you want to override the default application and visit the
3136          file with Emacs, use a {{{kbd(C-u)}}} prefix.  If you want to
3137          avoid opening in Emacs, use a {{{kbd(C-u C-u)}}} prefix.  If
3138          the cursor is on a headline, but not on a link, offer all
3139          links in the headline and entry text.  If you want to setup
3140          the frame configuration for following links, customize
3141          ~org-link-frame-setup~.
3143          #+vindex: org-file-apps
3144          #+vindex: org-link-frame-setup
3145          #+kindex: C-c C-o
3146          #+findex: org-open-at-point
3147     - {{{key(RET)}}} :: When ~org-return-follows-link~ is set,
3148                         {{{key(RET)}}} will also follow the link at
3149                         point.
3151                         #+vindex: org-return-follows-link
3152                         #+kindex: RET
3153     - {{{key(mouse-2)}}} or {{{key(mouse-1)}}} :: On links,
3154          {{{kbd(mouse-2)}}} will open the link just as {{{kbd(C-c C-o)}}} would.  Under Emacs 22 and later, {{{kbd(mouse-1)}}}
3155          will also follow a link.
3157          #+kindex: mouse-2
3158          #+kindex: mouse-1
3159     - {{{key(mouse-3)}}} :: Like {{{kbd(mouse-2)}}}, but force file
3160          links to be opened with Emacs, and internal links to be
3161          displayed in another window.[fn:38]
3163          #+vindex: org-display-internal-link-with-indirect-buffer
3164          #+kindex: mouse-3
3165     - {{{kbd(C-c C-x C-v)}}}, ~org-toggle-inline-images~ ::
3166          #+cindex: inlining images
3167          #+cindex: images, inlining
3168          #+vindex: org-startup-with-inline-images
3169          #+cindex: ~inlineimages~, STARTUP keyword
3170          #+cindex: ~noinlineimages~, STARTUP keyword
3171          #+kindex: C-c C-x C-v
3172          #+findex: org-toggle-inline-images
3174          Toggle the inline display of linked images.  Normally this
3175          will only inline images that have no description part in the
3176          link, i.e., images that will also be inlined during export.
3177          When called with a prefix argument, also display images that
3178          do have a link description.  You can ask for inline images to
3179          be displayed at startup by configuring the variable
3180          ~org-startup-with-inline-images~.[fn:177]
3182     - {{{kbd(C-c %)}}}, ~org-mark-ring-push~ ::
3183          #+kindex: C-c %
3184          #+findex: org-mark-ring-push
3185          #+cindex: mark ring
3187          Push the current position onto the mark ring, to be able to
3188          return easily.  Commands following an internal link do this
3189          automatically.
3191     - {{{kbd(C-c &)}}}, ~org-mark-ring-goto~ ::
3192          #+kindex: C-c &
3193          #+findex: org-mark-ring-goto
3194          #+cindex: links, returning to
3196          Jump back to a recorded position.  A position is recorded by
3197          the commands following internal links, and by {{{kbd(C-c %)}}}.  Using this command several times in direct succession
3198          moves through a ring of previously recorded positions.
3200   - {{{kbd(C-c C-x C-n)}}}, ~org-next-link~ ::
3201        @@info:@itemx@@ {{{kbd(C-c C-x C-p)}}}, ~org-previous-link~
3202        #+cindex: links, finding next/previous
3203        
3204        #+kindex: C-c C-x C-p
3205        #+findex: org-previous-link
3206        #+kindex: C-c C-x C-n
3207        #+findex: org-next-link
3209        Move forward/backward to the next link in the buffer.  At the
3210        limit of the buffer, the search fails once, and then wraps
3211        around.  The key bindings for this are really too long; you
3212        might want to bind this also to {{{kbd(C-n)}}} and
3213        {{{kbd(C-p)}}}
3215        #+header: :exports code
3216        #+header: :eval no
3217        #+begin_src emacs-lisp
3218          (add-hook 'org-load-hook
3219                    (lambda ()
3220                      (define-key org-mode-map "\C-n" 'org-next-link)
3221                      (define-key org-mode-map "\C-p" 'org-previous-link)))
3222        #+end_src
3224 ** Using links outside Org
3225    :PROPERTIES:
3226    :DESCRIPTION: Linking from my C source code?
3227    :END:
3229 You can insert and follow links that have Org syntax not only in Org,
3230 but in any Emacs buffer.  For this, you should create two global
3231 commands, like this (please select suitable global keys yourself):
3233 #+header: :exports code
3234 #+header: :eval no
3235 #+begin_src emacs-lisp
3236   (global-set-key "\C-c L" 'org-insert-link-global)
3237   (global-set-key "\C-c o" 'org-open-at-point-global)
3238 #+end_src
3240 ** Link abbreviations
3241    :PROPERTIES:
3242    :DESCRIPTION: Shortcuts for writing complex links
3243    :END:
3244 #+cindex: link abbreviations
3245 #+cindex: abbreviation, links
3247 Long URLs can be cumbersome to type, and often many similar links are
3248 needed in a document.  For this you can use link abbreviations.  An
3249 abbreviated link looks like this
3251 #+begin_src org
3252 [[linkword:tag][description]]
3253 #+end_src
3255 #+vindex: org-link-abbrev-alist
3257 {{{noindent}}} where the tag is optional.  The /linkword/ must be a
3258 word, starting with a letter, followed by letters, numbers,
3259 {{{samp(-)}}}, and {{{samp(_)}}}.  Abbreviations are resolved
3260 according to the information in the variable ~org-link-abbrev-alist~
3261 that relates the linkwords to replacement text.  Here is an example:
3263 #+header: :exports code
3264 #+header: :eval no
3265 #+begin_src emacs-lisp
3266   (setq org-link-abbrev-alist
3267     '(("bugzilla"  . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3268       ("url-to-ja" . "http://translate.google.fr/translate?sl=en&tl=ja&u=%h")
3269       ("google"    . "http://www.google.com/search?q=")
3270       ("gmap"      . "http://maps.google.com/maps?q=%s")
3271       ("omap"      . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3272       ("ads"       . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3273 #+end_src
3275 If the replacement text contains the string {{{samp(%s)}}}, it will be
3276 replaced with the tag.  Using {{{samp(%h)}}} instead of {{{samp(%s)}}}
3277 will url-encode the tag (see the example above, where we need to
3278 encode the URL parameter.)  Using {{{samp(%(my-function))}}} will pass
3279 the tag to a custom function, and replace it by the resulting string.
3281 If the replacement text don't contain any specifier, it will simply be
3282 appended to the string in order to create the link.
3284 Instead of a string, you may also specify a function that will be
3285 called with the tag as the only argument to create the link.
3287 With the above setting, you could link to a specific bug with
3288 ~[[bugzilla:129]]~, search the web for {{{samp(OrgMode)}}} with
3289 ~[[google:OrgMode]]~, show the map location of the Free Software
3290 Foundation ~[[gmap:51 Franklin Street, Boston]]~ or of Carsten office
3291 ~[[omap:Science Park 904, Amsterdam, The Netherlands]]~ and find out what
3292 the Org author is doing besides Emacs hacking with ~[[ads:Dominik,C]]~.
3294 If you need special abbreviations just for a single Org buffer, you
3295 can define them in the file with
3297 #+cindex: #+LINK
3298 #+begin_src org
3299   ,#+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3300   ,#+LINK: google    http://www.google.com/search?q=%s
3301 #+end_src
3303 {{{noindent}}} In-buffer completion (see [[Completion]]) can be used
3304 after {{{samp([)}}} to complete link abbreviations.  You may also
3305 define a function that implements special (e.g., completion) support
3306 for inserting such a link with {{{kbd(C-c C-l)}}}.  Such a function
3307 should not accept any arguments, and return the full link with
3308 prefix.  You can set the link completion function like this:
3310 #+BEGIN_SRC emacs-lisp
3311 (org-link-set-parameter "type" :complete #'some-completion-function)
3312 #+END_SRC
3314 ** Search options
3315    :PROPERTIES:
3316    :DESCRIPTION: Linking to a specific location
3317    :END:
3318 #+cindex: search option in file links
3319 #+cindex: file links, searching
3321 File links can contain additional information to make Emacs jump to a
3322 particular location in the file when following a link.  This can be a
3323 line number or a search option after a double colon.[fn:39]
3324 For example, when the command {{{kbd(C-c l)}}} creates a link (see
3325 [[Handling links]]) to a file, it encodes the words in the current line as
3326 a search string that can be used to find this line back later when
3327 following the link with {{{kbd(C-c C-o)}}}.
3329 Here is the syntax of the different ways to attach a search to a file
3330 link, together with an explanation:
3332 #+begin_src org
3333   [[file:~/code/main.c::255]]
3334   [[file:~/xx.org::My Target]]
3335   [[file:~/xx.org::*My Target]]
3336   [[file:~/xx.org::#my-custom-id]]
3337   [[file:~/xx.org::/regexp/]]
3338 #+end_src
3340 #+attr_texinfo: :indic @code
3341 - 255 :: Jump to line 255.
3342 - My Target :: Search for a link target ~<<My Target>>~, or do a text search for {{{samp(my target)}}},
3343      similar to the search in internal links, see [[Internal links]].
3344      In HTML export (see [[HTML export]]), such a file link will
3345      become a HTML reference to the corresponding named anchor in the
3346      linked file.
3347 - *My Target :: In an Org file, restrict search to headlines.
3348 - #my-custom-id :: Link to a heading with a ~CUSTOM_ID~ property
3349 - /regexp/ :: Do a regular expression search for ~regexp~.  This
3350                     uses the Emacs command ~occur~ to list all matches
3351                     in a separate window.  If the target file is in
3352                     Org mode, ~org-occur~ is used to create a sparse
3353                     tree with the matches.  @c If the target file is a
3354                     directory, @c ~grep~ will be used to search all
3355                     files in the directory.
3357 As a degenerate case, a file link with an empty file name can be used
3358 to search the current file.  For example, ~[[file:::find me]]~ does a
3359 search for ~find me~ in the current file, just as
3360 ~[[find me]]~ would.
3362 ** Custom searches
3363    :PROPERTIES:
3364    :DESCRIPTION: When the default search is not enough
3365    :END:
3366 #+cindex: custom search strings
3367 #+cindex: search strings, custom
3369 The default mechanism for creating search strings and for doing the
3370 actual search related to a file link may not work correctly in all
3371 cases.  For example, BibTeX database files have many entries like
3372 {{{samp(year="1993")}}} which would not result in good search strings,
3373 because the only unique identification for a BibTeX entry is the
3374 citation key.
3376 #+vindex: org-create-file-search-functions
3377 #+vindex: org-execute-file-search-functions
3379 If you come across such a problem, you can write custom functions to
3380 set the right search string for a particular file type, and to do the
3381 search for the string in the file.  Using ~add-hook~, these functions
3382 need to be added to the hook variables
3383 ~org-create-file-search-functions~ and
3384 ~org-execute-file-search-functions~.  See the docstring for these
3385 variables for more information.  Org actually uses this mechanism for
3386 BibTeX database files, and you can use the corresponding code as an
3387 implementation example.  See the file {{{file(org-bibtex.el)}}}.
3389 * TODO items
3390   :PROPERTIES:
3391   :DESCRIPTION: Every tree branch can be a TODO item
3392   :ALT_TITLE: TODO Items
3393   :END:
3394 #+cindex: TODO items
3396 Org mode does not maintain TODO lists as separate documents.[fn:40]
3397 Instead, TODO items are an integral part of the notes file, because
3398 TODO items usually come up while taking notes! With Org mode, simply
3399 mark any entry in a tree as being a TODO item.  In this way,
3400 information is not duplicated, and the entire context from which the
3401 TODO item emerged is always present.
3403 Of course, this technique for managing TODO items scatters them
3404 throughout your notes file.  Org mode compensates for this by providing
3405 methods to give you an overview of all the things that you have to do.
3407 ** TODO basics
3408    :PROPERTIES:
3409    :DESCRIPTION: Marking and displaying TODO entries
3410    :TITLE:    Basic TODO functionality
3411    :END:
3413 Any headline becomes a TODO item when it starts with the word
3414 {{{samp(TODO)}}}, for example:
3416 #+begin_src org
3417   ,*** TODO Write letter to Sam Fortune
3418 #+end_src
3420 {{{noindent}}} The most important commands to work with TODO entries
3421 are:
3423 #+attr_texinfo: :table-type table :indic @asis
3424 - {{{kbd(C-c C-t)}}}, ~org-todo~ ::
3425   #+kindex: C-c C-t
3426   #+cindex: cycling, of TODO states
3428   Rotate the TODO state of the current item among
3430   #+begin_example
3431      ,-> (unmarked) -> TODO -> DONE --.
3432      '--------------------------------'
3433   #+end_example
3435  The same rotation can also be done ``remotely'' from the timeline and
3436  agenda buffers with the {{{kbd(t)}}} command key (see [[Agenda commands]]).
3438 - {{{kbd(C-u C-c C-t)}}} ::
3439   #+kindex: C-u C-c C-t
3441   Select a specific keyword using completion or (if it has been set up)
3442   the fast selection interface.  For the latter, you need to assign keys
3443   to TODO states, see [[Per-file keywords]], and [[Setting tags]], for
3444   more information.
3446   #+kindex: S-@key{right}
3447   #+kindex: S-@key{left}
3449 - {{{kbdkey(S-,right)}}} {{{kbdkey(S-,left)}}} ::
3451   #+vindex: org-treat-S-cursor-todo-selection-as-state-change
3453      Select the following/preceding TODO state, similar to cycling.
3454      Useful mostly if more than two TODO states are possible 
3455      (see [[TODO extensions]]).  See also [[Conflicts]], for a discussion of the
3456      interaction with ~shift-selection-mode~.  See also the variable
3457      ~org-treat-S-cursor-todo-selection-as-state-change~.
3459 - {{{kbd(C-c / t)}}}, ~org-show-todo-tree~ ::
3460   #+kindex: C-c / t
3462   #+cindex: sparse tree, for TODO
3463   #+vindex: org-todo-keywords
3465   View TODO items in a /sparse tree/ (see [[Sparse trees]]).  Folds the entire
3466   buffer, but shows all TODO items (with not-DONE state) and the
3467   headings hierarchy above them.  With a prefix argument (or by using
3468   {{{kbd(C-c / T)}}}), search for a specific TODO.  You will be
3469   prompted for the keyword, and you can also give a list of keywords
3470   like ~KWD1|KWD2|...~ to list entries that match any one of these
3471   keywords.  With a numeric prefix argument N, show the tree for the
3472   Nth keyword in the variable ~org-todo-keywords~.  With two prefix
3473   arguments, find all TODO states, both un-done and done.
3475 - {{{kbd(C-c a t)}}}, ~org-todo-list~ ::
3476   #+kindex: C-c a t
3478   Show the global TODO list.  Collects the TODO items (with not-DONE states)
3479   from all agenda files (see [[Agenda views]]) into a single buffer.  The new
3480   buffer will be in ~agenda-mode~, which provides commands to examine and
3481   manipulate the TODO entries from the new buffer (see [[Agenda commands]]).
3482   See [[Global TODO list]], for more information.
3484 - {{{kbdkey(S-M-,RET)}}}, ~org-insert-todo-heading~ ::
3485   #+kindex: S-M-@key{RET}
3487    Insert a new TODO entry below the current one.
3490 {{{noindent}}}
3491 #+vindex: org-todo-state-tags-triggers
3492 Changing a TODO state can also trigger tag changes.  See the docstring of the
3493 option ~org-todo-state-tags-triggers~ for details.
3495 ** TODO extensions
3496    :PROPERTIES:
3497    :DESCRIPTION: Work flow and assignments
3498    :TITLE:    Extended use of TODO keywords
3499    :END:
3501 #+cindex: extended TODO keywords
3503 #+vindex: org-todo-keywords
3505 By default, marked TODO entries have one of only two states: TODO and
3506 DONE.  Org mode allows you to classify TODO items in more complex ways
3507 with /TODO keywords/ (stored in ~org-todo-keywords~).  With special
3508 setup, the TODO keyword system can work differently in different
3509 files.
3511 Note that /tags/ are another way to classify headlines in general and
3512 TODO items in particular (see [[Tags]]).
3514 *** Workflow states
3515     :PROPERTIES:
3516     :DESCRIPTION: From TODO to DONE in steps
3517     :TITLE:    TODO keywords as workflow states
3518     :END:
3519 #+cindex: TODO workflow
3520 #+cindex: workflow states as TODO keywords
3522 You can use TODO keywords to indicate different /sequential/ states
3523 in the process of working on an item, for example:[fn:41]
3525 #+header: :exports code
3526 #+header: :eval no
3527 #+begin_src emacs-lisp
3528 (setq org-todo-keywords
3529   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3530 #+end_src
3532 The vertical bar separates the TODO keywords (states that /need
3533 action/) from the DONE states (which need /no further action/).  If
3534 you don't provide the separator bar, the last state is used as the DONE
3535 state.
3537 #+cindex: completion, of TODO keywords
3539 With this setup, the command {{{kbd(C-c C-t)}}} will cycle an entry
3540 from TODO to FEEDBACK, then to VERIFY, and finally to DONE and
3541 DELEGATED.  You may also use a numeric prefix argument to quickly
3542 select a specific state.  For example {{{kbd(C-3 C-c C-t)}}} will
3543 change the state immediately to VERIFY.  Or you can use
3544 {{{kbdkey(S-,left)}}} to go backward through the sequence.  If you
3545 define many keywords, you can use in-buffer completion (see [[Completion]]) or
3546 even a special one-key selection scheme (see [[Fast access to TODO states]])
3547 to insert these words into the buffer.  Changing a TODO state can be
3548 logged with a timestamp, see [[Tracking TODO state changes]], for
3549 more information.
3551 *** TODO types
3552     :PROPERTIES:
3553     :DESCRIPTION: I do this, Fred does the rest
3554     :TITLE:    TODO keywords as types
3555     :END:
3556 #+cindex: TODO types
3557 #+cindex: names as TODO keywords
3558 #+cindex: types as TODO keywords
3560 The second possibility is to use TODO keywords to indicate different
3561 /types/ of action items.  For example, you might want to indicate
3562 that items are for ``work'' or ``home''.  Or, when you work with several
3563 people on a single project, you might want to assign action items
3564 directly to persons, by using their names as TODO keywords.  This would
3565 be set up like this:
3567 #+header: :exports code
3568 #+header: :eval no
3569 #+begin_src emacs-lisp
3570 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3571 #+end_src
3573 In this case, different keywords do not indicate a sequence, but rather
3574 different types.  So the normal work flow would be to assign a task to a
3575 person, and later to mark it DONE.  Org mode supports this style by adapting
3576 the workings of the command {{{kbd(C-c C-t)}}}.[fn:42]  When used several
3577 times in succession, it will still cycle through all names, in order to first
3578 select the right type for a task.  But when you return to the item after some
3579 time and execute {{{kbd(C-c C-t)}}} again, it will switch from any name directly
3580 to DONE.  Use prefix arguments or completion to quickly select a specific
3581 name.  You can also review the items of a specific TODO type in a sparse tree
3582 by using a numeric prefix to {{{kbd(C-c / t)}}}.  For example, to see all things
3583 Lucy has to do, you would use {{{kbd(C-3 C-c / t)}}}.  To collect Lucy's items
3584 from all agenda files into a single buffer, you would use the numeric prefix
3585 argument as well when creating the global TODO list: {{{kbd(C-3 C-c a t)}}}.
3587 *** Multiple sets in one file
3588     :PROPERTIES:
3589     :DESCRIPTION: Mixing it all, and still finding your way
3590     :TITLE:    Multiple keyword sets in one file
3591     :END:
3592 #+cindex: TODO keyword sets
3594 Sometimes you may want to use different sets of TODO keywords in
3595 parallel.  For example, you may want to have the basic
3596 ~TODO~ / ~DONE~, but also a workflow for bug fixing, and a
3597 separate state indicating that an item has been canceled (so it is not
3598 DONE, but also does not require action).  Your setup would then look
3599 like this:
3601 #+header: :exports code
3602 #+header: :eval no
3603 #+begin_src emacs-lisp
3604 (setq org-todo-keywords
3605       '((sequence "TODO" "|" "DONE")
3606         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3607         (sequence "|" "CANCELED")))
3608 #+end_src
3610 The keywords should all be different, this helps Org mode to keep track
3611 of which subsequence should be used for a given entry.  In this setup,
3612 {{{kbd(C-c C-t)}}} only operates within a subsequence, so it switches from
3613 ~DONE~ to (nothing) to ~TODO~, and from ~FIXED~ to
3614 (nothing) to ~REPORT~.  Therefore you need a mechanism to initially
3615 select the correct sequence.  Besides the obvious ways like typing a
3616 keyword or using completion, you may also apply the following commands:
3618 #+kindex: C-S-@key{right}
3619 #+kindex: C-S-@key{left}
3620 #+kindex: C-u C-u C-c C-t
3621 #+attr_texinfo: :table-type table :indic @asis
3622 - {{{kbd(C-u C-u C-c C-t)}}} {{{kbdkey(C-S-,right)}}} {{{kbdkey(C-S-,left)}}} ::
3624   These keys jump from one TODO subset to the next.  In the above
3625   example, {{{kbd(C-u C-u C-c C-t)}}} or {{{kbdkey(C-S-,right)}}}
3626   would jump from ~TODO~ or ~DONE~ to ~REPORT~, and any of the
3627   words in the second row to ~CANCELED~.  Note that the
3628   {{{kbd(C-S-)}}} key binding conflict with ~shift-selection-mode~
3629   (see [[Conflicts]]).
3631 - {{{kbdkey(S-,right)}}} {{{kbdkey(S-,left)}}} ::
3632   #+kindex: S-@key{right}
3633   #+kindex: S-@key{left}
3635   {{{kbdkey(S-,left)}}} and {{{kbdkey(S-,right)}}} walk through /all/
3636   keywords from all sets, so for example {{{kbdkey(S-,right)}}} would switch
3637   from ~DONE~ to ~REPORT~ in the example above.  See also
3638   [[Conflicts]], for a discussion of the interaction with
3639   ~shift-selection-mode~.
3641 *** Fast access to TODO states
3642     :PROPERTIES:
3643     :DESCRIPTION: Single letter selection of state
3644     :END:
3645 If you would like to quickly change an entry to an arbitrary TODO state
3646 instead of cycling through the states, you can set up keys for single-letter
3647 access to the states.  This is done by adding the selection character after
3648 each keyword, in parentheses.[fn:43]  For example:
3650 #+header: :exports code
3651 #+header: :eval no
3652 #+begin_src emacs-lisp
3653 (setq org-todo-keywords
3654       '((sequence "TODO(t)" "|" "DONE(d)")
3655         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3656         (sequence "|" "CANCELED(c)")))
3657 #+end_src
3659 #+vindex: org-fast-tag-selection-include-todo
3661 If you then press {{{kbd(C-c C-t)}}} followed by the selection key,
3662 the entry will be switched to this state.  {{{kbd(SPC)}}} can be used
3663 to remove any TODO keyword from an entry.[fn:44]
3665 *** Per-file keywords
3666     :PROPERTIES:
3667     :DESCRIPTION: Different files, different requirements
3668     :TITLE:    Setting up keywords for individual files
3669     :END:
3670 #+cindex: keyword options
3671 #+cindex: per-file keywords
3672 #+cindex: #+TODO
3673 #+cindex: #+TYP_TODO
3674 #+cindex: #+SEQ_TODO
3676 It can be very useful to use different aspects of the TODO mechanism in
3677 different files.  For file-local settings, you need to add special lines
3678 to the file which set the keywords and interpretation for that file
3679 only.  For example, to set one of the two examples discussed above, you
3680 need one of the following lines, starting in column zero anywhere in the
3681 file:
3683 #+begin_example
3684    ,#+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3685 #+end_example
3687 {{{noindent}}} (you may also write ~#+SEQ_TODO~ to be explicit about the
3688 interpretation, but it means the same as ~#+TODO~), or
3690 #+begin_example
3691    ,#+TYP_TODO: Fred Sara Lucy Mike | DONE
3692 #+end_example
3694 A setup for using several sets in parallel would be:
3696 #+begin_example
3697    ,#+TODO: TODO | DONE
3698    ,#+TODO: REPORT BUG KNOWNCAUSE | FIXED
3699    ,#+TODO: | CANCELED
3700 #+end_example
3702 #+cindex: completion, of option keywords
3703 #+kindex: M-@key{TAB}
3704 {{{noindent}}} To make sure you are using the correct keyword, type
3705 {{{samp(#+)}}} into the buffer and then use {{{kbdkey(M-,TAB)}}} completion.
3707 #+cindex: DONE, final TODO keyword
3708 Remember that the keywords after the vertical bar (or the last keyword
3709 if no bar is there) must always mean that the item is DONE (although you
3710 may use a different word).  After changing one of these lines, use
3711 {{{kbd(C-c C-c)}}} with the cursor still in the line to make the changes
3712 known to Org mode.[fn:45]
3714 *** Faces for TODO keywords
3715     :PROPERTIES:
3716     :DESCRIPTION: Highlighting states
3717     :END:
3718 #+cindex: faces, for TODO keywords
3719 #+vindex: org-todo @r{(face)}
3720 #+vindex: org-done @r{(face)}
3721 #+vindex: org-todo-keyword-faces
3723 Org mode highlights TODO keywords with special faces: ~org-todo~
3724 for keywords indicating that an item still has to be acted upon, and
3725 ~org-done~ for keywords indicating that an item is finished.  If
3726 you are using more than 2 different states, you might want to use
3727 special faces for some of them.  This can be done using the variable
3728 ~org-todo-keyword-faces~.  For example:
3730 #+header: :exports code
3731 #+header: :eval no
3732 #+begin_src emacs-lisp
3733 (setq org-todo-keyword-faces
3734       '(("TODO" . org-warning) ("STARTED" . "yellow")
3735         ("CANCELED" . (:foreground "blue" :weight bold))))
3736 #+end_src
3738 While using a list with face properties as shown for CANCELED /should/
3739 work, this does not always seem to be the case.  If necessary, define a
3740 special face and use that.  A string is interpreted as a color.  The variable
3741 ~org-faces-easy-properties~ determines if that color is interpreted as a
3742 foreground or a background color.
3744 *** TODO dependencies
3745     :PROPERTIES:
3746     :DESCRIPTION: When one task needs to wait for others
3747     :END:
3748 #+cindex: TODO dependencies
3749 #+cindex: dependencies, of TODO states
3750 #+vindex: org-enforce-todo-dependencies
3751 #+cindex: property, ORDERED
3753 The structure of Org files (hierarchy and lists) makes it easy to define TODO
3754 dependencies.  Usually, a parent TODO task should not be marked DONE until
3755 all subtasks (defined as children tasks) are marked as DONE.  And sometimes
3756 there is a logical sequence to a number of (sub)tasks, so that one task
3757 cannot be acted upon before all siblings above it are done.  If you customize
3758 the variable ~org-enforce-todo-dependencies~, Org will block entries
3759 from changing state to DONE while they have children that are not DONE.
3760 Furthermore, if an entry has a property ~ORDERED~, each of its children
3761 will be blocked until all earlier siblings are marked DONE.  Here is an
3762 example:
3764 #+begin_src org
3765   ,* TODO Blocked until (two) is done
3766   ,** DONE one
3767   ,** TODO two
3768   
3769   ,* Parent
3770     :PROPERTIES:
3771     :ORDERED: t
3772     :END:
3773   ,** TODO a
3774   ,** TODO b, needs to wait for (a)
3775   ,** TODO c, needs to wait for (a) and (b)
3776 #+end_src
3778 #+attr_texinfo: :table-type table :indic @asis
3779 - {{{kbd(C-c C-x o)}}}, ~org-toggle-ordered-property~ ::
3780   #+kindex: C-c C-x o
3781   #+vindex: org-track-ordered-property-with-tag
3782   #+cindex: property, ORDERED
3784   Toggle the ~ORDERED~ property of the current entry.  A property is used
3785   for this behavior because this should be local to the current entry, not
3786   inherited like a tag.  However, if you would like to /track/ the value of
3787   this property with a tag for better visibility, customize the variable
3788   ~org-track-ordered-property-with-tag~.
3789 - {{{kbd(C-u C-u C-u C-c C-t)}}} ::
3790   #+kindex: C-u C-u C-u C-c C-t
3792   Change TODO state, circumventing any state blocking.
3795 #+vindex: org-agenda-dim-blocked-tasks
3797 If you set the variable ~org-agenda-dim-blocked-tasks~, TODO entries
3798 that cannot be closed because of such dependencies will be shown in a dimmed
3799 font or even made invisible in agenda views (see [[Agenda views]]).
3801 #+cindex: checkboxes and TODO dependencies
3802 #+vindex: org-enforce-todo-dependencies
3804 You can also block changes of TODO states by looking at checkboxes
3805 (see [[Checkboxes]]).  If you set the variable
3806 ~org-enforce-todo-checkbox-dependencies~, an entry that has unchecked
3807 checkboxes will be blocked from switching to DONE.
3809 If you need more complex dependency structures, for example dependencies
3810 between entries in different trees or files, check out the contributed
3811 module {{{file(org-depend.el)}}}.
3813 {{{page}}}
3815 ** Progress logging
3816    :PROPERTIES:
3817    :DESCRIPTION: Dates and notes for progress
3818    :END:
3819 #+cindex: progress logging
3820 #+cindex: logging, of progress
3822 Org mode can automatically record a timestamp and possibly a note when
3823 you mark a TODO item as DONE, or even each time you change the state of
3824 a TODO item.  This system is highly configurable, settings can be on a
3825 per-keyword basis and can be localized to a file or even a subtree.  For
3826 information on how to clock working time for a task, see [[Clocking work time]].
3828 *** Closing items
3829     :PROPERTIES:
3830     :DESCRIPTION: When was this entry marked DONE?
3831     :END:
3833 The most basic logging is to keep track of /when/ a certain TODO
3834 item was finished.  This is achieved with:[fn:46]
3836 #+header: :exports code
3837 #+header: :eval no
3838 #+begin_src emacs-lisp
3839 (setq org-log-done 'time)
3840 #+end_src
3842 {{{noindent}}} Then each time you turn an entry from a TODO (not-done)
3843 state into any of the DONE states, a line {{{samp(CLOSED: [timestamp])}}} will be inserted just after the headline.  If you turn
3844 the entry back into a TODO item through further state cycling, that
3845 line will be removed again.  If you want to record a note along with
3846 the timestamp, use:[fn:47]
3848 #+header: :exports code
3849 #+header: :eval no
3850 #+begin_src emacs-lisp
3851 (setq org-log-done 'note)
3852 #+end_src
3854 {{{noindent}}} You will then be prompted for a note, and that note
3855 will be stored below the entry with a {{{samp(Closing Note)}}}
3856 heading.
3858 In the timeline (see [[Timeline for a single file]]) and in the agenda
3859 (see [[Weekly/daily agenda]]), you can then use the {{{kbd(l)}}} key to
3860 display the TODO items with a {{{samp(CLOSED)}}} timestamp on each
3861 day, giving you an overview of what has been done.
3863 *** Tracking TODO state changes
3864     :PROPERTIES:
3865     :DESCRIPTION: When did the status change?
3866     :END:
3867 #+cindex: drawer, for state change recording
3868 #+vindex: org-log-states-order-reversed
3869 #+vindex: org-log-into-drawer
3870 #+cindex: property, LOG_INTO_DRAWER
3872 When TODO keywords are used as workflow states (see [[Workflow
3873 states]]), you might want to keep track of when a state change occurred
3874 and maybe take a note about this change.  You can either record just a
3875 timestamp, or a time-stamped note for a change.  These records will be
3876 inserted after the headline as an itemized list, newest first.[fn:48]
3877 When taking a lot of notes, you might want to get the notes out of the
3878 way into a drawer (see [[Drawers]]).  Customize the variable
3879 ~org-log-into-drawer~ to get this behavior---the recommended drawer
3880 for this is called ~LOGBOOK~.[fn:178] You can also overrule the setting
3881 of this variable for a subtree by setting a ~LOG_INTO_DRAWER~
3882 property.
3884 Since it is normally too much to record a note for every state, Org
3885 mode expects configuration on a per-keyword basis for this.  This is
3886 achieved by adding special markers {{{samp(!)}}} (for a timestamp) or
3887 {{{samp(@)}}} (for a note with timestamp) in parentheses after each
3888 keyword.  For example, with the setting:
3890 #+header: :exports code
3891 #+header: :eval no
3892 #+begin_src emacs-lisp
3893 (setq org-todo-keywords
3894   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3895 #+end_src
3897 {{{noindent}}}
3898 #+vindex: org-log-done
3900 you not only define global TODO keywords and fast access keys, but
3901 also request that a time is recorded when the entry is set to
3902 DONE, and that a note is recorded when switching to WAIT or
3903 CANCELED.[fn:49] The setting for WAIT is even more special: the {{{samp(!)}}}
3904 after the slash means that in addition to the note taken when entering
3905 the state, a timestamp should be recorded when /leaving/ the WAIT
3906 state, if and only if the /target/ state does not configure logging
3907 for entering it.  So it has no effect when switching from WAIT to DONE,
3908 because DONE is configured to record a timestamp only.  But when
3909 switching from WAIT back to TODO, the {{{samp(/!)}}} in the WAIT
3910 setting now triggers a timestamp even though TODO has no logging
3911 configured.
3913 To record a timestamp without a note for TODO keywords configured with
3914 {{{samp(@)}}}, just type {{{kbd(C-c C-c)}}} to enter a blank note
3915 when prompted.
3917 You can use the exact same syntax for setting logging preferences local
3918 to a buffer:
3920 #+begin_example
3921    ,#+TODO: TODO(t) WAIT(w@/!) | DONE(d!) CANCELED(c@)
3922 #+end_example
3924 #+cindex: property, LOGGING
3926 In order to define logging settings that are local to a subtree or a
3927 single item, define a LOGGING property in this entry.  Any non-empty
3928 LOGGING property resets all logging settings to nil.  You may then turn
3929 on logging for this specific tree using STARTUP keywords like
3930 ~lognotedone~ or ~logrepeat~, as well as adding state specific
3931 settings like ~TODO(!)~.  For example:
3933 #+begin_example
3934    ,* TODO Log each state with only a time
3935      :PROPERTIES:
3936      :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3937      :END:
3938    ,* TODO Only log when switching to WAIT, and when repeating
3939      :PROPERTIES:
3940      :LOGGING: WAIT(@) logrepeat
3941      :END:
3942    ,* TODO No logging at all
3943      :PROPERTIES:
3944      :LOGGING: nil
3945      :END:
3946 #+end_example
3948 *** Tracking your habits
3949     :PROPERTIES:
3950     :DESCRIPTION: How consistent have you been?
3951     :END:
3952     :LOGBOOK:
3953     - State "DONE"       from "DONE"       [2013-01-07 Mon 14:10]
3954     - State "DONE"       from ""           [2013-01-07 Mon 14:10]
3955     :END:
3956 #+cindex: habits
3958 Org has the ability to track the consistency of a special category of TODOs,
3959 called "habits."  A habit has the following properties:
3961   1. You have enabled the ~habits~ module by customizing the variable
3962      ~org-modules~.
3964   2. The habit is a TODO item, with a TODO keyword representing an
3965      open state.
3967   3. The property ~STYLE~ is set to the value ~habit~.
3969   4. The TODO has a scheduled date, usually with a ~.+~ style repeat
3970      interval.  A ~++~ style may be appropriate for habits with time
3971      constraints, e.g., must be done on weekends, or a ~+~ style for
3972      an unusual habit that can have a backlog, e.g., weekly reports.
3974   5. The TODO may also have minimum and maximum ranges specified by
3975      using the syntax {{{samp(.+2d/3d)}}}, which says that you want to
3976      do the task at least every three days, but at most every two
3977      days.
3979   6. You must also have state logging for the ~DONE~ state enabled
3980      (see [[Tracking TODO state changes]]), in order for historical
3981      data to be represented in the consistency graph.  If it is not
3982      enabled it is not an error, but the consistency graphs will be
3983      largely meaningless.
3986 To give you an idea of what the above rules look like in action, here's an
3987 actual habit with some history:
3989 #+begin_example
3990    ,** TODO Shave
3991       SCHEDULED: <2009-10-17 Sat .+2d/4d>
3992       - State "DONE"       from "TODO"       [2009-10-15 Thu]
3993       - State "DONE"       from "TODO"       [2009-10-12 Mon]
3994       - State "DONE"       from "TODO"       [2009-10-10 Sat]
3995       - State "DONE"       from "TODO"       [2009-10-04 Sun]
3996       - State "DONE"       from "TODO"       [2009-10-02 Fri]
3997       - State "DONE"       from "TODO"       [2009-09-29 Tue]
3998       - State "DONE"       from "TODO"       [2009-09-25 Fri]
3999       - State "DONE"       from "TODO"       [2009-09-19 Sat]
4000       - State "DONE"       from "TODO"       [2009-09-16 Wed]
4001       - State "DONE"       from "TODO"       [2009-09-12 Sat]
4002       :PROPERTIES:
4003       :STYLE:    habit
4004       :LAST_REPEAT: [2009-10-19 Mon 00:36]
4005       :END:
4006 #+end_example
4008 What this habit says is: I want to shave at most every 2 days (given
4009 by the ~SCHEDULED~ date and repeat interval) and at least every 4
4010 days.  If today is the 15th, then the habit first appears in the agenda
4011 on Oct 17, after the minimum of 2 days has elapsed, and will appear
4012 overdue on Oct 19, after four days have elapsed.
4014 What's really useful about habits is that they are displayed along
4015 with a consistency graph, to show how consistent you've been at
4016 getting that task done in the past.  This graph shows every day that
4017 the task was done over the past three weeks, with colors for each day.
4018 The colors used are:
4020 #+attr_texinfo: :table-type table :indic @asis
4021   - ~Blue~ :: If the task wasn't to be done yet on that day.
4022   - ~Green~ :: If the task could have been done on that day.
4023   - ~Yellow~ :: If the task was going to be overdue the next day.
4024   - ~Red~ :: If the task was overdue on that day.
4027 In addition to coloring each day, the day is also marked with an
4028 asterisk if the task was actually done that day, and an exclamation
4029 mark to show where the current day falls in the graph.
4031 There are several configuration variables that can be used to change
4032 the way habits are displayed in the agenda.
4034 #+attr_texinfo: :table-type table :indic @asis
4035   - ~org-habit-graph-column~ :: The buffer column at which the
4036        consistency graph should be drawn.  This will overwrite any text
4037        in that column, so it is a good idea to keep your habits'
4038        titles brief and to the point.
4040   - ~org-habit-preceding-days~ :: The amount of history, in days before
4041        today, to appear in consistency graphs.
4043   - ~org-habit-following-days~ :: The number of days after today that
4044        will appear in consistency graphs.
4046   - ~org-habit-show-habits-only-for-today~ :: If non-nil, only show
4047        habits in today's agenda view.  This is set to true by default.
4050 Lastly, pressing {{{kbd(K)}}} in the agenda buffer will cause habits
4051 to temporarily be disabled and they won't appear at all.  Press
4052 {{{kbd(K)}}} again to bring them back.  They are also subject to tag
4053 filtering, if you have habits which should only be done in certain
4054 contexts, for example.
4056 ** FIXME Priorities
4057    :PROPERTIES:
4058    :DESCRIPTION: Some things are more important than others
4059    :END:
4060 #+cindex: priorities
4062 If you use Org mode extensively, you may end up with enough TODO items that
4063 it starts to make sense to prioritize them.  Prioritizing can be done by
4064 placing a /priority cookie/ into the headline of a TODO item, like this:
4066 #+begin_example
4067    ,*** TODO [#A] Write letter to Sam Fortune
4068 #+end_example
4070 #+vindex: org-priority-faces
4072 {{{noindent}}} By default, Org mode supports three priorities: {{{samp(A)}}},
4073 {{{samp(B)}}}, and {{{samp(C)}}}.  {{{samp(A)}}} is the highest
4074 priority.  An entry without a cookie is treated just like priority
4075 {{{samp(B)}}}.  Priorities make a difference only for sorting in the
4076 agenda (see [[Weekly/daily agenda]]); outside the agenda, they have no
4077 inherent meaning to Org mode.  The cookies can be highlighted with
4078 special faces by customizing the variable ~org-priority-faces~.
4080 Priorities can be attached to any outline node; they do not need to be TODO
4081 items.
4083 #+attr_texinfo: :table-type table :indic @asis
4084   - {{{kbd(C-c XXX)}}} ::
4085     #+kindex: C-c ,
4086     # #+kindex: @key{C-c ,}
4087     # Preceding line won't export to pdf
4088     #+findex: org-priority
4089     # Should be C-c ,
4090     Set the priority of the current headline (~org-priority~).  The
4091     command prompts for a priority character {{{samp(A)}}}, {{{samp(B)}}}
4092     or {{{samp(C)}}}.  When you press {{{key(SPC)}}}} instead, the priority
4093     cookie is removed from the headline.  The priorities can also be
4094     changed ``remotely'' from the timeline and agenda buffer with the
4095     {{{kbd(\,)}}} command (see [[Agenda commands]]).
4096   
4097   - {{{kbdkey(S-,up)}}}, {{{kbdkey(S-,down)}}}, {{{command(org-priority-up)}}}, {{{command(org-priority-down)}}} ::
4098     #+vindex: org-priority-start-cycle-with-default
4099     
4100     Increase/decrease priority of current headline.[fn:50] Note
4101     that these keys are also used to modify timestamps
4102     (see [[Creating timestamps]]).  See also [[Conflicts]], for a
4103     discussion of the interaction with ~shift-selection-mode~.
4106 #+vindex: org-highest-priority
4107 #+vindex: org-lowest-priority
4108 #+vindex: org-default-priority
4110 You can change the range of allowed priorities by setting the
4111 variables ~org-highest-priority~, ~org-lowest-priority~, and
4112 ~org-default-priority~.  For an individual buffer, you may set these
4113 values (highest, lowest, default) like this (please make sure that the
4114 highest priority is earlier in the alphabet than the lowest priority):
4116 #+cindex: #+PRIORITIES
4118 #+begin_example
4119    ,#+PRIORITIES: A C B
4120 #+end_example
4122 ** Breaking down tasks
4123    :PROPERTIES:
4124    :DESCRIPTION: Splitting a task into manageable pieces
4125    :END:
4126 #+cindex: tasks, breaking down
4127 #+cindex: statistics, for TODO items
4128 #+vindex: org-agenda-todo-list-sublevels
4130 It is often advisable to break down large tasks into smaller,
4131 manageable subtasks.  You can do this by creating an outline tree below
4132 a TODO item, with detailed subtasks on the tree.[fn:51] To keep the
4133 overview over the fraction of subtasks that are already completed,
4134 insert either {{{samp([/])}}} or {{{samp([%])}}} anywhere in the
4135 headline.  These cookies will be updated each time the TODO status of a
4136 child changes, or when pressing {{{kbd(C-c C-c)}}} on the cookie.  For
4137 example:
4139 #+begin_example
4140    ,* Organize Party [33%]
4141    ,** TODO Call people [1/2]
4142    ,*** TODO Peter
4143    ,*** DONE Sarah
4144    ,** TODO Buy food
4145    ,** DONE Talk to neighbor
4146 #+end_example
4148 #+cindex: property, COOKIE_DATA
4150 If a heading has both checkboxes and TODO children below it, the
4151 meaning of the statistics cookie become ambiguous.  Set the property
4152 ~COOKIE_DATA~ to either {{{samp(checkbox)}}} or {{{samp(todo)}}} to
4153 resolve this issue.
4155 #+vindex: org-hierarchical-todo-statistics
4157 If you would like to have the statistics cookie count any TODO entries
4158 in the subtree (not just direct children), configure the variable
4159 ~org-hierarchical-todo-statistics~.  To do this for a single subtree,
4160 include the word {{{samp(recursive)}}} into the value of the
4161 ~COOKIE_DATA~ property.
4163 #+begin_example
4164    ,* Parent capturing statistics [2/20]
4165      :PROPERTIES:
4166      :COOKIE_DATA: todo recursive
4167      :END:
4168 #+end_example
4170 If you would like a TODO entry to automatically change to DONE
4171 when all children are done, you can use the following setup:
4173 #+header: :exports code
4174 #+header: :eval no
4175 #+begin_src emacs-lisp
4176 (defun org-summary-todo (n-done n-not-done)
4177   "Switch entry to DONE when all subentries are done, to TODO otherwise."
4178   (let (org-log-done org-log-states)   ; turn off logging
4179     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4181 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4182 #+end_src
4184 Another possibility is the use of checkboxes to identify (a hierarchy
4185 of) a large number of subtasks (see [[Checkboxes]]).
4187 ** Checkboxes
4188    :PROPERTIES:
4189    :DESCRIPTION: Tick-off lists
4190    :END:
4192 #+cindex: checkboxes
4193 #+vindex: org-list-automatic-rules
4195 Every item in a plain list (see [[Plain lists]]) can be made into a
4196 checkbox by starting it with the string {{{samp([ ])}}}.[fn:52] This
4197 feature is similar to TODO items (see [[TODO items]]), but is more
4198 lightweight.  Checkboxes are not included into the global TODO list, so
4199 they are often great to split a task into a number of simple steps.  Or
4200 you can use them in a shopping list.  To toggle a checkbox, use
4201 {{{kbd(C-c C-c)}}}, or use the mouse (thanks to Piotr Zielinski's
4202 {{{file(org-mouse.el)}}}).
4204 Here is an example of a checkbox list.
4206 #+begin_example
4207    ,* TODO Organize party [2/4]
4208      - [-] call people [1/3]
4209        - [ ] Peter
4210        - [X] Sarah
4211        - [ ] Sam
4212      - [X] order food
4213      - [ ] think about what music to play
4214      - [X] talk to the neighbors
4215 #+end_example
4217 Checkboxes work hierarchically, so if a checkbox item has children
4218 that are checkboxes, toggling one of the children checkboxes will make
4219 the parent checkbox reflect if none, some, or all of the children are
4220 checked.
4222 #+cindex: statistics, for checkboxes
4223 #+cindex: checkbox statistics
4224 #+cindex: property, COOKIE_DATA
4225 #+vindex: org-hierarchical-checkbox-statistics
4227 The {{{samp([2/4])}}} and {{{samp([1/3])}}} in the first and second
4228 line are cookies indicating how many checkboxes present in this entry
4229 have been checked off, and the total number of checkboxes present.
4230 This can give you an idea on how many checkboxes remain, even without
4231 opening a folded entry.  The cookies can be placed into a headline or
4232 into (the first line of) a plain list item.  Each cookie covers
4233 checkboxes of direct children structurally below the headline/item on
4234 which the cookie appears.[fn:53] You have to insert the cookie
4235 yourself by typing either {{{samp([/])}}} or {{{samp([%])}}}.  With
4236 {{{samp([/])}}} you get an {{{samp(n out of m)}}} result, as in the
4237 examples above.  With {{{samp([%])}}} you get information about the
4238 percentage of checkboxes checked (in the above example, this would be
4239 {{{samp([50%])}}} and {{{samp([33%])}}}, respectively).  In a headline,
4240 a cookie can count either checkboxes below the heading or TODO states
4241 of children, and it will display whatever was changed last.  Set the
4242 property ~COOKIE_DATA~ to either {{{samp(checkbox)}}} or
4243 {{{samp(todo)}}} to resolve this issue.
4245 #+cindex: blocking, of checkboxes
4246 #+cindex: checkbox blocking
4247 #+cindex: property, ORDERED
4249 If the current outline node has an ~ORDERED~ property, checkboxes must
4250 be checked off in sequence, and an error will be thrown if you try to
4251 check off a box while there are unchecked boxes above it.
4253 {{{noindent}}} The following commands work with checkboxes:
4255 #+attr_texinfo: :table-type table :indic @asis
4256 - {{{kbd(C-c C-c)}}}, ~org-toggle-checkbox~ :: Toggle checkbox status
4257      or (with prefix arg) checkbox presence at point.  With a single
4258      prefix argument, add an empty checkbox or remove the current
4259      one.[fn:54] With a double prefix argument, set it to
4260      {{{samp([-])}}}, which is considered to be an intermediate state.
4262 - {{{kbd(C-c C-x C-b)}}}, ~org-toggle-checkbox~ :: Toggle checkbox
4263      status or (with prefix arg) checkbox presence at point.  With
4264      double prefix argument, set it to {{{samp([-])}}}, which is
4265      considered to be an intermediate state.
4267   - If there is an active region, toggle the first checkbox in the region
4268     and set all remaining boxes to the same status as the first.  With a prefix
4269     arg, add or remove the checkbox for all items in the region.
4271   - If the cursor is in a headline, toggle checkboxes in the region
4272     between this headline and the next (so /not/ the entire subtree).
4274   - If there is no active region, just toggle the checkbox at point.
4277 - {{{kbdkey(M-S-,RET)}}}, ~org-insert-todo-heading~ :: Insert a new
4278      item with a checkbox.  This works only if the cursor is already in
4279      a plain list item (see [[Plain lists]]).
4281 - {{{kbd(C-c C-x o)}}}, ~org-toggle-ordered-property~ ::
4282   #+kindex: C-c C-x o
4283   #+vindex: org-track-ordered-property-with-tag
4284   #+cindex: property, ORDERED
4285   
4286   Toggle the ~ORDERED~ property of the entry, to toggle if checkboxes
4287   must be checked off in sequence.  A property is used for this
4288   behavior because this should be local to the current entry, not
4289   inherited like a tag.  However, if you would like to /track/ the
4290   value of this property with a tag for better visibility,
4291   customize the variable ~org-track-ordered-property-with-tag~.
4293 - {{{kbd(C-c #)}}}, ~org-update-statistics-cookies~ ::
4294   #+kindex: C-c #
4296   Update the statistics cookie in the current outline entry.  When
4297   called with a {{{kbd(C-u)}}} prefix, update the entire file.
4298   Checkbox statistic cookies are updated automatically if you
4299   toggle checkboxes with {{{kbd(C-c C-c)}}} and make new ones with
4300   {{{kbdkey(M-S-,RET)}}}.  TODO statistics cookies update when
4301   changing TODO states.  If you delete boxes/entries or add/change
4302   them by hand, use this command to get things back into sync.
4304 * Tags
4305   :PROPERTIES:
4306   :DESCRIPTION: Tagging headlines and matching sets of tags
4307   :END:
4308 #+cindex: tags
4309 #+cindex: headline tagging
4310 #+cindex: matching, tags
4311 #+cindex: sparse tree, tag based
4313 An excellent way to implement labels and contexts for
4314 cross-correlating information is to assign /tags/ to headlines.  Org
4315 mode has extensive support for tags.
4317 #+vindex: org-tag-faces
4319 Every headline can contain a list of tags; they occur at the end of
4320 the headline.  Tags are normal words containing letters, numbers,
4321 {{{samp(_)}}}, and {{{samp(@)}}}.  Tags must be preceded and followed
4322 by a single colon, e.g., {{{samp(:work:)}}}.  Several tags can be
4323 specified, as in {{{samp(:work:urgent:)}}}.  Tags will by default be in
4324 bold face with the same color as the headline.  You may specify special
4325 faces for specific tags using the variable ~org-tag-faces~, in much
4326 the same way as you can for TODO keywords (see [[Faces for TODO keywords]]).
4328 ** Tag inheritance
4329    :PROPERTIES:
4330    :DESCRIPTION: Tags use the tree structure of an outline
4331    :END:
4332 #+cindex: tag inheritance
4333 #+cindex: inheritance, of tags
4334 #+cindex: sublevels, inclusion into tags match
4336 /Tags/ make use of the hierarchical structure of outline trees.  If a
4337 heading has a certain tag, all subheadings will inherit the tag as
4338 well.  For example, in the list
4340 #+begin_example
4341    ,* Meeting with the French group      :work:
4342    ,** Summary by Frank                  :boss:notes:
4343    ,*** TODO Prepare slides for him      :action:
4344 #+end_example
4346 {{{noindent}}} the final heading will have the tags
4347 {{{samp(:work:)}}}, {{{samp(:boss:)}}}, {{{samp(:notes:)}}}, and
4348 {{{samp(:action:)}}} even though the final heading is not explicitly
4349 marked with those tags.  You can also set tags that all entries in a
4350 file should inherit just as if these tags were defined in a
4351 hypothetical level zero that surrounds the entire file.  Use a line
4352 like this:[fn:55]
4354 #+cindex: #+FILETAGS
4355 #+begin_example
4356    ,#+FILETAGS: :Peter:Boss:Secret:
4357 #+end_example
4359 #+vindex: org-use-tag-inheritance
4360 #+vindex: org-tags-exclude-from-inheritance
4362 {{{noindent}}} To limit tag inheritance to specific tags, or to turn
4363 it off entirely, use the variables ~org-use-tag-inheritance~ and
4364 ~org-tags-exclude-from-inheritance~.
4366 #+vindex: org-tags-match-list-sublevels
4368 When a headline matches during a tags search while tag inheritance is
4369 turned on, all the sublevels in the same tree will (for a simple match
4370 form) match as well.[fn:56] The list of matches may then become very
4371 long.  If you only want to see the first tags match in a subtree,
4372 configure the variable ~org-tags-match-list-sublevels~ (not
4373 recommended).
4375 ** Setting tags
4376    :PROPERTIES:
4377    :DESCRIPTION: How to assign tags to a headline
4378    :END:
4379 #+cindex: setting tags
4380 #+cindex: tags, setting
4381 #+kindex: M-@key{TAB}
4383 Tags can simply be typed into the buffer at the end of a headline.
4384 After a colon, {{{kbdkey(M-,TAB)}}} offers completion on tags.  There is
4385 also a special command for inserting tags:
4387 #+attr_texinfo: :table-type table :indic @asis
4388 - {{{kbd(C-c C-q)}}}, ~org-set-tags-command~ ::
4389   #+kindex: C-c C-q
4391   #+cindex: completion, of tags
4392   #+vindex: org-tags-column
4394   Enter new tags for the current headline.  Org mode will either offer
4395   completion or a special single-key interface for setting tags, see
4396   below.  After pressing {{{key(RET)}}}, the tags will be inserted and aligned
4397   to ~org-tags-column~.  When called with a {{{kbd(C-u)}}} prefix, all
4398   tags in the current buffer will be aligned to that column, just to make
4399   things look nice.  TAGS are automatically realigned after promotion,
4400   demotion, and TODO state changes (see [[TODO basics]]).
4402 - {{{kbd(C-c C-c)}}}, ~org-set-tags-command~ ::
4403   #+kindex: C-c C-c
4405   When the cursor is in a headline, this does the same as {{{kbd(C-c C-q)}}}.
4408 #+vindex: org-tag-alist
4410 Org supports tag insertion based on a /list of tags/.  By default this
4411 list is constructed dynamically, containing all tags currently used in
4412 the buffer.  You may also globally specify a hard list of tags with the
4413 variable ~org-tag-alist~.  Finally you can set the default tags for a
4414 given file with lines like
4416 #+cindex: #+TAGS
4417 #+begin_example
4418    ,#+TAGS: @work @home @tennisclub
4419    ,#+TAGS: laptop car pc sailboat
4420 #+end_example
4422 If you have globally defined your preferred set of tags using the
4423 variable ~org-tag-alist~, but would like to use a dynamic tag list
4424 in a specific file, add an empty TAGS option line to that file:
4426 #+begin_example
4427    ,#+TAGS:
4428 #+end_example
4430 #+vindex: org-tag-persistent-alist
4432 If you have a preferred set of tags that you would like to use in
4433 every file, in addition to those defined on a per-file basis by TAGS
4434 option lines, then you may specify a list of tags with the variable
4435 ~org-tag-persistent-alist~.  You may turn this off on a per-file basis
4436 by adding a STARTUP option line to that file:
4438 #+begin_example
4439    ,#+STARTUP: noptag
4440 #+end_example
4442 By default Org mode uses the standard minibuffer completion facilities
4443 for entering tags.  However, it also implements another, quicker, tag
4444 selection method called /fast tag selection/.  This allows you to
4445 select and deselect tags with just a single key press.  For this to
4446 work well you should assign unique letters to most of your commonly
4447 used tags.  You can do this globally by configuring the variable
4448 ~org-tag-alist~ in your {{{file(.emacs)}}} file.  For example, you may
4449 find the need to tag many items in different files with
4450 {{{samp(:@home:)}}}.  In this case you can set something like:
4452 #+header: :eval no
4453 #+header: :exports code
4454 #+begin_src emacs-lisp
4455 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4456 #+end_src
4458 {{{noindent}}} If the tag is only relevant to the file you are working
4459 on, then you can instead set the TAGS option line as:
4461 #+begin_example
4462    ,#+TAGS: @work(w)  @home(h)  @tennisclub(t)  laptop(l)  pc(p)
4463 #+end_example
4465 {{{noindent}}} The tags interface will show the available tags in a splash
4466 window.  If you want to start a new line after a specific tag, insert
4467 ~\n~ into the tag list, like this:
4469 #+begin_example
4470    ,#+TAGS: @work(w)  @home(h)  @tennisclub(t) \n laptop(l)  pc(p)
4471 #+end_example
4473 {{{noindent}}} or write them in two lines:
4475 #+begin_example
4476    ,#+TAGS: @work(w)  @home(h)  @tennisclub(t)
4477    ,#+TAGS: laptop(l)  pc(p)
4478 #+end_example
4480 {{{noindent}}}
4481 You can also group together tags that are mutually exclusive by using
4482 braces, as in:
4484 #+begin_example
4485    ,#+TAGS: { @work(w)  @home(h)  @tennisclub(t) }  laptop(l)  pc(p)
4486 #+end_example
4488 {{{noindent}}} you indicate that at most one of {{{samp(@work)}}},
4489 {{{samp(@home)}}}, and {{{samp(@tennisclub)}}} should be selected.
4490 Multiple such groups are allowed.
4492 {{{noindent}}} Don't forget to press {{{kbd(C-c C-c)}}} with the
4493 cursor in one of these lines to activate any changes.
4495 {{{noindent}}} To set these mutually exclusive groups in the variable
4496 ~org-tags-alist~, you must use the dummy tags ~:startgroup~ and
4497 ~:endgroup~ instead of the braces.  Similarly, you can use ~:newline~
4498 to indicate a line break.  The previous example would be set globally
4499 by the following configuration:
4501 #+header: :eval no
4502 #+header: :exports code
4503 #+begin_src emacs-lisp
4504 (setq org-tag-alist '((:startgroup . nil)
4505                       ("@@work" . ?w) ("@@home" . ?h)
4506                       ("@@tennisclub" . ?t)
4507                       (:endgroup . nil)
4508                       ("laptop" . ?l) ("pc" . ?p)))
4509 #+end_src
4511 If at least one tag has a selection key then pressing {{{kbd(C-c C-c)}}} will
4512 automatically present you with a special interface, listing inherited tags,
4513 the tags of the current headline, and a list of all valid tags with
4514 corresponding keys.[fn:57]  In this interface, you can use the following
4515 keys:
4517 #+attr_texinfo: :table-type table :indic @asis
4518 - {{{kbd(a-z...)}}} ::
4519   #+kindex: a-z...
4521   Pressing keys assigned to tags will add or remove them from the list of
4522   tags in the current line.  Selecting a tag in a group of mutually
4523   exclusive tags will turn off any other tags from that group.
4525 - {{{key(TAB)}}} ::
4526   #+kindex: @key{TAB}
4528   Enter a tag in the minibuffer, even if the tag is not in the predefined
4529   list.  You will be able to complete on all tags present in the buffer.
4530   You can also add several tags: just separate them with a comma.
4532 - {{{key(SPC)}}} ::
4533   #+kindex: @key{SPC}
4535   Clear all tags for this line.
4537 - {{{key(RET)}}} ::
4538   #+kindex: @key{RET}
4540   Accept the modified set.
4542 - C-g ::
4544   Abort without installing changes.
4546 - q ::
4548   If {{{kbd(q)}}} is not assigned to a tag, it aborts like {{{kbd(C-g)}}}.
4550 - ! ::
4552   Turn off groups of mutually exclusive tags.  Use this to (as an
4553   exception) assign several tags from such a group.
4555 - C-c ::
4557   Toggle auto-exit after the next change (see below).
4558   If you are using expert mode, the first {{{kbd(C-c)}}} will display the
4559   selection window.
4562 {{{noindent}}} This method lets you assign tags to a headline with
4563 very few keys.  With the above setup, you could clear the current tags
4564 and set {{{samp(@home)}}}, {{{samp(laptop)}}} and {{{samp(pc)}}} tags
4565 with just the following keys: {{{ksksksk(C-c C-c,SPC,h l p,RET)}}}.  Switching from {{{samp(@home)}}} to
4566 {{{samp(@work)}}} would be done with {{{kbdspckey(C-c C-c w,RET)}}} or
4567 alternatively with {{{kbd(C-c C-c C-c w)}}}.  Adding the non-predefined
4568 tag {{{samp(Sarah)}}} could be done with 
4569 {{{ksksksksk(C-c C-c,TAB,S a r a h,RET,RET)}}}.
4571 #+vindex: org-fast-tag-selection-single-key
4573 If you find that most of the time you need only a single key press to
4574 modify your list of tags, set the variable
4575 ~org-fast-tag-selection-single-key~.  Then you no longer have to press
4576 {{{key(RET)}}} to exit fast tag selection---it will immediately exit after
4577 the first change.  If you then occasionally need more keys, press
4578 {{{kbd(C-c)}}} to turn off auto-exit for the current tag selection
4579 process (in effect: start selection with {{{kbd(C-c C-c C-c)}}}
4580 instead of {{{kbd(C-c C-c)}}}).  If you set the variable to the value
4581 ~expert~, the special window is not even shown for single-key tag
4582 selection, it comes up only when you press an extra {{{kbd(C-c)}}}.
4584 ** Tag searches
4585    :PROPERTIES:
4586    :DESCRIPTION: Searching for combinations of tags
4587    :END:
4588 #+cindex: tag searches
4589 #+cindex: searching for tags
4591 Once a system of tags has been set up, it can be used to collect related
4592 information into special lists.
4594 #+attr_texinfo: :table-type table :indic @asis
4595 - {{{kbd(C-c / m)}}}, ~C-c \~ ~org-match-sparse-tree~ ::
4597   Create a sparse tree with all headlines matching a tags search.  With a
4598   {{{kbd(C-u)}}} prefix argument, ignore headlines that are not a TODO
4599   line.
4601 - {{{kbd(C-c a m)}}}, ~org-tags-view~ ::
4602   #+kindex: C-c a m
4604   Create a global list of tag matches from all agenda files.
4605   See [[Matching tags and properties]].
4607 - {{{kbd(C-c a M)}}}, ~org-tags-view~ ::
4608   #+kindex: C-c a M
4609   #+vindex: org-tags-match-list-sublevels
4611   Create a global list of tag matches from all agenda files, but check
4612   only TODO items and force checking subitems (see variable
4613   ~org-tags-match-list-sublevels~).
4616 These commands all prompt for a match string which allows basic
4617 Boolean logic like {{{samp(+boss+urgent-project1)}}}, to find entries
4618 with tags {{{samp(boss)}}} and {{{samp(urgent)}}}, but not
4619 {{{samp(project1)}}}, or {{{samp(Kathy|Sally)}}} to find entries which
4620 are tagged, like {{{samp(Kathy)}}} or {{{samp(Sally)}}}.  The full
4621 syntax of the search string is rich and allows also matching against
4622 TODO keywords, entry levels and properties.  For a complete description
4623 with many examples, see [[Matching tags and properties]].
4625 * Properties and columns
4626   :PROPERTIES:
4627   :DESCRIPTION: Storing information about an entry
4628   :ALT_TITLE: Properties and Columns
4629   :END:
4630 #+cindex: properties
4632 A property is a key-value pair associated with an entry.  Properties
4633 can be set so they are associated with a single entry, with every
4634 entry in a tree, or with every entry in an Org mode file.
4636 There are two main applications for properties in Org mode.  First,
4637 properties are like tags, but with a value.  Imagine maintaining a file
4638 where you document bugs and plan releases for a piece of software.
4639 Instead of using tags like ~:release_1:~, ~:release_2:~, you can use a
4640 property, say ~:Release:~, that in different subtrees has different
4641 values, such as ~1.0~ or ~2.0~.  Second, you can use properties to
4642 implement (very basic) database capabilities in an Org buffer.  Imagine
4643 keeping track of your music CDs, where properties could be things such
4644 as the album, artist, date of release, number of tracks, and so on.
4646 Properties can be conveniently edited and viewed in column view
4647 (see [[Column view]]).
4649 ** Property syntax
4650    :PROPERTIES:
4651    :DESCRIPTION: How properties are spelled out
4652    :END:
4653 #+cindex: property syntax
4654 #+cindex: drawer, for properties
4656 Properties are key-value pairs.  When they are associated with a single
4657 entry or with a tree they need to be inserted into a special drawer
4658 (see [[Drawers]]) with the name ~PROPERTIES~.  Each property is specified
4659 on a single line, with the key (surrounded by colons) first, and the
4660 value after it.  Here is an example:
4662 #+begin_example
4663    ,* CD collection
4664    ,** Classic
4665    ,*** Goldberg Variations
4666    ,    :PROPERTIES:
4667    ,    :Title:     Goldberg Variations
4668    ,    :Composer:  J.S. Bach
4669    ,    :Artist:    Glen Gould
4670    ,    :Publisher: Deutsche Grammophon
4671    ,    :NDisks:    1
4672    ,    :END:
4673 #+end_example
4675 Depending on the value of ~org-use-property-inheritance~, a property
4676 set this way will either be associated with a single entry, or the
4677 sub-tree defined by the entry, see [[Property inheritance]].
4679 You may define the allowed values for a particular property
4680 {{{samp(:Xyz:)}}} by setting a property {{{samp(:Xyz_ALL:)}}}.  This
4681 special property is /inherited/, so if you set it in a level 1 entry,
4682 it will apply to the entire tree.  When allowed values are defined,
4683 setting the corresponding property becomes easier and is less prone to
4684 typing errors.  For the example with the CD collection, we can
4685 predefine publishers and the number of disks in a box like this:
4687 #+begin_example
4688    ,* CD collection
4689    ,  :PROPERTIES:
4690    ,  :NDisks_ALL:  1 2 3 4
4691    ,  :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4692    ,  :END:
4693 #+end_example
4695 If you want to set properties that can be inherited by any entry in a
4696 file, use a line like:
4698 #+cindex: property, _ALL
4699 #+cindex: #+PROPERTY
4700 #+begin_example
4701    ,#+PROPERTY: NDisks_ALL 1 2 3 4
4702 #+end_example
4704 If you want to add to the value of an existing property, append a ~+~
4705 to the property name.  The following results in the property ~var~
4706 having the value ``foo=1 bar=2''.
4708 #+cindex: property, +
4709 #+begin_example
4710    ,#+PROPERTY: var  foo=1
4711    ,#+PROPERTY: var+ bar=2
4712 #+end_example
4714 It is also possible to add to the values of inherited properties.  The
4715 following results in the ~genres~ property having the value ``Classic
4716 Baroque'' under the ~Goldberg Variations~ subtree.
4718 #+cindex: property, +
4719 #+begin_example
4720    ,* CD collection
4721    ,** Classic
4722    ,    :PROPERTIES:
4723    ,    :GENRES: Classic
4724    ,    :END:
4725    ,*** Goldberg Variations
4726    ,    :PROPERTIES:
4727    ,    :Title:     Goldberg Variations
4728    ,    :Composer:  J.S. Bach
4729    ,    :Artist:    Glen Gould
4730    ,    :Publisher: Deutsche Grammophon
4731    ,    :NDisks:    1
4732    ,    :GENRES+:   Baroque
4733    ,    :END:
4734 #+end_example
4735 Note that a property can only have one entry per Drawer.
4737 #+vindex: org-global-properties
4739 Property values set with the global variable ~org-global-properties~
4740 can be inherited by all entries in all Org files.
4742 {{{noindent}}}
4743 The following commands help to work with properties:
4745 #+attr_texinfo: :table-type table :indic @asis
4746 - {{{kbdkey(M-,TAB)}}}, ~pcomplete~ ::
4747   #+kindex: M-@key{TAB}
4749   After an initial colon in a line, complete property keys.  All keys
4750   used in the current file will be offered as possible completions.
4752 - {{{kbd(C-c C-x p)}}}, ~org-set-property~ ::
4753   #+kindex: C-c C-x p
4755   Set a property.  This prompts for a property name and a value.  If
4756   necessary, the property drawer is created as well.
4758 - C-u M-x org-insert-drawer RET ::
4759   #+cindex: org-insert-drawer
4761   Insert a property drawer into the current entry.  The drawer will be
4762   inserted early in the entry, but after the lines with planning
4763   information like deadlines.
4765 - {{{kbd(C-c C-c)}}}, ~org-property-action~ ::
4766   #+kindex: C-c C-c
4768   With the cursor in a property drawer, this executes property commands.
4770 - {{{kbd(C-c C-c s)}}}, ~org-set-property~ ::
4771   #+kindex: C-c C-c s
4773   Set a property in the current entry.  Both the property and the value
4774   can be inserted using completion.
4776 - {{{kbdkey(S-,right)}}} {{{kbdkey(S-,left)}}}, ~org-property-next-allowed-value~ ~org-property-previous-allowed-value~ ::
4777   #+kindex: S-@key{right}
4779   Switch property at point to the next/previous allowed value.
4781 - {{{kbd(C-c C-c d)}}}, ~org-delete-property~ ::
4782   #+kindex: C-c C-c d
4784   Remove a property from the current entry.
4786 - {{{kbd(C-c C-c D)}}}, ~org-delete-property-globally~ ::
4787   #+kindex: C-c C-c D
4789   Globally remove a property, from all entries in the current file.
4791 - {{{kbd(C-c C-c c)}}}, ~org-compute-property-at-point~ ::
4792   #+kindex: C-c C-c c
4794   Compute the property at point, using the operator and scope from the
4795   nearest column format definition.
4797 ** Special properties
4798    :PROPERTIES:
4799    :DESCRIPTION: Access to other Org mode features
4800    :END:
4801 #+cindex: properties, special
4803 Special properties provide an alternative access method to Org mode
4804 features, like the TODO state or the priority of an entry, discussed
4805 in the previous chapters.  This interface exists so that you can
4806 include these states in a column view (see [[Column view]]), or to use
4807 them in queries.  The following property names are special and (except
4808 for ~:CATEGORY:~) should not be used as keys in the properties drawer:
4810 #+cindex: property, special, ID
4811 #+cindex: property, special, TODO
4812 #+cindex: property, special, TAGS
4813 #+cindex: property, special, ALLTAGS
4814 #+cindex: property, special, CATEGORY
4815 #+cindex: property, special, PRIORITY
4816 #+cindex: property, special, DEADLINE
4817 #+cindex: property, special, SCHEDULED
4818 #+cindex: property, special, CLOSED
4819 #+cindex: property, special, TIMESTAMP
4820 #+cindex: property, special, TIMESTAMP_IA
4821 #+cindex: property, special, CLOCKSUM
4822 #+cindex: property, special, CLOCKSUM_T
4823 #+cindex: property, special, BLOCKED
4824 # guessing that ITEM is needed in this area; also, should this list be sorted?
4825 #+cindex: property, special, ITEM
4826 #+cindex: property, special, FILE
4828 #+attr_texinfo: :columns 0.3 0.7
4829 | ID           | A globally unique ID used for synchronization during           |
4830 |              | iCalendar or MobileOrg export.                                 |
4831 | TODO         | The TODO keyword of the entry.                                 |
4832 | TAGS         | The tags defined directly in the headline.                     |
4833 | ALLTAGS      | All tags, including inherited ones.                            |
4834 | CATEGORY     | The category of an entry.                                      |
4835 | PRIORITY     | The priority of the entry, a string with a single letter.      |
4836 | DEADLINE     | The deadline time string, without the angular brackets.        |
4837 | SCHEDULED    | The scheduling timestamp, without the angular brackets.        |
4838 | CLOSED       | When was this entry closed?                                    |
4839 | TIMESTAMP    | The first keyword-less timestamp in the entry.                 |
4840 | TIMESTAMP_IA | The first inactive timestamp in the entry.                     |
4841 | CLOCKSUM     | The sum of CLOCK intervals in the subtree.  ~org-clock-sum~    |
4842 |              | must be run first to compute the values in the current buffer. |
4843 | CLOCKSUM_T   | The sum of CLOCK intervals in the subtree for today.           |
4844 |              | ~org-clock-sum-today~ must be run first to compute the         |
4845 |              | values in the current buffer.                                  |
4846 | BLOCKED      | "t" if task is currently blocked by children or siblings       |
4847 | ITEM         | The headline of the entry.                                     |
4848 | FILE         | The filename the entry is located in.                          |
4850 ** Property searches
4851    :PROPERTIES:
4852    :DESCRIPTION: Matching property values
4853    :END:
4854 #+cindex: properties, searching
4855 #+cindex: searching, of properties
4857 To create sparse trees and special lists with selection based on properties,
4858 the same commands are used as for tag searches (see [[Tag searches]]).
4860 #+attr_texinfo: :table-type table :indic @asis
4861 - {{{kbd(C-c / m)}}}, ~C-c \~ ~org-match-sparse-tree~ ::
4862   #+kindex: C-c / m
4864   Create a sparse tree with all matching entries.  With a {{{kbd(C-u)}}}
4865   prefix argument, ignore headlines that are not a TODO line.
4867 - {{{kbd(C-c a m)}}}, ~org-tags-view~ ::
4868   #+kindex: C-c a m
4870   Create a global list of tag/property matches from all agenda files.
4871   See [[Matching tags and properties]].
4873 - {{{kbd(C-c a M)}}}, ~org-tags-view~ ::
4874   #+kindex: C-c a M
4875   #+vindex: org-tags-match-list-sublevels
4877   Create a global list of tag matches from all agenda files, but check
4878   only TODO items and force checking of subitems (see variable
4879   ~org-tags-match-list-sublevels~).
4882 The syntax for the search string is described in [[Matching tags and
4883 properties]].
4885 There is also a special command for creating sparse trees based on a
4886 single property:
4888 #+attr_texinfo: :table-type table :indic @asis
4889 - {{{kbd(C-c / p)}}} ::
4890   #+kindex: C-c / p
4892   Create a sparse tree based on the value of a property.  This first
4893   prompts for the name of a property, and then for a value.  A sparse
4894   tree is created with all entries that define this property with the
4895   given value.  If you enclose the value in curly braces, it is
4896   interpreted as a regular expression and matched against the property
4897   values.
4899 ** Property inheritance
4900    :PROPERTIES:
4901    :DESCRIPTION: Passing values down a tree
4902    :END:
4903 #+cindex: properties, inheritance
4904 #+cindex: inheritance, of properties
4906 #+vindex: org-use-property-inheritance
4908 The outline structure of Org mode documents lends itself to an
4909 inheritance model of properties: if the parent in a tree has a certain
4910 property, the children can inherit this property.  Org mode does not
4911 turn this on by default, because it can slow down property searches
4912 significantly and is often not needed.  However, if you find
4913 inheritance useful, you can turn it on by setting the variable
4914 ~org-use-property-inheritance~.  It may be set to ~t~ to make all
4915 properties inherited from the parent, to a list of properties that
4916 should be inherited, or to a regular expression that matches inherited
4917 properties.  If a property has the value {{{samp(nil)}}}, this is
4918 interpreted as an explicit undefine of the property, so that
4919 inheritance search will stop at this value and return ~nil~.
4921 Org mode has a few properties for which inheritance is hard-coded, at
4922 least for the special applications for which they are used:
4925 #+attr_texinfo: :table-type table :indic @asis
4926 - ~COLUMNS~ ::
4927   #+cindex: property, COLUMNS
4929   The ~:COLUMNS:~ property defines the format of column view (see [[Column
4930   view]]).  It is inherited in the sense that the level where a ~:COLUMNS:~
4931   property is defined is used as the starting point for a column view
4932   table, independently of the location in the subtree from where columns
4933   view is turned on.
4935 - ~CATEGORY~ ::
4936   #+cindex: property, CATEGORY
4938   For agenda view, a category set through a ~:CATEGORY:~ property
4939   applies to the entire subtree.
4941 - ~ARCHIVE~ ::
4942   #+cindex: property, ARCHIVE
4944   For archiving, the ~:ARCHIVE:~ property may define the archive
4945   location for the entire subtree (see [[Moving subtrees]]).
4947 - ~LOGGING~ ::
4948   #+cindex: property, LOGGING
4950   The LOGGING property may define logging settings for an entry or a
4951   subtree (see [[Tracking TODO state changes]]).
4953 ** Column view
4954    :PROPERTIES:
4955    :DESCRIPTION: Tabular viewing and editing
4956    :END:
4958 A great way to view and edit properties in an outline tree is /column
4959 view/.  In column view, each outline node is turned into a table row.
4960 Columns in this table provide access to properties of the entries.  Org
4961 mode implements columns by overlaying a tabular structure over the
4962 headline of each item.  While the headlines have been turned into a
4963 table row, you can still change the visibility of the outline tree.
4964 For example, you get a compact table by switching to CONTENTS view
4965 ({{{kbdkey(S-,TAB)}}}} {{{kbdkey(S-,TAB)}}}), or simply {{{kbd(c)}}} while
4966 column view is active), but you can still open, read, and edit the
4967 entry below each headline.  Or, you can switch to column view after
4968 executing a sparse tree command and in this way get a table only for
4969 the selected items.  Column view also works in agenda buffers (see
4970 [[Agenda views]]) where queries have collected selected items, possibly
4971 from a number of files.
4973 *** Defining columns
4974     :PROPERTIES:
4975     :DESCRIPTION: The COLUMNS format property
4976     :END:
4977 #+cindex: column view, for properties
4978 #+cindex: properties, column view
4980 Setting up a column view first requires defining the columns.  This is
4981 done by defining a column format line.
4983 **** Scope of column definitions
4984      :PROPERTIES:
4985      :DESCRIPTION: Where defined, where valid?
4986      :END:
4988 To define a column format for an entire file, use a line like:
4990 #+cindex: #+COLUMNS
4991 #+begin_example
4992    ,#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4993 #+end_example
4995 To specify a format that only applies to a specific tree, add a
4996 ~:COLUMNS:~ property to the top node of that tree, for example:
4998 #+begin_example
4999    ,** Top node for columns view
5000    ,   :PROPERTIES:
5001    ,   :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5002    ,   :END:
5003 #+end_example
5005 If a ~:COLUMNS:~ property is present in an entry, it defines columns
5006 for the entry itself, and for the entire subtree below it.  Since the
5007 column definition is part of the hierarchical structure of the
5008 document, you can define columns on level 1 that are general enough
5009 for all sublevels, and more specific columns further down, when you
5010 edit a deeper part of the tree.
5012 **** Column attributes
5013      :PROPERTIES:
5014      :DESCRIPTION: Appearance and content of a column
5015      :END:
5016 A column definition sets the attributes of a column.  The general
5017 definition looks like this:
5019   %[{{{var(width)}}}]{{{var(property)}}}[({{{var(title)}}})][{{{{var(summary-type)}}}}]
5021 {{{noindent}}} Except for the percent sign and the property name, all
5022 items are optional.  The individual parts have the following meaning:
5024 #+attr_texinfo: :columns 0.2 0.8
5025 | Variable                | Meaning                                                      |
5026 |-------------------------+--------------------------------------------------------------|
5027 | {{{var(width)}}}        | An integer specifying the width of the column in characters. |
5028 |                         | If omitted, the width will be determined automatically.      |
5029 | {{{var(property)}}}     | The property that should be edited in this column.           |
5030 |                         | Special properties representing meta data are allowed here   |
5031 |                         | as well (see [[Special properties]])                         |
5032 | {{{var(title)}}}        | The header text for the column.  If omitted, the property    |
5033 |                         | name is used.                                                |
5034 | {{{var(summary-type)}}} | The summary type.  If specified, the column values for       |
5035 |                         | parent nodes are computed from the children.                 |
5037 {{{noindent}}} Supported summary types are:
5039 #+attr_texinfo: :columns 0.2 0.8
5040 | Type     | Meaning                                                               |
5041 |----------+-----------------------------------------------------------------------|
5042 | ~+~      | Sum numbers in this column.                                           |
5043 | ~+;%.1f~ | Like ~+~, but format result with {{{samp(%.1f)}}}.                    |
5044 | ~$~      | Currency, short for {{{samp(+;%.2f)}}}.                               |
5045 | ~:~      | Sum times, HH:MM, plain numbers are hours.                            |
5046 | ~X~      | Checkbox status, {{{samp([X])}}} if all children are {{{samp([X])}}}. |
5047 | ~X/~     | Checkbox status, {{{samp([n/m])}}}.                                   |
5048 | ~X%~     | Checkbox status, {{{samp([n%])}}}.                                    |
5049 | ~min~    | Smallest number in column.                                            |
5050 | ~max~    | Largest number.                                                       |
5051 | ~mean~   | Arithmetic mean of numbers.                                           |
5052 | ~:min~   | Smallest time value in column.                                        |
5053 | ~:max~   | Largest time value.                                                   |
5054 | ~:mean~  | Arithmetic mean of time values.                                       |
5055 | ~@min~   | Minimum age (in days/hours/mins/seconds).                             |
5056 | ~@max~   | Maximum age (in days/hours/mins/seconds).                             |
5057 | ~@mean~  | Arithmetic mean of ages (in days/hours/mins/seconds).                 |
5058 | ~est+~   | Add low-high estimates.                                               |
5061 {{{noindent}}} Be aware that you can only have one summary type for
5062 any property you include.  Subsequent columns referencing the same
5063 property will all display the same summary information.
5065 The ~est+~ summary type requires further explanation.  It is used for
5066 combining estimates, expressed as low-high ranges.  For example,
5067 instead of estimating a particular task will take 5 days, you might
5068 estimate it as 5-6 days if you're fairly confident you know how much
5069 work is required, or 1-10 days if you don't really know what needs to
5070 be done.  Both ranges average at 5.5 days, but the first represents a
5071 more predictable delivery.
5073 When combining a set of such estimates, simply adding the lows and
5074 highs produces an unrealistically wide result.  Instead, ~est+~ adds
5075 the statistical mean and variance of the sub-tasks, generating a final
5076 estimate from the sum.  For example, suppose you had ten tasks, each of
5077 which was estimated at 0.5 to 2 days of work.  Straight addition
5078 produces an estimate of 5 to 20 days, representing what to expect if
5079 everything goes either extremely well or extremely poorly.  In
5080 contrast, ~est+~ estimates the full job more realistically, at 10-15
5081 days.
5083 Here is an example for a complete columns definition, along with allowed
5084 values.[fn:58]
5086 #+begin_example
5087    :COLUMNS:  %25ITEM %9Approved(Approved?){X} %Owner %11Status \
5088                       %10Time_Estimate{:} %CLOCKSUM %CLOCKSUM_T
5089    :Owner_ALL:    Tammy Mark Karl Lisa Don
5090    :Status_ALL:   "In progress" "Not started yet" "Finished" ""
5091    :Approved_ALL: "[ ]" "[X]"
5092 #+end_example
5094 {{{noindent}}} The first column, {{{samp(%25ITEM)}}}, means the first
5095 25 characters of the item itself, i.e., of the headline.  You probably
5096 always should start the column definition with the {{{samp(ITEM)}}}
5097 specifier.  The other specifiers create columns {{{samp(Owner)}}} with
5098 a list of names as allowed values, for {{{samp(Status)}}} with four
5099 different possible values, and for a checkbox field
5100 {{{samp(Approved)}}}.  When no width is given after the {{{samp(%)}}}
5101 character, the column will be exactly as wide as it needs to be in
5102 order to fully display all values.  The {{{samp(Approved)}}} column
5103 does have a modified title ({{{samp(Approved?)}}}, with a question
5104 mark).  Summaries will be created for the {{{samp(Time_Estimate)}}}
5105 column by adding time duration expressions like HH:MM, and for the
5106 {{{samp(Approved)}}} column, by providing an {{{samp([X])}}} status if
5107 all children have been checked.  The {{{samp(CLOCKSUM)}}} and
5108 {{{samp(CLOCKSUM_T)}}} columns are special, they lists the sums of
5109 CLOCK intervals in the subtree, either for all clocks or just for
5110 today.
5112 *** Using column view
5113     :PROPERTIES:
5114     :DESCRIPTION: How to create and use column view
5115     :END:
5117 The following commands turn column view on or off:
5119 #+attr_texinfo: :table-type table :indic @asis
5120 - {{{kbd(C-c C-x C-c)}}}, ~org-columns~ ::
5121   #+kindex: C-c C-x C-c
5122   #+vindex: org-columns-default-format
5124   Turn on column view.  If the cursor is before the first headline in the
5125   file, column view is turned on for the entire file, using the
5126   ~#+COLUMNS~ definition.  If the cursor is somewhere inside the outline,
5127   this command searches the hierarchy, up from point, for a ~:COLUMNS:~
5128   property that defines a format.  When one is found, the column view
5129   table is established for the tree starting at the entry that contains
5130   the ~:COLUMNS:~ property.  If no such property is found, the format is
5131   taken from the ~#+COLUMNS~ line or from the variable
5132   ~org-columns-default-format~, and column view is established for the
5133   current entry and its subtree.
5135 - {{{kbd(r)}}}, ~org-columns-redo~ ::
5136   #+kindex: r
5138   Recreate the column view, to include recent changes made in the
5139   buffer.
5141 - {{{kbd(g)}}}, ~org-columns-redo~ ::
5142   #+kindex: g
5144   Same as {{{kbd(r)}}}.
5146 - {{{kbd(q)}}}, ~org-columns-quit~ ::
5147   #+kindex: q
5149   Exit column view.
5151 The following commands let you edit information in column view:
5153 #+attr_texinfo: :table-type table :indic @asis
5154 - {{{key(left)}}} {{{key(right)}}} {{{key(up)}}} {{{key(down)}}} ::
5156   Move through the column view from field to field.
5158 -  {{{kbdkey(S-,left)}}} {{{kbdkey(S-,right)}}} ::
5159   #+kindex: S-@key{left}
5160   #+kindex: S-@key{right}
5162   Switch to the next/previous allowed value of the field.  For this, you
5163   have to have specified allowed values for a property.
5165 - {{{kbd(1..9\,0)}}} ::
5166   #+kindex: 1..9,0
5168   Directly select the Nth allowed value, {{{kbd(0)}}} selects the 10th
5169   value.
5171 - {{{kbd(n)}}} {{{kbd(p)}}}, ~org-columns-next-allowed-value~ ~org-columns-previous-allowed-value~ ::
5172   #+kindex: n
5174   Same as {{{kbdkey(S-,left)}}} {{{kbdkey(S-,right)}}}
5176 - {{{kbd(e)}}}, ~org-columns-edit-value~ ::
5177   #+kindex: e
5179   Edit the property at point.  For the special properties, this will
5180   invoke the same interface that you normally use to change that
5181   property.  For example, when editing a TAGS property, the tag
5182   completion or fast selection interface will pop up.
5184 - {{{kbd(C-c C-c)}}}, ~org-columns-set-tags-or-toggle~ ::
5185   #+kindex: C-c C-c
5187   When there is a checkbox at point, toggle it.
5189 - {{{kbd(v)}}}, ~org-columns-show-value~ ::
5190   #+kindex: v
5192   View the full value of this property.  This is useful if the width of
5193   the column is smaller than that of the value.
5195 - {{{kbd(a)}}}, ~org-columns-edit-allowed~ ::
5196   #+kindex: a
5198   Edit the list of allowed values for this property.  If the list is found
5199   in the hierarchy, the modified values is stored there.  If no list is
5200   found, the new value is stored in the first entry that is part of the
5201   current column view.
5204 The following commands modify column view on-the-fly:
5206 #+attr_texinfo: :table-type table :indic @asis
5207 - {{{kbd(<)}}} {{{kbd(>)}}}, ~org-columns-narrow~ ~org-columns-widen~ ::
5208   #+kindex: <
5210   Make the column narrower/wider by one character.
5212 - {{{kbdkey(S-M-,right)}}}, ~org-columns-new~ ::
5213   #+kindex: S-M-@key{right}
5215   Insert a new column, to the left of the current column.
5217 - {{{kbdkey(S-M-,left)}}}, ~org-columns-delete~ ::
5218   #+kindex: S-M-@key{left}
5219   
5220   Delete the current column.
5222 *** Capturing column view
5223     :PROPERTIES:
5224     :DESCRIPTION: A dynamic block for column view
5225     :END:
5227 Since column view is just an overlay over a buffer, it cannot be
5228 exported or printed directly.  If you want to capture a column view,
5229 use a ~columnview~ dynamic block (see [[Dynamic blocks]]).  The frame of
5230 this block looks like this:
5232 #+cindex: #+BEGIN, columnview
5233 #+begin_example
5234    ,* The column view
5235    ,#+BEGIN: columnview :hlines 1 :id "label"
5237    ,#+END:
5238 #+end_example
5240 {{{noindent}}} This dynamic block has the following parameters:
5242 #+attr_texinfo: :table-type table :indic @asis
5243 - ~:id~ ::
5245   This is the most important parameter.  Column view is a feature that is
5246   often localized to a certain (sub)tree, and the capture block might be
5247   at a different location in the file.  To identify the tree whose view
5248   to capture, you can use 4 values:
5250   #+cindex: property, ID
5251   #+attr_texinfo: :columns 0.35 0.65
5252   | Value               | Meaning                                                       |
5253   |---------------------+---------------------------------------------------------------|
5254   | local               | Use the tree in which the capture block is located.           |
5255   | global              | Make a global view, including all headings in the file.       |
5256   | =file:PATH-TO-FILE= | Run column view at the top of this file.                      |
5257   | ID                  | Call column view in the tree that has an ~:ID:~               |
5258   |                     | property with the value /label/.  You can use                 |
5259   |                     | {{{kbd(M-x org-id-copy)}}} to create a globally unique ID for |
5260   |                     | the current entry and copy it to the kill-ring.               |
5262   - local ::
5263     
5264     Use the tree in which the capture block is located.
5266   - global :: 
5268     Make a global view, including all headings in the file.
5270   - =file:PATH-TO-FILE= ::
5271     
5272     Run column view at the top of this file.
5274   - ID :: 
5275     
5276     Call column view in the tree that has an ~:ID:~ property with the
5277     value /label/.  You can use {{{kbd(M-x org-id-copy)}}} to
5278     create a globally unique ID for the current entry and copy
5279     it to the kill-ring.
5281 - ~:hlines~ ::
5283   When ~t~, insert an hline after every line.  When a number ~N~,
5284               insert an hline before each headline with level ~<=~
5285               {{{var(N)}}}.
5287 - ~:vlines~ ::
5289   When set to ~t~, force column groups to get vertical lines.
5291 - ~:maxlevel~ ::
5293   When set to a number, don't capture entries below this level.
5295 - ~:skip-empty-rows~ ::
5297   When set to ~t~, skip rows where the only non-empty specifier of the
5298   column view is ~ITEM~.
5302 {{{noindent}}} The following commands insert or update the dynamic
5303 block:
5305 #+attr_texinfo: :table-type table :indic @asis
5306 - {{{kbd(C-c C-x i)}}}, ~org-insert-columns-dblock~ ::
5307   #+kindex: C-c C-x i
5309   Insert a dynamic block capturing a column view.  You will be prompted
5310   for the scope or ID of the view.
5312 - {{{kbd(C-c C-c)}}} {{{kbd(C-c C-x C-u)}}}, ~org-dblock-update~ ::
5313   #+kindex: C-c C-c
5315   Update dynamic block at point.  The cursor needs to be in the ~#+BEGIN~
5316   line of the dynamic block.
5318 - {{{kbd(C-u C-c C-x C-u)}}}, ~org-update-all-dblocks~ ::
5319   #+kindex: C-u C-c C-x C-u
5321   Update all dynamic blocks (see [[Dynamic blocks]]).  This is useful if you
5322   have several clock table blocks, column-capturing blocks or other
5323   dynamic blocks in a buffer.
5326 You can add formulas to the column view table and you may add plotting
5327 instructions in front of the table---these will survive an update of the
5328 block.  If there is a ~#+TBLFM:~ after the table, the table will
5329 actually be recalculated automatically after an update.
5331 An alternative way to capture and process property values into a table
5332 is provided by Eric Schulte's {{{file(org-collector.el)}}} which is a
5333 contributed package.[fn:59] It provides a general API to collect
5334 properties from entries in a certain scope, and arbitrary Lisp
5335 expressions to process these values before inserting them into a table
5336 or a dynamic block.
5338 ** Property API
5339    :PROPERTIES:
5340    :DESCRIPTION: Properties for Lisp programmers
5341    :END:
5342 #+cindex: properties, API
5343 #+cindex: API, for properties
5345 There is a full API for accessing and changing properties.  This API
5346 can be used by Emacs Lisp programs to work with properties and to
5347 implement features based on them.  For more information see [[Using the
5348 property API]].
5350 * Dates and times
5351   :PROPERTIES:
5352   :DESCRIPTION: Making items useful for planning
5353   :ALT_TITLE: Dates and Times
5354   :END:
5355 #+cindex: dates
5356 #+cindex: times
5357 #+cindex: timestamp
5358 #+cindex: date stamp
5360 To assist project planning, TODO items can be labeled with a date and/or
5361 a time.  The specially formatted string carrying the date and time
5362 information is called a /timestamp/ in Org mode.  This may be a
5363 little confusing because timestamp is often used as indicating when
5364 something was created or last changed.  However, in Org mode this term
5365 is used in a much wider sense.
5367 ** Timestamps
5368    :PROPERTIES:
5369    :DESCRIPTION: Assigning a time to a tree entry
5370    :TITLE:    Timestamps, deadlines, and scheduling
5371    :END:
5372 #+cindex: timestamps
5373 #+cindex: ranges, time
5374 #+cindex: date stamps
5375 #+cindex: deadlines
5376 #+cindex: scheduling
5378 A timestamp is a specification of a date (possibly with a time or a
5379 range of times) in a special format, either ~<2003-09-16 Tue>~ or
5380 ~<2003-09-16 Tue 09:39>~ or ~<2003-09-16 Tue 12:00-12:30>~.[fn:60] A
5381 timestamp can appear anywhere in the headline or body of an Org tree
5382 entry.  Its presence causes entries to be shown on specific dates in
5383 the agenda (see [[Weekly/daily agenda]]).  We distinguish:
5385 #+attr_texinfo: :table-type table :indic @asis
5386 - Plain timestamp; Event; Appointment ::
5387   #+cindex: timestamp
5388   #+cindex: appointment
5390   A simple timestamp just assigns a date/time to an item.  This is just
5391   like writing down an appointment or event in a paper agenda.  In the
5392   timeline and agenda displays, the headline of an entry associated with
5393   a plain timestamp will be shown exactly on that date.
5395   #+begin_example
5396      ,* Meet Peter at the movies
5397        <2006-11-01 Wed 19:15>
5398      ,* Discussion on climate change
5399        <2006-11-02 Thu 20:00-22:00>
5400   #+end_example
5402 - Timestamp with repeater interval ::
5403   #+cindex: timestamp, with repeater interval
5405   A timestamp may contain a /repeater interval/, indicating that it
5406   applies not only on the given date, but again and again after a
5407   certain interval of N days (d), weeks (w), months (m), or years (y).
5408   The following will show up in the agenda every Wednesday:
5410   #+begin_example
5411      ,* Pick up Sam at school
5412        <2007-05-16 Wed 12:30 +1w>
5413   #+end_example
5415 - Diary-style sexp entries ::
5417   For more complex date specifications, Org mode supports using the
5418   special sexp diary entries implemented in the Emacs calendar/diary
5419   package.[fn:61] For example, with optional time:
5421   #+begin_example
5422      ,* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
5423        <%%(org-float t 4 2)>
5424   #+end_example
5426 - Time/Date range ::
5427   #+cindex: timerange
5428   #+cindex: date range
5430   Two timestamps connected by {{{samp(--)}}} denote a range.  The headline
5431   will be shown on the first and last day of the range, and on any dates
5432   that are displayed and fall in the range.  Here is an example:
5434   #+begin_example
5435      ,** Meeting in Amsterdam
5436         <2004-08-23 Mon>--<2004-08-26 Thu>
5437   #+end_example
5439 - Inactive timestamp ::
5440   #+cindex: timestamp, inactive
5441   #+cindex: inactive timestamp
5443   Just like a plain timestamp, but with square brackets instead of
5444   angular ones.  These timestamps are inactive in the sense that they do
5445   /not/ trigger an entry to show up in the agenda.
5447   #+begin_example
5448      ,* Gillian comes late for the fifth time
5449        [2006-11-01 Wed]
5450   #+end_example
5452 ** Creating timestamps
5453    :PROPERTIES:
5454    :DESCRIPTION: Commands to insert timestamps
5455    :END:
5456 For Org mode to recognize timestamps, they need to be in the specific
5457 format.  All commands listed below produce timestamps in the correct
5458 format.
5460 #+attr_texinfo: :table-type table :indic @asis
5461 - {{{kbd(C-c .)}}}, ~org-time-stamp~ ::
5462   #+kindex: C-c .
5464   Prompt for a date and insert a corresponding timestamp.  When the
5465   cursor is at an existing timestamp in the buffer, the command is used
5466   to modify this timestamp instead of inserting a new one.  When this
5467   command is used twice in succession, a time range is inserted.
5469 - {{{kbd(C-c !)}}}, ~org-time-stamp-inactive~ ::
5470   #+kindex: C-c !
5472   Like {{{kbd(C-c .)}}}, but insert an inactive timestamp that will not
5473   cause an agenda entry.
5475 - {{{kbd(C-u C-c .)}}} {{{kbd(C-u C-c !)}}} ::
5476   #+kindex: C-u C-c .
5477   #+kindex: C-u C-c .
5478   #+kindex: C-u C-c !
5479   #+vindex: org-time-stamp-rounding-minutes
5481   Like {{{kbd(C-c .)}}} and {{{kbd(C-c !)}}}, but use the alternative
5482   format which contains date and time.  The default time can be rounded
5483   to multiples of 5 minutes, see the option
5484   ~org-time-stamp-rounding-minutes~.
5486 - {{{kbd(C-c C-c)}}} ::
5487   #+kindex: C-c C-c
5489   Normalize timestamp, insert/fix day name if missing or wrong.
5491 - {{{kbd(C-c <)}}}, ~org-date-from-calendar~ ::
5492   #+kindex: C-c <
5494   Insert a timestamp corresponding to the cursor date in the Calendar.
5496 - {{{kbd(C-c >)}}}, ~org-goto-calendar~ ::
5497   #+kindex: C-c >
5499   Access the Emacs calendar for the current date.  If there is a
5500   timestamp in the current line, go to the corresponding date instead.
5502 - {{{kbd(C-c C-o)}}}, ~org-open-at-point~ ::
5503   #+kindex: C-c C-o
5505   Access the agenda for the date given by the timestamp or -range at
5506   point (see [[Weekly/daily agenda]]).
5508 - {{{kbdkey(S-,left)}}} {{{kbdkey(S-,right)}}}, ~org-timestamp-down-day~ ~org-timestamp-up-day~ ::
5509   #+kindex: S-@key{left}
5511   Change date at cursor by one day.  These key bindings conflict with
5512   shift-selection and related modes (see [[Conflicts]]).
5514 - {{{kbdkey(S-,up)}}} {{{kbdkey(S-,down)}}}, ~org-timestamp-up~ ~org-timestamp-down-down~ ::
5515   #+kindex: S-@key{up}
5517   Change the item under the cursor in a timestamp.  The cursor can be on
5518   a year, month, day, hour or minute.  When the timestamp contains a time
5519   range like {{{samp(15:30-16:30)}}}, modifying the first time will also
5520   shift the second, shifting the time block with constant length.  To
5521   change the length, modify the second time.  Note that if the cursor is
5522   in a headline and not at a timestamp, these same keys modify the
5523   priority of an item.  (see [[Priorities]]).  The key bindings also conflict
5524   with shift-selection and related modes (see [[Conflicts]]).
5526 - {{{kbd(C-c C-y)}}}, ~org-evaluate-time-range~ ::
5527   #+kindex: C-c C-y
5528   #+cindex: evaluate time range
5530   Evaluate a time range by computing the difference between start and
5531   end.  With a prefix argument, insert result after the time range (in a
5532   table: into the following column).
5534 *** The date/time prompt
5535     :PROPERTIES:
5536     :DESCRIPTION: How Org mode helps you enter dates and times
5537     :END:
5538 #+cindex: date, reading in minibuffer
5539 #+cindex: time, reading in minibuffer
5541 #+vindex: org-read-date-prefer-future
5543 When Org mode prompts for a date/time, the default is shown in default
5544 date/time format, and the prompt therefore seems to ask for a specific
5545 format.  But it will in fact accept date/time information in a variety
5546 of formats.  Generally, the information should start at the beginning
5547 of the string.  Org mode will find whatever information is in there and
5548 derive anything you have not specified from the /default date and
5549 time/.  The default is usually the current date and time, but when
5550 modifying an existing timestamp, or when entering the second stamp of
5551 a range, it is taken from the stamp in the buffer.  When filling in
5552 information, Org mode assumes that most of the time you will want to
5553 enter a date in the future: if you omit the month/year and the given
5554 day/month is /before/ today, it will assume that you mean a future
5555 date.[fn:62] If the date has been automatically shifted into the
5556 future, the time prompt will show this with {{{samp((=>F))}}}.
5558 For example, let's assume that today is *June 13, 2006*.  Here is how
5559 various inputs will be interpreted, the items filled in by Org mode
5560 are in *bold*.
5562 | Input        | Interpretation                                       |
5563 |--------------+------------------------------------------------------|
5564 | 3-2-5        | {{{result}}} 2003-02-05                              |
5565 | 2/5/3        | {{{result}}} 2003-02-05                              |
5566 | 14           | {{{result}}} *2006*-*06*-14                          |
5567 | 12           | {{{result}}} *2006*-*07*-12                          |
5568 | 2/5          | {{{result}}} *2007*-02-05                            |
5569 | Fri          | {{{result}}} nearest Friday (default date or later)  |
5570 | sep 15       | {{{result}}} *2006*-09-15                            |
5571 | feb 15       | {{{result}}} *2007*-02-15                            |
5572 | sep 12 9     | {{{result}}} 2009-09-12                              |
5573 | 12:45        | {{{result}}} *2006*-*06*-*13* 12:45                  |
5574 | 22 sept 0:34 | {{{result}}} *2006*-09-22 0:34                       |
5575 | w4           | {{{result}}} ISO week for of the current year *2006* |
5576 | 2012 w4 fri  | {{{result}}} Friday of ISO week 4 in 2012            |
5577 | 2012-w04-5   | {{{result}}} Same as above                           |
5580 Furthermore you can specify a relative date by giving, as the /first/
5581 thing in the input: a plus/minus sign, a number and a letter ([dwmy])
5582 to indicate change in days, weeks, months, or years.  With a single
5583 plus or minus, the date is always relative to today.  With a double
5584 plus or minus, it is relative to the default date.  If instead of a
5585 single letter, you use the abbreviation of day name, the date will be
5586 the Nth such day, e.g.:
5588 | Input | Interpretation                           |
5589 |-------+------------------------------------------|
5590 |    +0 | {{{result}}} today                       |
5591 |     . | {{{result}}} today                       |
5592 |   +4d | {{{result}}} four days from today        |
5593 |    +4 | {{{result}}} same as +4d                 |
5594 |   +2w | {{{result}}} two weeks from today        |
5595 |   ++5 | {{{result}}} five days from default date |
5596 | +2tue | {{{result}}} second Tuesday from now     |
5599 #+vindex: parse-time-months
5600 #+vindex: parse-time-weekdays
5602 The function understands English month and weekday abbreviations.  If
5603 you want to use unabbreviated names and/or other languages, configure
5604 the variables ~parse-time-months~ and ~parse-time-weekdays~.
5606 #+vindex: org-read-date-force-compatible-dates
5608 Not all dates can be represented in a given Emacs implementation.  By
5609 default Org mode forces dates into the compatibility range 1970--2037
5610 which works on all Emacs implementations.  If you want to use dates
5611 outside of this range, read the docstring of the variable
5612 ~org-read-date-force-compatible-dates~.
5614 You can specify a time range by giving start and end times or by
5615 giving a start time and a duration (in HH:MM format).  Use one or two
5616 dash(es) as the separator in the former case and use '+' as the
5617 separator in the latter case, e.g.:
5619 | Range        | Result                     |
5620 |--------------+----------------------------|
5621 | 11am-1:15pm  | {{{result}}} 11:00-13:15   |
5622 | 11am--1:15pm | {{{result}}} same as above |
5623 | 11am+2:15    | {{{result}}} same as above |
5625 #+cindex: calendar, for selecting date
5626 #+vindex: org-popup-calendar-for-date-prompt
5628 Parallel to the minibuffer prompt, a calendar is popped up.[fn:63]
5629 When you exit the date prompt, either by clicking on a date in the
5630 calendar, or by pressing {{{key(RET)}}}, the date selected in the
5631 calendar will be combined with the information entered at the prompt.
5632 You can control the calendar fully from the minibuffer:
5634 #+kindex: <
5635 #+kindex: >
5636 #+kindex: M-v
5637 #+kindex: C-v
5638 #+kindex: mouse-1
5639 #+kindex: S-@key{right}
5640 #+kindex: S-@key{left}
5641 #+kindex: S-@key{down}
5642 #+kindex: S-@key{up}
5643 #+kindex: M-S-@key{right}
5644 #+kindex: M-S-@key{left}
5645 #+kindex: @key{RET}
5647 #+attr_texinfo: :columns 0.3 0.7
5648 | Key binding               | Meaning                                |
5649 |---------------------------+----------------------------------------|
5650 | {{{key(RET)}}}            | Choose date at cursor in calendar.     |
5651 | {{{key(mouse-1)}}}        | Select date by clicking on it.         |
5652 | {{{kbdkey(S-,right)}}}    | One day forward.                       |
5653 | {{{kbdkey(S-,left)}}}     | One day backward.                      |
5654 | {{{kbdkey(S-,down)}}}     | One week forward.                      |
5655 | {{{kbdkey(S-,up)}}}       | One week backward.                     |
5656 | {{{kbdkey(M-S-,right)}}}  | One month forward.                     |
5657 | {{{kbdkey(M-S-,left)}}}   | One month backward.                    |
5658 | {{{kbd(>)}}}              | Scroll calendar forward by one month.  |
5659 | {{{kbd(<)}}}              | Scroll calendar backward by one month. |
5660 | {{{kbd(M-v)}}}            | Scroll calendar forward by 3 months.   |
5661 | {{{kbd(C-v)}}}            | Scroll calendar backward by 3 months.  |
5664 #+vindex: org-read-date-display-live
5666 The actions of the date/time prompt may seem complex, but I assure you they
5667 will grow on you, and you will start getting annoyed by pretty much any other
5668 way of entering a date/time out there.  To help you understand what is going
5669 on, the current interpretation of your input will be displayed live in the
5670 minibuffer.[fn:64]
5672 *** Custom time format
5673     :PROPERTIES:
5674     :DESCRIPTION: Making dates look different
5675     :END:
5676 #+cindex: custom date/time format
5677 #+cindex: time format, custom
5678 #+cindex: date format, custom
5680 #+vindex: org-display-custom-times
5681 #+vindex: org-time-stamp-custom-formats
5683 Org mode uses the standard ISO notation for dates and times as it is
5684 defined in ISO 8601.  If you cannot get used to this and require
5685 another representation of date and time to keep you happy, you can get
5686 it by customizing the variables ~org-display-custom-times~ and
5687 ~org-time-stamp-custom-formats~.
5689 #+attr_texinfo: :table-type table :indic @asis
5690 - {{{kbd(C-c C-x C-t)}}}, ~org-toggle-time-stamp-overlays~ ::
5691   #+kindex: C-c C-x C-t
5693   Toggle the display of custom formats for dates and times.
5696 {{{noindent}}}
5697 Org mode needs the default format for scanning, so the custom date/time
5698 format does not /replace/ the default format---instead it is put
5699 /over/ the default format using text properties.  This has the
5700 following consequences:
5703 - You cannot place the cursor onto a timestamp anymore, only before or
5704   after.
5706 - The {{{kbdkey(S-,up)}}} {{{kbdkey(S-,down)}}} keys can no longer be
5707   used to adjust each component of a timestamp.  If the cursor is at
5708   the beginning of the stamp, {{{kbdkey(S-,up)}}}
5709   {{{kbdkey(S-,down)}}} will change the stamp by one day, just like
5710   {{{kbdkey(S-,left)}}} {{{kbdkey(S-,right)}}}.  At the end of the
5711   stamp, the time will be changed by one minute.
5713 -  If the timestamp contains a range of clock times or a repeater,
5714    these will not be overlaid, but remain in the buffer as they were.
5716 -  When you delete a timestamp character-by-character, it will only
5717    disappear from the buffer after /all/ (invisible) characters
5718    belonging to the ISO timestamp have been removed.
5720 - If the custom timestamp format is longer than the default and you
5721   are using dates in tables, table alignment will be messed up.  If
5722   the custom format is shorter, things do work as expected.
5724 ** Deadlines and scheduling
5725    :PROPERTIES:
5726    :DESCRIPTION: Planning your work
5727    :END:
5729 A timestamp may be preceded by special keywords to facilitate planning:
5731 #+attr_texinfo: :table-type table :indic @asis
5732 - ~DEADLINE~ ::
5733   #+cindex: DEADLINE keyword
5735   Meaning: the task (most likely a TODO item, though not necessarily) is
5736   supposed to be finished on that date.
5738   #+vindex: org-deadline-warning-days
5740   On the deadline date, the task will be listed in the agenda.  In
5741   addition, the agenda for /today/ will carry a warning about the
5742   approaching or missed deadline, starting ~org-deadline-warning-days~
5743   before the due date, and continuing until the entry is marked DONE.  An
5744   example:
5746   #+begin_example
5747      ,*** TODO write article about the Earth for the Guide
5748          DEADLINE: <2004-02-29 Sun>
5749          The editor in charge is [[bbdb:Ford Prefect]]
5750   #+end_example
5752   You can specify a different lead time for warnings for a specific
5753   deadlines using the following syntax.  Here is an example with a
5754   warning period of 5 days ~DEADLINE: <2004-02-29 Sun -5d>~.
5756 - ~SCHEDULED~ ::
5757   #+cindex: SCHEDULED keyword
5759   Meaning: you are planning to start working on that task on the given
5760   date.
5762   #+vindex: org-agenda-skip-scheduled-if-done
5764   The headline will be listed under the given date.[fn:65] In addition,
5765   a reminder that the scheduled date has passed will be present in the
5766   compilation for /today/, until the entry is marked DONE, i.e., the
5767   task will automatically be forwarded until completed.
5769   #+begin_example
5770      ,*** TODO Call Trillian for a date on New Years Eve.
5771          SCHEDULED: <2004-12-25 Sat>
5772   #+end_example
5774   {{{noindent}}}
5775   *Important:* Scheduling an item in Org mode should /not/ be
5776   understood in the same way that we understand /scheduling a meeting/.
5777   Setting a date for a meeting is just a simple appointment, you should
5778   mark this entry with a simple plain timestamp, to get this item shown
5779   on the date where it applies.  This is a frequent misunderstanding by
5780   Org users.  In Org mode, /scheduling/ means setting a date when you
5781   want to start working on an action item.
5784 You may use timestamps with repeaters in scheduling and deadline
5785 entries.  Org mode will issue early and late warnings based on the
5786 assumption that the timestamp represents the /nearest instance/ of
5787 the repeater.  However, the use of diary sexp entries like
5789 ~<%%(org-float t 42)>~
5791 in scheduling and deadline timestamps is limited.  Org mode does not
5792 know enough about the internals of each sexp function to issue early and
5793 late warnings.  However, it will show the item on each day where the
5794 sexp entry matches.
5796 *** Inserting deadline/schedule
5797     :PROPERTIES:
5798     :DESCRIPTION: Planning items
5799     :TITLE:    Inserting deadlines or schedules
5800     :END:
5802 The following commands allow you to quickly insert a deadline or to schedule
5803 an item:[fn:66]
5805 #+attr_texinfo: :table-type table :indic @asis
5806 - {{{kbd(C-c C-d)}}}, ~org-deadline~ ::
5807   #+kindex: C-c C-d
5809   Insert {{{samp(DEADLINE)}}} keyword along with a stamp.  The insertion
5810   will happen in the line directly following the headline.  Any CLOSED
5811   timestamp will be removed.  When called with a prefix arg, an existing
5812   deadline will be removed from the entry.  Depending on the variable
5813   ~org-log-redeadline~, a note will be taken when changing an existing
5814   deadline.[fn:67]
5816 - {{{kbd(C-c C-s)}}}, ~org-schedule~ ::
5817   #+kindex: C-c C-s
5819   Insert {{{samp(SCHEDULED)}}} keyword along with a stamp.  The insertion
5820   will happen in the line directly following the headline.  Any
5821   {{{samp(CLOSED)}}} timestamp will be removed.  When called with a
5822   prefix argument, remove the scheduling date from the entry.  Depending
5823   on the variable ~org-log-reschedule~, a note will be taken when
5824   changing an existing scheduling time.[fn:68]
5826 - {{{kbd(C-c C-x C-k)}}}, ~org-mark-entry-for-agenda-action~ ::
5827   #+kindex: C-c C-x C-k
5828   #+kindex: k a
5829   #+kindex: k s
5831   Mark the current entry for agenda action.  After you have marked the
5832   entry like this, you can open the agenda or the calendar to find an
5833   appropriate date.  With the cursor on the selected date, press 
5834   {{{kbd(k s)}}} or {{{kbd(k d)}}} to schedule the marked item.
5836 - {{{kbd(C-c / d)}}}, ~org-check-deadlines~ ::
5837   #+kindex: C-c / d
5838   #+cindex: sparse tree, for deadlines
5839   #+vindex: org-deadline-warning-days
5841   Create a sparse tree with all deadlines that are either past-due, or
5842   which will become due within ~org-deadline-warning-days~.  With
5843   {{{kbd(C-u)}}} prefix, show all deadlines in the file.  With a numeric
5844   prefix, check that many days.  For example, {{{kbd(C-1 C-c / d)}}}
5845   shows all deadlines due tomorrow.
5847 - {{{kbd(C-c / b)}}}, ~org-check-before-date~ ::
5848   #+kindex: C-c / b
5850   Sparse tree for deadlines and scheduled items before a given date.
5852 - {{{kbd(C-c / a)}}}, ~org-check-after-date~ ::
5853   #+kindex: C-c / a
5854   
5855   Sparse tree for deadlines and scheduled items after a given date.
5858 Note that ~org-schedule~ and ~org-deadline~ supports setting the date
5859 by indicating a relative time: e.g.  +1d will set the date to the next
5860 day after today, and --1w will set the date to the previous week
5861 before any current timestamp.
5863 *** Repeated tasks
5864     :PROPERTIES:
5865     :DESCRIPTION: Items that show up again and again
5866     :END:
5867 #+cindex: tasks, repeated
5868 #+cindex: repeated tasks
5870 Some tasks need to be repeated again and again.  Org mode helps to
5871 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5872 or plain timestamp.  In the following example:
5874 #+begin_example
5875    ,** TODO Pay the rent
5876       DEADLINE: <2005-10-01 Sat +1m>
5877 #+end_example
5879 {{{noindent}}} the ~+1m~ is a repeater; the intended interpretation is
5880 that the task has a deadline on <2005-10-01> and repeats itself every
5881 (one) month starting from that time.  You can use yearly, monthly,
5882 weekly, daily and hourly repeat cookies by using the ~y/w/m/d/h~
5883 letters.  If you need both a repeater and a special warning period in a
5884 deadline entry, the repeater should come first and the warning period
5885 last: ~DEADLINE: <2005-10-01 Sat +1m -3d>~.
5887 #+vindex: org-todo-repeat-to-state
5889 Deadlines and scheduled items produce entries in the agenda when they
5890 are over-due, so it is important to be able to mark such an entry as
5891 completed once you have done so.  When you mark a DEADLINE or a
5892 SCHEDULE with the TODO keyword DONE, it will no longer produce entries
5893 in the agenda.  The problem with this is, however, that then also the
5894 /next/ instance of the repeated entry will not be active.  Org mode
5895 deals with this in the following way: When you try to mark such an
5896 entry DONE (using {{{kbd(C-c C-t)}}}), it will shift the base date of
5897 the repeating timestamp by the repeater interval, and immediately set
5898 the entry state back to TODO.[fn:69] In the example above, setting the
5899 state to DONE would actually switch the date like this:
5901 #+begin_example
5902    ,** TODO Pay the rent
5903       DEADLINE: <2005-11-01 Tue +1m>
5904 #+end_example
5906 #+vindex: org-log-repeat
5908 A timestamp will be added under the deadline, to keep a record that
5909 you actually acted on the previous instance of this deadline.[fn:70]
5911 As a consequence of shifting the base date, this entry will no longer be
5912 visible in the agenda when checking past dates, but all future instances
5913 will be visible.
5915 With the {{{samp(+1m)}}} cookie, the date shift will always be exactly one
5916 month.  So if you have not paid the rent for three months, marking this
5917 entry DONE will still keep it as an overdue deadline.  Depending on the
5918 task, this may not be the best way to handle it.  For example, if you
5919 forgot to call your father for 3 weeks, it does not make sense to call
5920 him 3 times in a single day to make up for it.  Finally, there are tasks
5921 like changing batteries which should always repeat a certain time
5922 /after/ the last time you did it.  For these tasks, Org mode has
5923 special repeaters  {{{samp(++)}}} and {{{samp(.+)}}}.  For example:
5925 #+begin_example
5926    ,** TODO Call Father
5927       DEADLINE: <2008-02-10 Sun ++1w>
5928       Marking this DONE will shift the date by at least one week,
5929       but also by as many weeks as it takes to get this date into
5930       the future.  However, it stays on a Sunday, even if you called
5931       and marked it done on Saturday.
5932    ,** TODO Check the batteries in the smoke detectors
5933       DEADLINE: <2005-11-01 Tue .+1m>
5934       Marking this DONE will shift the date to one month after
5935       today.
5936 #+end_example
5938 You may have both scheduling and deadline information for a specific
5939 task---just make sure that the repeater intervals on both are the
5940 same.
5942 An alternative to using a repeater is to create a number of copies of
5943 a task subtree, with dates shifted in each copy.  The command
5944 {{{kbd(C-c C-x c)}}} was created for this purpose, it is described in
5945 [[Structure editing]].
5947 ** Clocking work time
5948    :PROPERTIES:
5949    :DESCRIPTION: Tracking how long you spend on a task
5950    :END:
5951 #+cindex: clocking time
5952 #+cindex: time clocking
5954 Org mode allows you to clock the time you spend on specific tasks in a
5955 project.  When you start working on an item, you can start the clock.  When
5956 you stop working on that task, or when you mark the task done, the clock is
5957 stopped and the corresponding time interval is recorded.  It also computes
5958 the total time spent on each subtree of a project.[fn:71]  And it remembers a
5959 history or tasks recently clocked, to that you can jump quickly between a
5960 number of tasks absorbing your time.
5962 To save the clock history across Emacs sessions, use:
5964 #+header: :eval no
5965 #+header: :exports code
5966 #+begin_src emacs-lisp
5967   (setq org-clock-persist 'history)
5968   (org-clock-persistence-insinuate)
5969 #+end_src
5971 When you clock into a new task after resuming Emacs, the incomplete
5972 clock will be found (see [[Resolving idle time]]) and you will be prompted
5973 about what to do with it.[fn:72]
5975 *** Clocking commands
5976     :PROPERTIES:
5977     :DESCRIPTION: Starting and stopping a clock
5978     :END:
5980 #+attr_texinfo: :table-type table :indic @asis
5981 - {{{kbd(C-c C-x C-i)}}}, ~org-clock-in~ ::
5982   #+kindex: C-c C-x C-i
5983   #+vindex: org-clock-into-drawer
5984   #+vindex: org-clock-continuously
5985   #+cindex: property, LOG_INTO_DRAWER
5987   Start the clock on the current item (clock-in).  This inserts the CLOCK
5988   keyword together with a timestamp.  If this is not the first clocking
5989   of this item, the multiple CLOCK lines will be wrapped into a
5990   ~:LOGBOOK:~ drawer (see also the variable ~org-clock-into-drawer~).
5991   You can also overrule the setting of this variable for a subtree by
5992   setting a ~CLOCK_INTO_DRAWER~ or ~LOG_INTO_DRAWER~ property.  When
5993   called with a {{{kbd(C-u)}}} prefix argument, select the task from a
5994   list of recently clocked tasks.  With two {{{kbd(C-u C-u)}}} prefixes,
5995   clock into the task at point and mark it as the default task; the
5996   default task will then always be available with letter {{{kbd(d)}}}
5997   when selecting a clocking task.  With three {{{kbd(C-u C-u C-u)}}}
5998   prefixes, force continuous clocking by starting the clock when the
5999   last clock stopped.@*
6001   #+cindex: property: CLOCK_MODELINE_TOTAL
6002   #+cindex: property: LAST_REPEAT
6003   #+vindex: org-clock-modeline-total
6005   While the clock is running, the current clocking time is shown in the
6006   mode line, along with the title of the task.  The clock time shown will
6007   be all time ever clocked for this task and its children.  If the task
6008   has an effort estimate (see [[Effort estimates]]), the mode line displays
6009   the current clocking time against it.[fn:73] If the task is a
6010   repeating one (see [[Repeated tasks]]), only the time since the last reset
6011   of the task will be shown.[fn:74] More control over what time is shown
6012   can be exercised with the ~CLOCK_MODELINE_TOTAL~ property.  It may have
6013   the values ~current~ to show only the current clocking instance,
6014   ~today~ to show all time clocked on this tasks today (see also the
6015   variable ~org-extend-today-until~), ~all~ to include all time, or
6016   ~auto~ which is the default.[fn:75]  Clicking with {{{kbd(mouse-1)}}}
6017   onto the mode line entry will pop up a menu with clocking options.
6019 - {{{kbd(C-c C-x C-o)}}}, ~org-clock-out~ ::
6020   #+kindex: C-c C-x C-o
6021   #+vindex: org-log-note-clock-out
6023   Stop the clock (clock-out).  This inserts another timestamp at the same
6024   location where the clock was last started.  It also directly computes
6025   the resulting time in inserts it after the time range as
6026   {{{samp(=>HH:MM)}}}.  See the variable ~org-log-note-clock-out~ for the
6027   possibility to record an additional note together with the clock-out
6028   timestamp.[fn:76]
6030 - {{{kbd(C-c C-x C-x)}}}, ~org-clock-in-last~ ::
6031   #+kindex: C-c C-x C-x
6032   #+vindex: org-clock-continuously
6034   Reclock the last clocked task.  With one {{{kbd(C-u)}}} prefix
6035   argument, select the task from the clock history.  With two
6036   {{{kbd(C-u)}}} prefixes, force continuous clocking by starting the
6037   clock when the last clock stopped.
6039 - {{{kbd(C-c C-x C-e)}}}, ~org-clock-modify-effort-estimate~ ::
6040   #+kindex: C-c C-x C-e
6042   Update the effort estimate for the current clock task.
6043 - {{{kbd(C-c C-c)}}} {{{kbd(C-c C-y)}}}, ~org-evaluate-time-range~ ::
6044   #+kindex: C-c C-c
6045   #+kindex: C-c C-y
6046   #+kindex: C-c C-c
6048   Recompute the time interval after changing one of the timestamps.  This
6049   is only necessary if you edit the timestamps directly.  If you change
6050   them with {{{kbdkey(S-,cursor)}}} keys, the update is automatic.
6052 - {{{kbdkey(C-S-,up)}}} {{{kbdkey(C-S-,down)}}}, ~org-clock-timestamps-up/down~ ::
6053   #+kindex: C-S-@key{up/down}
6055   On ~CLOCK~ log lines, increase/decrease both timestamps so that the
6056   clock duration keeps the same.
6058 - {{{kbdkey(S-M-,up)}}} {{{kbdkey(S-M-,down)}}}, ~org-timestamp-up/down~ ::
6059   #+kindex: S-M-@key{up/down}
6061   On ~CLOCK~ log lines, increase/decrease the timestamp at point and the
6062   one of the previous (or the next clock) timestamp by the same
6063   duration.  For example, if you hit {{{kbdkey(S-M-,up)}}} to increase a
6064   clocked-out timestamp by five minutes, then the clocked-in timestamp
6065   of the next clock will be increased by five minutes.
6067 - {{{kbd(C-c C-t)}}}, ~org-todo~ ::
6068   #+kindex: C-c C-t
6070   Changing the TODO state of an item to DONE automatically stops the
6071   clock if it is running in this same item.
6073 - {{{kbd(C-c C-x C-q)}}}, ~org-clock-cancel~ ::
6074   #+kindex: C-c C-x C-q
6076   Cancel the current clock.  This is useful if a clock was started by
6077   mistake, or if you ended up working on something else.
6079 - {{{kbd(C-c C-x C-j)}}}, ~org-clock-goto~ ::
6080   #+kindex: C-c C-x C-j
6082   Jump to the headline of the currently clocked in task.  With a
6083   {{{kbd(C-u)}}} prefix arg, select the target task from a list of
6084   recently clocked tasks.
6086 - {{{kbd(C-c C-x C-d)}}}, ~org-clock-display~ ::
6087   #+kindex: C-c C-x C-d
6088   #+vindex: org-remove-highlights-with-change
6090   Display time summaries for each subtree in the current buffer.  This
6091   puts overlays at the end of each headline, showing the total time
6092   recorded under that heading, including the time of any subheadings.
6093   You can use visibility cycling to study the tree, but the overlays
6094   disappear when you change the buffer (see variable
6095   ~org-remove-highlights-with-change~) or press {{{kbd(C-c C-c)}}}.
6098 The {{{kbd(l)}}} key may be used in the timeline (see [[Timeline for a
6099 single file]]) and in the agenda (see [[Weekly/daily agenda]]) to show which
6100 tasks have been worked on or closed during a day.
6102 *Important:* note that both ~org-clock-out~ and ~org-clock-in-last~
6103 can have a global keybinding and will not modify the window
6104 disposition.
6106 *** The clock table
6107     :PROPERTIES:
6108     :DESCRIPTION: Detailed reports
6109     :END:
6110 #+cindex: clocktable, dynamic block
6111 #+cindex: report, of clocked time
6113 Org mode can produce quite complex reports based on the time clocking
6114 information.  Such a report is called a /clock table/, because it is
6115 formatted as one or several Org tables.
6117 #+attr_texinfo: :table-type table :indic @asis
6118 - {{{kbd(C-c C-x C-r)}}}, ~org-clock-report~ ::
6119   #+kindex: C-c C-x C-r
6121   Insert a dynamic block (see [[Dynamic blocks]]) containing a clock report
6122   as an Org mode table into the current file.  When the cursor is at an
6123   existing clock table, just update it.  When called with a prefix
6124   argument, jump to the first clock report in the current document and
6125   update it.  The clock table always includes also trees with ~:ARCHIVE:~
6126   tag.
6128 - {{{kbd(C-c C-c)}}} {{{kbd(C-c C-x C-u)}}}, ~org-dblock-update~ ::
6129   #+kindex: C-c C-c
6131   Update dynamic block at point.  The cursor needs to be in the
6132   ~#+BEGIN~ line of the dynamic block.
6134 - {{{kbd(C-u C-c C-x C-u)}}} ::
6135   #+kindex: C-u C-c C-x C-u
6137   Update all dynamic blocks (see [[Dynamic blocks]]).  This is useful if you
6138   have several clock table blocks in a buffer.
6140 - {{{kbdkey(S-,left)}}} {{{kbdkey(S-,right)}}}, ~org-clocktable-try-shift~ ::
6142   Shift the current ~:block~ interval and update the table.  The cursor
6143   needs to be in the ~#+BEGIN: clocktable~ line for this command.  If
6144   ~:block~ is ~today~, it will be shifted to ~today-1~ etc.
6147 Here is an example of the frame for a clock table as it is inserted
6148 into the buffer with the {{{kbd(C-c C-x C-r)}}} command:
6150 #+cindex: #+BEGIN, clocktable
6151 #+begin_example
6152    ,#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
6153    ,#+END: clocktable
6154 #+end_example
6155 {{{noindent}}}
6156 #+vindex: org-clocktable-defaults
6157 The {{{samp(BEGIN)}}} line and specify a number of options to define the scope,
6158 structure, and formatting of the report.  Defaults for all these options can
6159 be configured in the variable ~org-clocktable-defaults~.
6161 {{{noindent}}} First there are options that determine which clock entries are to
6162 be selected:
6164 #+attr_texinfo: :table-type table :indic @asis
6165 - :maxlevel ::    
6167   Maximum level depth to which times are listed in the table.  Clocks at
6168   deeper levels will be summed into the upper level.
6170 - :scope ::      
6172   The scope to consider.  This can be any of the following:
6174   - nil ::        the current buffer or narrowed region
6175   - file ::      the full current buffer
6176   - subtree ::   the subtree where the clocktable is located
6177   - tree {{{var(N)}}} :: the surrounding level {{{var(N)}}} tree, for example ~tree3~
6178   - tree ::      the surrounding level 1 tree
6179   - agenda ::    all agenda files
6180   - ("file"..) :: scan these files
6181   - file-with-archives ::    current file and its archives
6182   - agenda-with-archives ::  all agenda files, including archives
6184 - :block ::       
6186   The time block to consider.  This block is specified either absolute,
6187   or relative to the current time and may be any of these formats:
6189   - 2007-12-31 ::   New year eve 2007
6190   - 2007-12 ::      December 2007
6191   - 2007-W50 ::     ISO-week 50 in 2007
6192   - 2007-Q2 ::      2nd quarter in 2007
6193   - 2007 ::         the year 2007
6194   - today, yesterday, today-{{{var(N)}}} ::          a relative day
6195   - thisweek, lastweek, thisweek-{{{var(N)}}} ::     a relative week
6196   - thismonth, lastmonth, thismonth-{{{var(N)}}} ::  a relative month
6197   - thisyear, lastyear, thisyear-{{{var(N)}}} ::     a relative year
6199   Use {{{kbdkey(S-,left)}}} or {{{kbdkey(S-,right)}}} to shift the
6200   time interval.
6202 - :tstart ::     
6204   A time string specifying when to start considering times.
6206 - :tend  ::       
6208   A time string specifying when to stop considering times.
6210 - :step  ::  
6212   Set to ~week~ or ~day~ to split the table into chunks.  To use this,
6213   ~:block~ or ~:tstart~, ~:tend~ are needed.
6215 - :stepskip0 ::   
6217   Do not show steps that have zero time.
6219 - :fileskip0 ::  
6221   Do not show table sections from files which did not contribute.
6223 - :tags ::        
6225   A tags match to select entries that should contribute.  See [[Matching
6226   tags and properties]] for the match syntax.
6229 Then there are options which determine the formatting of the table.  There
6230 options are interpreted by the function ~org-clocktable-write-default~,
6231 but you can specify your own function using the ~:formatter~ parameter.
6233 #+attr_texinfo: :table-type table :indic @asis
6234 - :emphasize ::   
6236   When ~t~, emphasize level one and level two items.
6238 - :lang ::        
6240   Language to use for descriptive cells like "Task".[fn:77]
6242 - :link ::       
6244   Link the item headlines in the table to their origins.
6246 - :narrow ::     
6248   An integer to limit the width of the headline column in the org table.
6249   If you write it like {{{samp(50!)}}}, then the headline will also be
6250   shortened in export.
6252 - :indent  ::    
6254   Indent each headline field according to its level.
6256 - :tcolumns ::   
6258   Number of columns to be used for times.  If this is smaller than
6259   ~:maxlevel~, lower levels will be lumped into one column.
6261 - :level ::      
6263   Should a level number column be included?
6265 - :compact ::    
6267   Abbreviation for ~:level nil :indent t :narrow 40! :tcolumns 1~.  All
6268   are overwritten except if there is an explicit ~:narrow~.
6270 - :timestamp ::  
6272   A timestamp for the entry, when available.  Look for SCHEDULED,
6273   DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.
6275 - :properties :: 
6277   List of properties that should be shown in the table.  Each property
6278   will get its own column.
6280 - :inherit-props :: 
6282   When this flag is ~t~, the values for ~:properties~ will be inherited.
6284 - :formula  ::   
6286   Content of a ~#+TBLFM~ line to be added and evaluated.  As a special
6287   case, {{{samp(:formula %)}}} adds a column with % time.  If you do not
6288   specify a formula here, any existing formula below the clock table
6289   will survive updates and be evaluated.
6291 - :formatter ::  
6293   A function to format clock data and insert it into the buffer.
6296 To get a clock summary of the current level 1 tree, for the current
6297 day, you could write:
6299 #+begin_example
6300    ,#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
6301    ,#+END: clocktable
6302 #+end_example
6304 {{{noindent}}} To use a specific time range you could write:[fn:78]
6306 #+begin_example
6307    ,#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
6308                        :tend "<2006-08-10 Thu 12:00>"
6309    ,#+END: clocktable
6310 #+end_example
6312 A summary of the current subtree with % times would be:
6314 #+begin_example
6315    ,#+BEGIN: clocktable :scope subtree :link t :formula %
6316    ,#+END: clocktable
6317 #+end_example
6319 A horizontally compact representation of everything clocked during
6320 last week would be:
6322 #+begin_example
6323    ,#+BEGIN: clocktable :scope agenda :block lastweek :compact t
6324    ,#+END: clocktable
6325 #+end_example
6327 *** Resolving idle time
6328     :PROPERTIES:
6329     :DESCRIPTION: Resolving time when you've been idle
6330     :TITLE:    Resolving idle time and continuous clocking
6331     :END:
6333 #+cindex: resolve idle time
6334 #+cindex: idle, resolve, dangling
6336 If you clock in on a work item, and then walk away from your
6337 computer---perhaps to take a phone call---you often need to
6338 ``resolve'' the time you were away by either subtracting it from the
6339 current clock, or applying it to another one.
6341 #+vindex: org-clock-idle-time
6343 By customizing the variable ~org-clock-idle-time~ to some integer,
6344 such as 10 or 15, Emacs can alert you when you get back to your
6345 computer after being idle for that many minutes, and ask what you want
6346 to do with the idle time.[fn:79] There will be a question waiting for you
6347 when you get back, indicating how much idle time has passed
6348 (constantly updated with the current amount), as well as a set of
6349 choices to correct the discrepancy:
6351 #+attr_texinfo: :table-type table :indic @asis
6352 - {{{kbd(k)}}} ::
6353   #+kindex: k
6355   To keep some or all of the minutes and stay clocked in, press
6356   {{{kbd(k)}}}.  Org will ask how many of the minutes to keep.  Press
6357   {{{key(RET)}}} to keep them all, effectively changing nothing, or
6358   enter a number to keep that many minutes.
6360 - {{{kbd(K)}}} ::
6361   #+kindex: K
6363   If you use the shift key and press {{{kbd(K)}}}, it will keep however
6364   many minutes you request and then immediately clock out of that task.
6365   If you keep all of the minutes, this is the same as just clocking out
6366   of the current task.
6368 - {{{kbd(s)}}} ::
6369   #+kindex: s
6371   To keep none of the minutes, use {{{kbd(s)}}} to subtract all the away
6372   time from the clock, and then check back in from the moment you
6373   returned.
6375 - {{{kbd(S)}}} ::
6376   #+kindex: S
6378   To keep none of the minutes and just clock out at the start of the
6379   away time, use the shift key and press {{{kbd(S)}}}.  Remember that
6380   using shift will always leave you clocked out, no matter which option
6381   you choose.
6383 - {{{kbd(C)}}} ::
6384   #+kindex: C
6386   To cancel the clock altogether, use {{{kbd(C)}}}.  Note that if instead
6387   of canceling you subtract the away time, and the resulting clock
6388   amount is less than a minute, the clock will still be canceled rather
6389   than clutter up the log with an empty entry.
6392 What if you subtracted those away minutes from the current clock, and
6393 now want to apply them to a new clock? Simply clock in to any task
6394 immediately after the subtraction.  Org will notice that you have
6395 subtracted time ``on the books'', so to speak, and will ask if you
6396 want to apply those minutes to the next task you clock in on.
6398 There is one other instance when this clock resolution magic occurs.
6399 Say you were clocked in and hacking away, and suddenly your cat chased
6400 a mouse who scared a hamster that crashed into your UPS's power
6401 button! You suddenly lose all your buffers, but thanks to auto-save
6402 you still have your recent Org mode changes, including your last clock
6405 If you restart Emacs and clock into any task, Org will notice that you
6406 have a dangling clock which was never clocked out from your last
6407 session.  Using that clock's starting time as the beginning of the
6408 unaccounted-for period, Org will ask how you want to resolve that
6409 time.  The logic and behavior is identical to dealing with away time
6410 due to idleness; it is just happening due to a recovery event rather
6411 than a set amount of idle time.
6413 You can also check all the files visited by your Org agenda for
6414 dangling clocks at any time using {{{kbd(M-x org-resolve-clocks RET)}}}
6415  (or {{{kbd(C-c C-x C-z)}}}).
6417 *** Continuous clocking
6418 #+cindex: continuous clocking
6419 #+vindex: org-clock-continuously
6421 You may want to start clocking from the time when you clocked out the
6422 previous task.  To enable this systematically, set
6423 ~org-clock-continuously~ to ~t~.  Each time you clock in, Org retrieves
6424 the clock-out time of the last clocked entry for this session, and
6425 start the new clock from there.
6427 If you only want this from time to time, use three universal prefix
6428 arguments with ~org-clock-in~ and two {{{kbd(C-u C-u)}}} with
6429 ~org-clock-in-last~.
6431 ** Effort estimates
6432    :PROPERTIES:
6433    :DESCRIPTION: Planning work effort in advance
6434    :END:
6435 #+cindex: effort estimates
6436 #+cindex: property, Effort
6437 #+vindex: org-effort-property
6439 If you want to plan your work in a very detailed way, or if you need
6440 to produce offers with quotations of the estimated work effort, you
6441 may want to assign effort estimates to entries.  If you are also
6442 clocking your work, you may later want to compare the planned effort
6443 with the actual working time, a great way to improve planning
6444 estimates.  Effort estimates are stored in a special property
6445 {{{samp(Effort)}}}.[fn:80] You can set the effort for an entry with
6446 the following commands:
6448 #+attr_texinfo: :table-type table :indic @kbd
6449 - {{{kbd(C-c C-x e)}}}, ~org-set-effort~ ::
6450   #+kindex: C-c C-x e
6452   Set the effort estimate for the current entry.  With a numeric prefix
6453   argument, set it to the Nth allowed value (see below).  This command is
6454   also accessible from the agenda with the {{{kbd(e)}}} key.
6456 - {{{kbd(C-c C-x C-e)}}}, ~org-clock-modify-effort-estimate~ ::
6457   #+kindex: C-c C-x C-e
6459   Modify the effort estimate of the item currently being clocked.
6462 Clearly the best way to work with effort estimates is through column
6463 view (see [[Column view]]).  You should start by setting up discrete values
6464 for effort estimates, and a ~COLUMNS~ format that displays these
6465 values together with clock sums (if you want to clock your time).  For
6466 a specific buffer you can use:
6468 #+begin_example
6469    ,#+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
6470    ,#+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort){:} %CLOCKSUM
6471 #+end_example
6473 #+vindex: org-global-properties
6474 #+vindex: org-columns-default-format
6476 {{{noindent}}} or, even better, you can set up these values globally
6477 by customizing the variables ~org-global-properties~ and
6478 ~org-columns-default-format~.  In particular if you want to use this
6479 setup also in the agenda, a global setup may be advised.
6481 The way to assign estimates to individual items is then to switch to
6482 column mode, and to use {{{kbdkey(S-,right)}}} and
6483 {{{kbdkey(S-,left)}}} to change the value.  The values you enter will
6484 immediately be summed up in the hierarchy.  In the column next to it,
6485 any clocked time will be displayed.
6487 #+vindex: org-agenda-columns-add-appointments-to-effort-sum
6489 If you switch to column view in the daily/weekly agenda, the effort column
6490 will summarize the estimated work effort for each day, and you can use this to find space in your schedule.  To get
6491 an overview of the entire part of the day that is committed, you can set the
6492 option ~org-agenda-columns-add-appointments-to-effort-sum~.[fn:179] The
6493 appointments on a day that take place over a specified time interval will
6494 then also be added to the load estimate of the day.
6496 Effort estimates can be used in secondary agenda filtering that is
6497 triggered with the {{{kbd(/)}}} key in the agenda (see [[Agenda
6498 commands]]).  If you have these estimates defined consistently, two or
6499 three key presses will narrow down the list to stuff that fits into an
6500 available time slot.
6502 ** Relative timer
6503    :PROPERTIES:
6504    :DESCRIPTION: Notes with a running timer
6505    :TITLE:    Taking notes with a relative timer
6506    :END:
6507 #+cindex: relative timer
6509 When taking notes during, for example, a meeting or a video viewing, it can
6510 be useful to have access to times relative to a starting time.  Org provides
6511 such a relative timer and make it easy to create timed notes.
6513 #+attr_texinfo: :table-type table :indic @asis
6514 - {{{kbd(C-c C-x .)}}}, ~org-timer~ ::
6515   #+kindex: C-c C-x .
6517   Insert a relative time into the buffer.  The first time you use this, the
6518   timer will be started.  When called with a prefix argument, the timer is
6519   restarted.
6521 - {{{kbd(C-c C-x -)}}}, ~org-timer-item~ ::
6522   #+kindex: C-c C-x -
6524   Insert a description list item with the current relative time.  With a prefix
6525   argument, first reset the timer to 0.
6527 - {{{kbdkey(M-,RET)}}}, ~org-insert-heading~ ::
6528   #+kindex: M-@key{RET}
6530   Once the timer list is started, you can also use {{{kbdkey(M-,RET)}}}
6531   to insert new timer items.
6533 - {{{kbd(C-c C-x \,)}}} ::
6534   #+kindex: C-c C-x ,
6535   #+kindex: C-c C-x ,
6537   Pause the timer, or continue it if it is already paused
6538   ({{{command(org-timer-pause-or-continue)}}}).
6540 - {{{kbd(C-u C-c C-x \,)}}} ::
6541   #+kindex: C-u C-c C-x ,
6542   #+kindex: C-u C-c C-x ,
6544   Stop the timer.  After this, you can only start a new timer, not
6545   continue the old one.  This command also removes the timer from the
6546   mode line.
6548 - {{{kbd(C-c C-x 0)}}}, ~org-timer-start~ ::
6549   #+kindex: C-c C-x 0
6551   Reset the timer without inserting anything into the buffer.  By
6552   default, the timer is reset to 0.  When called with a {{{kbd(C-u)}}}
6553   prefix, reset the timer to specific starting offset.  The user is
6554   prompted for the offset, with a default taken from a timer string at
6555   point, if any, So this can be used to restart taking notes after a
6556   break in the process.  When called with a double prefix argument
6557   {{{kbd(C-u C-u)}}}, change all timer strings in the active region by a
6558   certain amount.  This can be used to fix timer strings if the timer was
6559   not started at exactly the right moment.
6561 ** Countdown timer
6562    :PROPERTIES:
6563    :DESCRIPTION: Starting a countdown timer for a task
6564    :END:
6565 #+cindex: Countdown timer
6566 #+kindex: C-c C-x ;
6567 #+kindex: ;
6569 Calling ~org-timer-set-timer~ from an Org mode buffer runs a countdown
6570 timer.  Use {{{kbd(;)}}} from agenda buffers, {{{key(C-c C-x ;)}}}
6571 everywhere else.
6573 ~org-timer-set-timer~ prompts the user for a duration and displays a
6574 countdown timer in the modeline.  ~org-timer-default-timer~ sets the
6575 default countdown value.  Giving a prefix numeric argument overrides this
6576 default value.
6578 * Capture - Refile - Archive
6579   :PROPERTIES:
6580   :DESCRIPTION: The ins and outs for projects
6581   :END:
6582 #+cindex: capture
6584 An important part of any organization system is the ability to quickly
6585 capture new ideas and tasks, and to associate reference material with
6586 them.  Org does this using a process called /capture/.  It also can
6587 store files related to a task (/attachments/) in a special directory.
6588 Once in the system, tasks and projects need to be moved around.  Moving
6589 completed project trees to an archive file keeps the system compact
6590 and fast.
6592 ** Capture
6593    :PROPERTIES:
6594    :DESCRIPTION: Capturing new stuff
6595    :END:
6596 #+cindex: capture
6598 Org's method for capturing new items is heavily inspired by John
6599 Wiegley excellent remember package.  Up to version 6.36 Org used a
6600 special setup for {{{file(remember.el)}}}.  The file {{{file(org-remember.el)}}}
6601 is still part of Org mode for backward compatibility with existing
6602 setups.  You can find the documentation for org-remember at
6603 [[http://orgmode.org/org-remember.pdf]].
6605 The new capturing setup described here is preferred and should be used by new
6606 users.  To convert your ~org-remember-templates~, run the following command:
6607 {{{kbdspckey(M-x org-capture-import-remember-templates,RET)}}}
6609 {{{noindent}}} and then customize the new variable with 
6610 {{{kbd(M-x customize-variable org-capture-templates)}}}, check the result, and
6611 save the customization.  You can then use both remember and capture
6612 until you are familiar with the new mechanism.
6614 Capture lets you quickly store notes with little interruption of your work
6615 flow.  The basic process of capturing is very similar to remember, but Org
6616 does enhance it with templates and more.
6618 *** Setting up capture
6619     :PROPERTIES:
6620     :DESCRIPTION: Where notes will be stored
6621     :END:
6623 The following customization sets a default target file for notes, and defines
6624 a global key for capturing new material.[fn:81]
6626 #+vindex: org-default-notes-file
6627 #+header: :eval no
6628 #+header: :exports code
6629 #+begin_src emacs-lisp
6630 (setq org-default-notes-file (concat org-directory "/notes.org"))
6631 (define-key global-map "\C-cc" 'org-capture)
6632 #+end_src
6634 *** Using capture
6635     :PROPERTIES:
6636     :DESCRIPTION: Commands to invoke and terminate capture
6637     :END:
6639 #+attr_texinfo: :table-type table :indic @asis
6640 - {{{kbd(C-c c)}}}, ~org-capture~ ::
6641   #+kindex: C-c c
6642   #+cindex: date tree
6644   Call the command ~org-capture~.  Note that this keybinding is global
6645   and not active by default - you need to install it.  If you have
6646   templates defined (see [[Capture templates]], it will offer these
6647   templates for selection or use a new Org outline node as the default
6648   template.  It will insert the template into the target file and switch
6649   to an indirect buffer narrowed to this new node.  You may then insert
6650   the information you want.
6652 - {{{kbd(C-c C-c)}}}, ~org-capture-finalize~ ::
6653   #+kindex: C-c C-c
6655   Once you have finished entering information into the capture buffer,
6656   {{{kbd(C-c C-c)}}} will return you to the window configuration before
6657   the capture process, so that you can resume your work without further
6658   distraction.  When called with a prefix argument, finalize and then
6659   jump to the captured item.
6661 - {{{kbd(C-c C-w)}}}, ~org-capture-refile~ ::
6662   #+kindex: C-c C-w
6664   Finalize the capture process by refiling the note to a different place
6665   (see [[Refile and copy]]).  Please realize that this is a normal refiling
6666   command that will be executed---so the cursor position at the moment
6667   you run this command is important.  If you have inserted a tree with a
6668   parent and children, first move the cursor back to the parent.  Any
6669   prefix argument given to this command will be passed on to the
6670   ~org-refile~ command.
6672 - {{{kbd(C-c C-k)}}}, ~org-capture-kill~ ::
6673   #+kindex: C-c C-k
6675   Abort the capture process and return to the previous state.
6678 You can also call ~org-capture~ in a special way from the agenda,
6679 using the {{{kbd(k c)}}} key combination.  With this access, timestamps
6680 inserted by the selected capture template will default to the cursor
6681 date in the agenda, rather than to the current date.
6683 To find the locations of the last stored capture, use ~org-capture~ with
6684 prefix commands:
6686 #+attr_texinfo: :table-type table :indic @asis
6687 - {{{kbd(C-u C-c c)}}} ::
6688   #+kindex: C-u C-c c
6690   Visit the target location of a capture template.  You get to select the
6691   template in the usual way.
6693 - {{{kbd(C-u C-u C-c c)}}} ::
6694   #+kindex: C-u C-u C-c c
6696   Visit the last stored capture item in its buffer.
6699 #+vindex: org-capture-bookmark
6700 #+cindex: org-capture-last-stored
6702 You can also jump to the bookmark ~org-capture-last-stored~, which
6703 will automatically be created unless you set ~org-capture-bookmark~ to
6704 ~nil~.
6706 To insert the capture at point in an Org buffer, call ~org-capture~
6707 with a ~C-0~ prefix argument.
6709 *** Capture templates
6710     :PROPERTIES:
6711     :DESCRIPTION: Define the outline of different note types
6712     :END:
6713 #+cindex: templates, for Capture
6715 You can use templates for different types of capture items, and for
6716 different target locations.  The easiest way to create such templates
6717 is through the customize interface.
6719 #+attr_texinfo: :table-type table :indic @asis
6720 - {{{kbd(C-c c C)}}} ::
6721   #+kindex: C-c c C
6723   Customize the variable ~org-capture-templates~.
6726 Before we give the formal description of template definitions, let's
6727 look at an example.  Say you would like to use one template to create
6728 general TODO entries, and you want to put these entries under the
6729 heading {{{samp(Tasks)}}} in your file {{{file(~/org/gtd.org)}}}.
6730 Also, a date tree in the file {{{file(journal.org)}}} should capture
6731 journal entries.  A possible configuration would look like:
6733 #+header: :eval no
6734 #+header: :exports code
6735 #+begin_src emacs-lisp
6736 (setq org-capture-templates
6737  '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6738         "* TODO %?\n  %i\n  %a")
6739    ("j" "Journal" entry (file+datetree "~/org/journal.org")
6740         "* %?\nEntered on %U\n  %i\n  %a")))
6741 #+end_src
6743 {{{noindent}}} If you then press {{{kbd(C-c c t)}}}, Org will prepare
6744 the template for you like this:
6746 #+begin_example
6747    ,* TODO
6748      [[file:link to where you initiated capture]]
6749 #+end_example
6751 {{{noindent}}} During expansion of the template, ~%a~ has been
6752 replaced by a link to the location from where you called the capture
6753 command.  This can be extremely useful for deriving tasks from emails,
6754 for example.  You fill in the task definition, press ~C-c C-c~ and Org
6755 returns you to the same place where you started the capture process.
6757 To define special keys to capture to a particular template without
6758 going through the interactive template selection, you can create your
6759 key binding like this:
6761 #+header: :eval no
6762 #+header: :exports code
6763 #+begin_src emacs-lisp
6764 (define-key global-map "\C-cx"
6765    (lambda () (interactive) (org-capture nil "x")))
6766 #+end_src
6768 **** Template elements
6769      :PROPERTIES:
6770      :DESCRIPTION: What is needed for a complete template entry
6771      :END:
6773 Now lets look at the elements of a template definition.  Each entry in
6774 ~org-capture-templates~ is a list with the following items:
6776 #+attr_texinfo: :table-type table :indic @asis
6777 - ~keys~ ::
6779   The keys that will select the template, as a string, characters
6780   only, for example "a" for a template to be selected with a
6781   single key, or "BTW" for selection with two keys.  When using
6782   several keys, keys using the same prefix key must be sequential
6783   in the list and preceded by a 2-element entry explaining the
6784   prefix key, for example:
6786   #+header: :eval no
6787   #+header: :exports code
6788   #+begin_src emacs-lisp
6789     ("b" "Templates for marking stuff to buy")
6790   #+end_src
6792   {{{noindent}}} If you do not define a template for the {{{kbd(C)}}}
6793   key, this key will be used to open the customize buffer for this
6794   complex variable.
6796 - ~description~ ::
6798   A short string describing the template, which will be shown during
6799   selection.
6801 - ~type~ ::
6803   The type of entry, a symbol.  Valid values are:
6805   - ~entry~ ::
6807     An Org mode node, with a headline.  Will be filed as the child of the
6808     target entry or as a top-level entry.  The target file should be an Org
6809     mode file.
6811   - ~item~ ::
6813     A plain list item, placed in the first plain list at the target
6814     location.  Again the target file should be an Org file.
6816   - ~checkitem~ ::
6818     A checkbox item.  This only differs from the plain list item by the
6819     default template.
6821   - ~table-line~ ::
6823     A new line in the first table at the target location.  Where exactly
6824     the line will be inserted depends on the properties ~:prepend~ and
6825     ~:table-line-pos~ (see below).
6827   - plain ::
6829     Text to be inserted as it is.
6831 - target ::
6832   #+vindex: org-default-notes-file
6834   Specification of where the captured item should be placed.  In Org mode
6835   files, targets usually define a node.  Entries will become children of this
6836   node.  Other types will be added to the table or list in the body of this
6837   node.  Most target specifications contain a file name.  If that file name is
6838   the empty string, it defaults to ~org-default-notes-file~.  A file can
6839   also be given as a variable, function, or Emacs Lisp form.
6841   Valid values are:
6843   - ~(file "path/to/file")~ ::
6845     Text will be placed at the beginning or end of that file.
6847   - ~(id "id of existing org entry")~ ::
6849     Filing as child of this entry, or in the body of the entry.
6851   - ~(file+headline "path/to/file" "node headline")~ ::
6853     Fast configuration if the target heading is unique in the file.
6855   - ~(file+olp "path/to/file" "Level 1 heading" "Level 2" ...)~ ::
6857     For non-unique headings, the full path is safer.
6859   - ~(file+regexp  "path/to/file" "regexp to find location")~ ::
6861     Use a regular expression to position the cursor.
6863   - ~(file+datetree "path/to/file")~ ::
6865     Will create a heading in a date tree for today's date.
6867   - ~(file+datetree+prompt "path/to/file")~ ::
6869     Will create a heading in a date tree, but will prompt for the date.
6871   - ~(file+function "path/to/file" function-finding-location)~ ::
6873     A function to find the right location in the file.
6875   - ~(clock)~ ::
6877     File to the entry that is currently being clocked.
6879   - ~(function function-finding-location)~ ::
6881     Most general way, write your own function to find both
6882     file and location.
6884 - ~template~ ::
6886   The template for creating the capture item.  If you leave this empty,
6887   an appropriate default template will be used.  Otherwise this is a
6888   string with escape codes, which will be replaced depending on time and
6889   context of the capture call.  The string with escapes may be loaded
6890   from a template file, using the special syntax 
6891   ~(file "path/to/template")~.  See below for more details.
6893 - ~properties~ ::
6895   The rest of the entry is a property list of additional options.
6896   Recognized properties are:
6898   - ~:prepend~ ::
6900     Normally new captured information will be appended at the target
6901     location (last child, last table line, last list item, ...).  Setting
6902     this property will change that.
6904   - ~:immediate-finish~ ::
6906     When set, do not offer to edit the information, just file it away
6907     immediately.  This makes sense if the template only needs information
6908     that can be added automatically.
6910   - ~:empty-lines~ ::
6912     Set this to the number of lines to insert before and after the new
6913     item.  The default is 0, and the only other common value is 1.
6915   - ~:clock-in~ ::
6917     Start the clock in this item.
6919   - ~:clock-keep~ ::
6921     Keep the clock running when filing the captured entry.
6923   - ~:clock-resume~ ::
6925     If starting the capture interrupted a clock, restart that clock when
6926     finished with the capture.  Note that ~:clock-keep~ has precedence over
6927     ~:clock-resume~.  When setting both to ~t~, the current clock will run
6928     and the previous one will not be resumed.
6930   - ~:unnarrowed~ ::
6932     Do not narrow the target buffer, simply show the full buffer.  Default
6933     is to narrow it so that you only see the new material.
6935   - ~:table-line-pos~ ::
6937     Specification of the location in the table where the new line should
6938     be inserted.  It should be a string like "II-3" meaning that the new
6939     line should become the third line before the second horizontal
6940     separator line.
6942   - ~:kill-buffer~ ::
6944     If the target file was not yet visited when capture was invoked, kill
6945     the buffer again after capture is completed.
6947 **** Template expansion
6948      :PROPERTIES:
6949      :DESCRIPTION: Filling in information about time and context
6950      :END:
6952 In the template itself, special {{{kbd(%)}}}-escapes allow dynamic
6953 insertion of content.[fn:82] The templates are expanded in the order given
6954 here:
6956 #+attr_texinfo: :table-type table :indic @asis
6957 - %[{{{var(file)}}}] ::    
6959   Insert the contents of the file given by {{{var(file)}}}.
6961 - %({{{var(sexp)}}}) ::    
6963   Evaluate Elisp {{{var(sexp)}}} and replace with the result.  The
6964   {{{var(sexp)}}} must return a string.
6966 - %<...> ::     
6968   The result of format-time-string on the ...  format specification.
6970 - %t ::         
6972   Timestamp, date only.
6974 - %T ::         
6976   Timestamp, with date and time.
6978 - %u, %U ::     
6980   Like ~%t~, ~%T~ above, but inactive timestamps.
6982 - %i ::         
6984   Initial content, the region when capture is called while the region is
6985   active.  The entire text will be indented like ~%i~ itself.
6987 - %a ::         
6989   Annotation, normally the link created with ~org-store-link~.
6991 - %A ::         
6993   Like ~%a~, but prompt for the description part.
6995 - %l ::         
6997   Like ~%a~, but only insert the literal link.
6999 - %c ::         
7001   Current kill ring head.
7003 - %x ::         
7005   Content of the X clipboard.
7007 - %k ::         
7009   Title of the currently clocked task.
7011 - %K ::         
7013   Link to the currently clocked task.
7015 - %n ::         
7017   User name (taken from ~user-full-name~).
7019 - %f ::         
7021   File visited by current buffer when org-capture was called.
7023 - %F ::         
7025   Full path of the file or directory visited by current buffer.
7027 - %:keyword ::   
7029   Specific information for certain link types, see below.
7031 - %^g  ::       
7033   Prompt for tags, with completion on tags in target file.
7035 - %^G  ::       
7037   Prompt for tags, with completion all tags in all agenda files.
7039 - %^t  ::       
7041   Like ~%t~, but prompt for date.  Similarly ~%^T~, ~%^u~, ~%^U~.  You may
7042   define a prompt like ~%^{Birthday}t~.
7044 - %^C  ::       
7046   Interactive selection of which kill or clip to use.
7048 - %^L  ::       
7050   Like ~%^C~, but insert as link.
7052 - %^{PROP}p ::  
7054   Prompt the user for a value for property {{{var(prop)}}}.
7056 - %^{PROMPT} ::  
7058   Prompt the user for a string and replace this sequence with it.  You
7059   may specify a default value and a completion table with
7060   ~%^{prompt|default|completion2|completion3...}~.  The arrow keys access
7061   a prompt-specific history.
7063 - %\n ::        
7065   Insert the text entered at the nth %^{PROMPT}, where ~n~ is
7066   a number, starting from 1.
7068 - %? ::          
7070   After completing the template, position cursor here.
7073 {{{noindent}}} For specific link types, the following keywords will be
7074 defined:[fn:83]
7076 #+vindex: org-from-is-user-regexp
7079 #+attr_texinfo: :table-type table :indic @asis
7080 - bbdb :: ~%:name %:company~ 
7081 - irc ::   ~%:server %:port %:nick~              
7082 - vm vm-imap wl mh mew rmail ::   
7083   ~%:type %:subject %:message-id~       
7084   ~%:from %:fromname %:fromaddress~     
7085   ~%:to %:toname %:toaddress~           
7086   ~%:date~ (message date header field)                   
7087   ~%:date-timestamp~ (date as active timestamp)          
7088   ~%:date-timestamp-inactive~ (date as inactive timestamp)
7089   ~%:fromto~ (either "to NAME" or "from NAME")[fn:84]
7090 - gnus :: ~%:group~, for messages also all email fields            
7091 - w3 w3m :: ~%:url~                               
7092 - info :: ~%:file %:node~                       
7093 - calendar :: ~%:date~                              
7095 {{{noindent}}} To place the cursor after template expansion use:
7097 #+begin_example
7098    %?          After completing the template, position cursor here.
7099 #+end_example
7101 **** Templates in contexts
7102      :PROPERTIES:
7103      :DESCRIPTION: Only show a template in a specific context
7104      :END:
7106 #+vindex: org-capture-templates-contexts
7108 To control whether a capture template should be accessible from a
7109 specific context, you can customize ~org-capture-templates-contexts~.
7110 Let's say, for example, that you have a capture template "p" for
7111 storing Gnus emails containing patches.  Then you would configure this
7112 option like this:
7114 #+header: :eval no
7115 #+header: :exports code
7116 #+begin_src emacs-lisp
7117 (setq org-capture-templates-contexts
7118       '(("p" (in-mode . "message-mode"))))
7119 #+end_src
7121 You can also tell that the command key "p" should refer to another
7122 template.  In that case, add this command key like this:
7124 #+header: :eval no
7125 #+header: :exports code
7126 #+begin_src emacs-lisp
7127 (setq org-capture-templates-contexts
7128       '(("p" "q" (in-mode . "message-mode"))))
7129 #+end_src
7131 See the docstring of the variable ~org-capture-templates-contexts~ for
7132 more information.
7134 ** Attachments
7135    :PROPERTIES:
7136    :DESCRIPTION: Add files to tasks
7137    :END:
7138 #+cindex: attachments
7139 #+vindex: org-attach-directory
7141 It is often useful to associate reference material with an outline
7142 node/task.  Small chunks of plain text can simply be stored in the
7143 subtree of a project.  Hyperlinks (see [[Hyperlinks]]) can establish
7144 associations with files that live elsewhere on your computer or in the
7145 cloud, like emails or source code files belonging to a project.
7146 Another method is /attachments/, which are files located in a
7147 directory belonging to an outline node.  Org uses directories named by
7148 the unique ID of each entry.  These directories are located in the
7149 {{{file(data)}}} directory which lives in the same directory where
7150 your Org file lives.[fn:85] If you initialize this directory with
7151 ~git init~, Org will automatically commit changes when it sees them.
7152 The attachment system has been contributed to Org by John Wiegley.
7154 In cases where it seems better to do so, you can also attach a
7155 directory of your choice to an entry.  You can also make children
7156 inherit the attachment directory from a parent, so that an entire
7157 subtree uses the same attached directory.
7159 {{{noindent}}} The following commands deal with attachments:
7161 #+attr_texinfo: :table-type table :indic @asis
7162 - {{{kbd(C-c C-a)}}}, ~org-attach~ ::
7163   #+kindex: C-c C-a
7165   The dispatcher for commands related to the attachment system.  After
7166   these keys, a list of commands is displayed and you must press an
7167   additional key to select a command:
7169   - {{{kbd(a)}}}, ~org-attach-attach~ ::
7170     #+kindex: C-c C-a a
7171     #+vindex: org-attach-method
7173     Select a file and move it into the task's attachment directory.  The
7174     file will be copied, moved, or linked, depending on
7175     ~org-attach-method~.  Note that hard links are not supported on all
7176     systems.
7178   - {{{kbd(c)}}}/{{{kbd(m)}}}/{{{kbd(l)}}} ::
7179     #+kindex: C-c C-a c
7180     #+kindex: C-c C-a m
7181     #+kindex: C-c C-a l
7183     Attach a file using the copy/move/link method.  Note that hard links
7184     are not supported on all systems.
7186   - {{{kbd(n)}}}, ~org-attach-new~ ::
7187     #+kindex: C-c C-a n
7189     Create a new attachment as an Emacs buffer.
7191   - {{{kbd(z)}}}, ~org-attach-sync~ ::
7192     #+kindex: C-c C-a z
7194     Synchronize the current task with its attachment directory, in case
7195     you added attachments yourself.
7197   - {{{kbd(o)}}}, ~org-attach-open~ ::
7198     #+kindex: C-c C-a o
7199     #+vindex: org-file-apps
7201     Open current task's attachment.  If there is more than one, prompt for
7202     a file name first.  Opening will follow the rules set by
7203     ~org-file-apps~.  For more details, see the information on following
7204     hyperlinks (see [[Handling links]]).
7206   - {{{kbd(O)}}}, ~org-attach-open-in-emacs~ ::
7207     #+kindex: C-c C-a O
7209     Also open the attachment, but force opening the file in Emacs.
7211   - {{{kbd(f)}}}, ~org-attach-reveal~ ::
7212     #+kindex: C-c C-a f
7214     Open the current task's attachment directory.
7216   - {{{kbd(F)}}}, ~org-attach-reveal-in-emacs~ ::
7217     #+kindex: C-c C-a F
7219     Also open the directory, but force using @command{dired} in Emacs.
7221   - {{{kbd(d)}}}, ~org-attach-delete-one~ ::
7222     #+kindex: C-c C-a d
7224     Select and delete a single attachment.
7226   - {{{kbd(D)}}}, ~org-attach-delete-all~ ::
7227     #+kindex: C-c C-a D
7229     Delete all of a task's attachments.  A safer way is to open the
7230     directory in {{{command(dired)}}} and delete from there.
7232   - {{{kbd(s)}}}, ~org-attach-set-directory~ ::
7233     #+kindex: C-c C-a s
7234     #+cindex: property, ATTACH_DIR
7236     Set a specific directory as the entry's attachment directory.  This
7237     works by putting the directory path into the ~ATTACH_DIR~ property.
7239   - {{{kbd(i)}}}, ~org-attach-set-inherit~ ::
7240     #+kindex: C-c C-a i
7241     #+cindex: property, ATTACH_DIR_INHERIT
7243     Set the ~ATTACH_DIR_INHERIT~ property, so that children will use the
7244     same directory for attachments as the parent does.
7246 ** RSS feeds
7247    :PROPERTIES:
7248    :DESCRIPTION: Getting input from RSS feeds
7249    :END:
7250 #+cindex: RSS feeds
7251 #+cindex: Atom feeds
7253 Org can add and change entries based on information found in RSS feeds and
7254 Atom feeds.  You could use this to make a task out of each new podcast in a
7255 podcast feed.  Or you could use a phone-based note-creating service on the
7256 web to import tasks into Org.  To access feeds, configure the variable
7257 ~org-feed-alist~.  The docstring of this variable has detailed
7258 information.  Here is an example:
7260 #+header: :eval no
7261 #+header: :exports code
7262 #+begin_src emacs-lisp
7263 (setq org-feed-alist
7264      '(("Slashdot"
7265          "http://rss.slashdot.org/Slashdot/slashdot"
7266          "~/txt/org/feeds.org" "Slashdot Entries")))
7267 #+end_src
7269 {{{noindent}}} will configure that new items from the feed provided by
7270 ~rss.slashdot.org~ will result in new entries in the file
7271 {{{file(~/org/feeds.org)}}} under the heading ~Slashdot Entries~,
7272 whenever the following command is used:
7274 #+attr_texinfo: :table-type table :indic @asis
7275 - {{{kbd(C-c C-x g)}}}, ~org-feed-update-all~ ::
7276   #+kindex: C-c C-x g
7278   Collect items from the feeds configured in ~org-feed-alist~ and act
7279   upon them.
7281 - {{{kbd(C-c C-x G)}}}, ~org-feed-goto-inbox~ ::
7282   #+kindex: C-c C-x G
7284   Prompt for a feed name and go to the inbox configured for this feed.
7287 Under the same headline, Org will create a drawer
7288 {{{samp(FEEDSTATUS)}}} in which it will store information about the
7289 status of items in the feed, to avoid adding the same item several
7290 times.  You should add {{{samp(FEEDSTATUS)}}} to the list of drawers in
7291 that file:
7293 #+begin_example
7294    ,#+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
7295 #+end_example
7297 For more information, including how to read atom feeds, see
7298 {{{file(org-feed.el)}}} and the docstring of ~org-feed-alist~.
7300 ** Protocols
7301    :PROPERTIES:
7302    :DESCRIPTION: External (e.g., browser) access to Emacs and Org
7303    :TITLE:    Protocols for external access
7304    :END:
7306 #+cindex: protocols, for external access
7307 #+cindex: emacsserver
7309 You can set up Org for handling protocol calls from outside
7310 applications that are passed to Emacs through the
7311 {{{file(emacsserver)}}}.  For example, you can configure bookmarks in
7312 your web browser to send a link to the current page to Org and create
7313 a note from it using capture (see [[Capture]]).  Or you could create a
7314 bookmark that will tell Emacs to open the local source file of a
7315 remote website you are looking at with the browser.  See
7316 [[http://orgmode.org/worg/org-contrib/org-protocol.php]] for detailed
7317 documentation and setup instructions.
7319 ** Refile and copy
7320    :PROPERTIES:
7321    :DESCRIPTION: Moving/copying a tree from one place to another
7322    :END:
7323 #+cindex: refiling notes
7324 #+cindex: copying notes
7326 When reviewing the captured data, you may want to refile or to copy some of
7327 the entries into a different list, for example into a project.  Cutting,
7328 finding the right location, and then pasting the note is cumbersome.  To
7329 simplify this process, you can use the following special command:
7331 #+attr_texinfo: :table-type table :indic @asis
7332 - {{{kbd(C-c M-w)}}}, ~org-copy~ ::
7333   #+kindex: C-c M-w
7334   #+findex: org-copy
7336   Copying works like refiling, except that the original note is not deleted.
7338 - {{{kbd(C-c C-w)}}}, ~org-refile~ ::
7339   #+kindex: C-c C-w
7340   #+findex: org-refile
7341   #+vindex: org-reverse-note-order
7342   #+vindex: org-refile-targets
7343   #+vindex: org-refile-use-outline-path
7344   #+vindex: org-outline-path-complete-in-steps
7345   #+vindex: org-refile-allow-creating-parent-nodes
7346   #+vindex: org-log-refile
7347   #+vindex: org-refile-use-cache
7349   Refile the entry or region at point.  This command offers possible
7350   locations for refiling the entry and lets you select one with
7351   completion.  The item (or all items in the region) is filed below the
7352   target heading as a subitem.  Depending on ~org-reverse-note-order~, it
7353   will be either the first or last subitem.
7355   By default, all level 1 headlines in the current buffer are considered
7356   to be targets, but you can have more complex definitions across a
7357   number of files.  See the variable ~org-refile-targets~ for details.  If
7358   you would like to select a location via a file-path-like completion
7359   along the outline path, see the variables
7360   ~org-refile-use-outline-path~ and
7361   ~org-outline-path-complete-in-steps~.  If you would like to be able to
7362   create new nodes as new parents for refiling on the fly, check the
7363   variable ~org-refile-allow-creating-parent-nodes~.  When the variable
7364   ~org-log-refile~ is set, a timestamp or a note will be recorded when
7365   an entry has been refiled.[fn:86]
7367 - {{{kbd(C-u C-c C-w)}}} ::
7368   #+kindex: C-u C-c C-w
7370   Use the refile interface to jump to a heading.
7372 - {{{kbd(C-u C-u C-c C-w)}}}, ~org-refile-goto-last-stored~ ::
7373   #+kindex: C-u C-u C-c C-w
7375   Jump to the location where ~org-refile~ last moved a tree to.
7377 - {{{kbd(C-2 C-c C-w)}}} ::
7378   #+kindex: C-2 C-c C-w
7380   Refile as the child of the item currently being clocked.
7382 - {{{kbd(C-0 C-c C-w)}}} or {{{kbd(C-u C-u C-u C-c C-w)}}}, ~org-refile-cache-clear~ ::
7383   #+kindex: C-u C-u C-u C-c C-w
7384   #+kindex: C-0 C-c C-w
7386   Clear the target cache.  Caching of refile targets can be turned on by
7387   setting ~org-refile-use-cache~.  To make the command see new possible
7388   targets, you have to clear the cache with this command.
7390 ** Archiving
7391    :PROPERTIES:
7392    :DESCRIPTION: What to do with finished products
7393    :END:
7394 #+cindex: archiving
7396 When a project represented by a (sub)tree is finished, you may want to
7397 move the tree out of the way and to stop it from contributing to the
7398 agenda.  Archiving is important to keep your working files compact and
7399 global searches like the construction of agenda views fast.
7401 #+attr_texinfo: :table-type table :indic @asis
7402 - {{{kbd(C-c C-x C-a)}}}, ~org-archive-subtree-default~ ::
7403   #+kindex: C-c C-x C-a
7404   #+vindex: org-archive-default-command
7406   Archive the current entry using the command specified in the variable
7407   ~org-archive-default-command~.
7409 *** Moving subtrees
7410     :PROPERTIES:
7411     :DESCRIPTION: Moving a tree to an archive file
7412     :TITLE:    Moving a tree to an archive file
7413     :END:
7414 #+cindex: external archiving
7416 The most common archiving action is to move a project tree to another file,
7417 the archive file.
7419 #+attr_texinfo: :table-type table :indic @asis
7420 - {{{kbd(C-c C-x C-s)}}} or short {{{kbd(C-c $)}}}, ~org-archive-subtree~ ::
7421   #+kindex: C-c C-x C-s
7422   #+kindex: C-c $
7423   #+vindex: org-archive-location
7425   Archive the subtree starting at the cursor position to the location
7426   given by ~org-archive-location~.
7428 - {{{Kbd(C-u C-c C-x C-s)}}} ::
7429   #+kindex: C-u C-c C-x C-s
7431   Check if any direct children of the current headline could be moved to
7432   the archive.  To do this, each subtree is checked for open TODO
7433   entries.  If none are found, the command offers to move it to the
7434   archive location.  If the cursor is /not/ on a headline when this
7435   command is invoked, the level 1 trees will be checked.
7438 #+cindex: archive locations
7440 The default archive location is a file in the same directory as the
7441 current file, with the name derived by appending {{{file(_archive)}}}
7442 to the current file name.  You can also choose what heading to file
7443 archived items under, with the possibility to add them to a datetree
7444 in a file.  For information and examples on how to specify the file and
7445 the heading, see the documentation string of the variable
7446 ~org-archive-location~.
7448 There is also an in-buffer option for setting this variable, for
7449 example:[fn:87]
7451 #+cindex: #+ARCHIVE
7452 #+begin_example
7453    ,#+ARCHIVE: %s_done::
7454 #+end_example
7456 #+cindex: property, ARCHIVE
7458 {{{noindent}}} If you would like to have a special ARCHIVE location
7459 for a single entry or a (sub)tree, give the entry an ~:ARCHIVE:~
7460 property with the location as the value (see [[Properties and columns]]).
7462 #+vindex: org-archive-save-context-info
7464 When a subtree is moved, it receives a number of special properties
7465 that record context information like the file from where the entry
7466 came, its outline path the archiving time etc.  Configure the variable
7467 ~org-archive-save-context-info~ to adjust the amount of information
7468 added.
7470 *** Internal archiving
7471     :PROPERTIES:
7472     :DESCRIPTION: Switch off a tree but keep it in the file
7473     :END:
7475 If you want to just switch off (for agenda views) certain subtrees
7476 without moving them to a different file, you can use the ~ARCHIVE
7477 tag~.
7479 A headline that is marked with the ARCHIVE tag (see [[Tags]]) stays at
7480 its location in the outline tree, but behaves in the following way:
7482 - It does not open when you attempt to do so with a visibility cycling
7483   command (see [[Visibility cycling]]).  You can force cycling archived
7484   subtrees with {{{kbdkey(C-,TAB)}}}, or by setting the option
7485   ~org-cycle-open-archived-trees~.  Also normal outline commands like
7486   ~show-all~ will open archived subtrees.
7488   #+vindex: org-cycle-open-archived-trees
7490 - During sparse tree construction (see [[Sparse trees]]), matches in
7491   archived subtrees are not exposed, unless you configure the option
7492   ~org-sparse-tree-open-archived-trees~.
7494   #+vindex: org-sparse-tree-open-archived-trees
7496 - During agenda view construction (see [[Agenda views]]), the content of
7497   archived trees is ignored unless you configure the option
7498   ~org-agenda-skip-archived-trees~, in which case these trees will
7499   always be included.  In the agenda you can press {{{kbd(v a)}}} to
7500   get archives temporarily included.
7502   #+vindex: org-agenda-skip-archived-trees
7504 - Archived trees are not exported (see [[Exporting]]), only the headline
7505   is.  Configure the details using the variable
7506   ~org-export-with-archived-trees~.
7508   #+vindex: org-export-with-archived-trees
7510 - Archived trees are excluded from column view unless the variable
7511   ~org-columns-skip-archived-trees~ is configured to ~nil~.
7513   #+vindex: org-columns-skip-archived-trees
7516 The following commands help manage the ARCHIVE tag:
7518 #+attr_texinfo: :table-type table :indic @asis
7519 - {{{kbd(C-c C-x a)}}}, ~org-toggle-archive-tag~ ::
7520   #+kindex: C-c C-x a
7522   Toggle the ARCHIVE tag for the current headline.  When the tag is set,
7523   the headline changes to a shadowed face, and the subtree below it is
7524   hidden.
7526 - {{{kbd(C-u C-c C-x a)}}} ::
7527   #+kindex: C-u C-c C-x a
7529   Check if any direct children of the current headline should be
7530   archived.  To do this, each subtree is checked for open TODO entries.
7531   If none are found, the command offers to set the ARCHIVE tag for the
7532   child.  If the cursor is /not/ on a headline when this command is
7533   invoked, the level 1 trees will be checked.
7535 - {{{kbdkey(C-,TAB)}}}, ~org-force-cycle-archived~ ::
7537   Cycle a tree even if it is tagged with ARCHIVE.
7539 - {{{kbd(C-c C-x A)}}}, ~org-archive-to-archive-sibling~ ::
7540   #+kindex: C-c C-x A
7542   Move the current entry to the /Archive Sibling/.  This is a sibling of
7543   the entry with the heading {{{samp(Archive)}}} and the tag
7544   {{{samp(ARCHIVE)}}}.  The entry becomes a child of that sibling and in
7545   this way retains a lot of its original context, including inherited
7546   tags and approximate position in the outline.
7548 * FIXME Agenda views
7549   :PROPERTIES:
7550   :DESCRIPTION: Collecting information into views
7551   :ALT_TITLE: Agenda Views
7552   :END:
7554 Due to the way Org works, TODO items, time-stamped items, and tagged
7555 headlines can be scattered throughout a file or even a number of
7556 files.  To get an overview of open action items, or of events that are
7557 important for a particular date, this information must be collected,
7558 sorted and displayed in an organized way.
7560 Org can select items based on various criteria and display them
7561 in a separate buffer.  Seven different view types are provided:
7563 - an /agenda/ that is like a calendar and shows information for
7564   specific dates,
7566 - a /TODO list/ that covers all unfinished action items,
7568 - a /match view/, showings headlines based on the tags, properties,
7569   and TODO state associated with them,
7571 - a /timeline view/ that shows all events in a single Org file, in
7572   time-sorted view,
7574 - a /text search view/ that shows all entries from multiple files that
7575   contain specified keywords,
7577 - a /stuck projects view/ showing projects that currently don't move
7578   along, and
7580 - /custom views/ that are special searches and combinations of
7581   different views.
7584 {{{noindent}}} The extracted information is displayed in a special
7585 /agenda buffer/.  This buffer is read-only, but provides commands to
7586 visit the corresponding locations in the original Org files, and even
7587 to edit these files remotely.
7589 #+vindex: org-agenda-window-setup
7590 #+vindex: org-agenda-restore-windows-after-quit
7592 Two variables control how the agenda buffer is displayed and whether
7593 the window configuration is restored when the agenda exits:
7594 ~org-agenda-window-setup~ and ~org-agenda-restore-windows-after-quit~.
7596 ** Agenda files
7597    :PROPERTIES:
7598    :DESCRIPTION: Files being searched for agenda information
7599    :END:
7600 #+cindex: agenda files
7601 #+cindex: files for agenda
7602 #+vindex: org-agenda-files
7604 The information to be shown is normally collected from all /agenda
7605 files/, the files listed in the variable ~org-agenda-files~.[fn:180] If
7606 a directory is part of this list, all files with the extension
7607 {{{file(.org)}}} in this directory will be part of the list.
7609 Thus, even if you only work with a single Org file, that file should
7610 be put into the list.[fn:88]  You can customize ~org-agenda-files~, but
7611 the easiest way to maintain it is through the following commands
7613 #+cindex: files, adding to agenda list
7614 #+attr_texinfo: :table-type table :indic @asis
7615 - {{{kbd(C-c [)}}}, ~org-agenda-file-to-front~ ::
7616   #+kindex: C-c [
7618   Add current file to the list of agenda files.  The file is added to the
7619   front of the list.  If it was already in the list, it is moved to the
7620   front.  With a prefix argument, file is added/moved to the end.
7622 - {{{kbd(C-c ])}}}, ~org-remove-file~ ::
7623   #+kindex: C-c ]
7625   Remove current file from the list of agenda files.
7627 - {{{kbd(C-')}}} {{{kbd(C-)}}}, ~org-cycle-agenda-files~ ::
7628   #+kindex: C-'
7629   #+kindex: C-,
7630   #+cindex: cycling, of agenda files
7632   Cycle through agenda file list, visiting one file after the other.
7634 - {{{kbd(M-x org-iswitchb)}}} ::
7635   #+findex: org-iswitchb
7637   Command to use an ~iswitchb~-like interface to switch to and between
7638   Org buffers.
7641 {{{noindent}}} The Org menu contains the current list of files and can
7642 be used to visit any of them.
7644 If you would like to focus the agenda temporarily on a file not in
7645 this list, or on just one file in the list, or even on only a subtree
7646 in a file, then this can be done in different ways.  For a single
7647 agenda command, you may press {{{kbd(<)}}} once or several times in
7648 the dispatcher (see [[Agenda dispatcher]]).  To restrict the agenda scope
7649 for an extended period, use the following commands:
7651 #+attr_texinfo: :table-type table :indic @asis
7652 - {{{kbd(C-c C-x <)}}}, ~org-agenda-set-restriction-lock~ ::
7653   #+kindex: C-c C-x <
7655   Permanently restrict the agenda to the current subtree.  When with a
7656   prefix argument, or with the cursor before the first headline in a
7657   file, the agenda scope is set to the entire file.  This restriction
7658   remains in effect until removed with {{{kbd(C-c C-x >)}}}, or by
7659   typing either {{{kbd(<)}}} or {{{kbd(>)}}} in the agenda dispatcher.
7660   If there is a window displaying an agenda view, the new restriction
7661   takes effect immediately.
7663 - {{{kbd(C-c C-x >)}}}, ~org-agenda-remove-restriction-lock~ ::
7664   #+kindex: C-c C-x >
7666   Remove the permanent restriction created by {{{kbd(C-c C-x <)}}}.
7669 {{{noindent}}} When working with {{{file(speedbar.el)}}}, you can use
7670 the following commands in the Speedbar frame:
7672 #+attr_texinfo: :table-type table :indic @asis
7673 - {{{kbd(<)}}} in the speedbar frame ~org-speedbar-set-agenda-restriction~ ::
7674   #+kindex: <
7676   Permanently restrict the agenda to the item---either an Org file or a
7677   subtree in such a file---at the cursor in the Speedbar frame.  If there
7678   is a window displaying an agenda view, the new restriction takes
7679   effect immediately.
7681 - {{{kbd(>)}}} in the speedbar frame ~org-agenda-remove-restriction-lock~ ::
7682   #+kindex: >
7684   Lift the restriction.
7686 ** Agenda dispatcher
7687    :PROPERTIES:
7688    :DESCRIPTION: Keyboard access to agenda views
7689    :TITLE:    The agenda dispatcher
7690    :END:
7691 #+cindex: agenda dispatcher
7692 #+cindex: dispatching agenda commands
7694 The views are created through a dispatcher, which should be bound to a
7695 global key---for example {{{kbd(C-c a)}}} (see [[Activation]]).  In the
7696 following we will assume that {{{kbd(C-c a)}}} is indeed how the
7697 dispatcher is accessed and list keyboard access to commands
7698 accordingly.  After pressing {{{kbd(C-c a)}}}, an additional letter is
7699 required to execute a command.  The dispatcher offers the following
7700 default commands:
7702 #+attr_texinfo: :table-type table :indic @asis
7703 - {{{kbd(a)}}} ::
7704   #+kindex: C-c a a
7706   Create the calendar-like agenda (see [[Weekly/daily agenda]]).
7708 - {{{kbd(t)}}} or {{{kbd(T)}}} ::
7709   #+kindex: C-c a t
7710   #+kindex: C-c a T
7712   Create a list of all TODO items (see [[Global TODO list]]).
7714 - {{{kbd(m)}}} or {{{kbd(M)}}} ::
7715   #+kindex: C-c a m
7716   #+kindex: C-c a M
7718   Create a list of headlines matching a TAGS expression (see [[Matching tags and properties]]).
7720 - {{{kbd(L)}}} ::
7721   #+kindex: C-c a L
7723   Create the timeline view for the current buffer 
7724   (see [[Timeline for a single file]]).
7726 - {{{kbd(s)}}} ::
7727   #+kindex: C-c a s
7729   Create a list of entries selected by a boolean expression of keywords
7730   and/or regular expressions that must or must not occur in the entry.
7732 - {{{kbd(/)}}} ::
7733   #+kindex: C-c a /
7734   #+vindex: org-agenda-text-search-extra-files
7736   Search for a regular expression in all agenda files and additionally
7737   in the files listed in ~org-agenda-text-search-extra-files~.  This uses
7738   the Emacs command ~multi-occur~.  A prefix argument can be used to
7739   specify the number of context lines for each match, default is
7740   1.
7742 - {{{kbd(#)}}} or {{{kbd(!)}}} ::
7743   #+kindex: C-c a #
7744   #+kindex: C-c a !
7745   Create a list of stuck projects (see [[Stuck projects]]).
7747 - {{{kbd(<)}}} ::
7748   #+kindex: C-c a <
7750   Restrict an agenda command to the current buffer.[fn:89] After
7751   pressing {{{kbd(<)}}}, you still need to press the character selecting
7752   the command.
7754 - {{{kbd(< <)}}} ::
7755   #+kindex: C-c a < <
7757   If there is an active region, restrict the following agenda command to
7758   the region.  Otherwise, restrict it to the current subtree.[fn:90]
7759   After pressing {{{kbd(< <)}}}, you still need to press the character
7760   selecting the command.
7762 - {{{kbd(*)}}} ::
7763   #+kindex: C-c a *
7764   #+vindex: org-agenda-sticky
7766   Toggle sticky agenda views.  By default, Org maintains only a single
7767   agenda buffer and rebuilds it each time you change the view, to make
7768   sure everything is always up to date.  If you switch between views
7769   often and the build time bothers you, you can turn on sticky agenda
7770   buffers (make this the default by customizing the variable
7771   ~org-agenda-sticky~).  With sticky agendas, the dispatcher only
7772   switches to the selected view, you need to update it by hand with
7773   {{{kbd(r)}}} or {{{kbd(g)}}}.  You can toggle sticky agenda view any
7774   time with ~org-toggle-sticky-agenda~.
7777 You can also define custom commands that will be accessible through
7778 the dispatcher, just like the default commands.  This includes the
7779 possibility to create extended agenda buffers that contain several
7780 blocks together, for example the weekly agenda, the global TODO list
7781 and a number of special tags matches.  See [[Custom agenda views]].
7783 ** Built-in agenda views
7784    :PROPERTIES:
7785    :DESCRIPTION: What is available out of the box?
7786    :TITLE: The built-in agenda views
7787    :END:
7788 In this section we describe the built-in views.
7790 *** FIXED Weekly/daily agenda
7791     :PROPERTIES:
7792     :DESCRIPTION: The calendar page with current tasks
7793     :END:
7794 #+cindex: agenda
7795 #+cindex: weekly agenda
7796 #+cindex: daily agenda
7798 The purpose of the weekly/daily /agenda/ is to act like a page of a
7799 paper agenda, showing all the tasks for the current week or day.
7801 #+attr_texinfo: :table-type table :indic @asis
7802 - {{{kbd(C-c a a)}}}, ~org-agenda-list~ ::
7803   #+cindex: org-agenda, command
7805   Compile an agenda for the current week from a list of Org files.  The
7806   agenda shows the entries for each day.  With a numeric prefix (like
7807   {{{kbd(C-u 2 1 C-c a a)}}}) you may set the number of days to be
7808   displayed.[fn:91]
7811 #+vindex: org-agenda-span
7812 #+vindex: org-agenda-ndays
7813 The default number of days displayed in the agenda is set by the variable
7814 ~org-agenda-span~ (or the obsolete ~org-agenda-ndays~).  This
7815 variable can be set to any number of days you want to see by default in the
7816 agenda, or to a span name, such a ~day~, ~week~, ~month~ or
7817 ~year~.
7819 Remote editing from the agenda buffer means, for example, that you can
7820 change the dates of deadlines and appointments from the agenda buffer.
7821 The commands available in the Agenda buffer are listed in [[Agenda
7822 commands]].
7824 **** FIXED Calendar/Diary integration
7825      :PROPERTIES:
7826      :DESCRIPTION: Integrate the Emacs diary with Org
7827      :END:
7828 #+cindex: calendar integration
7829 #+cindex: diary integration
7830 #+cindex: Reingold, Edward M.
7832 Emacs contains the calendar and diary by Edward M.  Reingold.  The
7833 calendar displays a three-month calendar with holidays from different
7834 countries and cultures.  The diary allows you to keep track of
7835 anniversaries, lunar phases, sunrise/set, recurrent appointments
7836 (weekly, monthly) and more.  In this way, it is quite complementary to
7837 Org.  It can be very useful to combine output from Org with
7838 the diary.
7840 In order to include entries from the Emacs diary into Org mode's
7841 agenda, you only need to customize the variable
7843 #+begin_src emacs-lisp
7844   (setq org-agenda-include-diary t)
7845 #+end_src
7847 {{{noindent}}} After that, everything will happen automatically.  All diary
7848 entries including holidays, anniversaries, etc., will be included in the
7849 agenda buffer created by Org mode.  {{{key(SPC)}}}, {{{key(TAB)}}}, and
7850 {{{key(RET)}}} can be used from the agenda buffer to jump to the diary
7851 file in order to edit existing diary entries.  The {{{kbd(i)}}} command to
7852 insert new entries for the current date works in the agenda buffer, as
7853 well as the commands {{{kbd(S)}}}, {{{kbd(M)}}}, and {{{kbd(C)}}} to display
7854 Sunrise/Sunset times, show lunar phases and to convert to other
7855 calendars, respectively.  {{{kbd(c)}}} can be used to switch back and forth
7856 between calendar and agenda.
7858 If you are using the diary only for sexp entries and holidays, it is
7859 faster to not use the above setting, but instead to copy or even move
7860 the entries into an Org file.  Org mode evaluates diary-style sexp
7861 entries, and does it faster because there is no overhead for first
7862 creating the diary display.  Note that the sexp entries must start at
7863 the left margin, no whitespace is allowed before them.  For example,
7864 the following segment of an Org file will be processed and entries
7865 will be made in the agenda:[fn:181]
7867 #+begin_example
7868    ,* Birthdays and similar stuff
7869    ,#+CATEGORY: Holiday
7870    %%(org-calendar-holiday)   ; special function for holiday names
7871    ,#+CATEGORY: Ann
7872    %%(org-anniversary 1956  5 14) Arthur Dent is %d years old
7873    %%(org-anniversary 1869 10  2) Mahatma Gandhi would be %d years old
7874 #+end_example
7876 **** FIXED Anniversaries from BBDB
7877      :PROPERTIES:
7878      :DESCRIPTION: Integrate Big Brother Database and Org
7879      :END:
7881 #+cindex: BBDB, anniversaries
7882 #+cindex: anniversaries, from BBDB
7884 If you are using the Big Brothers Database to store your contacts, you will
7885 very likely prefer to store anniversaries in BBDB rather than in a
7886 separate Org or diary file.  Org supports this and will show BBDB
7887 anniversaries as part of the agenda.  All you need to do is to add the
7888 following to one of your agenda files:
7890 #+begin_example
7891    ,* Anniversaries
7892    ,  :PROPERTIES:
7893    ,  :CATEGORY: Anniv
7894    ,  :END:
7895    ,%%(org-bbdb-anniversaries)
7896 #+end_example
7898 You can then go ahead and define anniversaries for a BBDB record.
7899 Basically, you need to press {{{kbdspckey(C-o anniversary,RET)}}} with
7900 the cursor in a BBDB record and then add the date in the format
7901 ~YYYY-MM-DD~ or ~MM-DD~, followed by a space and the class of the
7902 anniversary ({{{samp(birthday)}}} or {{{samp(wedding)}}}, or a format
7903 string).  If you omit the class, it will default to
7904 {{{samp(birthday)}}}.  Here are a few examples, the header for the file
7905 {{{file(org-bbdb.el)}}} contains more detailed information.
7907 #+begin_example
7908    1973-06-22
7909    06-22
7910    1955-08-02 wedding
7911    2008-04-14 %s released version 6.01 of org mode, %d years ago
7912 #+end_example
7914 After a change to BBDB, or for the first agenda display during an
7915 Emacs session, the agenda display will suffer a short delay as Org
7916 updates its hash with anniversaries.  However, from then on things will
7917 be very fast---much faster in fact than a long list of
7918 {{{samp(%%(diary-anniversary))}}} entries in an Org or Diary file.
7920 **** FIXED Appointment reminders
7921      :PROPERTIES:
7922      :DESCRIPTION: Integrate the Emacs appointment facility and Org
7923      :END:
7924 #+cindex: @file{appt.el}
7925 #+cindex: appointment reminders
7926 #+cindex: appointment
7927 #+cindex: reminders
7929 Org can interact with Emacs appointments notification facility.  To add the
7930 appointments of your agenda files, use the command ~org-agenda-to-appt~.
7931 This command lets you filter through the list of your appointments and add
7932 only those belonging to a specific category or matching a regular expression.
7933 It also reads a ~APPT_WARNTIME~ property which will then override the
7934 value of ~appt-message-warning-time~ for this appointment.  See the
7935 docstring for details.
7937 *** FIXED Global TODO list
7938     :PROPERTIES:
7939     :DESCRIPTION: All unfinished action items
7940     :END:
7941 #+cindex: global TODO list
7942 #+cindex: TODO list, global
7944 The global TODO list contains all unfinished TODO items formatted and
7945 collected into a single place.
7947 #+attr_texinfo: :table-type table :indic @asis
7948 - {{{kbd(C-c a t)}}}, ~org-todo-list~ ::
7950   Show the global TODO list.  This collects the TODO items from all
7951   agenda files (see [[Agenda views]]) into a single buffer.  By default, this
7952   lists items with a state the is not a DONE state.  The buffer is in
7953   ~agenda-mode~, so there are commands to examine and manipulate the
7954   TODO entries directly from that buffer (see [[Agenda commands]]).
7956 - {{{kbd(C-c a T)}}}, ~org-todo-list~ ::
7958   #+cindex: TODO keyword matching
7959   #+vindex: org-todo-keywords
7961   Like the above, but allows selection of a specific TODO keyword.  You
7962   can also do this by specifying a prefix argument to {{{kbd(C-c a
7963   t)}}}.  You are prompted for a keyword, and you may also specify
7964   several keywords by separating them with {{{samp(|)}}} as the boolean
7965   OR operator.  With a numeric prefix, the Nth keyword in
7966   ~org-todo-keywords~ is selected.
7968   #+kindex: r
7970   The {{{kbd(r)}}} key in the agenda buffer regenerates it, and you can give
7971   a prefix argument to this command to change the selected TODO keyword,
7972   for example {{{kbd(3 r)}}}.  If you often need a search for a specific
7973   keyword, define a custom command for it (see [[Agenda dispatcher]]).
7975   Matching specific TODO keywords can also be done as part of a tags
7976   search (see [[Tag searches]]).
7979 Remote editing of TODO items means that you can change the state of a
7980 TODO entry with a single key press.  The commands available in the
7981 TODO list are described in [[Agenda commands]].
7983 #+cindex: sublevels, inclusion into TODO list
7985 Normally the global TODO list simply shows all headlines with TODO
7986 keywords.  This list can become very long.  There are two ways to keep
7987 it more compact:
7990 - Some people view a TODO item that has been /scheduled/ for execution
7991   or have a /deadline/ (see [[Timestamps]]) as no longer /open/.  Configure
7992   the variables ~org-agenda-todo-ignore-scheduled~,
7993   ~org-agenda-todo-ignore-deadlines~,
7994   ~org-agenda-todo-ignore-timestamp~ and/or
7995   ~org-agenda-todo-ignore-with-date~ to exclude such items from the
7996   global TODO list.
7998   #+vindex: org-agenda-todo-ignore-scheduled
7999   #+vindex: org-agenda-todo-ignore-deadlines
8000   #+vindex: org-agenda-todo-ignore-timestamp
8001   #+vindex: org-agenda-todo-ignore-with-date
8003 - TODO items may have sublevels to break up the task into subtasks.  In
8004   such cases it may be enough to list only the highest level TODO
8005   headline and omit the sublevels from the global list.  Configure the
8006   variable ~org-agenda-todo-list-sublevels~ to get this behavior.
8008   #+vindex: org-agenda-todo-list-sublevels
8010 *** Matching tags and properties
8011     :PROPERTIES:
8012     :DESCRIPTION: Structured information with fine-tuned search
8013     :END:
8014 #+cindex: matching, of tags
8015 #+cindex: matching, of properties
8016 #+cindex: tags view
8017 #+cindex: match view
8019 If headlines in the agenda files are marked with /tags/ (see [[Tags]]), or
8020 have properties (see [[Properties and columns]]), you can select headlines
8021 based on this metadata and collect them into an agenda buffer.  The
8022 match syntax described here also applies when creating sparse trees
8023 with {{{kbd(C-c / m)}}}.
8025 #+attr_texinfo: :table-type table :indic @asis
8026 - {{{kbd(C-c a m)}}}, ~org-tags-view~ ::
8028   Produce a list of all headlines that match a given set of tags.  The
8029   command prompts for a selection criterion, which is a boolean logic
8030   expression with tags, like {{{samp(+work+urgent-withboss)}}} or
8031   {{{samp(work|home)}}} (see [[Tags]]).  If you often need a specific search,
8032   define a custom command for it (see [[Agenda dispatcher]]).
8034 - {{{kbd(C-c a M)}}}, ~org-tags-view~ ::
8036   #+vindex: org-tags-match-list-sublevels
8037   #+vindex: org-agenda-tags-todo-honor-ignore-options
8039   Like {{{kbd(C-c a m)}}}, but only select headlines that are also TODO
8040   items in a not-DONE state and force checking subitems (see the variable
8041   ~org-tags-match-list-sublevels~).  To exclude scheduled/deadline items,
8042   see the variable ~org-agenda-tags-todo-honor-ignore-options~.  Matching
8043   specific TODO keywords together with a tags match is also possible,
8044   see [[Tag searches]].
8047 The commands available in the tags list are described in [[Agenda
8048 commands]].
8051 #+cindex: Boolean logic, for tag or property searches
8053 A search string can use Boolean operators {{{samp(&)}}} for AND and
8054 {{{samp(|)}}} for OR.  {{{samp(&)}}} binds more strongly than
8055 {{{samp(|)}}}.  Parentheses are currently not implemented.  Each element
8056 in the search is either a tag, a regular expression matching tags, or
8057 an expression like ~PROPERTY OPERATOR VALUE~ with a comparison
8058 operator, accessing a property value.  Each element may be preceded by
8059 {{{samp(-)}}}, to select against it, and {{{samp(+)}}} is syntactic
8060 sugar for positive selection.  The AND operator {{{samp(&)}}} is
8061 optional when {{{samp(+)}}} or {{{samp(-)}}} is present.  Here are some
8062 examples, using only tags.
8064 #+attr_texinfo: :table-type table :indic @samp
8065 - +work-boss ::
8067   Select headlines tagged {{{samp(:work:)}}}, but discard those also
8068   tagged {{{samp(:boss:)}}}.
8070 - work|laptop ::
8072   Selects lines tagged {{{samp(:work:)}}} or {{{samp(:laptop:)}}}.
8074 - work|laptop+night ::
8076   Like before, but require the {{{samp(:laptop:)}}} lines to be tagged
8077   also {{{samp(:night:)}}}.
8080 #+cindex: regular expressions, with tags search
8082 Instead of a tag, you may also specify a regular expression enclosed
8083 in curly braces.  For example, {{{samp(work+{^boss.*})}}} matches
8084 headlines that contain the tag {{{samp(:work:)}}} and any tag
8085 /starting/ with {{{samp(boss)}}}.
8087 #+cindex: TODO keyword matching, with tags search
8088 #+cindex: level, require for tags/property match
8089 #+cindex: category, require for tags/property match
8090 #+vindex: org-odd-levels-only
8092 You may also test for properties (see [[Properties and columns]]) at the
8093 same time as matching tags.  The properties may be real properties, or
8094 special properties that represent other metadata (see [[Special
8095 properties]]).  For example, the "property" ~TODO~ represents the TODO
8096 keyword of the entry.  Or, the "property" ~LEVEL~ represents the
8097 level of an entry.  So a search {{{samp(+LEVEL=3+boss-TODO="DONE")}}}
8098 lists all level three headlines that have the tag {{{samp(boss)}}} and
8099 are /not/ marked with the TODO keyword DONE.  In buffers with
8100 ~org-odd-levels-only~ set, {{{samp(LEVEL)}}} does not count the number
8101 of stars, but {{{samp(LEVEL=2)}}} will correspond to 3 stars etc.  The
8102 ITEM special property cannot currently be used in tags/property
8103 searches.[fn:92]
8105 Here are more examples:
8107 #+attr_texinfo: :table-type table :indic @samp
8108 - work+TODO="WAITING" ::
8110   Select {{{samp(:work:)}}}-tagged TODO lines with the specific TODO
8111   keyword {{{samp(WAITING)}}}.
8113 - work+TODO="WAITING"|home+TODO="WAITING" ::
8115   Waiting tasks both at work and at home.
8118 When matching properties, a number of different operators can be used to test
8119 the value of a property.  Here is a complex example:
8121 #+begin_example
8122    +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         
8123             +With={Sarah|Denny}+SCHEDULED>="<2008-10-11>"
8124 #+end_example
8126 {{{noindent}}} The type of comparison will depend on how the
8127 comparison value is written:
8129 - If the comparison value is a plain number, a numerical comparison is
8130   done, and the allowed operators are ~<~, ~=~, ~>~, ~<=~, ~>=~, and
8131   ~<>~.
8133 - If the comparison value is enclosed in double-quotes, a string
8134   comparison is done, and the same operators are allowed.
8136 - If the comparison value is enclosed in double-quotes /and/ angular
8137   brackets (like {{{samp(DEADLINE<="<2008-12-24 18:30>")}}}), both
8138   values are assumed to be date/time specifications in the standard
8139   Org way, and the comparison will be done accordingly.  Special values
8140   that will be recognized are ~"<now>"~ for now (including time), and
8141   ~"<today>"~, and ~"<tomorrow>"~ for these days at 0:00 hours, i.e.@:
8142   without a time specification.  Also strings like ~"<+5d>"~ or
8143   ~"<-2m>"~ with units ~d~, ~w~, ~m~, and ~y~ for day, week, month,
8144   and year, respectively, can be used.
8146 - If the comparison value is enclosed in curly braces, a regexp match
8147   is performed, with {{{samp(=)}}} meaning that the regexp matches the
8148   property value, and ~<>~ meaning that it does not match.
8151 So the search string in the example finds entries tagged
8152 {{{samp(:work:)}}} but not {{{samp(:boss:)}}}, which also have a
8153 priority value {{{samp(A)}}}, a {{{samp(:Coffee:)}}} property with the
8154 value {{{samp(unlimited)}}}, an {{{samp(Effort)}}} property that is
8155 numerically smaller than 2, a {{{samp(:With:)}}} property that is
8156 matched by the regular expression {{{samp(Sarah|Denny)}}}, and that
8157 are scheduled on or after October 11, 2008.
8159 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing
8160 any other properties will slow down the search.  However, once you have
8161 paid the price by accessing one property, testing additional
8162 properties is cheap again.
8164 You can configure Org mode to use property inheritance during a
8165 search, but beware that this can slow down searches considerably.  See
8166 [[Property inheritance]], for details.
8168 For backward compatibility, and also for typing speed, there is also a
8169 different way to test TODO states in a search.  For this, terminate the
8170 tags/property part of the search string (which may include several
8171 terms connected with {{{samp(|)}}}) with a {{{samp(/)}}} and then
8172 specify a Boolean expression just for TODO keywords.  The syntax is
8173 then similar to that for tags, but should be applied with care: for
8174 example, a positive selection on several TODO keywords cannot
8175 meaningfully be combined with boolean AND.  However, /negative
8176 selection/ combined with AND can be meaningful.  To make sure that only
8177 lines are checked that actually have any TODO keyword (resulting in a
8178 speed-up), use {{{kbd(C-c a M)}}}, or equivalently start the TODO part
8179 after the slash with {{{samp(!)}}}.  Using {{{kbd(C-c a M)}}} or
8180 {{{samp(/!)}}} will not match TODO keywords in a DONE state.  Examples:
8182 #+attr_texinfo: :table-type table :indic @samp
8183 - work/WAITING ::
8185   Same as {{{samp(work+TODO="WAITING")}}}
8187 - work/!-WAITING-NEXT ::
8188   
8189   Select {{{samp(:work:)}}}-tagged TODO lines that are neither {{{samp(WAITING)}}}
8190   nor {{{samp(NEXT)}}}
8192 - work/!+WAITING|+NEXT ::
8194   Select {{{samp(:work:)}}}-tagged TODO lines that are either
8195   {{{samp(WAITING)}}} or {{{samp(NEXT)}}}.
8197 *** FIXED Timeline for a single file
8198     :PROPERTIES:
8199     :DESCRIPTION: Time-sorted view for a single file
8200     :ALT_TITLE: Timeline
8201     :END:
8203 #+cindex: timeline, single file
8204 #+cindex: time-sorted view
8206 The timeline summarizes all time-stamped items from a single Org mode
8207 file in a /time-sorted view/.  The main purpose of this command is
8208 to give an overview over events in a project.
8210 #+attr_texinfo: :table-type table :indic @asis
8211 - {{{kbd(C-c a L)}}}, ~org-timeline~ ::
8213   Show a time-sorted view of the Org file, with all time-stamped items.
8214   When called with a {{{kbd(C-u)}}} prefix, all unfinished TODO entries
8215   (scheduled or not) are also listed under the current date.
8218 {{{noindent}}} The commands available in the timeline buffer are
8219 listed in [[Agenda commands]].
8221 *** FIXED Search view
8222     :PROPERTIES:
8223     :DESCRIPTION: Find entries by searching for text
8224     :END:
8225 #+cindex: search view
8226 #+cindex: text search
8227 #+cindex: searching, for text
8229 This agenda view is a general text search facility for Org mode entries.
8230 It is particularly useful to find notes.
8232 #+attr_texinfo: :table-type table :indic @asis
8233 - {{{kbd(C-c a s)}}}, ~org-search-view~ ::
8235   This is a special search that lets you select entries by matching a
8236   substring or specific words using a boolean logic.
8239 For example, the search string {{{samp(computer equipment)}}} will
8240 find entries that contain {{{samp(computer equipment)}}} as a
8241 substring.  If the two words are separated by more space or a line
8242 break, the search will still match.  Search view can also search for
8243 specific keywords in the entry, using Boolean logic.  The search string
8244 {{{samp(+computer +wifi -ethernet -{8.11[bg]})}}} will search for
8245 note entries that contain the keywords ~computer~ and ~wifi~, but not
8246 the keyword ~ethernet~, and which are also not matched by the regular
8247 expression ~8.11[bg]~, meaning to exclude both 8.11b and 8.11g.  The
8248 first {{{samp(+)}}} is necessary to turn on word search, other
8249 {{{samp(+)}}} characters are optional.  For more details, see the
8250 docstring of the command ~org-search-view~.
8252 #+vindex: org-agenda-text-search-extra-files
8254 Note that in addition to the agenda files, this command will also
8255 search the files listed in ~org-agenda-text-search-extra-files~.
8257 *** FIXED Stuck projects
8258     :PROPERTIES:
8259     :DESCRIPTION: Find projects you need to review
8260     :END:
8261 #+pindex: GTD, Getting Things Done
8263 If you are following a system like David Allen's GTD to organize your
8264 work, one of the "duties" you have is a regular review to make sure
8265 that all projects move along.  A /stuck/ project is a project that has
8266 no defined next actions, so it will never show up in the TODO lists
8267 Org mode produces.  During the review, you need to identify such
8268 projects and define next actions for them.
8270 #+attr_texinfo: :table-type table :indic @asis
8271 - {{{kbd(C-c a #)}}}, ~org-agenda-list-stuck-projects~ ::
8273   List projects that are stuck.
8275 - {{{kbd(C-c a !)}}} ::
8277   #+vindex: org-stuck-projects
8278   #+kindex: C-c a !
8280   Customize the variable ~org-stuck-projects~ to define what a stuck
8281   project is and how to find it.
8284 You almost certainly will have to configure this view before it will
8285 work for you.  The built-in default assumes that all your projects are
8286 level-2 headlines, and that a project is not stuck if it has at least
8287 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
8289 Let's assume that you, in your own way of using Org mode, identify
8290 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
8291 indicate a project that should not be considered yet.  Let's further
8292 assume that the TODO keyword DONE marks finished projects, and that
8293 NEXT and TODO indicate next actions.  The tag @SHOP indicates shopping
8294 and is a next action even without the NEXT tag.  Finally, if the
8295 project contains the special word IGNORE anywhere, it should not be
8296 listed either.  In this case you would start by identifying eligible
8297 projects with a tags/todo match (see [[Tag searches]]).
8298 {{{samp(+PROJECT/-MAYBE-DONE)}}}, and then check for TODO, NEXT,
8299 @SHOP, and IGNORE in the subtree to identify projects that are not
8300 stuck.  The correct customization for this is:
8302 #+begin_src emacs-lisp
8303 (setq org-stuck-projects
8304       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
8305                                "\\<IGNORE\\>"))
8306 #+end_src
8308 Note that if a project is identified as non-stuck, the subtree of this entry
8309 will still be searched for stuck projects.
8311 ** Presentation and sorting
8312    :PROPERTIES:
8313    :DESCRIPTION: How agenda items are prepared for display
8314    :END:
8315 #+cindex: presentation, of agenda items
8316 #+vindex: org-agenda-prefix-format
8317 #+vindex: org-agenda-tags-column
8319 Before displaying items in an agenda view, Org mode visually prepares
8320 the items and sorts them.  Each item occupies a single line.  The line
8321 starts with a /prefix/ that contains the /category/ (see [[Categories]])
8322 of the item and other important information.  You can customize in
8323 which column tags will be displayed through ~org-agenda-tags-column~.
8324 You can also customize the prefix using the option
8325 ~org-agenda-prefix-format~.  This prefix is followed by a cleaned-up
8326 version of the outline headline associated with the item.
8328 *** Categories
8329     :PROPERTIES:
8330     :DESCRIPTION: Not all tasks are equal
8331     :END:
8333 #+cindex: category
8334 #+cindex: #+CATEGORY
8336 The category is a broad label assigned to each agenda item.  By
8337 default, the category is simply derived from the file name, but you
8338 can also specify it with a special line in the buffer, like
8339 this:[fn:93]
8341 #+begin_example
8342    ,#+CATEGORY: Thesis
8343 #+end_example
8345 {{{noindent}}}
8346 #+cindex: property, CATEGORY
8348 If you would like to have a special CATEGORY for a single entry or a
8349 (sub)tree, give the entry a ~:CATEGORY:~ property with the special
8350 category you want to apply as the value.
8352 {{{noindent}}} The display in the agenda buffer looks best if the
8353 category is not longer than 10 characters.
8355 {{{noindent}}} You can set up icons for category by customizing the
8356 ~org-agenda-category-icon-alist~ variable.
8357 #+vindex: org-agenda-category-icon-alist
8359 *** Time-of-day specifications
8360     :PROPERTIES:
8361     :DESCRIPTION: How the agenda knows the time
8362     :END:
8363 #+cindex: time-of-day specification
8365 Org mode checks each agenda item for a time-of-day specification.  The
8366 time can be part of the timestamp that triggered inclusion into the
8367 agenda, for example as in ~<2005-05-10 Tue 19:00>~.  Time
8368 ranges can be specified with two timestamps, like:
8370   ~<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>~.
8372 In the headline of the entry itself, a time(range) may also appear as
8373 plain text (like {{{samp(12:45)}}} or a {{{samp(8:30-1pm)}}}).  If the
8374 agenda integrates the Emacs diary (see [[Weekly/daily agenda]]), time
8375 specifications in diary entries are recognized as well.
8377 For agenda display, Org mode extracts the time and displays it in a
8378 standard 24 hour format as part of the prefix.  The example times in
8379 the previous paragraphs would end up in the agenda like this:
8381 #+begin_example
8382     8:30-13:00 Arthur Dent lies in front of the bulldozer
8383    12:45...... Ford Prefect arrives and takes Arthur to the pub
8384    19:00...... The Vogon reads his poem
8385    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8386 #+end_example
8388 #+cindex: time grid
8390 If the agenda is in single-day mode, or for the display of today, the
8391 timed entries are embedded in a time grid, like
8393 #+begin_example
8394     8:00...... ------------------
8395     8:30-13:00 Arthur Dent lies in front of the bulldozer
8396    10:00...... ------------------
8397    12:00...... ------------------
8398    12:45...... Ford Prefect arrives and takes Arthur to the pub
8399    14:00...... ------------------
8400    16:00...... ------------------
8401    18:00...... ------------------
8402    19:00...... The Vogon reads his poem
8403    20:00...... ------------------
8404    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8405 #+end_example
8407 #+vindex: org-agenda-use-time-grid
8408 #+vindex: org-agenda-time-grid
8410 The time grid can be turned on and off with the variable
8411 ~org-agenda-use-time-grid~, and can be configured with
8412 ~org-agenda-time-grid~.
8414 *** Sorting of agenda items
8415     :PROPERTIES:
8416     :DESCRIPTION: The order of things
8417     :END:
8418 #+cindex: sorting, of agenda items
8419 #+cindex: priorities, of agenda items
8421 Before being inserted into a view, the items are sorted.  How this is
8422 done depends on the type of view.
8424 - For the daily/weekly agenda, the items for each day are sorted.  The
8425   default order is to first collect all items containing an explicit
8426   time-of-day specification.  These entries will be shown at the
8427   beginning of the list, as a /schedule/ for the day.  After that,
8428   items remain grouped in categories, in the sequence given by
8429   ~org-agenda-files~.  Within each category, items are sorted by
8430   priority (see [[Priorities]]), which is composed of the base priority
8431   (2000 for priority {{{samp(A)}}}, 1000 for {{{samp(B)}}}, and 0 for
8432   {{{samp(C)}}}), plus additional increments for overdue scheduled or deadline items.
8434   #+vindex: org-agenda-files
8436 - For the TODO list, items remain in the order of categories, but
8437   within each category, sorting takes place according to priority (see
8438   [[Priorities]]).  The priority used for sorting derives from the
8439   priority cookie, with additions depending on how close an item is to
8440   its due or scheduled date.
8442 - For tags matches, items are not sorted at all, but just appear in
8443   the sequence in which they are found in the agenda files.
8446 #+vindex: org-agenda-sorting-strategy
8448 Sorting can be customized using the variable
8449 ~org-agenda-sorting-strategy~, and may also include criteria based on
8450 the estimated effort of an entry (see [[Effort estimates]]).
8452 ** FIXME Agenda commands
8453    :PROPERTIES:
8454    :DESCRIPTION: Remote editing of Org trees
8455    :TITLE:    Commands in the agenda buffer
8456    :END:
8457 #+cindex: commands, in agenda buffer
8459 Entries in the agenda buffer are linked back to the Org file or diary
8460 file where they originate.  You are not allowed to edit the agenda
8461 buffer itself, but commands are provided to show and jump to the
8462 original entry location, and to edit the Org files ``remotely'' from
8463 the agenda buffer.  In this way, all information is stored only once,
8464 removing the risk that your agenda and note files may diverge.
8466 Some commands can be executed with mouse clicks on agenda lines.  For
8467 the other commands, the cursor needs to be in the desired line.
8469 *** FIXME Motion2
8470 #+cindex: motion commands in agenda
8472 #+attr_texinfo: :table-type table :indic @asis
8473 - {{{kbd(n)}}}, ~org-agenda-next-line~ ::
8474   #+kindex: n
8476   Next line (same as {{{key(down)}}} and {{{kbd(C-n)}}}).
8478 - {{{kbd(p)}}}, ~org-agenda-previous-line~ ::
8479   #+kindex: p
8481   Previous line (same as {{{key(up)}}} and {{{kbd(C-p)}}}).
8483 *** View/Go to Org file
8484 #+cindex: view file commands in agenda
8486 #+attr_texinfo: :table-type table :indic @asis
8487 - {{{key(SPC)}}} or {{{key(mouse-3)}}}, ~org-agenda-show-and-scroll-up~ ::
8488   #+kindex: @key{SPC}
8489   #+kindex: mouse-3
8491   Display the original location of the item in another window.  With
8492   prefix arg, make sure that the entire entry is made visible in the
8493   outline, not only the heading.
8495 - {{{kbd(L)}}}, ~org-agenda-recenter~ ::
8496   #+kindex: L
8498   Display original location and recenter that window.
8500 - {{{key(TAB)}}} or {{{key(mouse-2)}}}, ~org-agenda-goto~ ::
8501   #+kindex: @key{TAB}
8502   #+kindex: mouse-2
8504   Go to the original location of the item in another window.
8506 - {{{key(RET)}}}, ~org-agenda-switch-to~ ::
8507   #+kindex: @key{RET}
8509   Go to the original location of the item and delete other windows.
8511 - {{{kbd(F)}}}, ~org-agenda-follow-mode~ ::
8512   #+kindex: F
8513   #+vindex: org-agenda-start-with-follow-mode
8515   Toggle Follow mode.  In Follow mode, as you move the cursor through the
8516   agenda buffer, the other window always shows the corresponding
8517   location in the Org file.  The initial setting for this mode in new
8518   agenda buffers can be set with the variable
8519   ~org-agenda-start-with-follow-mode~.
8521 - {{{kbd(C-c C-x b)}}}, ~org-agenda-tree-to-indirect-buffer~ ::
8522   #+kindex: C-c C-x b
8524   Display the entire subtree of the current item in an indirect buffer.
8525   With a numeric prefix argument N, go up to level N and then take that
8526   tree.  If N is negative, go up that many levels.  With a {{{kbd(C-u)}}}
8527   prefix, do not remove the previously used indirect buffer.
8529 - {{{kbd(C-c C-o)}}}, ~org-agenda-open-link~ ::
8530   #+kindex: C-c C-o
8532   Follow a link in the entry.  This will offer a selection of any links
8533   in the text belonging to the referenced Org node.  If there is only one
8534   link, it will be followed without a selection prompt.
8536 *** Change display
8537 #+cindex: change agenda display
8539 #+attr_texinfo: :table-type table :indic @asis
8540 - {{{kbd(A)}}} ::
8541   #+kindex: A
8542   #+cindex: display changing, in agenda
8544   Interactively select another agenda view and append it to the current
8545   view.
8547 - {{{kbd(o)}}} ::
8548   #+kindex: o
8550   Delete other windows.
8552 - {{{kbd(v d)}}} or short {{{kbd(d)}}}, ~org-agenda-day-view~ ::
8553   #+kindex: v d
8554   #+kindex: d
8555   #+vindex: org-agenda-span
8557   Switch to day view.  When switching to day view, this setting becomes
8558   the default for subsequent agenda refreshes.  A numeric prefix argument
8559   may be used to jump directly to a specific day of the year.  For
8560   example, {{{kbd(32 d)}}} jumps to February 1st.  When setting day view,
8561   a year may be encoded in the prefix argument as well.  For example,
8562   {{{kbd(200712 d)}}} will jump to January 12, 2007.  If such a year
8563   specification has only one or two digits, it will be mapped to the
8564   interval 1938-2037.
8566 - {{{kbd(v w)}}} or short {{{kbd(w)}}}, ~org-agenda-week-view~ ::
8567   #+kindex: v w
8568   #+kindex: w
8569   #+vindex: org-agenda-span
8571   Switch to week view.  When switching week view, this setting becomes
8572   the default for subsequent agenda refreshes.  A numeric prefix argument
8573   may be used to jump directly to a specific day of the ISO week.  For
8574   example {{{kbd(9 w)}}} to ISO week number 9.  When setting week view, a
8575   year may be encoded in the prefix argument as well.  For example,
8576   {{{kbd(200712 w)}}} will jump to week 12 in 2007.  If such a year
8577   specification has only one or two digits, it will be mapped to the
8578   interval 1938-2037.
8580 - {{{kbd(v m)}}}, ~org-agenda-month-view~ ::
8581   #+kindex: v m
8582   #+vindex: org-agenda-span
8584   Switch to month view.  Because month views are slow to create, they do
8585   not become the default for subsequent agenda refreshes.  A numeric
8586   prefix argument may be used to jump directly to a specific day of the
8587   month.  When setting month view, a year may be encoded in the prefix
8588   argument as well.  For example, {{{kbd(200712 m)}}} will jump to
8589   December, 2007.  If such a year specification has only one or two
8590   digits, it will be mapped to the interval 1938-2037.
8592 - {{{kbd(v y)}}}, ~org-agenda-year-view~ ::
8593   #+kindex: v y
8594   #+vindex: org-agenda-span
8596   Switch to year view.  Because year views are slow to create, they do
8597   not become the default for subsequent agenda refreshes.  A numeric
8598   prefix argument may be used to jump directly to a specific day of the
8599   year.
8601 - {{{kbdspckey(v,SPC)}}}, ~org-agenda-reset-view~ ::
8602   #+kindex: v @key{SPC}
8603   #+vindex: org-agenda-span
8605   Reset ~org-agenda-span~ to the current span.
8607 - {{{kbd(f)}}}, ~org-agenda-later~ ::
8608   #+kindex: f
8610   Go forward in time to display the following ~org-agenda-current-span~
8611   days.  For example, if the display covers a week, switch to the
8612   following week.  With prefix arg, go forward that many times
8613   ~org-agenda-current-span~ days.
8615 - {{{kbd(b)}}}, ~org-agenda-earlier~ ::
8616   #+kindex: b
8618   Go backward in time to display earlier dates.
8620 - {{{kbd(.)}}}, ~org-agenda-goto-today~ ::
8621   #+kindex: .
8623   Go to today.
8625 - {{{kbd(j)}}}, ~org-agenda-goto-date~ ::
8626   #+kindex: j
8627   
8628   Prompt for a date and go there.
8630 - {{{kbd(J)}}}, ~org-agenda-clock-goto~ ::
8631   #+kindex: J
8633    Go to the currently clocked-in task /in the agenda buffer/.
8635 - {{{kbd(D)}}}, ~org-agenda-toggle-diary~ ::
8636   #+kindex: D
8638    Toggle the inclusion of diary entries.  See [[Weekly/daily agenda]].
8640 - {{{kbd(v l)}}} or {{{kbd(v L)}}} or short {{{kbd(l)}}}, ~org-agenda-log-mode~ ::
8641   #+kindex: v l
8642   #+kindex: l
8643   #+kindex: v L
8644   #+vindex: org-log-done
8645   #+vindex: org-agenda-log-mode-items
8647   Toggle Logbook mode.  In Logbook mode, entries that were marked DONE
8648   while logging was on (see the variable ~org-log-done~) are shown in
8649   the agenda, as are entries that have been clocked on that day.  You can
8650   configure the entry types that should be included in log mode using
8651   the variable ~org-agenda-log-mode-items~.  When called with a
8652   {{{kbd(C-u)}}} prefix, show all possible logbook entries, including
8653   state changes.  When called with two prefix args {{{kbd(C-u C-u)}}},
8654   show only logging information, nothing else.  {{{kbd(v L)}}} is
8655   equivalent to {{{kbd(C-u v l)}}}.
8657 - {{{kbd(v [)}}} or short {{{kbd([)}}}, ~org-agenda-manipulate-query-add~ ::
8658   #+kindex: v [
8659   #+kindex: [
8661   Include inactive timestamps into the current view.  Only for
8662   weekly/daily agenda and timeline views.
8664 - {{{kbd(v a)}}}, ~org-agenda-archives-mode~ ::
8665   #+kindex: v a
8667   Toggle Archives mode.  In Archives mode, trees that are marked
8668   ~ARCHIVED~ are also scanned when producing the agenda.  To exit
8669   archives mode, press {{{kbd(v a)}}} again.
8671 - {{{kbd(v A)}}}, ~org-agenda-archives-mode 'files~ ::
8673   Toggle Archives mode.  In Archives mode, trees that are marked
8674   ~ARCHIVED~ are also scanned when producing the agenda, including all
8675   archive files.  To exit archives mode, press {{{kbd(v a)}}}.
8677 - {{{kbd(v R)}}} or short {{{kbd(R)}}}, ~org-agenda-clockreport-mode~ ::
8678   #+kindex: v R
8679   #+kindex: R
8680   #+vindex: org-agenda-start-with-clockreport-mode
8681   #+vindex: org-clock-report-include-clocking-task
8683   Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda
8684   will always show a table with the clocked times for the timespan and
8685   file scope covered by the current agenda view.  The initial setting for
8686   this mode in new agenda buffers can be set with the variable
8687   ~org-agenda-start-with-clockreport-mode~.  By using a prefix argument
8688   when toggling this mode (i.e., {{{kbd(C-u R)}}}), the clock table will
8689   not show contributions from entries that are hidden by agenda
8690   filtering.[fn:94] See also the variable
8691   ~org-clock-report-include-clocking-task~.
8693 - {{{kbd(v c)}}} ::
8694   #+kindex: v c
8695   #+vindex: org-agenda-clock-consistency-checks
8697   Show overlapping clock entries, clocking gaps, and other clocking
8698   problems in the current agenda range.  You can then visit clocking
8699   lines and fix them manually.  See the variable
8700   ~org-agenda-clock-consistency-checks~ for information on how to
8701   customize the definition of what constituted a clocking problem.  To
8702   return to normal agenda display, press {{{kbd(l)}}} to exit Logbook
8703   mode.
8705 - {{{kbd(v E)}}} or short {{{kbd(E)}}}, ~org-agenda-entry-text-mode~ ::
8706   #+kindex: v E
8707   #+kindex: E
8708   #+vindex: org-agenda-start-with-entry-text-mode
8709   #+vindex: org-agenda-entry-text-maxlines
8711   Toggle entry text mode.  In entry text mode, a number of lines from the
8712   Org outline node referenced by an agenda line will be displayed below
8713   the line.  The maximum number of lines is given by the variable
8714   ~org-agenda-entry-text-maxlines~.  Calling this command with a numeric
8715   prefix argument will temporarily modify that number to the prefix
8716   value.
8718 - {{{kbd(G)}}}, ~org-agenda-toggle-time-grid~ ::
8719   #+kindex: G
8720   #+vindex: org-agenda-use-time-grid
8721   #+vindex: org-agenda-time-grid
8723   Toggle the time grid on and off.  See also the variables
8724   ~org-agenda-use-time-grid~ and ~org-agenda-time-grid~.
8726 - {{{kbd(r)}}}, ~org-agenda-redo~ ::
8727   #+kindex: r
8729   Recreate the agenda buffer, for example to reflect the changes after
8730   modification of the timestamps of items with {{{kbdkey(S-,left)}}} and
8731   {{{kbdkey(S-,right)}}}.  When the buffer is the global TODO list, a prefix
8732   argument is interpreted to create a selective list for a specific TODO
8733   keyword.
8735 - {{{kbd(g)}}}, ~org-agenda-redo~ ::
8736   #+kindex: g
8738   Same as {{{kbd(r)}}}.
8740 - {{{kbd(C-x C-s)}}} or short {{{kbd(s)}}}, ~org-save-all-org-buffers~ ::
8741   #+kindex: C-x C-s
8742   #+kindex: s
8744   Save all Org buffers in the current Emacs session, and also the
8745   locations of IDs.
8747 - {{{kbd(C-c C-x C-c)}}}, ~org-agenda-columns~ ::
8748   #+kindex: C-c C-x C-c
8749   #+vindex: org-columns-default-format
8751   Invoke column view (see [[Column view]]) in the agenda buffer.  The column
8752   view format is taken from the entry at point, or (if there is no entry
8753   at point), from the first entry in the agenda view.  So whatever the
8754   format for that entry would be in the original buffer (taken from a
8755   property, from a ~#+COLUMNS~ line, or from the default variable
8756   ~org-columns-default-format~), will be used in the agenda.
8758 - {{{kbd(C-c C-x >)}}}, ~org-agenda-remove-restriction-lock~ ::
8759   #+kindex: C-c C-x >
8761   Remove the restriction lock on the agenda, if it is currently
8762   restricted to a file or subtree (see [[Agenda files]]).
8764 *** FIXME Secondary filtering and query editing
8765 #+cindex: filtering, by tag category and effort, in agenda
8766 #+cindex: tag filtering, in agenda
8767 #+cindex: category filtering, in agenda
8768 #+cindex: effort filtering, in agenda
8769 #+cindex: query editing, in agenda
8771 #+attr_texinfo: :table-type table :indic @asis
8772 - {{{kbd(<)}}}, ~org-agenda-filter-by-category~ ::
8773   #+kindex: <
8774   #+vindex: org-agenda-category-filter-preset
8776   Filter the current agenda view with respect to the category of the
8777   item at point.  Pressing {{{kbd(<)}}} another time will remove this
8778   filter.  You can add a filter preset through the option
8779   ~org-agenda-category-filter-preset~ (see below).
8781 - {{{kbd(/)}}}, ~org-agenda-filter-by-tag~ ::
8782   #+kindex: /
8783   #+vindex: org-agenda-tag-filter-preset
8785   Filter the current agenda view with respect to a tag and/or effort
8786   estimates.  The difference between this and a custom agenda command is
8787   that filtering is very fast, so that you can switch quickly between
8788   different filters without having to recreate the
8789   agenda.[fn:95]
8791   You will be prompted for a tag selection letter; {{{key(SPC)}}} will
8792   mean any tag at all.  Pressing {{{key(TAB)}}} at that prompt will offer
8793   use completion to select a tag (including any tags that do not have a
8794   selection character).  The command then hides all entries that do not
8795   contain or inherit this tag.  When called with prefix arg, remove the
8796   entries that /do/ have the tag.  A second {{{kbd(/)}}} at the prompt
8797   will turn off the filter and unhide any hidden entries.  If the first
8798   key you press is either {{{kbd(+)}}} or {{{kbd(-)}}}, the previous
8799   filter will be narrowed by requiring or forbidding the selected
8800   additional tag.  Instead of pressing {{{kbd(+)}}} or {{{kbd(-)}}} after
8801   {{{kbd(/)}}}, you can also immediately use the ~\~ command.
8803   #+vindex: org-sort-agenda-noeffort-is-high
8805   In order to filter for effort estimates, you should set up allowed
8806   efforts globally, for example:
8807   #+header: :eval no
8808   #+header: :exports code
8809   #+begin_src emacs-lisp
8810   (setq org-global-properties
8811       '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
8812   #+end_src
8814   You can then filter for an effort by first typing an operator, one of
8815   {{{kbd(<)}}}, {{{kbd(>)}}}, and {{{kbd(=)}}}, and then the one-digit
8816   index of an effort estimate in your array of allowed values, where
8817   {{{kbd(0)}}} means the 10th value.  The filter will then restrict to
8818   entries with effort smaller-or-equal, equal, or larger-or-equal than
8819   the selected value.  If the digits 0-9 are not used as fast access keys
8820   to tags, you can also simply press the index digit directly without an
8821   operator.  In this case, {{{kbd(<)}}} will be assumed.  For application
8822   of the operator, entries without a defined effort will be treated
8823   according to the value of ~org-sort-agenda-noeffort-is-high~.  To
8824   filter for tasks without effort definition, press {{{kbd(?)}}} as the
8825   operator.
8827   Org also supports automatic, context-aware tag filtering.  If the
8828   variable ~org-agenda-auto-exclude-function~ is set to a user-defined
8829   function, that function can decide which tags should be excluded from
8830   the agenda automatically.  Once this is set, the {{{kbd(/)}}} command
8831   then accepts {{{kbd(RET)}}} as a sub-option key and runs the auto
8832   exclusion logic.  For example, let's say you use a ~Net~ tag to
8833   identify tasks which need network access, an ~Errand~ tag for errands
8834   in town, and a ~Call~ tag for making phone calls.  You could
8835   auto-exclude these tags based on the availability of the Internet, and
8836   outside of business hours, with something like this:
8838   #+header: :eval no
8839   #+header: :exports code
8840   #+begin_src emacs-lisp
8841   (defun org-my-auto-exclude-function (tag)
8842     (and (cond
8843           ((string= tag "Net")
8844            (/= 0 (call-process "/sbin/ping" nil nil nil
8845                                "-c1" "-q" "-t1" "mail.gnu.org")))
8846           ((or (string= tag "Errand") (string= tag "Call"))
8847            (let ((hour (nth 2 (decode-time))))
8848              (or (< hour 8) (> hour 21)))))
8849          (concat "-" tag)))
8850   (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
8851   #+end_src
8853 - ~\~ ~org-agenda-filter-by-tag-refine~ ::
8854   #+kindex: XXX
8855   #+comment: Should be \
8856   Narrow the current agenda filter by an additional condition.  When
8857   called with prefix arg, remove the entries that /do/ have the tag, or
8858   that do match the effort criterion.  You can achieve the same effect by
8859   pressing {{{kbd(+)}}} or {{{kbd(-)}}} as the first key after the
8860   {{{kbd(/)}}} command.
8862 - {{{kbd([)}}} {{{kbd(])}}} {{{kbd({)}}} {{{kbd(})}}} in search view ::
8863   #+kindex: [
8864   #+kindex: ]
8865   #+kindex: @{
8866   #+kindex: @}
8868   Add new search words ({{{kbd([)}}} and {{{kbd(])}}}) or new regular
8869   expressions ({{{kbd({)}}} and {{{kbd(})}}}) to the query string.  The
8870   opening bracket/brace will add a positive search term prefixed by
8871   {{{samp(+)}}}, indicating that this search term /must/ occur/match in
8872   the entry.  The closing bracket/brace will add a negative search term
8873   which /must not/ occur/match in the entry for it to be selected.
8875 *** FIXME Remote editing
8876 #+cindex: remote editing, from agenda
8878 #+attr_texinfo: :table-type table :indic @asis
8879 - {{{kbd(0--9)}}} ::
8881   Digit argument.
8883 - {{{kbd(C-_)}}}, ~org-agenda-undo~ ::
8884   #+kindex: C-_
8885   #+cindex: undoing remote-editing events
8886   #+cindex: remote editing, undo
8888   Undo a change due to a remote editing command.  The change is undone
8889   both in the agenda buffer and in the remote buffer.
8891 - {{{kbd(t)}}}, ~org-agenda-todo~ ::
8892   #+kindex: t
8894   Change the TODO state of the item, both in the agenda and in the
8895   original org file.
8897 - {{{kbdkey(C-S-,right)}}}, ~org-agenda-todo-nextset~ ::
8898   #+kindex: C-S-@key{right}
8900   Switch to the next set of TODO keywords.
8902 - {{{kbdkey(C-S-,left)}}}, ~org-agenda-todo-previousset~ ::
8903   #+kindex: C-S-@key{left}
8905   Switch to the previous set of TODO keywords.
8907 - {{{kbd(C-k)}}}, ~org-agenda-kill~ ::
8908   #+kindex: C-k
8909   #+vindex: org-agenda-confirm-kill
8911   Delete the current agenda item along with the entire subtree belonging
8912   to it in the original Org file.  If the text to be deleted remotely is
8913   longer than one line, the kill needs to be confirmed by the user.  See
8914   variable ~org-agenda-confirm-kill~.
8916 - {{{kbd(C-c C-w)}}}, ~org-agenda-refile~ ::
8917   #+kindex: C-c C-w
8919   Refile the entry at point.
8921 - {{{kbd(C-c C-x C-a)}}} or short {{{kbd(a)}}}, ~org-agenda-archive-default-with-confirmation~ ::
8922   #+kindex: C-c C-x C-a
8923   #+kindex: a
8924   #+vindex: org-archive-default-command
8926   Archive the subtree corresponding to the entry at point using the
8927   default archiving command set in ~org-archive-default-command~.  When
8928   using the ~a~ key, confirmation will be required.
8930 - {{{kbd(C-c C-x a)}}}, ~org-agenda-toggle-archive-tag~ ::
8931   #+kindex: C-c C-x a
8933   Toggle the ARCHIVE tag for the current headline.
8935 - {{{kbd(C-c C-x A)}}}, ~org-agenda-archive-to-archive-sibling~ ::
8936   #+kindex: C-c C-x A
8938   Move the subtree corresponding to the current entry to its /archive
8939   sibling/.
8941 - {{{kbd(C-c C-x C-s)}}} or short {{{kbd($)}}}, ~org-agenda-archive~ ::
8942   #+kindex: C-c C-x C-s
8943   #+kindex: $
8945   Archive the subtree corresponding to the current headline.  This means
8946   the entry will be moved to the configured archive location, most
8947   likely a different file.
8949 - {{{kbd(T)}}}, ~org-agenda-show-tags~ ::
8950   #+kindex: T
8951   #+vindex: org-agenda-show-inherited-tags
8953   Show all tags associated with the current item.  This is useful if you
8954   have turned off ~org-agenda-show-inherited-tags~, but still want to
8955   see all tags of a headline occasionally.
8957 - {{{kbd(:)}}}, ~org-agenda-set-tags~ ::
8958   #+kindex: :
8960   Set tags for the current headline.  If there is an active region in the
8961   agenda, change a tag for all headings in the region.
8963 - {{{kbd(\\\,)}}} ::
8964   #+kindex: ,
8965   Set the priority for the current item (~org-agenda-priority~).  Org
8966   mode prompts for the priority character.  If you reply with
8967   {{{key(SPC)}}}, the priority cookie is removed from the entry.
8969 - {{{kbd(P)}}}, ~org-agenda-show-priority~ ::
8970   #+kindex: P
8972   Display weighted priority of current item.
8974 - {{{kbd(+)}}} {{{kbdkey(S-,up)}}}, ~org-agenda-priority-up~ ::
8975   #+kindex: +
8977   Increase the priority of the current item.  The priority is changed in
8978   the original buffer, but the agenda is not resorted.  Use the
8979   {{{kbd(r)}}} key for this.
8981 - {{{kbd(-)}}} {{{kbdkey(S-,down)}}}, ~org-agenda-priority-down~ ::
8982   #+kindex: -
8984   Decrease the priority of the current item.
8986 - {{{kbd(z)}}} {{{kbd(C-c C-z)}}}, ~org-agenda-add-note~ ::
8987   #+kindex: z
8988   #+vindex: org-log-into-drawer
8990   Add a note to the entry.  This note will be recorded, and then filed to
8991   the same location where state change notes are put.  Depending on
8992   ~org-log-into-drawer~, this may be inside a drawer.
8994 - {{{kbd(C-c C-a)}}}, ~org-attach~ ::
8995   #+kindex: C-c C-a
8997   Dispatcher for all command related to attachments.
8999 - {{{kbd(C-c C-s)}}}, ~org-agenda-schedule~ ::
9000   #+kindex: C-c C-s
9002   Schedule this item.  With prefix arg remove the scheduling timestamp
9004 - {{{kbd(C-c C-d)}}}, ~org-agenda-deadline~ ::
9005   #+kindex: C-c C-d
9006   
9007   Set a deadline for this item.  With prefix arg remove the deadline.
9009 - {{{kbdkey(S-,right)}}}, ~org-agenda-do-date-later~ ::
9010   #+kindex: S-@key{right}
9012   Change the timestamp associated with the current line by one day into
9013   the future.  If the date is in the past, the first call to this command
9014   will move it to today.  With a numeric prefix argument, change it by
9015   that many days.  For example, {{{kbdkey(3 6 5 S-,right)}}} will change
9016   it by a year.  With a {{{kbd(C-u)}}} prefix, change the time by one
9017   hour.  If you immediately repeat the command, it will continue to
9018   change hours even without the prefix arg.  With a double 
9019   {{{kbd(C-u C-u)}}} prefix, do the same for changing minutes.  The stamp is changed
9020   in the original Org file, but the change is not directly reflected in
9021   the agenda buffer.  Use {{{kbd(r)}}} or {{{kbd(g)}}} to update the
9022   buffer.
9024 - {{{kbdkey(S-,left)}}}, ~org-agenda-do-date-earlier~ ::
9025   #+kindex: S-@key{left}
9027   Change the timestamp associated with the current line by one day
9028   into the past.
9030 - {{{kbd(>)}}}, ~org-agenda-date-prompt~ ::
9031   #+kindex: >
9033   Change the timestamp associated with the current line.  The key
9034   {{{kbd(>)}}} has been chosen, because it is the same as {{{kbd(S-.)}}}
9035   on my keyboard.
9037 - {{{kbd(I)}}}, ~org-agenda-clock-in~ ::
9038   #+kindex: I
9040   Start the clock on the current item.  If a clock is running already, it
9041   is stopped first.
9043 - {{{kbd(O)}}}, ~org-agenda-clock-out~ ::
9044   #+kindex: O
9046   Stop the previously started clock.
9048 - {{{kbd(X)}}}, ~org-agenda-clock-cancel~ ::
9049   #+kindex: X
9051   Cancel the currently running clock.
9053 - {{{kbd(J)}}}, ~org-agenda-clock-goto~ ::
9054   #+kindex: J
9056   Jump to the running clock in another window.
9058 - {{{kbd(k)}}}, ~org-agenda-capture~ ::
9059   #+kindex: k
9060   #+cindex: capturing, from agenda
9061   #+vindex: org-capture-use-agenda-date
9063   Like ~org-capture~, but use the date at point as the default date for
9064   the capture template.  See ~org-capture-use-agenda-date~ to make this
9065   the default behavior of ~org-capture~.
9067 *** Bulk remote editing selected entries
9068 #+cindex: remote editing, bulk, from agenda
9069 #+vindex: org-agenda-bulk-persistent-marks
9070 #+vindex: org-agenda-bulk-custom-functions
9072 #+attr_texinfo: :table-type table :indic @asis
9073 - {{{kbd(m)}}}, ~org-agenda-bulk-mark~ ::
9074   #+kindex: m
9076   Mark the entry at point for bulk action.  With prefix arg, mark that
9077   many successive entries.
9079 - {{{kbd(%)}}}, ~org-agenda-bulk-mark-regexp~ ::
9080   #+kindex: %
9082   Mark entries matching a regular expression for bulk action.
9084 - {{{kbd(u)}}}, ~org-agenda-bulk-unmark~ ::
9085   #+kindex: u
9087   Unmark entry for bulk action.
9089 - {{{kbd(U)}}}, ~org-agenda-bulk-remove-all-marks~ ::
9090   #+kindex: U
9092   Unmark all marked entries for bulk action.
9094 - {{{kbd(B)}}}, ~org-agenda-bulk-action~ ::
9095   #+kindex: B
9097   Bulk action: act on all marked entries in the agenda.  This will prompt
9098   for another key to select the action to be applied.  The prefix arg to
9099   {{{kbd(B)}}} will be passed through to the {{{kbd(s)}}} and
9100   {{{kbd(d)}}} commands, to bulk-remove these special timestamps.  By
9101   default, marks are removed after the bulk.  If you want them to
9102   persist, set ~org-agenda-bulk-persistent-marks~ to ~t~ or hit
9103   {{{kbd(p)}}} at the prompt.
9105   - {{{kbd(*)}}} ::  
9107     Toggle persistent marks.
9109   - {{{kbd($)}}} :: 
9111     Archive all selected entries.
9113   - {{{kbd(A)}}} :: 
9115     Archive entries by moving them to their respective archive siblings.
9117   - {{{kbd(t)}}} :: 
9119     Change TODO state.  This prompts for a single TODO keyword and changes
9120     the state of all selected entries, bypassing blocking and suppressing
9121     logging notes (but not timestamps).
9123   - {{{kbd(+)}}}  :: 
9125     Add a tag to all selected entries.
9127   - {{{kbd(-)}}}  :: 
9129     Remove a tag from all selected entries.
9131   - {{{kbd(s)}}}  :: 
9133     Schedule all items to a new date.  To shift existing schedule dates by
9134     a fixed number of days, use something starting with double plus at the
9135     prompt, for example {{{samp(++8d)}}} or {{{samp(++2w)}}}.
9137   - {{{kbd(d)}}}  :: 
9139     Set deadline to a specific date.
9141   - {{{kbd(r)}}}  :: 
9143     Prompt for a single refile target and move all entries.  The entries
9144     will no longer be in the agenda; refresh ({{{kbd(g)}}}) to bring them
9145     back.
9147   - {{{kbd(S)}}}  :: 
9149     Reschedule randomly into the coming N days.  N will be prompted for.
9150     With prefix arg ({{{kbd(C-u B S)}}}), scatter only across weekdays.
9152   - {{{kbd(f)}}}  :: 
9154     Apply a function to marked entries.[fn:96] For example, the function
9155     below sets the CATEGORY property of the entries to web.
9157     #+header: :eval no
9158     #+header: :exports code
9159     #+begin_src emacs-lisp
9160     (defun set-category ()
9161       (interactive "P")
9162       (let* ((marker (or (org-get-at-bol 'org-hd-marker)
9163                          (org-agenda-error)))
9164              (buffer (marker-buffer marker)))
9165         (with-current-buffer buffer
9166           (save-excursion
9167             (save-restriction
9168               (widen)
9169               (goto-char marker)
9170               (org-back-to-heading t)
9171               (org-set-property "CATEGORY" "web"))))))
9172     #+end_src
9174 *** Calendar commands
9175 #+cindex: calendar commands, from agenda
9177 #+attr_texinfo: :table-type table :indic @asis
9178 - {{{kbd(c)}}}, ~org-agenda-goto-calendar~ ::
9179   #+kindex: c
9181   Open the Emacs calendar and move to the date at the agenda cursor.
9183 - {{{kbd(c)}}}, ~org-calendar-goto-agenda~ ::
9184   #+kindex: c
9186   When in the calendar, compute and show the Org mode agenda for the
9187   date at the cursor.
9189 - {{{kbd(i)}}}, ~org-agenda-diary-entry~ ::
9190   #+kindex: i
9191   #+vindex: org-agenda-diary-file
9192   #+cindex: diary entries, creating from agenda
9194   Insert a new entry into the diary, using the date at the cursor and
9195   (for block entries) the date at the mark.  This will add to the Emacs
9196   diary file, in a way similar to the {{{kbd(i)}}} command in the
9197   calendar.[fn:97] The diary file will pop up in another window, where
9198   you can add the entry.
9200   If you configure ~org-agenda-diary-file~ to point to an Org mode file,
9201   Org will create entries (in Org mode syntax) in that file instead.
9202   Most entries will be stored in a date-based outline tree that will
9203   later make it easy to archive appointments from previous months/years.
9204   The tree will be built under an entry with a ~DATE_TREE~ property, or
9205   else with years as top-level entries.  Emacs will prompt you for the
9206   entry text---if you specify it, the entry will be created in
9207   ~org-agenda-diary-file~ without further interaction.  If you directly
9208   press {{{key(RET)}}} at the prompt without typing text, the target
9209   file will be shown in another window for you to finish the entry
9210   there.  See also the {{{kbd(k r)}}} command.
9212 - {{{kbd(M)}}}, ~org-agenda-phases-of-moon~ ::
9213   #+kindex: M
9215   Show the phases of the moon for the three months around current date.
9217 - {{{kbd(S)}}}, ~org-agenda-sunrise-sunset~ ::
9218   #+kindex: S
9220   Show sunrise and sunset times.  The geographical location must be set
9221   with calendar variables, see the documentation for the Emacs calendar.
9223 - {{{kbd(C)}}}, ~org-agenda-convert-date~ ::
9224   #+kindex: C
9226   Convert the date at cursor into many other cultural and historic
9227   calendars.
9229 - {{{kbd(H)}}}, ~org-agenda-holidays~ ::
9230   #+kindex: H
9232   Show holidays for three months around the cursor date.
9234 - {{{kbd(M-x org-export-icalendar-combine-agenda-files)}}} ::
9236   Export a single iCalendar file containing entries from all agenda
9237   files.  This is a globally available command, and also available in the
9238   agenda menu.
9240 *** Exporting to a file
9241 #+attr_texinfo: :table-type table :indic @asis
9242 - {{{kbd(C-x C-w)}}}, ~org-agenda-write~ ::
9243   #+kindex: C-x C-w
9244   #+cindex: exporting agenda views
9245   #+cindex: agenda views, exporting
9246   #+vindex: org-agenda-exporter-settings
9248   Write the agenda view to a file.  Depending on the extension of the
9249   selected file name, the view will be exported as HTML (extension
9250   {{{file(.html)}}} or {{{file(.htm)}}}), Postscript (extension
9251   {{{file(.ps)}}}), PDF (extension {{{file(.pdf)}}}), and plain text
9252   (any other extension).  When called with a {{{kbd(C-u)}}} prefix
9253   argument, immediately open the newly created file.  Use the variable
9254   ~org-agenda-exporter-settings~ to set options for {{{file(ps-print)}}}
9255   and for {{{file(htmlize)}}} to be used during export.
9257 *** Quit and exit
9258 #+attr_texinfo: :table-type table :indic @asis
9259 - {{{kbd(q)}}}, ~org-agenda-quit~ ::
9260   #+kindex: q
9262   Quit agenda, remove the agenda buffer.
9264 - {{{kbd(x)}}}, ~org-agenda-exit~ ::
9265   #+kindex: x
9266   #+cindex: agenda files, removing buffers
9268   Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
9269   for the compilation of the agenda.  Buffers created by the user to
9270   visit Org files will not be removed.
9272 ** Custom agenda views
9273    :PROPERTIES:
9274    :DESCRIPTION: Defining special searches and views
9275    :END:
9276 #+cindex: custom agenda views
9277 #+cindex: agenda views, custom
9279 Custom agenda commands serve two purposes: to store and quickly access
9280 frequently used TODO and tags searches, and to create special composite
9281 agenda buffers.  Custom agenda commands will be accessible through the
9282 dispatcher (see [[Agenda dispatcher]]), just like the default commands.
9284 *** Storing searches
9285     :PROPERTIES:
9286     :DESCRIPTION: Type once, use often
9287     :END:
9289 The first application of custom searches is the definition of keyboard
9290 shortcuts for frequently used searches, either creating an agenda
9291 buffer, or a sparse tree (the latter covering of course only the
9292 current buffer).
9294 #+kindex: C-c a C
9295 #+vindex: org-agenda-custom-commands
9297 Custom commands are configured in the variable
9298 ~org-agenda-custom-commands~.  You can customize this variable, for
9299 example by pressing {{{kbd(C-c a C)}}}.  You can also directly set it
9300 with Emacs Lisp in {{{file(.emacs)}}}.  The following example contains
9301 all valid search types:
9303 #+header: :eval no
9304 #+header: :exports code
9305 #+begin_src emacs-lisp
9306 (setq org-agenda-custom-commands
9307       '(("w" todo "WAITING")
9308         ("W" todo-tree "WAITING")
9309         ("u" tags "+boss-urgent")
9310         ("v" tags-todo "+boss-urgent")
9311         ("U" tags-tree "+boss-urgent")
9312         ("f" occur-tree "\\<FIXME\\>")
9313         ("h" . "HOME+Name tags searches") ; description for "h" prefix
9314         ("hl" tags "+home+Lisa")
9315         ("hp" tags "+home+Peter")
9316         ("hk" tags "+home+Kim")))
9317 #+end_src
9319 {{{noindent}}} The initial string in each entry defines the keys you
9320 have to press after the dispatcher command {{{kbd(C-c a)}}} in order
9321 to access the command.  Usually this will be just a single character,
9322 but if you have many similar commands, you can also define two-letter
9323 combinations where the first character is the same in several
9324 combinations and serves as a prefix key.[fn:98] The second parameter
9325 is the search type, followed by the string or regular expression to be
9326 used for the matching.  The example above will therefore define:
9328 #+attr_texinfo: :table-type table :indic @kbd
9329 - C-c a w ::
9331   A global search for TODO entries with {{{samp(WAITING)}}} as the TODO
9332   keyword.
9334 - C-c a W ::
9336   The same search, but only in the current buffer and displaying the
9337   results as a sparse tree.
9339 - C-c a u ::
9341   A global tags search for headlines marked {{{samp(:boss:)}}} but not
9342   {{{samp(:urgent:)}}}.
9344 - C-c a v ::
9346   The same search as {{{kbd(C-c a u)}}}, but limiting the search to
9347   headlines that are also TODO items.
9349 - C-c a U ::
9351   The same search as {{{kbd(C-c a u)}}}, but only in the current buffer and
9352   displaying the result as a sparse tree.
9354 - C-c a f ::
9356   Create a sparse tree (again: current buffer only) with all entries
9357   containing the word {{{samp(FIXME)}}}
9359 - C-c a h ::
9361   A prefix command for a HOME tags search where you have to press an
9362   additional key ({{{kbd(l)}}}, {{{kbd(p)}}} or {{{kbd(k)}}}) to select
9363   a name (Lisa, Peter, or Kim) as additional tag to match.
9366 *** Block agenda
9367     :PROPERTIES:
9368     :DESCRIPTION: All the stuff you need in a single buffer
9369     :END:
9370 #+cindex: block agenda
9371 #+cindex: agenda, with block views
9373 Another possibility is the construction of agenda views that comprise
9374 the results of /several/ commands, each of which creates a block in
9375 the agenda buffer.  The available commands include ~agenda~ for the
9376 daily or weekly agenda (as created with {{{kbd(C-c a a)}}}), ~alltodo~
9377 for the global TODO list (as constructed with {{{kbd(C-c a t)}}}), and
9378 the matching commands discussed above: ~todo~, ~tags~, and
9379 ~tags-todo~.  Here are two examples:
9381 #+header: :eval no
9382 #+header: :exports code
9383 #+begin_src emacs-lisp
9384 (setq org-agenda-custom-commands
9385       '(("h" "Agenda and Home-related tasks"
9386          ((agenda "")
9387           (tags-todo "home")
9388           (tags "garden")))
9389         ("o" "Agenda and Office-related tasks"
9390          ((agenda "")
9391           (tags-todo "work")
9392           (tags "office")))))
9393 #+end_src
9395 {{{noindent}}} This will define {{{kbd(C-c a h)}}} to create a
9396 multi-block view for stuff you need to attend to at home.  The
9397 resulting agenda buffer will contain your agenda for the current week,
9398 all TODO items that carry the tag {{{samp(home)}}}, and also all lines
9399 tagged with {{{samp(garden)}}}.  Finally the command {{{kbd(C-c a o)}}}
9400 provides a similar view for office tasks.
9402 *** Setting options for custom commands
9403     :PROPERTIES:
9404     :DESCRIPTION: Changing the rules
9405     :END:
9406 #+cindex: options, for custom agenda views
9407 #+vindex: org-agenda-custom-commands
9409 Org mode contains a number of variables regulating agenda construction
9410 and display.  The global variables define the behavior for all agenda
9411 commands, including the custom commands.  However, if you want to
9412 change some settings just for a single custom view, you can do so.
9413 Setting options requires inserting a list of variable names and values
9414 at the right spot in ~org-agenda-custom-commands~.  For example:
9416 #+header: :eval no
9417 #+header: :exports code
9418 #+begin_src emacs-lisp
9419 (setq org-agenda-custom-commands
9420       '(("w" todo "WAITING"
9421          ((org-agenda-sorting-strategy '(priority-down))
9422           (org-agenda-prefix-format "  Mixed: ")))
9423         ("U" tags-tree "+boss-urgent"
9424          ((org-show-following-heading nil)
9425           (org-show-hierarchy-above nil)))
9426         ("N" search ""
9427          ((org-agenda-files '("~org/notes.org"))
9428           (org-agenda-text-search-extra-files nil)))))
9429 #+end_src
9431 {{{noindent}}} Now the {{{kbd(C-c a w)}}} command will sort the
9432 collected entries only by priority, and the prefix format is modified
9433 to just say {{{samp( Mixed: )}}} instead of giving the category of the
9434 entry.  The sparse tags tree of {{{kbd(C-c a U)}}} will now turn out
9435 ultra-compact, because neither the headline hierarchy above the match,
9436 nor the headline following the match will be shown.  The command
9437 {{{kbd(C-c a N)}}} will do a text search limited to only a single
9438 file.
9440 #+vindex: org-agenda-custom-commands
9442 For command sets creating a block agenda, ~org-agenda-custom-commands~
9443 has two separate spots for setting options.  You can add options that
9444 should be valid for just a single command in the set, and options that
9445 should be valid for all commands in the set.  The former are just added
9446 to the command entry; the latter must come after the list of command
9447 entries.  Going back to the block agenda example (see [[Block
9448 agenda]]), let's change the sorting strategy for the {{{kbd(C-c a
9449 h)}}} commands to ~priority-down~, but let's sort the results for
9450 GARDEN tags query in the opposite order, ~priority-up~.  This would
9451 look like this:
9453 #+header: :eval no
9454 #+header: :exports code
9455 #+begin_src emacs-lisp
9456 (setq org-agenda-custom-commands
9457       '(("h" "Agenda and Home-related tasks"
9458          ((agenda)
9459           (tags-todo "home")
9460           (tags "garden"
9461                 ((org-agenda-sorting-strategy '(priority-up)))))
9462          ((org-agenda-sorting-strategy '(priority-down))))
9463         ("o" "Agenda and Office-related tasks"
9464          ((agenda)
9465           (tags-todo "work")
9466           (tags "office")))))
9467 #+end_src
9469 As you see, the values and parentheses setting is a little complex.
9470 When in doubt, use the customize interface to set this variable---it
9471 fully supports its structure.  Just one caveat: when setting options in
9472 this interface, the /values/ are just Lisp expressions.  So if the
9473 value is a string, you need to add the double-quotes around the value
9474 yourself.
9476 #+vindex: org-agenda-custom-commands-contexts
9478 To control whether an agenda command should be accessible from a
9479 specific context, you can customize
9480 ~org-agenda-custom-commands-contexts~.  Let's say for example that you
9481 have an agenda command {{{kbd(o)}}} displaying a view that you only
9482 need when reading emails.  Then you would configure this option like
9483 this:
9485 #+header: :eval no
9486 #+header: :exports code
9487 #+begin_src emacs-lisp
9488 (setq org-agenda-custom-commands-contexts
9489       '(("o" (in-mode . "message-mode"))))
9490 #+end_src
9492 You can also tell that the command key {{{kbd(o)}}} should refer to another
9493 command key {{{kbd(r)}}}.  In that case, add this command key like this:
9495 #+header: :eval no
9496 #+header: :exports code
9497 #+begin_src emacs-lisp
9498 (setq org-agenda-custom-commands-contexts
9499       '(("o" "r" (in-mode . "message-mode"))))
9500 #+end_src
9502 See the docstring of the variable for more information.
9504 ** Exporting agenda views
9505    :PROPERTIES:
9506    :DESCRIPTION: Writing a view to a file
9507    :END:
9508 #+cindex: agenda views, exporting
9510 If you are away from your computer, it can be very useful to have a
9511 printed version of some agenda views to carry around.  Org mode can
9512 export custom agenda views as plain text, HTML, Postscript,
9513 PDF, and iCalendar files.[fn:99] If you want to
9514 do this only occasionally, use the following command:
9516 #+attr_texinfo: :table-type table :indic @asis
9517 - {{{kbd(C-x C-w)}}}, ~org-agenda-write~ ::
9519   #+cindex: exporting agenda views
9520   #+cindex: agenda views, exporting
9521   #+vindex: org-agenda-exporter-settings
9523   Write the agenda view to a file.  Depending on the extension of the
9524   selected file name, the view will be exported as HTML (extension
9525   {{{file(.html)}}} or {{{file(.htm)}}}), Postscript (extension
9526   {{{file(.ps)}}}), iCalendar (extension {{{file(.ics)}}}), or plain
9527   text (any other extension).  Use the variable
9528   ~org-agenda-exporter-settings~ to set options for {{{file(ps-print)}}}
9529   and for {{{file(htmlize)}}} to be used during export, for example:
9531   #+vindex: org-agenda-add-entry-text-maxlines
9532   #+vindex: htmlize-output-type
9533   #+vindex: ps-number-of-columns
9534   #+vindex: ps-landscape-mode
9536   #+header: :eval no
9537   #+header: :exports code
9538   #+begin_src emacs-lisp
9539   (setq org-agenda-exporter-settings
9540         '((ps-number-of-columns 2)
9541           (ps-landscape-mode t)
9542           (org-agenda-add-entry-text-maxlines 5)
9543           (htmlize-output-type 'css)))
9544   #+end_src
9547 If you need to export certain agenda views frequently, you can
9548 associate any custom agenda command with a list of output file
9549 names.[fn:100] Here is an example that first defines custom commands
9550 for the agenda and the global TODO list, together with a number of
9551 files to which to export them.  Then we define two block agenda
9552 commands and specify file names for them as well.  File names can be
9553 relative to the current working directory, or absolute.
9555 #+header: :eval no
9556 #+header: :exports code
9557 #+begin_src emacs-lisp
9558 (setq org-agenda-custom-commands
9559       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
9560         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
9561         ("h" "Agenda and Home-related tasks"
9562          ((agenda "")
9563           (tags-todo "home")
9564           (tags "garden"))
9565          nil
9566          ("~/views/home.html"))
9567         ("o" "Agenda and Office-related tasks"
9568          ((agenda)
9569           (tags-todo "work")
9570           (tags "office"))
9571          nil
9572          ("~/views/office.ps" "~/calendars/office.ics"))))
9573 #+end_src
9575 The extension of the file name determines the type of export.  If it is
9576 {{{file(.html)}}}, Org mode will use the {{{file(htmlize.el)}}}
9577 package to convert the buffer to HTML and save it to this file name.
9578 If the extension is {{{file(.ps)}}}, ~ps-print-buffer-with-faces~ is
9579 used to produce Postscript output.  If the extension is
9580 {{{file(.ics)}}}, iCalendar export is run export over all files that
9581 were used to construct the agenda, and limit the export to entries
9582 listed in the agenda.  Any other extension produces a plain ASCII file.
9584 The export files are /not/ created when you use one of those
9585 commands interactively because this might use too much overhead.
9586 Instead, there is a special command to produce /all/ specified
9587 files in one step:
9589 #+attr_texinfo: :table-type table :indic @asis
9590 - {{{kbd(C-c a e)}}}, ~org-store-agenda-views~ ::
9592   Export all agenda views that have export file names associated with
9593   them.
9596 You can use the options section of the custom agenda commands to also
9597 set options for the export commands.  For example:
9599 #+header: :eval no
9600 #+header: :exports code
9601 #+begin_src emacs-lisp
9602 (setq org-agenda-custom-commands
9603       '(("X" agenda ""
9604          ((ps-number-of-columns 2)
9605           (ps-landscape-mode t)
9606           (org-agenda-prefix-format " [ ] ")
9607           (org-agenda-with-colors nil)
9608           (org-agenda-remove-tags t))
9609          ("theagenda.ps"))))
9610 #+end_src
9612 {{{noindent}}} This command sets two options for the Postscript
9613 exporter, to make it print in two columns in landscape format---the
9614 resulting page can be cut in two and then used in a paper agenda.  The
9615 remaining settings modify the agenda prefix to omit category and
9616 scheduling information, and instead include a checkbox to check off
9617 items.  We also remove the tags to make the lines compact, and we don't
9618 want to use colors for the black-and-white printer.  Settings specified
9619 in ~org-agenda-exporter-settings~ will also apply, but the settings in
9620 ~org-agenda-custom-commands~ take precedence.
9622 {{{noindent}}} From the command line you may also use:
9624 #+begin_src sh
9625   emacs -eval (org-batch-store-agenda-views) -kill
9626 #+end_src
9628 {{{noindent}}} or, if you need to modify some parameters:[fn:101]
9630 #+begin_example
9631    emacs -eval '(org-batch-store-agenda-views                      \
9632                  org-agenda-span (quote month)                     \
9633                  org-agenda-start-day "2007-11-01"                 \
9634                  org-agenda-include-diary nil                      \
9635                  org-agenda-files (quote ("~/org/project.org")))'  \
9636          -kill
9637 #+end_example
9639 {{{noindent}}} which will create the agenda views restricted to the
9640 file {{{file(~/org/project.org)}}}, without diary entries and with a
9641 30-day extent.
9643 You can also extract agenda information in a way that allows further
9644 processing by other programs.  See [[Extracting agenda information]], for
9645 more information.
9647 ** Using column view in the agenda
9648    :PROPERTIES:
9649    :DESCRIPTION: Using column view for collected entries
9650    :ALT_TITLE: Agenda column view
9651    :END:
9652 #+cindex: column view, in agenda
9653 #+cindex: agenda, column view
9654 <<Agenda column view>>
9656 Column view (see [[Column view]]) is normally used to view and edit
9657 properties embedded in the hierarchical structure of an Org file.  It
9658 can be quite useful to use column view also from the agenda, where
9659 entries are collected by certain criteria.
9661 #+attr_texinfo: :table-type table :indic @asis
9662 - {{{kbd(C-c C-x C-c)}}}, ~org-agenda-columns~ ::
9664   Turn on column view in the agenda.
9667 To understand how to use this properly, it is important to realize that the
9668 entries in the agenda are no longer in their proper outline environment.
9669 This causes the following issues:
9671 1. Org needs to make a decision which ~COLUMNS~ format to use.  Since
9672    the entries in the agenda are collected from different files, and
9673    different files may have different ~COLUMNS~ formats, this is a
9674    non-trivial problem.  Org first checks if the variable
9675    ~org-agenda-overriding-columns-format~ is currently set, and if so,
9676    takes the format from there.  Otherwise it takes the format
9677    associated with the first item in the agenda, or, if that item does
9678    not have a specific format (defined in a property, or in its file),
9679    it uses ~org-columns-default-format~.
9681    #+vindex: org-columns-default-format
9682    #+vindex: org-overriding-columns-format
9684 2. If any of the columns has a summary type defined (see [[Column
9685    attributes]]), turning on column view in the agenda will visit all
9686    relevant agenda files and make sure that the computations of this
9687    property are up to date.  This is also true for the special
9688    ~CLOCKSUM~ property.  Org will then sum the values displayed in the
9689    agenda.  In the daily/weekly agenda, the sums will cover a single
9690    day; in all other views they cover the entire block.  It is vital to
9691    realize that the agenda may show the same entry /twice/ (for
9692    example as scheduled and as a deadline), and it may show two
9693    entries from the same hierarchy (for example a /parent/ and its
9694    /child/).  In these cases, the summation in the agenda will lead to
9695    incorrect results because some values will count double.
9697    #+cindex: property, special, CLOCKSUM
9699 3. When the column view in the agenda shows the ~CLOCKSUM~, that is
9700    always the entire clocked time for this item.  So even in the
9701    daily/weekly agenda, the clocksum listed in column view may
9702    originate from times outside the current view.  This has the
9703    advantage that you can compare these values with a column listing
9704    the planned total effort for a task---one of the major applications
9705    for column view in the agenda.  If you want information about
9706    clocked time in the displayed period use clock table mode (press
9707    {{{kbd(R)}}} in the agenda).
9709 4. When the column view in the agenda shows the ~CLOCKSUM_T~, that is
9710    always today's clocked time for this item.  So even in the weekly agenda,
9711    the clocksum listed in column view only originates from today.  This lets
9712    you compare the time you spent on a task for today, with the time already
9713    spent (via ~CLOCKSUM~) and with the planned total effort for it.
9715    #+cindex: property, special, CLOCKSUM_T
9717 * FIXME Markup for rich export
9718   :PROPERTIES:
9719   :DESCRIPTION: Prepare text for rich export
9720   :ALT_TITLE: Markup
9721   :END:
9723 When exporting Org mode documents, the exporter tries to reflect the
9724 structure of the document as accurately as possible in the backend.
9725 Since export targets like HTML, LaTeX, or DocBook allow much richer
9726 formatting, Org mode has rules on how to prepare text for rich export.
9727 This section summarizes the markup rules used in an Org mode buffer.
9729 ** Structural markup elements
9730    :PROPERTIES:
9731    :DESCRIPTION: The basic structure as seen by the exporter
9732    :END:
9734 *** Document title
9735     :PROPERTIES:
9736     :DESCRIPTION: Where the title is taken from
9737     :END:
9738 #+cindex: document title, markup rules
9740 {{{noindent}}} The title of the exported document is taken from the
9741 special line:
9743 #+cindex: #+TITLE
9744 #+begin_example
9745    ,#+TITLE: This is the title of the document
9746 #+end_example
9748 {{{noindent}}} If this line does not exist, the title is derived from
9749 the first non-empty, non-comment line in the buffer.  If no such line
9750 exists, or if you have turned off exporting of the text before the
9751 first headline (see below), the title will be the file name without
9752 extension.
9754 #+cindex: property, EXPORT_TITLE
9756 If you are exporting only a subtree by marking is as the region, the
9757 heading of the subtree will become the title of the document.  If the
9758 subtree has a property ~EXPORT_TITLE~, that will take precedence.
9760 *** Headings and sections
9761     :PROPERTIES:
9762     :DESCRIPTION: The document structure as seen by the exporter
9763     :END:
9764 #+cindex: headings and sections, markup rules
9766 #+vindex: org-export-headline-levels
9768 The outline structure of the document as described in [[Document
9769 structure]], forms the basis for defining sections of the exported
9770 document.  However, since the outline structure is also used for (for
9771 example) lists of tasks, only the first three outline levels will be
9772 used as headings.  Deeper levels will become itemized lists.  You can
9773 change the location of this switch globally by setting the variable
9774 ~org-export-headline-levels~, or on a per-file basis with the ~H~ option:
9776 #+cindex: #+OPTIONS
9777 #+begin_example
9778    ,#+OPTIONS: H:4
9779 #+end_example
9781 *** Table of contents
9782     :PROPERTIES:
9783     :DESCRIPTION: The if and where of the table of contents
9784     :END:
9785 #+cindex: table of contents, markup rules
9787 #+vindex: org-export-with-toc
9789 The table of contents is normally inserted directly before the first
9790 headline of the file.  If you would like to get it to a different
9791 location, insert the string ~[TABLE-OF-CONTENTS]~ on a line by itself
9792 at the desired location.  The depth of the table of contents is by
9793 default the same as the number of headline levels, but you can choose
9794 a smaller number, or turn off the table of contents entirely, by
9795 configuring the variable ~org-export-with-toc~, or on a per-file basis
9796 with the ~toc~ option:
9798 #+begin_example
9799    ,#+OPTIONS: toc:2          (only to two levels in TOC)
9800    ,#+OPTIONS: toc:nil        (no TOC at all)
9801 #+end_example
9803 *** Initial text
9804     :PROPERTIES:
9805     :DESCRIPTION: Text before the first heading?
9806     :TITLE:    Text before the first headline
9807     :END:
9808 #+cindex: text before first headline, markup rules
9809 #+cindex: #+TEXT
9811 Org mode normally exports the text before the first headline, and even uses
9812 the first line as the document title.  The text will be fully marked up.  If
9813 you need to include literal HTML, LaTeX, or DocBook code, use the special
9814 constructs described below in the sections for the individual exporters.
9816 #+vindex: org-export-skip-text-before-1st-heading
9818 Some people like to use the space before the first headline for setup
9819 and internal links and therefore would like to control the exported
9820 text before the first headline in a different way.  You can do so by
9821 setting the variable ~org-export-skip-text-before-1st-heading~ to ~t~.
9822 On a per-file basis, you can get the same effect with
9823 {{{samp(#+OPTIONS: skip:t)}}}.
9825 {{{noindent}}}
9827 If you still want to have some text before the first headline, use the
9828 ~#+TEXT~ construct:
9830 #+begin_example
9831    ,#+OPTIONS: skip:t
9832    ,#+TEXT: This text will go before the *first* headline.
9833    ,#+TEXT: [TABLE-OF-CONTENTS]
9834    ,#+TEXT: This goes between the table of contents and the *first* headline
9835 #+end_example
9837 *** Lists
9838     :PROPERTIES:
9839     :DESCRIPTION: Lists
9840     :END:
9841 #+cindex: lists, markup rules
9843 Plain lists as described in [[Plain lists]], are translated to the
9844 backend's syntax for such lists.  Most backends support unordered,
9845 ordered, and description lists.
9847 *** Paragraphs
9848     :PROPERTIES:
9849     :DESCRIPTION: Paragraphs
9850     :END:
9851 #+cindex: paragraphs, markup rules
9853 Paragraphs are separated by at least one empty line.  If you need to
9854 enforce a line break within a paragraph, use ~\\~ at the end
9855 of a line.
9857 To keep the line breaks in a region, but otherwise use normal
9858 formatting, you can use ~VERSE~ blocks, which can also be used to
9859 format poetry:
9861 #+cindex: #+BEGIN_VERSE
9862 #+begin_example
9863    #+BEGIN_VERSE
9864     Great clouds overhead
9865     Tiny black birds rise and fall
9866     Snow covers Emacs
9868         -- AlexSchroeder
9869    #+END_VERSE
9870 #+end_example
9872 When quoting a passage from another document, it is customary to
9873 format this as a paragraph that is indented on both the left and the
9874 right margin.  You can include quotations in Org mode documents like
9875 this:
9877 #+cindex: #+BEGIN_QUOTE
9878 #+begin_example
9879    #+BEGIN_QUOTE
9880    Everything should be made as simple as possible,
9881    but not any simpler -- Albert Einstein
9882    #+END_QUOTE
9883 #+end_example
9885 If you would like to center some text, do it like this:
9886 #+cindex: #+BEGIN_CENTER
9887 #+begin_example
9888    #+BEGIN_CENTER
9889    Everything should be made as simple as possible, \\
9890    but not any simpler
9891    #+END_CENTER
9892 #+end_example
9894 *** Footnote markup
9895     :PROPERTIES:
9896     :DESCRIPTION: Footnotes
9897     :END:
9898 #+cindex: footnotes, markup rules
9899 #+cindex: @file{footnote.el}
9901 Footnotes defined in the way described in [[Creating footnotes]], will be exported
9902 by all backends.  Org allows multiple references to the same note, and
9903 multiple footnotes side by side.
9905 *** Emphasis and monospace
9906     :PROPERTIES:
9907     :DESCRIPTION: Bold, italic, etc.
9908     :END:
9910 #+cindex: underlined text, markup rules
9911 #+cindex: bold text, markup rules
9912 #+cindex: italic text, markup rules
9913 #+cindex: verbatim text, markup rules
9914 #+cindex: code text, markup rules
9915 #+cindex: strike-through text, markup rules
9917 You can make words **bold**, //italic//, _underlined_, ~=code=~
9918 and ~~verbatim~~, and, if you must, {{{samp(+strike-through+)}}}.  Text
9919 in the code and verbatim string is not processed for Org mode specific
9920 syntax; it is exported verbatim.
9922 *** Horizontal rules
9923     :PROPERTIES:
9924     :DESCRIPTION: Make a line
9925     :END:
9926 #+cindex: horizontal rules, markup rules
9928 A line consisting of only dashes, and at least 5 of them, will be
9929 exported as a horizontal line (~<hr/>~ in HTML and ~\hrule~
9930 in LaTeX).
9932 *** Comment lines
9933     :PROPERTIES:
9934     :DESCRIPTION: What will *not* be exported
9935     :END:
9936 #+cindex: comment lines
9937 #+cindex: exporting, not
9938 #+cindex: #+BEGIN_COMMENT
9940 Lines starting with zero or more whitespace characters followed by one
9941 {{{samp(#)}}} and a whitespace are treated as comments and will never
9942 be exported.  Also entire subtrees starting with the word
9943 {{{samp(COMMENT)}}} will never be exported.  Finally, regions
9944 surrounded by {{{samp(#+BEGIN_COMMENT)}}} ...
9945 {{{samp(#+END_COMMENT)}}} will not be exported.
9947 #+attr_texinfo: :table-type table :indic @asis
9948 - {{{kbd(C-c ;)}}} ::
9949   #+kindex: C-c ;
9951   Toggle the COMMENT keyword at the beginning of an entry.
9953 ** Images and tables
9954    :PROPERTIES:
9955    :DESCRIPTION: Tables and images can be exported
9956    :END:
9958 #+cindex: tables, markup rules
9959 #+cindex: #+CAPTION
9960 #+cindex: #+LABEL
9962 Both the native Org mode tables (see [[Tables]]) and tables formatted with
9963 the {{{file(table.el)}}} package will be exported properly.  For Org
9964 mode tables, the lines before the first horizontal separator line will
9965 become table header lines.  You can use the following lines somewhere
9966 before the table to assign a caption and a label for cross references,
9967 and in the text you can refer to the object with
9968 ~\ref{tab:basic-data}~:
9970 #+begin_example
9971    #+CAPTION: This is the caption for the next table (or link)
9972    #+LABEL:   tab:basic-data
9973       | ... | ...|
9974       |-----|----|
9975 #+end_example
9977 Optionally, the caption can take the form:
9978 #+begin_example
9979    #+CAPTION: [Caption for list of figures]{Caption for table (or link).}
9980 #+end_example
9982 #+cindex: inlined images, markup rules
9984 Some backends (HTML, LaTeX, and DocBook) allow you to directly
9985 include images into the exported document.  Org does this, if a link to
9986 an image files does not have a description part, for example
9987 ~[[./img/a.jpg]]~.  If you wish to define a caption for the image and maybe
9988 a label for internal cross references, make sure that the link is on a
9989 line by itself and precede it with ~#+CAPTION~ and ~#+LABEL~ as
9990 follows:
9992 #+begin_example
9993    #+CAPTION: This is the caption for the next figure link (or table)
9994    #+LABEL:   fig:SED-HR4049
9995    [[./img/a.jpg]]
9996 #+end_example
9998 You may also define additional attributes for the figure.  As this is
9999 backend-specific, see the sections about the individual backends for
10000 more information.
10002 See [[Handling links][the discussion of image links]].
10004 ** Literal examples
10005    :PROPERTIES:
10006    :DESCRIPTION: Source code examples with special formatting
10007    :END:
10008 #+cindex: literal examples, markup rules
10009 #+cindex: code line references, markup rules
10011 You can include literal examples that should not be subjected to
10012 markup.  Such examples will be typeset in monospace, so this is well
10013 suited for source code and similar examples.
10014 #+cindex: #+BEGIN_EXAMPLE
10016 #+begin_example
10017    ,#+BEGIN_EXAMPLE
10018    Some example from a text file.
10019    ,#+END_EXAMPLE
10020 #+end_example
10022 Note that such blocks may be /indented/ in order to align nicely with
10023 indented text and in particular with plain list structure (see [[Plain
10024 lists]]).  For simplicity when using small examples, you can also start
10025 the example lines with a colon followed by a space.  There may also be
10026 additional whitespace before the colon:
10028 #+begin_example
10029    Here is an example
10030       : Some example from a text file.
10031 #+end_example
10033 #+cindex: formatting source code, markup rules
10035 If the example is source code from a programming language, or any
10036 other text that can be marked up by font-lock in Emacs, you can ask
10037 for the example to look like the fontified Emacs buffer.[fn:102] This
10038 is done with the {{{samp(src)}}} block, where you also need to specify
10039 the name of the major mode that should be used to fontify the example,
10040 see [[Easy templates]] for shortcuts to easily insert code blocks.[fn:103]
10042 #+cindex: #+BEGIN_SRC
10044 #+begin_example
10045    #+BEGIN_SRC emacs-lisp
10046      (defun org-xor (a b)
10047         "Exclusive or."
10048         (if a (not b) b))
10049    #+END_SRC
10050 #+end_example
10052 Both in ~example~ and in ~src~ snippets, you can add a ~-n~ switch to
10053 the end of the ~BEGIN~ line, to get the lines of the example numbered.
10054 If you use a ~+n~ switch, the numbering from the previous numbered
10055 snippet will be continued in the current one.  In literal examples, Org
10056 will interpret strings like {{{samp((ref:name))}}} as labels, and use
10057 them as targets for special hyperlinks like ~[[(name)]]~ (i.e., the
10058 reference name enclosed in single parenthesis).  In HTML, hovering the
10059 mouse over such a link will remote-highlight the corresponding code
10060 line, which is kind of cool.
10062 You can also add a ~-r~ switch which /removes/ the labels from the
10063 source code.[fn:104] With the ~-n~ switch, links to these references
10064 will be labeled by the line numbers from the code listing, otherwise
10065 links will use the labels with no parentheses.  Here is an example:
10067 #+begin_example
10068    #+BEGIN_SRC emacs-lisp -n -r
10069    (save-excursion                  (ref:sc)
10070       (goto-char (point-min))       (ref:jump)
10071    #+END_SRC
10072    In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
10073    jumps to point-min.
10074 #+end_example
10076 #+vindex: org-coderef-label-format
10078 If the syntax for the label format conflicts with the language syntax,
10079 use a ~-l~ switch to change the format, for example
10080 {{{samp(#+BEGIN_SRC pascal -n -r -l "((%s))")}}}.  See also the
10081 variable ~org-coderef-label-format~.
10083 HTML export also allows examples to be published as text areas
10084 (see [[Text areas in HTML export]]).
10086 Because the ~#+BEGIN_...~ and ~#+END_...~ patterns need to be added so
10087 often, shortcuts are provided using the Easy Templates facility (see
10088 [[Easy templates]]).
10090 #+attr_texinfo: :table-type table :indic @asis
10091 - {{{kbd(C-c ')}}} ::
10092   #+kindex: C-c '
10094   Edit the source code example at point in its native mode.  This works
10095   by switching to a temporary buffer with the source code.  You need to
10096   exit by pressing {{{kbd(C-c ')}}} again.[fn:105] The edited version
10097   will then replace the old version in the Org buffer.  Fixed-width
10098   regions (where each line starts with a colon followed by a space) will
10099   be edited using ~artist-mode~ to allow creating ASCII drawings
10100   easily.[fn:106] Using this command in an empty line will create a new
10101   fixed-width region. 
10103 - {{{kbd(C-c l)}}} ::
10104   #+kindex: C-c l
10106   Calling ~org-store-link~ while editing a source code example in a
10107   temporary buffer created with {{{kbd(C-c ')}}} will prompt for a
10108   label.  Make sure that it is unique in the current buffer, and insert
10109   it with the proper formatting like {{{samp((ref:label))}}} at the end
10110   of the current line.  Then the label is stored as a link
10111   {{{samp((label))}}}, for retrieval with {{{kbd(C-c C-l)}}}.
10113 ** Include files
10114    :PROPERTIES:
10115    :DESCRIPTION: Include additional files into a document
10116    :END:
10117 #+cindex: include files, markup rules
10119 During export, you can include the content of another file.  For
10120 example, to include your {{{file(.emacs)}}} file, you could use:
10122 #+cindex: #+INCLUDE
10124 #+begin_example
10125    ,#+INCLUDE: "~/.emacs" src emacs-lisp
10126 #+end_example
10128 {{{noindent}}} The optional second and third parameter are the markup
10129 (e.g., {{{samp(quote)}}}, {{{samp(example)}}}, or {{{samp(src)}}}),
10130 and, if the markup is {{{samp(src)}}}, the language for formatting the
10131 contents.  The markup is optional; if it is not given, the text will be
10132 assumed to be in Org mode format and will be processed normally.  The
10133 include line will also allow additional keyword parameters ~:prefix1~
10134 and ~:prefix~ to specify prefixes for the first line and for each
10135 following line, ~:minlevel~ in order to get Org mode content demoted
10136 to a specified level, as well as any options accepted by the selected
10137 markup.  For example, to include a file as an item, use:
10139 #+begin_example
10140    ,#+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
10141 #+end_example
10143 You can also include a portion of a file by specifying a lines range
10144 using the ~:lines~ parameter.  The line at the upper end of the range
10145 will not be included.  The start and/or the end of the range may be
10146 omitted to use the obvious defaults.
10148 #+attr_texinfo: :table-type table :indic @asis
10149 - #+INCLUDE: "~/.emacs" :lines "5-10" ::  
10151   Include lines 5 to 10, 10 excluded.
10153 - #+INCLUDE: "~/.emacs" :lines "-10"  ::  
10155   Include lines 1 to 10, 10 excluded.
10157 - #+INCLUDE: "~/.emacs" :lines "10-"  ::  
10159   Include lines from 10 to EOF.
10162 #+attr_texinfo: :table-type table :indic @asis
10163 - {{{kbd(C-c ')}}}
10164   #+kindex: C-c '
10166   Visit the include file at point.
10168 ** Index entries
10169    :PROPERTIES:
10170    :DESCRIPTION: Making an index
10171    :END:
10172 #+cindex: index entries, for publishing
10174 You can specify entries that will be used for generating an index
10175 during publishing.  This is done by lines starting with ~#+INDEX~.  An
10176 entry the contains an exclamation mark will create a sub item.  See
10177 [[Generating an index]] for more information.
10179 #+begin_example
10180    ,* Curriculum Vitae
10181    #+INDEX: CV
10182    #+INDEX: Application!CV
10183 #+end_example
10185 ** Macro replacement
10186    :PROPERTIES:
10187    :DESCRIPTION: Use macros to create complex output
10188    :END:
10189 #+cindex: macro replacement, during export
10190 #+cindex: #+MACRO
10192 You can define text snippets with a macro:
10194 #+begin_example
10195    ,#+MACRO: name   replacement text $1, $2 are arguments
10196 #+end_example
10198 {{{noindent}}} which can be referenced anywhere in the document (even in
10199 code examples) with ~{{{name(arg1,arg2)}}}~.  In addition to
10200 defined macros, ~{{{title}}}~, ~{{{author}}}~, etc.,
10201 will reference information set by the ~#+TITLE:~, ~#+AUTHOR:~, and
10202 similar lines.  Also, ~{{{date(FORMAT)}}}~ and
10203 ~{{{modification-time(FORMAT)}}}~ refer to current date time
10204 and to the modification time of the file being exported, respectively.
10205 ~FORMAT~ should be a format string understood by
10206 ~format-time-string~.
10208 Macro expansion takes place during export, and some people use it to
10209 construct complex HTML code.
10211 ** FIXME Embedded LaTeX
10212    :PROPERTIES:
10213    :DESCRIPTION: LaTeX can be freely used inside Org documents
10214    :ALT_TITLE: Embedded Latex
10215    :END:
10216 #+cindex: @TeX{} interpretation
10217 #+cindex: @LaTeX{} interpretation
10219 Plain ASCII is normally sufficient for almost all note taking.
10220 Exceptions include scientific notes, which often require mathematical
10221 symbols and the occasional formula.  LaTeX is widely used to typeset
10222 scientific documents.[fn:107] Org mode supports embedding LaTeX
10223 code into its files, because many academics are used to writing and
10224 reading LaTeX source code, and because it can be readily processed
10225 to produce pretty output for a number of export backends.
10227 *** Special symbols
10228     :PROPERTIES:
10229     :DESCRIPTION: Greek letters and other symbols
10230     :END:
10231 #+cindex: math symbols
10232 #+cindex: special symbols
10233 #+cindex: @TeX{} macros
10234 #+cindex: @LaTeX{} fragments, markup rules
10235 #+cindex: HTML entities
10236 #+cindex: @LaTeX{} entities
10238 You can use LaTeX macros to insert special symbols like
10239 ~\alpha~ to indicate the Greek letter, or ~\to~ to
10240 indicate an arrow.  Completion for these macros is available, just type
10241 ~\~ and maybe a few letters, and press {{{kbdkey(M-,TAB)}}}
10242 to see possible completions.  Unlike LaTeX code, Org mode allows
10243 these macros to be present without surrounding math delimiters, for
10244 example:
10246 #+begin_example
10247    Angles are written as Greek letters \alpha, \beta and \gamma.
10248 #+end_example
10250 #+vindex: org-entities
10252 During export, these symbols will be transformed into the native
10253 format of the exporter backend.  Strings like ~\alpha~ will be exported
10254 as ~&alpha;~ in the HTML output, and as ~$\alpha$~ in the LaTeX
10255 output.  Similarly, ~\nbsp~ will become ~&nbsp;~ in HTML and ~~~ in
10256 LaTeX.  If you need such a symbol inside a word, terminate it like
10257 this: ~\Aacute{}stor~.
10259 A large number of entities is provided, with names taken from both
10260 HTML and LaTeX; see the variable ~org-entities~ for the complete
10261 list.  ~\-~ is treated as a shy hyphen, and {{{samp(--)}}},
10262 {{{samp(---)}}}, and {{{samp(...)}}} are all converted into special
10263 commands creating hyphens of different lengths or a compact set of
10264 dots.
10266 If you would like to see entities displayed as UTF8 characters, use the
10267 following command:[fn:108]
10269 #+attr_texinfo: :table-type table :indic @asis
10270 - {{{kbd(C-c C-x XXX)}}} ::
10271   #+kindex: C-c C-x XXX
10272 # Should be \
10273   Toggle display of entities as UTF-8 characters.  This does not change
10274   the buffer content which remains plain ASCII, but it overlays the
10275   UTF-8 character for display purposes only.
10277 *** FIXME Subscripts and superscripts
10278     :PROPERTIES:
10279     :DESCRIPTION: Simple syntax for raising/lowering text
10280     :END:
10281 #+cindex: subscript
10282 #+cindex: superscript
10284 Just like in LaTeX, {{{samp(^)}}} and {{{samp(_)}}} are used to
10285 indicate super- and subscripts.  Again, these can be used without
10286 embedding them in math-mode delimiters.  To increase the readability of
10287 ASCII text, it is not necessary (but OK) to surround multi-character
10288 sub- and superscripts with curly braces.  For example
10290 #+begin_example
10291    The mass of the sun is M_sun = 1.989 x 10^30 kg.  The radius of
10292    the sun is R_{sun} = 6.96 x 10^8 m.
10293 #+end_example
10295 #+vindex: org-export-with-sub-superscripts
10297 To avoid interpretation as raised or lowered text, you can quote
10298 {{{kbd(^)}}} and {{{kbd(_)}}} with a backslash: ~\^~ and ~\_~.  If you
10299 write a text where the underscore is often used in a different
10300 context, Org's convention to always interpret these as subscripts can
10301 get in your way.  Configure the variable
10302 ~org-export-with-sub-superscripts~ to globally change this convention,
10303 or use, on a per-file basis:
10305 #+begin_example
10306    ,#+OPTIONS: ^:{}
10307 #+end_example
10309 {{{noindent}}} With this setting, ~a_b~ will not be interpreted as a
10310 subscript, but ~a_{b}~ will.
10312 #+attr_texinfo: :table-type table :indic @asis
10313 - {{{kbd(C-c C-x XXX)}}} ::
10314   #+kindex: C-c C-x XXX
10315 # Should be \
10316   In addition to showing entities as UTF-8 characters, this command will
10317   also format sub- and superscripts in a WYSIWYM way.
10319 *** LaTeX fragments
10320     :PROPERTIES:
10321     :DESCRIPTION: Complex formulas made easy
10322     :END:
10323 #+cindex: @LaTeX{} fragments
10324 #+vindex: org-format-latex-header
10326 Going beyond symbols and sub- and superscripts, a full formula
10327 language is needed.  Org mode can contain LaTeX math fragments, and
10328 it supports ways to process these for several export backends.  When
10329 exporting to LaTeX, the code is obviously left as it is.  When
10330 exporting to HTML, Org invokes the [[http://www.mathjax.org][MathJax library]] (see [[Math
10331 formatting in HTML export]]) to process and display the math.[fn:109]
10332 Finally, it can also process the mathematical expressions into images
10333 that can be displayed in a browser or in DocBook documents.[fn:110]
10335 LaTeX fragments don't need any special marking at all.  The following
10336 snippets will be identified as LaTeX source code:
10338 - Environments of any kind.[fn:111]  The only requirement is that the
10339   ~\begin~ statement appears on a new line, preceded by only whitespace.
10341 - Text within the usual LaTeX math delimiters.  To avoid conflicts
10342   with currency specifications, single ~$~ characters are
10343   only recognized as math delimiters if the enclosed text contains at
10344   most two line breaks, is directly attached to the ~$~
10345   characters with no whitespace in between, and if the closing
10346   ~$~ is followed by whitespace, punctuation or a dash.  For
10347   the other delimiters, there is no such restriction, so when in
10348   doubt, use ~\(...\)~ as inline math delimiters.
10351 {{{noindent}}} For example:
10353 #+begin_example
10354    \begin{equation}                          % arbitrary environments,
10355    x=\sqrt{b}                                % even tables, figures
10356    \end{equation}                            % etc
10358    If $a^2=b$ and \( b=2 \), then the solution must be
10359    either $$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \].
10360 #+end_example
10362 {{{noindent}}}
10363 #+vindex: org-format-latex-options
10365 If you need any of the delimiter ASCII sequences for other purposes,
10366 you can configure the option ~org-format-latex-options~ to deselect
10367 the ones you do not wish to have interpreted by the LaTeX
10368 converter.
10370 #+vindex: org-export-with-LaTeX-fragments
10372 LaTeX processing can be configured with the variable
10373 ~org-export-with-LaTeX-fragments~.  The default setting is ~t~ which
10374 means {{{file(MathJax)}}} for HTML, and no processing for DocBook,
10375 ASCII and LaTeX backends.  You can also set this variable on a
10376 per-file basis using one of these lines:
10378 #+attr_texinfo: :table-type table :indic @asis
10379 - #+OPTIONS: LaTeX:t ::          
10381   Do the right thing automatically (MathJax).
10383 - #+OPTIONS: LaTeX:dvipng ::    
10385   Force using dvipng images.
10387 - #+OPTIONS: LaTeX:nil ::        
10389   Do not process LaTeX fragments at all
10391 - #+OPTIONS: LaTeX:verbatim ::  
10393   Verbatim export, for jsMath or so.
10395 *** Previewing LaTeX fragments
10396     :PROPERTIES:
10397     :DESCRIPTION: What will this snippet look like?
10398     :END:
10399 #+cindex: @LaTeX{} fragments, preview
10401 If you have {{{file(dvipng)}}} installed, LaTeX fragments can be
10402 processed to produce preview images of the typeset expressions:
10404 #+attr_texinfo: :table-type table :indic @asis
10405 - {{{kbd(C-c C-x C-l)}}} ::
10406   #+kindex: C-c C-x C-l
10408   Produce a preview image of the LaTeX fragment at point and overlay
10409   it over the source code.  If there is no fragment at point, process all
10410   fragments in the current entry (between two headlines).  When called
10411   with a prefix argument, process the entire subtree.  When called with
10412   two prefix arguments, or when the cursor is before the first headline,
10413   process the entire buffer.
10415 - {{{kbd(C-c C-c)}}} ::
10416   #+kindex: C-c C-c
10418   Remove the overlay preview images.
10421 #+vindex: org-format-latex-options
10423 You can customize the variable ~org-format-latex-options~ to influence
10424 some aspects of the preview.  In particular, the ~:scale~ (and for HTML
10425 export, ~:html-scale~) property can be used to adjust the size of the
10426 preview images.
10428 *** CDLaTeX mode
10429     :PROPERTIES:
10430     :DESCRIPTION: Speed up entering of formulas
10431     :TITLE:    Using CDLaTeX to enter math
10432     :END:
10433 #+cindex: CD@LaTeX{}
10435 CDLaTeX mode is a minor mode that is normally used in combination
10436 with a major LaTeX mode like AUCTeX in order to speed-up
10437 insertion of environments and math templates.  Inside Org mode, you can
10438 make use of some of the features of CDLaTeX mode.  You need to
10439 install {{{file(cdlatex.el)}}} and {{{file(texmathp.el)}}} (the latter
10440 comes also with AUCTeX) from
10441 [[http://www.astro.uva.nl/~dominik/Tools/cdlatex]].  Don't use CDLaTeX
10442 mode itself under Org mode, but use the light version
10443 ~org-cdlatex-mode~ that comes as part of Org mode.  Turn it on for the
10444 current buffer with ~M-x org-cdlatex-mode~, or for all Org files with
10445 this hook:
10447 #+header: :eval no
10448 #+header: :exports code
10449 #+begin_src emacs-lisp
10450 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
10451 #+end_src
10453 When this mode is enabled, the following features are present (for more
10454 details see the documentation of CDLaTeX mode):
10456 #+attr_texinfo: :table-type table :indic @asis
10457 - {{{kbd(C-c {)}}} ::
10458   #+kindex: C-c @{
10460   Insert an environment template.
10462 - {{{key(TAB)}}} ::
10463   #+kindex: @key{TAB}
10465   Expand a template if the cursor is inside a LaTeX fragment.[fn:112]
10466   For example, {{{key(TAB)}}} will expand ~fr~ to ~\frac{}{}~ and
10467   position the cursor correctly inside the first brace.  Another
10468   {{{key(TAB)}}} will get you into the second brace.  Even outside
10469   fragments, {{{key(TAB)}}} will expand environment abbreviations at the
10470   beginning of a line.  For example, if you write {{{samp(equ)}}} at the
10471   beginning of a line and press {{{key(TAB)}}}, this abbreviation will
10472   be expanded to an ~equation~ environment.  To get a list of all
10473   abbreviations, type {{{kbd(M-x cdlatex-command-help)}}}.
10475 - {{{kbd(_)}}} {{{kbd(^)}}} ::
10476   #+kindex: _
10477   #+kindex: ^
10478   #+vindex: cdlatex-simplify-sub-super-scripts
10480   Pressing {{{kbd(_)}}} and {{{kbd(^)}}} inside a LaTeX fragment will
10481   insert these characters together with a pair of braces.  If you use
10482   {{{key(TAB)}}} to move out of the braces, and if the braces surround
10483   only a single character or macro, they are removed again (depending on
10484   the variable ~cdlatex-simplify-sub-super-scripts~).
10486 - {{{kbd(`)}}} ::
10487   #+kindex: `
10489   Pressing the backquote followed by a character inserts math macros,
10490   also outside LaTeX fragments.  If you wait more than 1.5 seconds
10491   after the backquote, a help window will pop up.
10493 - {{{kbd(')}}} ::
10494   #+kindex: '
10496   Pressing the single-quote followed by another character modifies the
10497   symbol before point with an accent or a font.  If you wait more than
10498   1.5 seconds after the single-quote, a help window will pop up.
10499   Character modification will work only inside LaTeX fragments;
10500   outside the quote is normal.
10502 * FIXME Exporting
10503   :PROPERTIES:
10504   :DESCRIPTION: Sharing and publishing notes
10505   :END:
10506 #+cindex: exporting
10508 Org mode documents can be exported into a variety of other formats.
10509 For printing and sharing of notes, ASCII export produces a readable
10510 and simple version of an Org file.  HTML export allows you to publish a
10511 notes file on the web, while the XOXO format provides a solid base for
10512 exchange with a broad range of other applications.  LaTeX export
10513 lets you use Org mode and its structured editing functions to easily
10514 create LaTeX files.  DocBook export makes it possible to convert Org
10515 files to many other formats using DocBook tools.  OpenDocument Text
10516 (ODT) export allows seamless collaboration across organizational
10517 boundaries.  For project management you can create gantt and resource
10518 charts by using TaskJuggler export.  To incorporate entries with
10519 associated times like deadlines or appointments into a desktop
10520 calendar program like iCal, Org mode can also produce extracts in the
10521 iCalendar format.  Currently, Org mode only supports export, not import
10522 of these different formats.
10524 Org supports export of selected regions when ~transient-mark-mode~ is
10525 enabled (default in Emacs 23).
10527 ** Selective export
10528    :PROPERTIES:
10529    :DESCRIPTION: Using tags to select and exclude trees
10530    :END:
10531 #+cindex: export, selective by tags or TODO keyword
10532 #+vindex: org-export-select-tags
10533 #+vindex: org-export-exclude-tags
10534 #+cindex: org-export-with-tasks
10536 You may use tags to select the parts of a document that should be exported,
10537 or to exclude parts from export.  This behavior is governed by two variables:
10538 ~org-export-select-tags~ and ~org-export-exclude-tags~,
10539 respectively defaulting to ~:export:~ and ~:noexport:~.
10541 1. Org first checks if any of the /select/ tags is present in the
10542    buffer.  If yes, all trees that do not carry one of these tags will
10543    be excluded.  If a selected tree is a subtree, the heading hierarchy
10544    above it will also be selected for export, but not the text below
10545    those headings.
10547 2. If none of the select tags is found, the whole buffer will be
10548    selected for export.
10550 3. Finally, all subtrees that are marked by any of the /exclude/ tags
10551    will be removed from the export buffer.
10554 The variable ~org-export-with-tasks~ can be configured to select which
10555 kind of tasks should be included for export.  See the docstring of the
10556 variable for more information.
10558 ** FIXME Export options
10559    :PROPERTIES:
10560    :DESCRIPTION: Per-file export settings
10561    :END:
10562 #+cindex: options, for export
10563 #+cindex: completion, of option keywords
10565 The exporter recognizes special lines in the buffer which provide
10566 additional information.  These lines may be put anywhere in the file.
10567 The whole set of lines can be inserted into the buffer with 
10568 {{{kbd(C-c C-e t)}}}.  For individual lines, a good way to make sure the keyword
10569 is correct is to type {{{samp(#+)}}} and then use {{{kbdkey(M-,TAB)}}}
10570 completion (see [[Completion]]).  For a summary of other in-buffer settings
10571 not specifically related to export, see [[In-buffer settings]].  In
10572 particular, note that you can place commonly-used (export) options in
10573 a separate file which can be included using ~#+SETUPFILE~.
10575 #+attr_texinfo: :table-type table :indic @asis
10576 - {{{kbd(C-c C-e t)}}}, ~org-insert-export-options-template~ ::
10577   #+kindex: C-c C-e t
10579   Insert template with export options, see example below.
10582 #+cindex: #+TITLE
10583 #+cindex: #+AUTHOR
10584 #+cindex: #+DATE
10585 #+cindex: #+EMAIL
10586 #+cindex: #+DESCRIPTION
10587 #+cindex: #+KEYWORDS
10588 #+cindex: #+LANGUAGE
10589 #+cindex: #+TEXT
10590 #+cindex: #+OPTIONS
10591 #+cindex: #+BIND
10592 #+cindex: #+LINK_UP
10593 #+cindex: #+LINK_HOME
10594 #+cindex: #+EXPORT_SELECT_TAGS
10595 #+cindex: #+EXPORT_EXCLUDE_TAGS
10596 #+cindex: #+XSLT
10597 #+cindex: #+LaTeX_HEADER
10598 #+vindex: user-full-name
10599 #+vindex: user-mail-address
10600 #+vindex: org-export-default-language
10601 #+vindex: org-export-date-timestamp-format
10603 #+attr_texinfo: :table-type table :indic @asis
10604 - #+TITLE: ::      
10606   The title to be shown (default is the buffer name).
10608 - #+AUTHOR: ::     
10610   The author (default taken from ~user-full-name~).
10612 - #+DATE: ::       
10614   A date, an Org timestamp, or a format string for
10615   ~format-time-string~.[fn:113]
10617 - #+EMAIL: ::      
10619   His/her email address (default from ~user-mail-address~).
10621 - #+DESCRIPTION: :: 
10623   The page description, e.g., for the XHTML meta tag.
10625 - #+KEYWORDS: ::   
10627   The page keywords, e.g., for the XHTML meta tag.
10629 - #+LANGUAGE: ::   
10631   Language for HTML, e.g., en (~org-export-default-language~).
10633 - #+TEXT: ::       
10635   Some descriptive text to be inserted at the beginning.
10637 - #+TEXT: ::       
10639   Several lines may be given.
10641 - #+OPTIONS: ::    
10643   H:2 num:t toc:t \n:nil @:t ::t |:t ^:t f:t TeX:t ...
10645 - #+BIND: ::       
10647   Lisp-var lisp-val, e.g., org-export-latex-low-levels itemize.  You need
10648   to confirm using these, or configure ~org-export-allow-BIND~.
10650 - #+LINK_UP: ::    
10652   The ``up'' link of an exported page.
10654 - #+LINK_HOME: ::  
10656   The ``home'' link of an exported page.
10658 - #+LaTeX_HEADER: :: 
10660   Extra line(s) for the LaTeX header, like ~\usepackage{xyz}~.
10662 - #+EXPORT_SELECT_TAGS: ::  
10664   Tags that select a tree for export.
10666 - #+EXPORT_EXCLUDE_TAGS: :: 
10668   Tags that exclude a tree from export.
10670 - #+XSLT: ::       
10672   The XSLT stylesheet used by DocBook exporter to generate FO file.
10676 {{{noindent}}} The ~#+OPTIONS~ line is a compact form to specify
10677 export settings.[fn:114] Here you can:
10679 #+cindex: headline levels
10680 #+cindex: section-numbers
10681 #+cindex: table of contents
10682 #+cindex: line-break preservation
10683 #+cindex: quoted HTML tags
10684 #+cindex: fixed-width sections
10685 #+cindex: tables
10686 #+cindex: @TeX{}-like syntax for sub- and superscripts
10687 #+cindex: footnotes
10688 #+cindex: special strings
10689 #+cindex: emphasized text
10690 #+cindex: @TeX{} macros
10691 #+cindex: @LaTeX{} fragments
10692 #+cindex: author info, in export
10693 #+cindex: time info, in export
10694 #+vindex: org-export-plist-vars
10695 #+vindex: org-export-author-info
10696 #+vindex: org-export-creator-info
10697 #+vindex: org-export-email-info
10698 #+vindex: org-export-time-stamp-file
10700 #+attr_texinfo: :table-type table :indic @code
10701 - H: ::        
10703   Set the number of headline levels for export.
10705 - num: ::      
10707   Turn on/off section-numbers.
10709 - toc: ::      
10711   Turn on/off table of contents, or set level limit (integer).
10713 - \n: ::       
10715   Turn on/off line-break-preservation (DOES NOT WORK).
10717 - @: ::        
10719   Turn on/off quoted HTML tags.
10721 - :: ::        
10723   Turn on/off fixed-width sections.
10725 - |: ::        
10727   Turn on/off tables,
10729 - ^: ::        
10731   Turn on/off TeX-like syntax for sub- and superscripts.  If you write
10732   "^:{}", ~a_{b}~ will be interpreted, but the simple ~a_b~ will be left
10733   as it is.
10735 - : ::        
10737   Turn on/off conversion of special strings.
10739 - f: ::         
10741   Turn on/off footnotes like this: ~[1]~.
10743 - todo: ::      
10745   Turn on/off inclusion of TODO keywords into exported text.
10747 - tasks: ::     
10749   Turn on/off inclusion of tasks (TODO items), can be nil to remove all
10750   tasks, ~todo~ to remove DONE tasks, or list of keywords to keep.
10752 - pri: ::       
10754   Turn on/off priority cookies.
10756 - tags: ::     
10758   Turn on/off inclusion of tags, may also be ~not-in-toc~.
10760 - <: ::         
10762   Turn on/off inclusion of any time/date stamps like DEADLINES.
10764 - *: ::        
10766   Turn on/off emphasized text (bold, italic, underlined).
10768 - TeX: ::      
10770   Turn on/off simple TeX macros in plain text.
10772 - LaTeX: ::     
10774   Configure export of LaTeX fragments.  Default ~auto~.
10776 - skip: ::      
10778   Turn on/off skipping the text before the first heading.
10780 - author: ::    
10782   Turn on/off inclusion of author name/email into exported file.
10784 - email: ::     
10786   Turn on/off inclusion of author email into exported file.
10788 - creator: ::  
10790   Turn on/off inclusion of creator info into exported file.
10792 - timestamp: :: 
10794   Turn on/off inclusion creation time into exported file.
10796 - d: ::        
10798   Turn on/off inclusion of drawers, or list drawers to include.
10801 {{{noindent}}} These options take effect in both the HTML and LaTeX
10802 export, except for ~TeX~ and ~LaTeX~ options, which are respectively
10803 ~t~ and ~nil~ for the LaTeX export.
10805 The default values for these and many other options are given by a set
10806 of variables.  For a list of such variables, the corresponding OPTIONS
10807 keys and also the publishing keys (see [[Project alist]]), see the
10808 constant ~org-export-plist-vars~.
10810 When exporting only a single subtree by selecting it with
10811 {{{kbd(C-c @)}}} before calling an export command, the subtree can
10812 overrule some of the file's export settings with properties
10813 ~EXPORT_FILE_NAME~, ~EXPORT_TITLE~, ~EXPORT_TEXT~, ~EXPORT_AUTHOR~,
10814 ~EXPORT_DATE~, and ~EXPORT_OPTIONS~.
10816 ** The export dispatcher
10817    :PROPERTIES:
10818    :DESCRIPTION: How to access exporter commands
10819    :END:
10820 #+cindex: dispatcher, for export commands
10822 All export commands can be reached using the export dispatcher, which
10823 is a prefix key that prompts for an additional key specifying the
10824 command.  Normally the entire file is exported, but if there is an
10825 active region that contains one outline tree, the first heading is
10826 used as document title and the subtrees are exported.
10828 #+attr_texinfo: :table-type table :indic @asis
10829 - {{{kbd(C-c C-e)}}}, ~org-export~ ::
10830   #+kindex: C-c C-e
10831   #+vindex: org-export-run-in-background
10833   Dispatcher for export and publishing commands.  Displays a help-window
10834   listing the additional key(s) needed to launch an export or publishing
10835   command.  The prefix arg is passed through to the exporter.  A double
10836   prefix {{{kbd(C-u C-u)}}} causes most commands to be executed in the
10837   background, in a separate Emacs process.[fn:115]
10839 - {{{kbd(C-c C-e v)}}}, ~org-export-visible~ ::
10840   #+kindex: C-c C-e v
10842   Like {{{kbd(C-c C-e)}}}, but only export the text that is currently visible
10843   (i.e., not hidden by outline visibility).
10845 - {{{kbd(C-u C-u C-c C-e)}}}, ~org-export~ ::
10846   #+kindex: C-u C-u C-c C-e
10847   #+vindex: org-export-run-in-background
10849   Call the exporter, but reverse the setting of
10850   ~org-export-run-in-background~, i.e., request background processing if
10851   not set, or force processing in the current Emacs process if set.
10853 ** ASCII/Latin-1/UTF-8 export
10854    :PROPERTIES:
10855    :DESCRIPTION: Exporting to flat files with encoding
10856    :END:
10857 #+cindex: ASCII export
10858 #+cindex: Latin-1 export
10859 #+cindex: UTF-8 export
10861 ASCII export produces a simple and very readable version of an Org
10862 mode file, containing only plain ASCII.  Latin-1 and UTF-8 export
10863 augment the file with special characters and symbols available in
10864 these encodings.
10866 #+cindex: region, active
10867 #+cindex: active region
10868 #+cindex: transient-mark-mode
10870 #+attr_texinfo: :table-type table :indic @asis
10871 - {{{kbd(C-c C-e a)}}}, ~org-export-as-ascii~ ::
10872   #+kindex: C-c C-e a
10873   #+cindex: property, EXPORT_FILE_NAME
10875   Export as an ASCII file.  For an Org file, {{{file(myfile.org)}}}, the
10876   ASCII file will be {{{file(myfile.txt)}}}.  The file will be
10877   overwritten without warning.  If there is an active region, only the
10878   region will be exported.[fn:116] If the selected region is a single
10879   tree, the tree head will become the document title.[fn:117] If the
10880   tree head entry has or inherits an ~EXPORT_FILE_NAME~ property, that
10881   name will be used for the export.
10883 - {{{kbd(C-c C-e A)}}}, ~org-export-as-ascii-to-buffer~ ::
10884   #+kindex: C-c C-e A
10886   Export to a temporary buffer.  Do not create a file.
10888 - {{{kbd(C-c C-e n)}}}, ~org-export-as-latin1~ ::
10889   #+kindex: C-c C-e n
10891   Like {{{kbd(C-c C-e a)}}}, but use Latin-1 encoding.
10893 - {{{kbd(C-c C-e N)}}}, ~org-export-as-latin1-to-buffer~ ::
10894   #+kindex: C-c C-e N
10896   Like {{{kbd(C-c C-e A)}}}, but use Latin-1 encoding.
10898 - {{{kbd(C-c C-e u)}}}, ~org-export-as-utf8~ ::
10899   #+kindex: C-c C-e u
10901   Like {{{kbd(C-c C-e a)}}}, but use UTF-8 encoding.
10903 - {{{kbd(C-c C-e U)}}}, ~org-export-as-utf8-to-buffer~ ::
10904   #+kindex: C-c C-e U
10906   Like {{{kbd(C-c C-e A)}}}, but use UTF-8 encoding.
10909 - {{{kbd(C-c C-e v a/n/u)}}} ::
10910   #+kindex: C-c C-e v a
10911   #+kindex: C-c C-e v n
10912   #+kindex: C-c C-e v u
10914   Export only the visible part of the document.
10917 #+cindex: headline levels, for exporting
10919 In the exported version, the first 3 outline levels will become
10920 headlines, defining a general document structure.  Additional levels
10921 will be exported as itemized lists.  If you want that transition to
10922 occur at a different level, specify it with a prefix argument, e.g.:
10924 #+begin_example
10925    C-1 C-c C-e a
10926 #+end_example
10928 {{{noindent}}} This setting creates only top level headlines and
10929 exports the rest as items.  When headlines are converted to items, the
10930 indentation of the text following the headline is changed to fit
10931 nicely under the item.  This is done with the assumption that the first
10932 body line indicates the base indentation of the body text.  Any
10933 indentation larger than this is adjusted to preserve the layout
10934 relative to the first line.  Should there be lines with less
10935 indentation than the first one, these are left alone.
10937 #+vindex: org-export-ascii-links-to-notes
10939 Links will be exported in a footnote-like style, with the descriptive
10940 part in the text and the link in a note before the next heading.  See
10941 the variable ~org-export-ascii-links-to-notes~ for details and other
10942 options.
10944 ** HTML export
10945    :PROPERTIES:
10946    :DESCRIPTION: Exporting to HTML
10947    :END:
10948 #+cindex: HTML export
10949 #+cindex: Gruber, John
10951 Org mode contains a HTML (XHTML 1.0 strict) exporter with extensive
10952 HTML formatting, in ways similar to John Gruber's /markdown/ language,
10953 but with additional support for tables.
10955 *** HTML export commands
10956     :PROPERTIES:
10957     :DESCRIPTION: How to invoke HTML export
10958     :END:
10959 #+cindex: region, active
10960 #+cindex: active region
10961 #+cindex: transient-mark-mode
10963 #+attr_texinfo: :table-type table :indic @asis
10964 - {{{kbd(C-c C-e h)}}}, ~org-export-as-html~ ::
10965   #+kindex: C-c C-e h
10966   #+cindex: property, EXPORT_FILE_NAME
10968   Export as an HTML file.  For an Org file {{{file(myfile.org)}}}, the
10969   HTML file will be {{{file(myfile.html)}}}.  The file will be
10970   overwritten without warning.  If there is an active region, only the
10971   active region will be exported.[fn:118] If the selected region is a
10972   single tree, the tree head will become the document title.[fn:119] If
10973   the tree head entry has, or inherits, an ~EXPORT_FILE_NAME~ property,
10974   that name will be used for the export.
10976 - {{{kbd(C-c C-e b)}}}, ~org-export-as-html-and-open~ ::
10977   #+kindex: C-c C-e b
10979   Export as a HTML file and immediately open it with a browser.
10981 - {{{kbd(C-c C-e H)}}}, ~org-export-as-html-to-buffer~ ::
10982   #+kindex: C-c C-e H
10984   Export to a temporary buffer.  Do not create a file.
10986 - {{{kbd(C-c C-e R)}}}, ~org-export-region-as-html~ ::
10987   #+kindex: C-c C-e R
10989   Export the active region to a temporary buffer.  With a prefix
10990   argument, do not produce the file header and footer, but just the
10991   plain HTML section for the region.  This is good for cut-and-paste
10992   operations.
10994 - {{{kbd(C-c C-e v h/b/H/R)}}} ::
10995   #+kindex: C-c C-e v h
10996   #+kindex: C-c C-e v b
10997   #+kindex: C-c C-e v H
10998   #+kindex: C-c C-e v R
11000   Export only the visible part of the document.
11002 - {{{kbd(M-x org-export-region-as-html)}}} ::
11004   Convert the region to HTML under the assumption that it was in Org
11005   mode syntax before.  This is a global command that can be invoked in
11006   any buffer.
11008 - {{{kbd(M-x org-replace-region-by-HTML)}}} ::
11010   Replace the active region (assumed to be in Org mode syntax) by HTML
11011   code.
11014 #+cindex: headline levels, for exporting
11016 In the exported version, the first three outline levels will become
11017 headlines, defining a general document structure.  Additional levels
11018 will be exported as itemized lists.  If you want that transition to
11019 occur at a different level, specify it with a numeric prefix argument,
11020 e.g.:
11022 #+begin_example
11023    C-2 C-c C-e b
11024 #+end_example
11026 {{{noindent}}} This setting creates two levels of headings and exports
11027 the rest as list items.
11029 *** HTML preamble and postamble
11030     :PROPERTIES:
11031     :DESCRIPTION: How to insert a preamble and postamble
11032     :END:
11033 #+vindex: org-export-html-preamble
11034 #+vindex: org-export-html-postamble
11035 #+vindex: org-export-html-preamble-format
11036 #+vindex: org-export-html-postamble-format
11037 #+vindex: org-export-html-validation-link
11038 #+vindex: org-export-author-info
11039 #+vindex: org-export-email-info
11040 #+vindex: org-export-creator-info
11041 #+vindex: org-export-time-stamp-file
11043 The HTML exporter lets you define a preamble and a postamble.
11045 The default value for ~org-export-html-preamble~ is ~t~, which means
11046 that the preamble is inserted depending on the relevant format string
11047 in ~org-export-html-preamble-format~.
11049 Setting ~org-export-html-preamble~ to a string will override the default
11050 format string.  Setting it to a function, will insert the output of the
11051 function, which must be a string; such a function takes no argument but you
11052 can check against the value of ~opt-plist~, which contains the list of
11053 publishing properties for the current file.  Setting to ~nil~ will not
11054 insert any preamble.
11056 The default value for ~org-export-html-postamble~ is
11057 {{{samp('auto)}}}, which means that the HTML exporter will look for
11058 the value of ~org-export-author-info~, ~org-export-email-info~,
11059 ~org-export-creator-info~ and ~org-export-time-stamp-file~,
11060 ~org-export-html-validation-link~ and build the postamble from these
11061 values.  Setting ~org-export-html-postamble~ to ~t~ will insert the
11062 postamble from the relevant format string found in
11063 ~org-export-html-postamble-format~.  Setting it to ~nil~ will not
11064 insert any postamble.
11066 *** Quoting HTML tags
11067     :PROPERTIES:
11068     :DESCRIPTION: Using direct HTML in Org mode
11069     :END:
11071 Plain ~<~ and {{{samp(>)}}} are always transformed to
11072 {{{samp(&lt;)}}} and {{{samp(&gt;)}}} in HTML export.  If you want to
11073 include simple HTML tags which should be interpreted as such, mark
11074 them with {{{samp(@)}}} as in {{{samp(@<b>bold text@</b>)}}}.  Note
11075 that this really works only for simple tags.  For more extensive HTML
11076 that should be copied verbatim to the exported file use either ~#+HTML~:
11078 #+cindex: #+HTML
11079 #+cindex: #+BEGIN_HTML
11080 #+begin_example
11081    ,#+HTML: Literal HTML code for export
11082 #+end_example
11084 {{{noindent}}} or an HTML block:
11085 #+cindex: #+BEGIN_HTML
11087 #+begin_example
11088    #+BEGIN_HTML
11089    All lines between these markers are exported literally
11090    #+END_HTML
11091 #+end_example
11093 *** Links in HTML export
11094     :PROPERTIES:
11095     :DESCRIPTION: How links will be interpreted and formatted
11096     :END:
11097 #+cindex: links, in HTML export
11098 #+cindex: internal links, in HTML export
11099 #+cindex: external links, in HTML export
11101 Internal links (see [[Internal links]]) will continue to work in HTML.
11102 This includes automatic links created by radio targets (see [[Radio
11103 targets]]).  Links to external files will still work if the target file
11104 is on the same /relative/ path as the published Org file.  Links to
11105 other {{{file(.org)}}} files will be translated into HTML links under
11106 the assumption that a HTML version also exists of the linked file, at
11107 the same relative path.  ~id:~ links can then be used to jump
11108 to specific entries across files.  For information related to linking
11109 files while publishing them to a publishing directory see [[Publishing
11110 links]].
11112 If you want to specify attributes for links, you can do so using a
11113 special ~#+ATTR_HTML~ line to define attributes that will be added to
11114 the ~<a>~ or ~<img>~ tags.  Here is an example that sets ~title~ and
11115 ~style~ attributes for a link:
11117 #+cindex: #+ATTR_HTML
11118 #+begin_example
11119    ,#+ATTR_HTML: title="The Org mode homepage" style="color:red;"
11120    ,[[http://orgmode.org]]
11121 #+end_example
11123 *** Tables in HTML export
11124     :PROPERTIES:
11125     :DESCRIPTION: How to modify the formatting of tables
11126     :END:
11127 #+cindex: tables, in HTML
11128 #+vindex: org-export-html-table-tag
11130 Org mode tables are exported to HTML using the table tag defined in
11131 ~org-export-html-table-tag~.  The default setting makes tables without
11132 cell borders and frame.  If you would like to change this for
11133 individual tables, place something like the following before the
11134 table:
11136 #+cindex: #+CAPTION
11137 #+cindex: #+ATTR_HTML
11138 #+begin_example
11139    ,#+CAPTION: This is a table with lines around and between cells
11140    ,#+ATTR_HTML: border="2" rules="all" frame="border"
11141 #+end_example
11143 *** Images in HTML export
11144     :PROPERTIES:
11145     :DESCRIPTION: How to insert figures into HTML output
11146     :END:
11147 #+cindex: images, inline in HTML
11148 #+cindex: inlining images in HTML
11149 #+vindex: org-export-html-inline-images
11151 HTML export can inline images given as links in the Org file, and it
11152 can make an image the clickable part of a link.  By default, images are
11153 inlined if a link does not have a description.[fn:120] So
11154 ~[[file:myimg.jpg]]~ will be inlined, while ~[[file:myimg.jpg][the
11155 image]]~ will just produce a link {{{samp(the image)}}} that points to
11156 the image.  If the description part itself is a ~file:~ link or
11157 a ~http:~ URL pointing to an image, this image will be inlined and
11158 activated so that clicking on the image will activate the link.  For
11159 example, to include a thumbnail that will link to a high resolution
11160 version of the image, you could use:
11162 #+begin_example
11163    [[file:highres.jpg][file:thumb.jpg]]
11164 #+end_example
11166 If you need to add attributes to an inlined image, use a ~#+ATTR_HTML~.
11167 In the example below we specify the ~alt~ and ~title~ attributes to
11168 support text viewers and accessibility, and align it to the right.
11170 #+cindex: #+CAPTION
11171 #+cindex: #+ATTR_HTML
11172 #+begin_example
11173    ,#+CAPTION: A black cat stalking a spider
11174    ,#+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
11175    [[./img/a.jpg]]
11176 #+end_example
11178 {{{noindent}}} You could use ~http~ addresses just as well.
11180 *** Math formatting in HTML export
11181     :PROPERTIES:
11182     :DESCRIPTION: Beautiful math also on the web
11183     :END:
11184 #+cindex: MathJax
11185 #+cindex: dvipng
11187 LaTeX math snippets (see [[LaTeX fragments]]) can be displayed in two
11188 different ways on HTML pages.  The default is to use the [[http://www.mathjax.org][MathJax system]]
11189 which should work out of the box with Org mode installation because
11190 ~http://orgmode.org~ serves {{{file(MathJax)}}} for Org mode users for
11191 small applications and for testing purposes.[fn:121] To configure
11192 {{{file(MathJax)}}}, use the variable
11193 ~org-export-html-mathjax-options~ or insert something like the
11194 following into the buffer:
11196 #+begin_example
11197    ,#+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
11198 #+end_example
11200 {{{noindent}}} See the docstring of the variable
11201 ~org-export-html-mathjax-options~ for the meaning of the parameters in
11202 this line.
11204 If you prefer, you can also request that LaTeX fragments are
11205 processed into small images that will be inserted into the browser
11206 page.  Before the availability of MathJax, this was the default method
11207 for Org files.  This method requires that the {{{file(dvipng)}}}
11208 program is available on your system.  You can still get this processing
11209 with the following option:
11211 #+begin_example
11212    ,#+OPTIONS: LaTeX:dvipng
11213 #+end_example
11215 *** Text areas in HTML export
11216     :PROPERTIES:
11217     :DESCRIPTION: An alternate way to show an example
11218     :END:
11219 #+cindex: text areas, in HTML
11221 An alternative way to publish literal code examples in HTML is to use
11222 text areas, where the example can even be edited before pasting it
11223 into an application.  It is triggered by a ~-t~ switch at an ~example~
11224 or ~src~ block.  Using this switch disables any options for syntax and
11225 label highlighting, and line numbering, which may be present.  You may
11226 also use ~-h~ and ~-w~ switches to specify the height and width of the
11227 text area, which default to the number of lines in the example, and
11228 80, respectively.  For example
11230 #+begin_example
11231    ,#+BEGIN_EXAMPLE -t -w 40
11232      (defun org-xor (a b)
11233         "Exclusive or."
11234         (if a (not b) b))
11235    ,#+END_EXAMPLE
11236 #+end_example
11238 *** CSS support
11239     :PROPERTIES:
11240     :DESCRIPTION: Changing the appearance of the output
11241     :END:
11242 #+cindex: CSS, for HTML export
11243 #+cindex: HTML export, CSS
11244 #+vindex: org-export-html-todo-kwd-class-prefix
11245 #+vindex: org-export-html-tag-class-prefix
11247 You can also give style information for the exported file.  The HTML
11248 exporter assigns the following special CSS classes to appropriate
11249 parts of the document---your style specifications may change these, in
11250 addition to any of the standard classes like for headlines, tables,
11251 etc.[fn:122]
11253 #+attr_texinfo: :table-type table :indic @code
11254 - p.author ::           author information, including email
11255 - p.date ::             publishing date
11256 - p.creator ::           creator info, about org mode version
11257 - .title ::             document title
11258 - .todo ::              TODO keywords, all not-done states
11259 - .done ::              the DONE keywords, all states that count as done
11260 - .WAITING ::           each TODO keyword also uses a class named after itself
11261 - .timestamp ::         timestamp
11262 - .timestamp-kwd ::     keyword associated with a timestamp, like SCHEDULED
11263 - .timestamp-wrapper ::  span around keyword plus timestamp
11264 - .tag ::               tag in a headline
11265 - ._HOME ::             each tag uses itself as a class, "@" replaced by "_"
11266 - .target ::            target for links
11267 - .linenr ::            the line number in a code example
11268 - .code-highlighted ::  for highlighting referenced code lines
11269 - div.outline-N ::      div for outline level N (headline plus text))
11270 - div.outline-text-N :: extra div for text at outline level N
11271 - .section-number-N ::  section number in headlines, different for each level
11272 - div.figure ::         how to format an inlined image
11273 - pre.src ::            formatted source code
11274 - pre.example ::         normal example
11275 - p.verse ::            verse paragraph
11276 - div.footnotes ::      footnote section headline
11277 - p.footnote ::         footnote definition paragraph, containing a footnote
11278 - .footref ::           a footnote reference number (always a <sup>)
11279 - .footnum ::           footnote number in footnote definition (always <sup>)
11282 #+vindex: org-export-html-style-default
11283 #+vindex: org-export-html-style-include-default
11284 #+vindex: org-export-html-style
11285 #+vindex: org-export-html-extra
11286 #+vindex: org-export-html-style-default
11288 Each exported file contains a compact default style that defines these
11289 classes in a basic way.[fn:123]  You may overwrite these
11290 settings, or add to them by using the variables ~org-export-html-style~
11291 (for Org-wide settings) and ~org-export-html-style-extra~ (for more
11292 fine-grained settings, like file-local settings).  To set the latter variable
11293 individually for each file, you can use a ~#+STYLE:~ line:
11295 #+cindex: #+STYLE
11296 #+begin_example
11297    ,#+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
11298 #+end_example
11300 {{{noindent}}} For longer style definitions, you can use several such
11301 lines.  You could also directly write a ~<style>~ ~</style>~ section in
11302 this way, without referring to an external file.
11304 In order to add styles to a subtree, use the ~:HTML_CONTAINER_CLASS:~
11305 property to assign a class to the tree.  In order to specify CSS styles
11306 for a particular headline, you can use the id specified in a
11307 ~:CUSTOM_ID:~ property.
11309 #  FIXME: More about header and footer styles
11310 #  FIXME: Talk about links and targets.
11312 *** JavaScript support
11313     :PROPERTIES:
11314     :DESCRIPTION: Info and folding in a web browser
11315     :END:
11316 #+cindex: Rose, Sebastian
11318 Sebastian Rose has written a JavaScript program especially designed to
11319 enhance the web viewing experience of HTML files created with Org.  This
11320 program allows you to view large files in two different ways.  The first one
11321 is an /Info/-like mode where each section is displayed separately and
11322 navigation can be done with the {{{kbd(n)}}} and {{{kbd(p)}}} keys (and some other keys
11323 as well, press {{{kbd(?)}}} for an overview of the available keys).  The second
11324 view type is a /folding/ view much like Org provides inside Emacs.  The
11325 script is available at [[http://orgmode.org/org-info.js]] and you can find
11326 the documentation for it at [[http://orgmode.org/worg/code/org-info-js/]].
11327 We host the script at our site, but if you use it a lot, you might
11328 not want to be dependent on ~orgmode.org~ and prefer to install a local
11329 copy on your own web server.
11331 To use the script, you need to make sure that the
11332 {{{file(org-jsinfo.el)}}} module gets loaded.  It should be loaded by
11333 default, but you can try {{{ksksksk(M-x customize-variable,RET,org-modules,RET)}}} 
11334 to convince yourself that this is indeed the case.  All it then takes to make use of the program
11335 is adding a single line to the Org file:
11337 #+cindex: #+INFOJS_OPT
11338 #+begin_example
11339    ,#+INFOJS_OPT: view:info toc:nil
11340 #+end_example
11342 {{{noindent}}} If this line is found, the HTML header will
11343 automatically contain the code needed to invoke the script.  Using the
11344 line above, you can set the following viewing options:
11346 #+attr_texinfo: :table-type table :indic @code
11347 - path: ::   
11349   The path to the script.  The default is to grab the script from
11350   [[http://orgmode.org/org-info.js]], but you might want to have
11351   a local copy and use a path like {{{samp(../scripts/org-info.js)}}}.
11353 - view: ::   
11355   Initial view when the website is first shown.  Possible values are:
11356   
11357   - info ::     Info-like interface with one section per page.
11358   - overview :: Folding interface, initially showing only top-level.
11359   - content ::  Folding interface, starting with all headlines visible.
11360   - showall ::  Folding interface, all headlines and text visible.
11362 - sdepth: :: 
11364   Maximum headline level that will still become an independent section
11365   for info and folding modes.  The default is taken from
11366   ~org-export-headline-levels~ (= the ~H~ switch in ~#+OPTIONS~).  If
11367   this is smaller than in ~org-export-headline-levels~, each
11368   info/folding section can still contain child headlines.
11370 - toc: ::    
11372   Should the table of contents /initially/ be visible? Even when ~nil~,
11373   you can always get to the "toc" with {{{kbd(i)}}}.
11375 - tdepth: :: 
11377   The depth of the table of contents.  The defaults are taken from the
11378   variables ~org-export-headline-levels~ and ~org-export-with-toc~.
11380 - ftoc: ::   
11382   Does the CSS of the page specify a fixed position for the "toc"? If
11383   yes, the toc will never be displayed as a section.
11385 - ltoc: ::   
11387   Should there be short contents (children) in each section? Make this
11388   ~above~ if the section should be above initial text.
11390 - mouse: ::  
11392   Headings are highlighted when the mouse is over them.  Should be
11393   {{{samp(underline)}}} (default) or a background color like
11394   {{{samp(#cccccc)}}}.
11396 - buttons: :: 
11398   Should view-toggle buttons be everywhere? When ~nil~ (the default),
11399   only one such button will be present.
11402 #+vindex: org-infojs-options
11403 #+vindex: org-export-html-use-infojs
11405 {{{noindent}}} You can choose default values for these options by
11406 customizing the variable ~org-infojs-options~.  If you always want to
11407 apply the script to your pages, configure the variable
11408 ~org-export-html-use-infojs~.
11410 ** LaTeX and PDF export
11411    :PROPERTIES:
11412    :DESCRIPTION: Exporting to LaTeX and processing to PDF
11413    :END:
11414 #+cindex: @LaTeX{} export
11415 #+cindex: PDF export
11416 #+cindex: Guerry, Bastien
11418 Org mode contains a LaTeX exporter written by Bastien Guerry.  With
11419 further processing, this backend is also used to produce PDF
11420 output.[fn:124] Since the LaTeX output uses {{{file(hyperref)}}} to
11421 implement links and cross references, the PDF output file will be
11422 fully linked.  Beware of the fact that your ~org~ file has to be
11423 properly structured in order to be correctly exported: respect the
11424 hierarchy of sections.
11426 *** LaTeX/PDF export commands
11427     :PROPERTIES:
11428     :DESCRIPTION: Invoking export to LaTeX/PDF
11429     :END:
11430 #+cindex: region, active
11431 #+cindex: active region
11432 #+cindex: transient-mark-mode
11434 #+attr_texinfo: :table-type table :indic @asis
11435 - {{{kbd(C-c C-e l)}}}, ~org-export-as-latex~ ::
11436   #+kindex: C-c C-e l
11437   #+cindex: property EXPORT_FILE_NAME
11439   Export as a LaTeX file.  For an Org file {{{file(myfile.org)}}}, the
11440   LaTeX file will be {{{file(myfile.tex)}}}.  The file will be
11441   overwritten without warning.  If there is an active region, only the
11442   active region will be exported.[fn:125] If the selected region is a
11443   single tree, the tree head will become the document title.[fn:126] If
11444   the tree head entry has or inherits an ~EXPORT_FILE_NAME~ property,
11445   that name will be used for the export.
11447 - {{{kbd(C-c C-e L)}}}, ~org-export-as-latex-to-buffer~ ::
11448   #+kindex: C-c C-e L
11450   Export to a temporary buffer.  Do not create a file.
11452 - {{{kbd(C-c C-e v l/L)}}} ::
11454   Export only the visible part of the document.
11456 - {{{kbd(M-x org-export-region-as-latex)}}} ::
11458   Convert the region to LaTeX under the assumption that it was in Org
11459   mode syntax before.  This is a global command that can be invoked in
11460   any buffer.
11462 - {{{kbd(M-x org-replace-region-by-latex)}}} ::
11464   Replace the active region (assumed to be in Org mode syntax) by
11465   LaTeX code.
11467 - {{{kbd(C-c C-e p)}}}, ~org-export-as-pdf~ ::
11468   #+kindex: C-c C-e p
11470   Export as LaTeX and then process to PDF.
11472 - {{{kbd(C-c C-e d)}}}, ~org-export-as-pdf-and-open~ ::
11473   #+kindex: C-c C-e d
11475   Export as LaTeX and then process to PDF, then open the resulting
11476   PDF file.
11479 #+cindex: headline levels, for exporting
11480 #+vindex: org-latex-low-levels
11482 In the exported version, the first 3 outline levels will become
11483 headlines, defining a general document structure.  Additional levels
11484 will be exported as description lists.  The exporter can ignore them or
11485 convert them to a custom string depending on ~org-latex-low-levels~.
11487 If you want that transition to occur at a different level, specify it
11488 with a numeric prefix argument, e.g.:
11490 #+begin_example
11491    C-2 C-c C-e l
11492 #+end_example
11494 {{{noindent}}} The example setting creates two levels of headings and
11495 exports the rest as list items.
11497 *** Header and sectioning
11498     :PROPERTIES:
11499     :DESCRIPTION: Setting up the export file structure
11500     :TITLE:    Header and sectioning structure
11501     :END:
11502 #+cindex: @LaTeX{} class
11503 #+cindex: @LaTeX{} sectioning structure
11504 #+cindex: @LaTeX{} header
11505 #+cindex: header, for @LaTeX{} files
11506 #+cindex: sectioning structure, for @LaTeX{} export
11508 By default, the LaTeX output uses the class ~article~.
11510 #+vindex: org-export-latex-default-class
11511 #+vindex: org-export-latex-classes
11512 #+vindex: org-export-latex-default-packages-alist
11513 #+vindex: org-export-latex-packages-alist
11514 #+cindex: #+LaTeX_HEADER
11515 #+cindex: #+LaTeX_CLASS
11516 #+cindex: #+LaTeX_CLASS_OPTIONS
11517 #+cindex: property, LaTeX_CLASS
11518 #+cindex: property, LaTeX_CLASS_OPTIONS
11520 You can change this globally by setting a different value for
11521 ~org-export-latex-default-class~ or locally by adding an option like
11522 ~#+LaTeX_CLASS: myclass~ in your file, or with a ~:LaTeX_CLASS:~
11523 property that applies when exporting a region containing only this
11524 (sub)tree.  The class must be listed in ~org-export-latex-classes~.
11525 This variable defines a header template for each class, and allows you
11526 to define the sectioning structure for each class.[fn:127] You can
11527 also define your own classes there.  ~#+LaTeX_CLASS_OPTIONS~ or a
11528 ~:LaTeX_CLASS_OPTIONS:~ property can specify the options for the
11529 ~\documentclass~ macro.  The options to documentclass have to be
11530 provided, as expected by LaTeX, within square brackets.  You can
11531 also use ~#+LaTeX_HEADER: \usepackage{xyz}~ to add lines to the
11532 header.  See the docstring of ~org-export-latex-classes~ for more
11533 information.  An example is shown below.
11535 #+begin_example
11536    ,#+LaTeX_CLASS: article
11537    ,#+LaTeX_CLASS_OPTIONS: [a4paper]
11538    ,#+LaTeX_HEADER: \usepackage{xyz}
11540    ,* Headline 1
11541      some text
11542 #+end_example
11544 *** Quoting LaTeX code
11545     :PROPERTIES:
11546     :DESCRIPTION: Incorporating literal LaTeX code
11547     :END:
11549 Embedded LaTeX as described in [[Embedded LaTeX]], will be correctly
11550 inserted into the LaTeX file.  This includes simple macros like
11551 ~\ref{LABEL}~ to create a cross reference to a figure.  Furthermore,
11552 you can add special code that should only be present in LaTeX export
11553 with the following constructs:
11555 #+cindex: #+LaTeX
11556 #+cindex: #+BEGIN_LaTeX
11557 #+begin_example
11558    ,#+LaTeX: Literal LaTeX code for export
11559 #+end_example
11561 {{{noindent}}} or
11563 #+cindex: #+BEGIN_LaTeX
11565 #+begin_example
11566    ,#+BEGIN_LaTeX
11567    All lines between these markers are exported literally
11568    ,#+END_LaTeX
11569 #+end_example
11571 *** Tables in LaTeX export
11572     :PROPERTIES:
11573     :DESCRIPTION: Options for exporting tables to LaTeX
11574     :END:
11575 #+cindex: tables, in @LaTeX{} export
11577 For LaTeX export of a table, you can specify a label, a caption and
11578 placement options (see [[Images and tables]]).  You can also use the
11579 ~ATTR_LaTeX~ line to request a ~longtable~ environment for the
11580 table, so that it may span several pages, or to change the default table
11581 environment from ~table~ to ~table*~ or to change the default inner
11582 tabular environment to ~tabularx~ or ~tabulary~.  Finally, you can
11583 set the alignment string, and (with ~tabularx~ or ~tabulary~) the
11584 width:
11586 #+cindex: #+CAPTION
11587 #+cindex: #+LABEL
11588 #+cindex: #+ATTR_LaTeX
11589 #+begin_example
11590    ,#+CAPTION: A long table
11591    ,#+LABEL: tbl:long
11592    ,#+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
11593    | ..... | ..... |
11594    | ..... | ..... |
11595 #+end_example
11597 or to specify a multicolumn table with ~tabulary~:
11599 #+cindex: #+CAPTION
11600 #+cindex: #+LABEL
11601 #+cindex: #+ATTR_LaTeX
11602 #+begin_example
11603    ,#+CAPTION: A wide table with tabulary
11604    ,#+LABEL: tbl:wide
11605    ,#+ATTR_LaTeX: table* tabulary width=\textwidth
11606    | ..... | ..... |
11607    | ..... | ..... |
11608 #+end_example
11610 *** Images in LaTeX export
11611     :PROPERTIES:
11612     :DESCRIPTION: How to insert figures into LaTeX output
11613     :END:
11614 #+cindex: images, inline in LaTeX
11615 #+cindex: inlining images in LaTeX
11617 Images that are linked to without a description part in the link, like
11618 ~[[file:img.jpg]]~ or ~[[./img.jpg]]~ will be inserted into the PDF
11619 output file resulting from LaTeX processing.  Org will use an
11620 ~\includegraphics~ macro to insert the image.  If you have specified
11621 a caption and/or a label as described in [[Images and tables]], the
11622 figure will be wrapped into a ~figure~ environment and thus become
11623 a floating element.  You can use an ~#+ATTR_LaTeX:~ line to specify
11624 various other options.  You can ask org to export an image as a float
11625 without specifying a label or a caption by using the keyword ~float~
11626 in this line.  Various optional arguments to the ~\includegraphics~
11627 macro can also be specified in this fashion.  To modify the placement
11628 option of the floating environment, add something like
11629 {{{samp(placement=[h!])}}} to the attributes.  It is to be noted this
11630 option can be used with tables as well.[fn:128]
11632 If you would like to let text flow around the image, add the word
11633 {{{samp(wrap)}}} to the ~#+ATTR_LaTeX:~ line, which will make the
11634 figure occupy the left half of the page.  To fine-tune, the ~placement~
11635 field will be the set of additional arguments needed by the
11636 ~wrapfigure~ environment.  Note that if you change the size of the
11637 image, you need to use compatible settings for ~\includegraphics~ and
11638 ~wrapfigure~.
11640 #+cindex: #+CAPTION
11641 #+cindex: #+LABEL
11642 #+cindex: #+ATTR_LaTeX
11643 #+begin_example
11644    ,#+CAPTION:    The black-body emission of the disk around HR 4049
11645    ,#+LABEL:      fig:SED-HR4049
11646    ,#+ATTR_LaTeX: width=5cm,angle=90
11647    [[./img/sed-hr4049.pdf]]
11649    ,#+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
11650    [[./img/hst.png]]
11651 #+end_example
11653 If you wish to include an image which spans multiple columns in a page, you
11654 can use the keyword ~multicolumn~ in the ~#+ATTR_LaTeX~ line.  This
11655 will export the image wrapped in a ~figure*~ environment.
11657 If you need references to a label created in this way, write
11658 ~\ref{fig:SED-HR4049}~ just like in LaTeX.
11660 *** Beamer class export
11661     :PROPERTIES:
11662     :DESCRIPTION: Turning the file into a presentation
11663     :END:
11665 The LaTeX class {{{file(beamer)}}} allows production of high
11666 quality presentations using LaTeX and pdf processing.  Org mode has
11667 special support for turning an Org mode file or tree into a
11668 {{{file(beamer)}}} presentation.
11670 When the LaTeX class for the current buffer (as set with ~#+LaTeX_CLASS:
11671 beamer~) or subtree (set with a ~LaTeX_CLASS~ property) is
11672 ~beamer~, a special export mode will turn the file or tree into a beamer
11673 presentation.  Any tree with not-too-deep level nesting should in principle be
11674 exportable as a beamer presentation.  By default, the top-level entries (or
11675 the first level below the selected subtree heading) will be turned into
11676 frames, and the outline structure below this level will become itemize lists.
11677 You can also configure the variable ~org-beamer-frame-level~ to a
11678 different level---then the hierarchy above frames will produce the sectioning
11679 structure of the presentation.
11681 A template for useful in-buffer settings or properties can be inserted
11682 into the buffer with 
11683 {{{kbd(M-x org-insert-beamer-options-template)}}}.  Among other things, this will
11684 install a column view format which is very handy for editing special
11685 properties used by beamer.
11687 You can influence the structure of the presentation using the following
11688 properties:
11690 #+attr_texinfo: :table-type table :indic @asis
11691 - ~BEAMER_env~ ::
11693   The environment that should be used to format this entry.  Valid
11694   environments are defined in the constant
11695   ~org-beamer-environments-default~, and you can define more in
11696   ~org-beamer-environments-extra~.  If this property is set, the entry
11697   will also get a ~:B_environment:~ tag to make this visible.  This tag
11698   has no semantic meaning, it is only a visual aid.
11700 - ~BEAMER_envargs~ ::
11702   The beamer-special arguments that should be used for the environment,
11703   like ~[t]~ or ~[<+->]~ of ~<2-3>~.  If the ~BEAMER_col~ property is
11704   also set, something like ~C[t]~ can be added here as well to set an
11705   options argument for the implied ~columns~ environment.  ~c[t]~ or
11706   ~c<2->~ will set an options for the implied ~column~ environment.
11708 - ~BEAMER_col~ ::
11710   The width of a column that should start with this entry.  If this
11711   property is set, the entry will also get a ~:BMCOL:~ property to make
11712   this visible.  Also this tag is only a visual aid.  When this is a plain
11713   number, it will be interpreted as a fraction of ~\textwidth~.
11714   Otherwise it will be assumed that you have specified the units, like
11715   {{{samp(3cm)}}}.  The first such property in a frame will start a
11716   ~columns~ environment to surround the columns.  This environment is
11717   closed when an entry has a ~BEAMER_col~ property with value 0 or 1, or
11718   automatically at the end of the frame.
11720 - ~BEAMER_extra~ ::
11722   Additional commands that should be inserted after the environment has
11723   been opened.  For example, when creating a frame, this can be used to
11724   specify transitions.
11727 Frames will automatically receive a ~fragile~ option if they contain
11728 source code that uses the verbatim environment.  Special {{{file(beamer)}}}
11729 specific code can be inserted using ~#+BEAMER:~ and
11730 ~#+BEGIN_BEAMER~ ...  ~#+END_BEAMER~ constructs, similar to other export
11731 backends, but with the difference that ~#+LaTeX:~ stuff will be included
11732 in the presentation as well.
11734 Outline nodes with ~BEAMER_env~ property value {{{samp(note)}}} or
11735 {{{samp(noteNH)}}} will be formatted as beamer notes, i,e, they will be wrapped
11736 into ~\note{...}~.  The former will include the heading as part of the
11737 note text, the latter will ignore the heading of that node.  To simplify note
11738 generation, it is actually enough to mark the note with a /tag/ (either
11739 ~:B_note:~ or ~:B_noteNH:~) instead of creating the
11740 ~BEAMER_env~ property.
11742 You can turn on a special minor mode ~org-beamer-mode~ for editing
11743 support with the following line:
11745 #+begin_example
11746    ,#+STARTUP: beamer
11747 #+end_example
11749 #+attr_texinfo: :table-type table :indic @asis
11750 - {{{kbd(C-c C-b)}}}, ~org-beamer-select-environment~ ::
11751   #+kindex: C-c C-b
11753   In ~org-beamer-mode~, this key offers fast selection of a beamer
11754   environment or the ~BEAMER_col~ property.
11757 Column view provides a great way to set the environment of a node and
11758 other important parameters.  Make sure you are using a COLUMN format
11759 that is geared toward this special purpose.  The command 
11760 {{{kbd(M-x org-insert-beamer-options-template)}}} defines such a format.
11762 Here is a simple example Org document that is intended for beamer export.
11764 #+begin_example
11765    ,#+LaTeX_CLASS: beamer
11766    ,#+TITLE: Example Presentation
11767    ,#+AUTHOR: Carsten Dominik
11768    ,#+LaTeX_CLASS_OPTIONS: [presentation]
11769    ,#+BEAMER_FRAME_LEVEL: 2
11770    ,#+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
11771    ,#+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
11773    ,* This is the first structural section
11775    ,** Frame 1 \\ with a subtitle
11776    ,*** Thanks to Eric Fraga                                      :BMCOL:B_block:
11777        :PROPERTIES:
11778        :BEAMER_env: block
11779        :BEAMER_envargs: C[t]
11780        :BEAMER_col: 0.5
11781        :END:
11782        for the first viable beamer setup in Org
11783    ,*** Thanks to everyone else                                   :BMCOL:B_block:
11784        :PROPERTIES:
11785        :BEAMER_col: 0.5
11786        :BEAMER_env: block
11787        :BEAMER_envargs: <2->
11788        :END:
11789        for contributing to the discussion
11790    ,**** This will be formatted as a beamer note                  :B_note:
11791    ,** Frame 2 \\ where we will not use columns
11792    ,*** Request                                                   :B_block:
11793        Please test this stuff!
11794        :PROPERTIES:
11795        :BEAMER_env: block
11796        :END:
11797 #+end_example
11799 For more information, see the documentation on Worg.
11801 ** DocBook export
11802    :PROPERTIES:
11803    :DESCRIPTION: Exporting to DocBook
11804    :END:
11805 #+cindex: DocBook export
11806 #+cindex: PDF export
11807 #+cindex: Cui, Baoqiu
11809 Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
11810 exported to DocBook format, it can be further processed to produce other
11811 formats, including PDF, HTML, man pages, etc., using many available DocBook
11812 tools and stylesheets.
11814 Currently DocBook exporter only supports DocBook V5.0.
11816 *** DocBook export commands
11817     :PROPERTIES:
11818     :DESCRIPTION: How to invoke DocBook export
11819     :END:
11820 #+cindex: region, active
11821 #+cindex: active region
11822 #+cindex: transient-mark-mode
11824 #+attr_texinfo: :table-type table :indic @asis
11825 - {{{kbd(C-c C-e D)}}}, ~org-export-as-docbook~ ::
11826   #+kindex: C-c C-e D
11827   #+cindex: property EXPORT_FILE_NAME
11829   Export as a DocBook file.  For an Org file, {{{file(myfile.org)}}}, the
11830   DocBook XML file will be {{{file(myfile.xml)}}}.  The file will be
11831   overwritten without warning.  If there is an active region, only the
11832   region will be exported.[fn:129] If the selected region is a single
11833   tree, the tree head will become the document title.[fn:130] If the
11834   tree head entry has, or inherits, an ~EXPORT_FILE_NAME~ property, that
11835   name will be used for the export.
11837 - {{{kbd(C-c C-e V)}}}, ~org-export-as-docbook-pdf-and-open~ ::
11838   #+kindex: C-c C-e V
11840   Export as a DocBook file, process to PDF, then open the resulting PDF
11841   file.
11843   #+vindex: org-export-docbook-xslt-proc-command
11844   #+vindex: org-export-docbook-xsl-fo-proc-command
11846   Note that, in order to produce PDF output based on an exported DocBook
11847   file, you need to have XSLT processor and XSL-FO processor software
11848   installed on your system.  Check variables
11849   ~org-export-docbook-xslt-proc-command~ and
11850   ~org-export-docbook-xsl-fo-proc-command~.
11852   #+vindex: org-export-docbook-xslt-stylesheet
11854   The stylesheet argument ~%s~ in variable
11855   ~org-export-docbook-xslt-proc-command~ is replaced by the value of
11856   variable ~org-export-docbook-xslt-stylesheet~, which needs to be set by
11857   the user.  You can also overrule this global setting on a per-file basis by
11858   adding an in-buffer setting ~#+XSLT:~ to the Org file.
11860 - {{{kbd(C-c C-e v D)}}} ::
11861   #+kindex: C-c C-e v D
11863   Export only the visible part of the document.
11865 *** Quoting DocBook code
11866     :PROPERTIES:
11867     :DESCRIPTION: Incorporating DocBook code in Org files
11868     :END:
11869 You can quote DocBook code in Org files and copy it verbatim into exported
11870 DocBook file with the following constructs:
11872 #+cindex: #+DOCBOOK
11873 #+cindex: #+BEGIN_DOCBOOK
11874 #+begin_example
11875    ,#+DOCBOOK: Literal DocBook code for export
11876 #+end_example
11878 {{{noindent}}} or
11879 #+cindex: #+BEGIN_DOCBOOK
11881 #+begin_example
11882    ,#+BEGIN_DOCBOOK
11883    All lines between these markers are exported by DocBook exporter
11884    literally.
11885    ,#+END_DOCBOOK
11886 #+end_example
11888 For example, you can use the following lines to include a DocBook warning
11889 admonition.  As to what this warning says, you should pay attention to the
11890 document context when quoting DocBook code in Org files.  You may make
11891 exported DocBook XML files invalid by not quoting DocBook code correctly.
11893 #+begin_example
11894    ,#+BEGIN_DOCBOOK
11895    <warning>
11896      <para>You should know what you are doing when quoting DocBook XML code
11897      in your Org file.  Invalid DocBook XML may be generated by
11898      DocBook exporter if you are not careful!</para>
11899    </warning>
11900    ,#+END_DOCBOOK
11901 #+end_example
11903 *** Recursive sections
11904     :PROPERTIES:
11905     :DESCRIPTION: Recursive sections in DocBook
11906     :END:
11907 #+cindex: DocBook recursive sections
11909 DocBook exporter exports Org files as articles using the ~article~
11910 element in DocBook.  Recursive sections, i.e., ~section~ elements, are
11911 used in exported articles.  Top level headlines in Org files are
11912 exported as top level sections, and lower level headlines are exported
11913 as nested sections.  The entire structure of Org files will be exported
11914 completely, no matter how many nested levels of headlines there are.
11916 Using recursive sections makes it easy to port and reuse exported
11917 DocBook code in other DocBook document types like ~book~ or ~set~.
11919 *** Tables in DocBook export
11920     :PROPERTIES:
11921     :DESCRIPTION: Tables are exported as HTML tables
11922     :END:
11923 #+cindex: tables, in DocBook export
11925 Tables in Org files are exported as HTML tables, which have been
11926 supported since DocBook V4.3.
11928 If a table does not have a caption, an informal table is generated
11929 using the ~informaltable~ element; otherwise, a formal table will be
11930 generated using the ~table~ element.
11932 *** Images in DocBook export
11933     :PROPERTIES:
11934     :DESCRIPTION: How to insert figures into DocBook output
11935     :END:
11936 #+cindex: images, inline in DocBook
11937 #+cindex: inlining images in DocBook
11939 Images that are linked to without a description part in the link, like
11940 ~[[file:img.jpg]]~ or ~[[./img.jpg]]~, will be exported to
11941 DocBook using ~mediaobject~ elements.  Each ~mediaobject~ element
11942 contains an ~imageobject~ that wraps an ~imagedata~ element.  If you
11943 have specified a caption for an image as described in [[Images and
11944 tables]], a ~caption~ element will be added in ~mediaobject~.  If a label
11945 is also specified, it will be exported as an ~xml:id~ attribute of the
11946 ~mediaobject~ element.
11948 #+vindex: org-export-docbook-default-image-attributes
11950 Image attributes supported by the ~imagedata~ element, like ~align~ or
11951 ~width~, can be specified in two ways: you can either customize
11952 variable ~org-export-docbook-default-image-attributes~ or use the
11953 ~#+ATTR_DOCBOOK:~ line.  Attributes specified in variable
11954 ~org-export-docbook-default-image-attributes~ are applied to all
11955 inline images in the Org file to be exported (unless they are
11956 overridden by image attributes specified in ~#+ATTR_DOCBOOK:~ lines).
11958 The ~#+ATTR_DOCBOOK:~ line can be used to specify additional image
11959 attributes or override default image attributes for individual images.
11960 If the same attribute appears in both the ~#+ATTR_DOCBOOK:~ line and
11961 variable ~org-export-docbook-default-image-attributes~, the former
11962 takes precedence.  Here is an example about how image attributes can be
11963 set:
11965 #+cindex: #+CAPTION
11966 #+cindex: #+LABEL
11967 #+cindex: #+ATTR_DOCBOOK
11968 #+begin_example
11969    ,#+CAPTION:    The logo of Org mode
11970    ,#+LABEL:      unicorn-svg
11971    ,#+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
11972    [[./img/org-mode-unicorn.svg]]
11973 #+end_example
11975 #+vindex: org-export-docbook-inline-image-extensions
11977 By default, DocBook exporter recognizes the following image file
11978 types: {{{file(jpeg)}}}, {{{file(jpg)}}}, {{{file(png)}}},
11979 {{{file(gif)}}}, and {{{file(svg)}}}.  You can customize variable
11980 ~org-export-docbook-inline-image-extensions~ to add more types to this
11981 list as long as DocBook supports them.
11983 *** Special characters
11984     :PROPERTIES:
11985     :DESCRIPTION: How to handle special characters
11986     :TITLE:    Special characters in DocBook export
11987     :END:
11988 #+vindex: org-export-docbook-doctype
11989 #+vindex: org-entities
11991 Special characters that are written in TeX-like syntax, such as
11992 ~\alpha~, ~\Gamma~, and ~\Zeta~, are supported by DocBook exporter.
11993 These characters are rewritten to XML entities, like ~&alpha;~,
11994 ~&Gamma;~, and ~&Zeta;~, based on the list saved in variable
11995 ~org-entities~.  As long as the generated DocBook file includes the
11996 corresponding entities, these special characters are recognized.
11998 You can customize variable ~org-export-docbook-doctype~ to include the
11999 entities you need.  For example, you can set variable
12000 ~org-export-docbook-doctype~ to the following value to recognize all
12001 special characters included in XHTML entities:
12003 #+begin_example
12004    "<!DOCTYPE article [
12005    <!ENTITY % xhtml1-symbol PUBLIC
12006    \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
12007    \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
12008    >
12009    %xhtml1-symbol;
12010    ]>
12011    "
12012 #+end_example
12014 ** OpenDocument Text export
12015    :PROPERTIES:
12016    :DESCRIPTION: Exporting to OpenDocument Text
12017    :END:
12018 #+cindex: K, Jambunathan
12019 #+cindex: ODT
12020 #+cindex: OpenDocument
12021 #+cindex: export, OpenDocument
12022 #+cindex: LibreOffice
12023 #+cindex: org-odt.el
12024 #+cindex: org-modules
12026 Org Mode supports export to OpenDocument Text (ODT) format using the
12027 {{{file(org-odt.el)}}} module.[fn:131] Documents created by this
12028 exporter use the {{{cite(OpenDocument-v1.2 specification)}}} and
12029 are compatible with LibreOffice 3.4.[fn:132]
12031 *** Pre-requisites for ODT export
12032     :PROPERTIES:
12033     :DESCRIPTION: What packages ODT exporter relies on
12034     :END:
12035 #+cindex: zip
12037 The ODT exporter relies on the {{{file(zip)}}} program to create the
12038 final output.  Check the availability of this program before proceeding
12039 further.
12041 *** ODT export commands
12042     :PROPERTIES:
12043     :DESCRIPTION: How to invoke ODT export
12044     :ALT_TITLE: Exporting to ODT
12045     :END:
12046 <<x-export-to-odt>>
12048 #+cindex: region, active
12049 #+cindex: active region
12050 #+cindex: transient-mark-mode
12052 #+attr_texinfo: :table-type table :indic @asis
12053 - {{{kbd(C-c C-e o)}}}, ~org-export-as-odt~ ::
12054   #+kindex: C-c C-e o
12055   #+cindex: property EXPORT_FILE_NAME
12057   Export as OpenDocument Text file.
12059   #+vindex: org-export-odt-preferred-output-format
12061   If ~org-export-odt-preferred-output-format~ is specified,
12062   automatically convert the exported file to that format.  See
12063   [[Automatically exporting to other formats]].
12065   For an Org file {{{file(myfile.org)}}}, the ODT file will be
12066   {{{file(myfile.odt)}}}.  The file will be overwritten without warning.
12067   If there is an active region, only the region will be
12068   exported.[fn:133] If the selected region is a single tree, the tree
12069   head will become the document title.[fn:134] If the tree head entry
12070   has, or inherits, an ~EXPORT_FILE_NAME~ property, that name will be
12071   used for the export.
12073 - {{{kbd(C-c C-e O)}}}, ~org-export-as-odt-and-open~ ::
12074   #+kindex: C-c C-e O
12076   Export as an OpenDocument Text file and open the resulting file.
12078   #+vindex: org-export-odt-preferred-output-format
12080   If ~org-export-odt-preferred-output-format~ is specified, open the
12081   converted file instead.  See [[x-export-to-other-formats][Automatically exporting to other formats]].
12083 *** Extending ODT export
12084     :PROPERTIES:
12085     :DESCRIPTION: How to produce ~doc~, ~pdf~ files
12086     :END:
12088 The ODT exporter can interface with a variety of document converters
12089 and supports popular converters out of the box.  As a result, you can
12090 use it to export to formats like {{{samp(doc)}}} or convert a document
12091 from one format (say {{{samp(csv)}}}) to another format (say
12092 {{{samp(ods)}}} or {{{samp(xls)}}}).
12094 #+cindex: @file{unoconv}
12095 #+cindex: LibreOffice
12097 If you have a working installation of LibreOffice, a document
12098 converter is pre-configured for you and you can use it right away.  If
12099 you would like to use {{{file(unoconv)}}} as your preferred converter,
12100 customize the variable ~org-export-odt-convert-process~ to point to
12101 ~unoconv~.  You can also use your own favorite converter or tweak the
12102 default settings of the {{{file(LibreOffice)}}} and
12103 {{{samp(unoconv)}}} converters.  See [[Configuring a document converter]].
12105 **** Automatically exporting to other formats
12106      :PROPERTIES:
12107      :DESCRIPTION: Automatic conversion to doc, docx, etc.
12108      :END:
12109 <<x-export-to-other-formats>>
12111 #+vindex: org-export-odt-preferred-output-format
12113 Very often, you will find yourself exporting to ODT format, only to
12114 immediately save the exported document to other formats like
12115 {{{samp(doc)}}}, {{{samp(docx)}}}, {{{samp(rtf)}}}, {{{samp(pdf)}}}
12116 etc.  In such cases, you can specify your preferred output format by
12117 customizing the variable ~org-export-odt-preferred-output-format~.
12118 This way, the export commands (see [[x-export-to-odt][Exporting to ODT]])
12119 can be extended to export to a format that is of immediate interest to
12120 you.
12122 **** Converting between document formats
12123      :PROPERTIES:
12124      :DESCRIPTION: Interacting with configured converters
12125      :END:
12126 # <<x-convert-to-other-formats>>
12128 There are many document converters in the wild that support
12129 conversion to and from various file formats, including, but not
12130 limited to the ODT format.  LibreOffice converter, mentioned above, is
12131 one such converter.  Once a converter is configured, you can interact
12132 with it using the following command.
12134 #+attr_texinfo: :table-type table :indic @asis
12135 - {{{kbd(M-x org-export-odt-convert)}}} ::
12136   #+vindex: org-export-odt-convert
12138   Convert an existing document from one format to another.  With a prefix
12139   argument, also open the newly produced file.
12141 *** Applying custom styles
12142     :PROPERTIES:
12143     :DESCRIPTION: How to apply custom styles to the output
12144     :END:
12145 #+cindex: styles, custom
12146 #+cindex: template, custom
12148 The ODT exporter ships with a set of OpenDocument styles 
12149 (see [[Working with OpenDocument style files]]) that ensure a well-formatted output.
12150 These factory styles, however, may not cater to your specific tastes.
12151 To customize the output, you can either modify the above styles files
12152 directly, or generate the required styles using an application like
12153 LibreOffice.  The latter method is suitable for expert and non-expert
12154 users alike, and is described here.
12156 Custom styles can be applied in three easy steps:
12158 1. Create a sample {{{file(example.org)}}} file with the below
12159    settings and export it to ODT format.
12161    #+begin_example
12162       ,#+OPTIONS: H:10 num:t
12163    #+end_example
12165 2. Open the above {{{file(example.odt)}}} using LibreOffice.  Use the
12166    {{{file(Stylist)}}} to locate the target styles---these typically
12167    have the {{{samp(Org)}}} prefix---and modify those to your taste.
12168    Save the modified file either as an OpenDocument Text
12169    ({{{file(.odt)}}}) or OpenDocument Template ({{{file(.ott)}}})
12170    file.
12172 3. Customize the variable ~org-export-odt-styles-file~ and point it to
12173    the newly created file.  For additional configuration options see
12174    [[x-overriding-factory-styles][Overriding factory styles]].
12176    #+cindex: #+ODT_STYLES_FILE
12177    #+vindex: org-export-odt-styles-file
12179    If you would like to choose a style on a per-file basis, you can use
12180    the ~#+ODT_STYLES_FILE~ option.  A typical setting will look like
12181    one of these two examples:
12183    #+begin_example
12184       ,#+ODT_STYLES_FILE: "/path/to/example.ott"
12185    #+end_example
12187    or
12189    #+begin_example
12190       ,#+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))
12191    #+end_example
12193 Although you can use third-party styles and templates for customizing
12194 your output, this will produce the desired output only if the template
12195 provides all style names that the {{{samp(ODT)}}} exporter relies
12196 upon.  Unless this condition is met, the output is going to be less
12197 than satisfactory.  It is highly recommended that you only work with
12198 templates that are directly derived from the factory settings.
12200 *** Links in ODT export
12201     :PROPERTIES:
12202     :DESCRIPTION: How links will be interpreted and formatted
12203     :END:
12204 #+cindex: tables, in DocBook export
12206 ODT exporter creates native cross-references for internal links.  It
12207 creates Internet-style links for all other links.
12209 A link with no description and destined to a regular (un-itemized)
12210 outline heading is replaced with a cross-reference and section number
12211 of the heading.
12213 A ~\ref{label}~-style reference to an image, table etc.  is replaced
12214 with a cross-reference and sequence number of the labeled entity.  See
12215 [[Labels and captions in ODT export]].
12217 *** Tables in ODT export
12218     :PROPERTIES:
12219     :DESCRIPTION: How tables are exported
12220     :END:
12222 #+cindex: tables, in DocBook export
12224 Export of native Org mode tables (see [[Tables]]) and simple
12225 {{{file(table.el)}}} tables is supported.  However, export of complex
12226 {{{file(table.el)}}} tables---tables that have column or row
12227 spans---is not supported.  Such tables are stripped from the exported
12228 document.
12230 By default, a table is exported with top and bottom frames and with
12231 rules separating row and column groups (see [[Column groups]]).
12232 Furthermore, all tables are typeset to occupy the same width.  If the
12233 table specifies alignment and relative width for its columns (see
12234 [[Column width and alignment]]) then these are honored on export.[fn:135]
12236 #+cindex: #+ATTR_ODT
12238 You can control the width of the table by specifying ~:rel-width~
12239 property using an ~#+ATTR_ODT~ line.
12241 For example, consider the following table which makes use of all the
12242 rules mentioned above.
12244 #+begin_example
12245    #+ATTR_ODT: :rel-width 50
12246    | Area/Month    |   Jan |   Feb |   Mar |   Sum |
12247    |---------------+-------+-------+-------+-------|
12248    | /             |     < |       |       |     < |
12249    | <l13>         |  <r5> |  <r5> |  <r5> |  <r6> |
12250    | North America |     1 |    21 |   926 |   948 |
12251    | Middle East   |     6 |    75 |   844 |   925 |
12252    | Asia Pacific  |     9 |    27 |   790 |   826 |
12253    |---------------+-------+-------+-------+-------|
12254    | Sum           |    16 |   123 |  2560 |  2699 |
12255 #+end_example
12257 On export, the table will occupy 50% of text area.  The columns will be
12258 sized (roughly) in the ratio of 13:5:5:5:6.  The first column will be
12259 left-aligned and rest of the columns will be right-aligned.  There will
12260 be vertical rules after separating the header and last columns from
12261 other columns.  There will be horizontal rules separating the header
12262 and last rows from other rows.
12264 If you are not satisfied with the above formatting options, you can
12265 create custom table styles and associate them with a table using the
12266 ~#+ATTR_ODT~ line.  See [[Customizing tables in ODT export]].
12268 *** Images in ODT export
12269     :PROPERTIES:
12270     :DESCRIPTION: How to insert images
12271     :END:
12272 #+cindex: images, embedding in ODT
12273 #+cindex: embedding images in ODT
12275 You can embed images within the exported document by providing a link to the
12276 desired image file with no link description.  For example, to embed
12277 {{{samp(img.png)}}} do either of the following:
12279 #+begin_example
12280    [[file:img.png]]
12281 #+end_example
12283 #+begin_example
12284    [[./img.png]]
12285 #+end_example
12287 You can create clickable images by providing a link whose description
12288 is a link to an image file.  For example, to embed an image
12289 {{{file(org-mode-unicorn.png)}}}, which when clicked jumps to
12290 [[http://Orgmode.org]] website, do the following:
12292 #+begin_example
12293    [[http://orgmode.org][./org-mode-unicorn.png]]
12294 #+end_example
12296 #+cindex: #+ATTR_ODT
12298 You can control the size and scale of the embedded images using the
12299 ~#+ATTR_ODT~ attribute.
12301 #+cindex: identify, ImageMagick
12302 #+vindex: org-export-odt-pixels-per-inch
12304 The exporter specifies the desired size of the image in the final
12305 document in units of centimeters.  In order to scale the embedded
12306 images, the exporter queries for pixel dimensions of the images using
12307 either ImageMagick's {{{file(identify)}}} program, or Emacs'
12308 `create-image' and `image-size' APIs.[fn:136] The pixel dimensions are
12309 subsequently converted to centimeters using
12310 ~org-export-odt-pixels-per-inch~.  The default value of this variable
12311 is set to ~display-pixels-per-inch~.  You can tweak this variable to
12312 achieve the best results.
12314 The examples below illustrate the various possibilities.
12316 #+attr_texinfo: :table-type table :indic @asis
12317 - Explicitly size the image ::
12319   To embed {{{file(img.png)}}} as a 10 cm x 10 cm image, do the
12320   following:
12322   #+begin_example
12323      #+ATTR_ODT: :width 10 :height 10
12324      [[./img.png]]
12325   #+end_example
12327 - Scale the image ::
12329   To embed {{{file(img.png)}}} at half its size, do the following:
12331   #+begin_example
12332      #+ATTR_ODT: :scale 0.5
12333      [[./img.png]]
12334   #+end_example
12336 - Scale the image to a specific width ::
12338   To embed {{{file(img.png)}}} with a width of 10 cm while retaining the
12339   original height:width ratio, do the following:
12341   #+begin_example
12342      #+ATTR_ODT: :width 10
12343      [[./img.png]]
12344   #+end_example
12346 - Scale the image to a specific height ::
12348   To embed {{{file(img.png)}}} with a height of 10 cm while retaining
12349   the original height:width ratio, do the following:
12351   #+begin_example
12352      #+ATTR_ODT: :height 10
12353      [[./img.png]]
12354   #+end_example
12356 #+cindex: #+ATTR_ODT
12358 You can control the manner in which an image is anchored by setting
12359 the ~:anchor~ property of it's ~#+ATTR_ODT~ line.  You can specify one
12360 of the the following three values for the ~:anchor~ property -
12361 {{{samp("as-char")}}}, {{{samp("paragraph")}}} and {{{samp("page")}}}.
12363 To create an image that is anchored to a page, do the following:
12365 #+begin_example
12366    #+ATTR_ODT: :anchor "page"
12367    [[./img.png]]
12368 #+end_example
12370 *** Math formatting in ODT export
12371     :PROPERTIES:
12372     :DESCRIPTION: How LaTeX fragments are formatted
12373     :END:
12375 The ODT exporter has special support for handling math.
12377 **** Working with LaTeX math snippets
12378      :PROPERTIES:
12379      :DESCRIPTION: How to embed LaTeX math fragments
12380      :END:
12382 LaTeX math snippets (see [[LaTeX fragments]]) can be embedded in the ODT
12383 document in one of the following ways:
12385 #+cindex: MathML
12386 #+attr_texinfo: :table-type table :indic @asis
12387 - MathML ::
12389   This option is activated on a per-file basis with the following option:
12391   #+begin_example
12392      ,#+OPTIONS: LaTeX:t
12393   #+end_example
12395   With this option, LaTeX fragments are first converted into MathML
12396   fragments using an external LaTeX-to-MathML converter program.  The
12397   resulting MathML fragments are then embedded as an OpenDocument Formula in
12398   the exported document.
12400   #+vindex: org-latex-to-mathml-convert-command
12401   #+vindex: org-latex-to-mathml-jar-file
12403   You can specify the LaTeX-to-MathML converter by customizing the variables
12404   ~org-latex-to-mathml-convert-command~ and
12405   ~org-latex-to-mathml-jar-file~.
12407   If you prefer to use {{{file(MathToWeb)}}} as your converter, you can
12408   configure the above variables as shown below.[fn:137]
12410   #+header: :eval no
12411   #+header: :exports code
12412   #+begin_src emacs-lisp
12413   (setq org-latex-to-mathml-convert-command
12414         "java -jar %j -unicode -force -df %o %I"
12415         org-latex-to-mathml-jar-file
12416         "/path/to/mathtoweb.jar")
12417   #+end_src
12419   You can use the following commands to quickly verify the reliability of
12420   the LaTeX-to-MathML converter.
12422   - {{{kbd(M-x org-export-as-odf)}}} ::
12424     Convert a LaTeX math snippet to an OpenDocument formula
12425     ({{{file(.odf)}}}) file.
12427   - {{{kbd(M-x org-export-as-odf-and-open)}}} ::
12429     Convert a LaTeX math snippet to an OpenDocument formula
12430     ({{{file(.odf)}}}) file and open the formula file with the
12431     system-registered application.
12433 - PNG images ::
12434   #+cindex: dvipng
12436   This option is activated on a per-file basis with
12438   #+begin_example
12439      ,#+OPTIONS: LaTeX:dvipng
12440   #+end_example
12442   With this option, LaTeX fragments are processed into PNG images and
12443   the resulting images are embedded in the exported document.  This
12444   method requires that the {{{file(dvipng)}}} program be available on
12445   your system.
12447 **** Working with MathML or OpenDocument formula files
12448      :PROPERTIES:
12449      :DESCRIPTION: How to embed equations in native format
12450      :END:
12452 For various reasons, you may find embedding LaTeX math snippets in
12453 an ODT document less than reliable.  In that case, you can embed a math
12454 equation by linking to its MathML ({{{file(.mml)}}}) source or its
12455 OpenDocument formula ({{{file(.odf)}}}) file as shown below:
12457 #+begin_example
12458    [[./equation.mml]]
12459 #+end_example
12463 #+begin_example
12464    [[./equation.odf]]
12465 #+end_example
12467 *** Labels and captions in ODT export
12468     :PROPERTIES:
12469     :DESCRIPTION: How captions are rendered
12470     :END:
12472 You can label and caption various category of objects---an inline
12473 image, a table, a LaTeX fragment or a Math formula---using
12474 ~#+LABEL~ and ~#+CAPTION~ lines.  See [[Images and tables]].  ODT exporter
12475 enumerates each labeled or captioned object of a given category
12476 separately.  As a result, each such object is assigned a sequence
12477 number based on order of its appearance in the Org file.
12479 In the exported document, a user-provided caption is augmented with
12480 the category and sequence number.  Consider the following inline image
12481 in an Org file:
12483 #+begin_example
12484    ,#+CAPTION: Bell curve
12485    ,#+LABEL:   fig:SED-HR4049
12486    [[./img/a.png]]
12487 #+end_example
12489 It could be rendered as shown below in the exported document.
12491 #+begin_example
12492    Figure 2: Bell curve
12493 #+end_example
12495 #+vindex: org-export-odt-category-strings
12497 You can modify the category component of the caption by customizing
12498 the variable ~org-export-odt-category-strings~.  For example, to tag
12499 all embedded images with the string {{{samp(Illustration)}}} (instead
12500 of the default {{{samp(Figure)}}}) use the following setting.
12502 #+header: :eval no
12503 #+header: :exports code
12504 #+begin_src emacs-lisp
12505 (setq org-export-odt-category-strings
12506       '(("en" "Table" "Illustration" "Equation" "Equation")))
12507 #+end_src
12509 With this, previous image will be captioned as below in the exported
12510 document.
12512 #+begin_example
12513    Illustration 2: Bell curve
12514 #+end_example
12516 *** Literal examples in ODT export
12517     :PROPERTIES:
12518     :DESCRIPTION: How source and example blocks are formatted
12519     :END:
12521 Export of literal examples (see [[Literal examples]]) with full
12522 fontification is supported.  Internally, the exporter relies on
12523 {{{file(htmlfontify.el)}}} to generate all style definitions needed
12524 for a fancy listing.[fn:138] The auto-generated styles have
12525 {{{samp(OrgSrc)}}} as prefix and inherit their color from the faces
12526 used by Emacs ~font-lock~ library for the source language.
12528 #+vindex: org-export-odt-fontify-srcblocks
12530 If you prefer to use your own custom styles for fontification, you can
12531 do so by customizing the variable
12532 ~org-export-odt-create-custom-styles-for-srcblocks~.
12534 #+vindex: org-export-odt-create-custom-styles-for-srcblocks
12536 You can turn off fontification of literal examples by customizing the
12537 variable ~org-export-odt-fontify-srcblocks~.
12539 *** Advanced topics in ODT export
12540     :PROPERTIES:
12541     :DESCRIPTION: Read this if you are a power user
12542     :END:
12544 If you rely heavily on ODT export, you may want to exploit the full
12545 set of features that the exporter offers.  This section describes
12546 features that would be of interest to power users.
12548 **** Configuring a document converter
12549      :PROPERTIES:
12550      :DESCRIPTION: How to register a document converter
12551      :END:
12552 #+cindex: convert
12553 #+cindex: doc, docx, rtf
12554 #+cindex: converter
12556 The ODT exporter can work with popular converters with little or no
12557 extra configuration from your side.  See [[Extending ODT export]].  If you
12558 are using a converter that is not supported by default or if you would
12559 like to tweak the default converter settings, proceed as below.
12561 #+attr_texinfo: :table-type table :indic @asis
12562 - Register the converter ::
12564   #+vindex: org-export-odt-convert-processes
12566   Name your converter and add it to the list of known converters by
12567   customizing the variable ~org-export-odt-convert-processes~.  Also
12568   specify how the converter can be invoked via command-line to effect
12569   the conversion.
12571 - Configure its capabilities ::
12573   #+vindex: org-export-odt-convert-capabilities
12574   # <<x-odt-converter-capabilities>>
12576   Specify the set of formats the converter can handle by customizing the
12577   variable ~org-export-odt-convert-capabilities~.  Use the default value
12578   for this variable as a guide for configuring your converter.  As suggested by
12579   the default setting, you can specify the full set of formats supported by the
12580   converter and not limit yourself to specifying formats that are related to
12581   just the OpenDocument Text format.
12583 - Choose the converter ::
12585   #+vindex: org-export-odt-convert-process
12587   Select the newly added converter as the preferred one by customizing the
12588   variable ~org-export-odt-convert-process~.
12590 **** Working with OpenDocument style files
12591      :PROPERTIES:
12592      :DESCRIPTION: Explore the internals
12593      :END:
12594 #+cindex: styles, custom
12595 #+cindex: template, custom
12597 This section explores the internals of the ODT exporter and the means
12598 by which it produces styled documents.  Read this section if you are
12599 interested in exploring the automatic and custom OpenDocument styles
12600 used by the exporter.
12602 # <<x-factory-styles>>
12604 The ODT exporter relies on two files for generating its output.
12605 These files are bundled with the distribution under the directory pointed to
12606 by the variable ~org-odt-styles-dir~.  The two files are:
12608 #+attr_texinfo: :table-type table :indic @asis
12609 - {{{file(OrgOdtStyles.xml)}}} ::
12610   <<x-orgodtstyles-xml>>
12612   This file contributes to the {{{file(styles.xml)}}} file of the final
12613   {{{samp(ODT)}}} document.  This file is modified to control outline
12614   numbering based on user settings, and To add styles generated by
12615   {{{file(htmlfontify.el)}}} for fontification of code blocks.
12617 - {{{file(OrgOdtContentTemplate.xml)}}} ::
12618   <<x-orgodtcontenttemplate-xml>>
12620   This file contributes to the {{{file(content.xml)}}} file of the final
12621   {{{samp(ODT)}}} document.  The contents of the Org outline are inserted
12622   between the ~<office:text>~ and ~</office:text>~
12623   elements of this file.
12625   In addition to serving as a template file for the final
12626   {{{file(content.xml)}}}, the file also contains automatic styles for
12627   formatting of tables which are referenced by the exporter, and
12628   ~<text:sequence-decl>~ ...  ~</text:sequence-decl>~
12629   elements that control how various entities---tables, images,
12630   equations, etc.---are numbered.
12633 <<x-overriding-factory-styles>>
12635 The following two variables control the location from which the ODT
12636 exporter picks up the custom styles and content template files.  You
12637 can customize these variables to override the factory styles used by
12638 the exporter.
12640 #+attr_texinfo: :table-type table :indic @asis
12641 - ~org-export-odt-styles-file~ ::
12642   <<x-org-export-odt-styles-file>>
12644   Use this variable to specify the {{{file(styles.xml)}}} that will be
12645   used in the final output.  You can specify one of the following values:
12647   - A {{{file(styles.xml)}}} file ::
12649     Use this file instead of the default {{{file(styles.xml)}}}
12651   - A {{{file(.odt)}}} or {{{file(.ott)}}} file ::
12653     Use the {{{file(styles.xml)}}} contained in the specified OpenDocument
12654     Text or Template file.
12656   - A {{{file(.odt)}}} or {{{file(.ott)}}} file and a subset of files contained within them ::
12658     Use the {{{file(styles.xml)}}} contained in the specified OpenDocument
12659     Text or Template file.  Additionally extract the specified member files
12660     and embed those within the final {{{samp(ODT)}}} document.
12662     Use this option if the {{{file(styles.xml)}}} file references
12663     additional files like header and footer images.
12665   - ~nil~ ::
12667     Use the default {{{file(styles.xml)}}}
12669 - ~org-export-odt-content-template-file~ ::
12670   <<x-org-export-odt-content-template-file>>
12672   Use this variable to specify the blank {{{file(content.xml)}}} that
12673   will be used in the final output.
12675 **** Creating one-off styles
12676      :PROPERTIES:
12677      :DESCRIPTION: How to produce custom highlighting, etc.
12678      :END:
12680 There are times when you would want one-off formatting in the exported
12681 document.  You can achieve this by embedding raw OpenDocument XML in
12682 the Org file.  The use of this feature is better illustrated with
12683 couple of examples.
12685 #+attr_texinfo: :table-type table :indic @asis
12686 - Embedding ODT tags as part of regular text ::
12688   You can include simple OpenDocument tags by prefixing them with
12689   {{{samp(@)}}}.  For example, to highlight a region of text do the
12690   following:
12692   #+begin_example
12693      @<text:span text:style-name="Highlight">This is a
12694      highlighted text@</text:span>.  But this is a
12695      regular text.
12696   #+end_example
12698   *Hint:* To see the above example in action, edit your
12699   {{{file(styles.xml)}}} (see [[x-orgodtstyles-xml][Factory styles]]) and
12700   add a custom {{{samp(Highlight)}}} style as shown below.
12702   #+begin_example
12703      <style:style style:name="Highlight" style:family="text">
12704        <style:text-properties fo:background-color="#ff0000"/>
12705      </style:style>
12706   #+end_example
12708 - Embedding a one-line OpenDocument XML ::
12710   You can add a simple OpenDocument one-liner using the ~#+ODT:~
12711   directive.  For example, to force a page break do the following:
12713   #+begin_example
12714      #+ODT: <text:p text:style-name="PageBreak"/>
12715   #+end_example
12717   *Hint:* To see the above example in action, edit your
12718   {{{file(styles.xml)}}} (see [[x-orgodtstyles-xml][Factory styles]]) and
12719   add a custom {{{samp(PageBreak)}}} style as shown below.
12721   #+begin_example
12722      <style:style style:name="PageBreak" style:family="paragraph"
12723                   style:parent-style-name="Text_20_body">
12724        <style:paragraph-properties fo:break-before="page"/>
12725      </style:style>
12726   #+end_example
12728 - Embedding a block of OpenDocument XML ::
12730   You can add a large block of OpenDocument XML using the
12731   ~#+BEGIN_ODT~ ...  ~#+END_ODT~ construct.
12733   For example, to create a one-off paragraph that uses bold text, do the
12734   following:
12736   #+begin_example
12737      #+BEGIN_ODT
12738      <text:p text:style-name="Text_20_body_20_bold">
12739      This paragraph is specially formatted and uses bold text.
12740      </text:p>
12741      #+END_ODT
12742   #+end_example
12744 **** Customizing tables in ODT export
12745      :PROPERTIES:
12746      :DESCRIPTION: How to define and use table templates
12747      :END:
12748 #+cindex: tables, in ODT export
12749 #+cindex: #+ATTR_ODT
12751 You can override the default formatting of the table by specifying a
12752 custom table style with the ~#+ATTR_ODT~ line.  For a discussion on
12753 default formatting of tables see [[Tables in ODT export]].
12755 This feature closely mimics the way table templates are defined in the
12756 OpenDocument-v1.2 specification.[fn:139]
12758 To have a quick preview of this feature, install the following setting and
12759 export the example table.
12761 #+header: :eval no
12762 #+header: :exports code
12763 #+begin_src emacs-lisp
12764   (setq org-export-odt-table-styles
12765         (append org-export-odt-table-styles
12766                 '(("TableWithHeaderRowAndColumn" "Custom"
12767                    ((use-first-row-styles . t)
12768                     (use-first-column-styles . t)))
12769                   ("TableWithFirstRowandLastRow" "Custom"
12770                    ((use-first-row-styles . t)
12771                     (use-last-row-styles . t))))))
12772 #+end_src
12774 #+begin_example
12775    ,#+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
12776    | Name  | Phone | Age |
12777    | Peter |  1234 |  17 |
12778    | Anna  |  4321 |  25 |
12779 #+end_example
12781 In the above example, you used a template named {{{samp(Custom)}}} and
12782 installed two table styles with the names
12783 {{{samp(TableWithHeaderRowAndColumn)}}} and
12784 {{{samp(TableWithFirstRowandLastRow)}}}.  (*Important:* The
12785 OpenDocument styles needed for producing the above template have been
12786 pre-defined for you.  These styles are available under the section
12787 marked {{{samp(Custom Table Template)}}} in
12788 {{{file(OrgOdtContentTemplate.xml)}}} (see
12789 [[x-orgodtcontenttemplate-xml][Factory styles]]).  If you need additional
12790 templates you have to define these styles yourself.
12793 To use this feature proceed as follows:
12795 #+attr_texinfo: :table-type table :indic @asis
12796 - Create a table template[fn:140] ::
12798   A table template is nothing but a set of {{{samp(table-cell)}}} and
12799   {{{samp(paragraph)}}} styles for each of the following table cell
12800   categories:
12802     - Body
12803     - First column
12804     - Last column
12805     - First row
12806     - Last row
12807     - Even row
12808     - Odd row
12809     - Even column
12810     - Odd Column
12812   The names for the above styles must be chosen based on the name of the
12813   table template using a well-defined convention.
12815   The naming convention is better illustrated with an example.  For a
12816   table template with the name {{{samp(Custom)}}}, the needed style
12817   names are listed in the following table.
12819   | Table cell type | ~table-cell~ style                     | ~paragraph~ style                           |
12820   |-----------------+----------------------------------------+---------------------------------------------|
12821   | Body            | {{{samp(CustomTableCell)}}}            | {{{samp(CustomTableParagraph)}}}            |
12822   | First column    | {{{samp(CustomFirstColumnTableCell)}}} | {{{samp(CustomFirstColumnTableParagraph)}}} |
12823   | Last column     | {{{samp(CustomLastColumnTableCell)}}}  | {{{samp(CustomLastColumnTableParagraph)}}}  |
12824   | First row       | {{{samp(CustomFirstRowTableCell)}}}    | {{{samp(CustomFirstRowTableParagraph)}}}    |
12825   | Last row        | {{{samp(CustomLastRowTableCell)}}}     | {{{samp(CustomLastRowTableParagraph)}}}     |
12826   | Even row        | {{{samp(CustomEvenRowTableCell)}}}     | {{{samp(CustomEvenRowTableParagraph)}}}     |
12827   | Odd row         | {{{samp(CustomOddRowTableCell)}}}      | {{{samp(CustomOddRowTableParagraph)}}}      |
12828   | Even column     | {{{samp(CustomEvenColumnTableCell)}}}  | {{{samp(CustomEvenColumnTableParagraph)}}}  |
12829   | Odd column      | {{{samp(CustomOddColumnTableCell)}}}   | {{{samp(CustomOddColumnTableParagraph)}}}   |
12832   To create a table template with the name {{{samp(Custom)}}}, define
12833   the above styles in the ~<office:automatic-styles>~ ...
12834   ~</office:automatic-styles>~ element of the content template file (see
12835   [[x-orgodtcontenttemplate-xml][Factory styles]]).
12837 - Define a table style[fn:141] ::
12839   #+vindex: org-export-odt-table-styles
12841   To define a table style, create an entry for the style in the variable
12842   ~org-export-odt-table-styles~ and specify the following:
12844     - the name of the table template created in step (1)
12845     - the set of cell styles in that template that are to be activated
12848   For example, the entry below defines two different table styles
12849   {{{samp(TableWithHeaderRowAndColumn)}}} and
12850   {{{samp(TableWithFirstRowandLastRow)}}} based on the same template
12851   {{{samp(Custom)}}}.  The styles achieve their intended effect by
12852   selectively activating the individual cell styles in that template.
12854   #+header: :eval no
12855   #+header: :exports code
12856   #+begin_src emacs-lisp
12857   (setq org-export-odt-table-styles
12858         (append org-export-odt-table-styles
12859                 '(("TableWithHeaderRowAndColumn" "Custom"
12860                    ((use-first-row-styles . t)
12861                     (use-first-column-styles . t)))
12862                   ("TableWithFirstRowandLastRow" "Custom"
12863                    ((use-first-row-styles . t)
12864                     (use-last-row-styles . t))))))
12865   #+end_src
12867 - Associate a table with the table style ::
12869   To do this, specify the table style created in step (2) as part of
12870   the ~ATTR_ODT~ line as shown below.
12872   #+begin_example
12873      ,#+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
12874      | Name  | Phone | Age |
12875      | Peter |  1234 |  17 |
12876      | Anna  |  4321 |  25 |
12877   #+end_example
12879 **** Validating OpenDocument XML
12880      :PROPERTIES:
12881      :DESCRIPTION: How to debug corrupt OpenDocument files
12882      :END:
12884 Occasionally, you will discover that the document created by the ODT
12885 exporter cannot be opened by your favorite application.  One of the
12886 common reasons for this is that the {{{file(.odt)}}} file is corrupt.
12887 In such cases, you may want to validate the document against the
12888 OpenDocument RELAX NG Compact Syntax (RNC) schema.
12890 For de-compressing the {{{file(.odt)}}} file[fn:142]:
12891 [[info:emacs#File Archives]].  For general help with validation (and
12892 schema-sensitive editing) of XML files: [[info:nxml-mode#Introduction]].
12893 #+vindex: org-export-odt-schema-dir
12895 If you have ready access to OpenDocument {{{file(.rnc)}}} files and
12896 the needed schema-locating rules in a single folder, you can customize
12897 the variable ~org-export-odt-schema-dir~ to point to that directory.
12898 The ODT exporter will take care of updating the
12899 ~rng-schema-locating-files~ for you.
12901 ** TaskJuggler export
12902    :PROPERTIES:
12903    :DESCRIPTION: Exporting to TaskJuggler
12904    :END:
12905 #+cindex: TaskJuggler export
12906 #+cindex: Project management
12908 [[http://www.taskjuggler.org/][TaskJuggler]] is a project management tool.  It provides an optimizing
12909 scheduler that computes your project time lines and resource
12910 assignments based on the project outline and the constraints that you
12911 have provided.
12913 The TaskJuggler exporter is a bit different from other exporters, such
12914 as the ~HTML~ and LaTeX exporters for example, in that it does not
12915 export all the nodes of a document or strictly follow the order of the
12916 nodes in the document.
12918 Instead the TaskJuggler exporter looks for a tree that defines the
12919 tasks and optionally trees that define the resources and reports for
12920 this project.  It then creates a TaskJuggler file based on these trees
12921 and the attributes defined in all the nodes.
12923 *** TaskJuggler export commands
12924     :PROPERTIES:
12925     :DESCRIPTION: Key bindings for TaskJuggler export
12926     :END:
12928 #+attr_texinfo: :table-type table :indic @asis
12929 - {{{kbd(C-c C-e j)}}}, ~org-export-as-taskjuggler~ ::
12930   #+kindex: C-c C-e j
12932   Export as a TaskJuggler file.
12934 - {{{kbd(C-c C-e J)}}}, ~org-export-as-taskjuggler-and-open~ ::
12935   #+kindex: C-c C-e J
12937   Export as a TaskJuggler file and then open the file with TaskJugglerUI
12938   (only for TaskJugglerUI 2.x).
12940 *** Tasks
12941     :PROPERTIES:
12942     :DESCRIPTION: Marking tasks for TaskJuggler export
12943     :END:
12944 #+vindex: org-export-taskjuggler-project-tag
12946 Create your tasks as you usually do with Org mode.  Assign efforts to
12947 each task using properties (it is easiest to do this in the column
12948 view).  You should end up with something similar to the example by
12949 Peter Jones in
12950 [[http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org]].
12951 Now mark the top node of your tasks with a tag named
12952 ~:taskjuggler_project:~ (or whatever you customized
12953 ~org-export-taskjuggler-project-tag~ to).  You are now ready to export
12954 the project plan with {{{kbd(C-c C-e J)}}} which will export the
12955 project plan and open a gantt chart in TaskJugglerUI.
12957 *** Resources
12958     :PROPERTIES:
12959     :DESCRIPTION: Define TaskJuggler resources
12960     :END:
12961 #+vindex: org-export-taskjuggler-resource-tag
12963 Next you can define resources and assign those to work on specific
12964 tasks.  You can group your resources hierarchically.  Tag the top node
12965 of the resources with ~:taskjuggler_resource:~ (or whatever you
12966 customized ~org-export-taskjuggler-resource-tag~ to).  You can
12967 optionally assign an identifier (named {{{samp(resource_id)}}}) to the
12968 resources (using the standard Org properties commands, see [[Property
12969 syntax]]) or you can let the exporter generate identifiers automatically
12970 (the exporter picks the first word of the headline as the identifier
12971 as long as it is unique---see the documentation of
12972 ~org-taskjuggler-get-unique-id~).  Using that identifier you can then
12973 allocate resources to tasks.  This is again done with the
12974 {{{samp(allocate)}}} property on the tasks.  Do this in column view or
12975 when on the task type 
12976 {{{ksksksk(C-c C-x p allocate,RET,<resource_id>,RET)}}}.
12978 Once the allocations are done you can again export to TaskJuggler and
12979 check in the Resource Allocation Graph which person is working on what
12980 task at what time.
12982 *** Export of properties
12983     :PROPERTIES:
12984     :DESCRIPTION: Which properties will be exported?
12985     :END:
12987 The exporter also takes TODO state information into consideration,
12988 i.e., if a task is marked as done it will have the corresponding
12989 attribute in TaskJuggler ({{{samp(complete 100)}}}).  Scheduling
12990 information is also taken into account to set start/end dates for
12991 tasks.
12993 The exporter will also export any property on a task resource or
12994 resource node which is known to TaskJuggler, such as
12995 {{{samp(limits)}}}, {{{samp(vacation)}}}, {{{samp(shift)}}},
12996 {{{samp(booking)}}}, {{{samp(efficiency)}}}, {{{samp(journalentry)}}},
12997 {{{samp(rate)}}} for resources or {{{samp(account)}}},
12998 {{{samp(start)}}}, {{{samp(note)}}}, {{{samp(duration)}}},
12999 {{{samp(end)}}}, {{{samp(journalentry)}}}, {{{samp(milestone)}}},
13000 {{{samp(reference)}}}, {{{samp(responsible)}}},
13001 {{{samp(scheduling)}}}, etc for tasks.
13003 *** Dependencies
13004     :PROPERTIES:
13005     :DESCRIPTION: How the exporter handles dependencies
13006     :END:
13008 The exporter will handle dependencies that are defined in the tasks
13009 either with the {{{samp(ORDERED)}}} attribute (see [[TODO dependencies]]),
13010 with the {{{samp(BLOCKER)}}} attribute (see {{{file(org-depend.el)}}})
13011 or alternatively with a {{{samp(depends)}}} attribute.  Both the
13012 {{{samp(BLOCKER)}}} and the {{{samp(depends)}}} attribute can be
13013 either {{{samp(previous-sibling)}}} or a reference to an identifier
13014 (named {{{samp(task_id)}}}) which is defined for another task in the
13015 project.  {{{samp(BLOCKER)}}} and the {{{samp(depends)}}} attribute can
13016 define multiple dependencies separated by either space or comma.  You
13017 can also specify optional attributes on the dependency by simply
13018 appending it.  The following examples should illustrate this:
13020 #+begin_example
13021    ,* Preparation
13022    ,  :PROPERTIES:
13023    ,  :task_id:  preparation
13024    ,  :ORDERED:  t
13025    ,  :END:
13026    ,* Training material
13027    ,  :PROPERTIES:
13028    ,  :task_id:  training_material
13029    ,  :ORDERED:  t
13030    ,  :END:
13031    ,** Markup Guidelines
13032    ,   :PROPERTIES:
13033    ,   :Effort:   2d
13034    ,   :END:
13035    ,** Workflow Guidelines
13036    ,   :PROPERTIES:
13037    ,   :Effort:   2d
13038    ,   :END:
13039    ,* Presentation
13040    ,  :PROPERTIES:
13041    ,  :Effort:   2d
13042    ,  :BLOCKER:  training_material { gapduration 1d } preparation
13043    ,  :END:
13044 #+end_example
13046 *** Reports
13047     :PROPERTIES:
13048     :DESCRIPTION: Gantt charts, etc.
13049     :END:
13050 #+vindex: org-export-taskjuggler-default-reports
13052 TaskJuggler can produce many kinds of reports (e.g., gantt chart,
13053 resource allocation, etc).  The user defines what kind of reports
13054 should be generated for a project in the TaskJuggler file.  By default,
13055 the exporter will automatically insert some pre-set reports in the
13056 file.  These defaults are defined in
13057 ~org-export-taskjuggler-default-reports~.  They can be modified using
13058 customize along with a number of other options.  For a more complete
13059 list, see 
13060 {{{ksksksk(M-x customize-group,RET,org-export-taskjuggler,RET)}}}.
13062 Alternately, the user can tag a tree with
13063 ~org-export-taskjuggler-report-tag~, and define reports in sub-nodes,
13064 similarly to what is done with tasks or resources.  The properties used
13065 for report generation are defined in
13066 ~org-export-taskjuggler-valid-report-attributes~.  In addition, a
13067 special property named {{{samp(report-kind)}}} is used to define the
13068 kind of report one wants to generate (by default, a
13069 {{{samp(taskreport)}}}).
13071 For more information and examples see the Org-taskjuggler tutorial at
13072 [[http://orgmode.org/worg/org-tutorials/org-taskjuggler.html]].
13074 ** Freemind export
13075    :PROPERTIES:
13076    :DESCRIPTION: Exporting to Freemind mind maps
13077    :END:
13078 #+cindex: Freemind export
13079 #+cindex: mind map
13081 The Freemind exporter was written by Lennart Borgman.
13083 #+attr_texinfo: :table-type table :indic @asis
13084 - {{{kbd(C-c C-e m)}}}, ~org-export-as-freemind~ ::
13085   #+kindex: C-c C-e m
13087   Export as a Freemind mind map.  For an Org file {{{file(myfile.org)}}},
13088   the Freemind file will be {{{file(myfile.mm)}}}.
13090 ** XOXO export
13091    :PROPERTIES:
13092    :DESCRIPTION: Exporting to XOXO
13093    :END:
13094 #+cindex: XOXO export
13096 Org mode contains an exporter that produces XOXO-style output.
13097 Currently, this exporter only handles the general outline structure
13098 and does not interpret any additional Org mode features.
13100 #+attr_texinfo: :table-type table :indic @asis
13101 - {{{kbd(C-c C-e x)}}}, ~org-export-as-xoxo~ ::
13102   #+kindex: C-c C-e x
13104   Export as an XOXO file.  For an Org file {{{file(myfile.org)}}}, the
13105   XOXO file will be {{{file(myfile.html)}}}.
13107 - {{{kbd(C-c C-e v x)}}} ::
13108   #+kindex: C-c C-e v x
13110   Export only the visible part of the document.
13112 ** iCalendar export
13113    :PROPERTIES:
13114    :DESCRIPTION: Exporting to iCalendar format
13115    :END:
13116 #+cindex: iCalendar export
13118 #+vindex: org-icalendar-include-todo
13119 #+vindex: org-icalendar-use-deadline
13120 #+vindex: org-icalendar-use-scheduled
13121 #+vindex: org-icalendar-categories
13122 #+vindex: org-icalendar-alarm-time
13124 Some people use Org mode for keeping track of projects, but still
13125 prefer a standard calendar application for anniversaries and
13126 appointments.  In this case it can be useful to show deadlines and
13127 other time-stamped items in Org files in the calendar application.  Org
13128 mode can export calendar information in the standard iCalendar format.
13129 If you also want to have TODO entries included in the export,
13130 configure the variable ~org-icalendar-include-todo~.  Plain timestamps
13131 are exported as VEVENT, and TODO items as VTODO.  It will also create
13132 events from deadlines that are in non-TODO items.  Deadlines and
13133 scheduling dates in TODO items will be used to set the start and due
13134 dates for the TODO entry.[fn:143] As categories, it will use the tags
13135 locally defined in the heading, and the file/tree category.[fn:144]
13136 See the variable ~org-icalendar-alarm-time~ for a way to assign alarms
13137 to entries with a time.
13139 #+vindex: org-icalendar-store-UID
13140 #+cindex: property, ID
13142 The iCalendar standard requires each entry to have a globally unique
13143 identifier (UID).  Org creates these identifiers during export.  If you
13144 set the variable ~org-icalendar-store-UID~, the UID will be stored in
13145 the ~:ID:~ property of the entry and re-used next time you report this
13146 entry.  Since a single entry can give rise to multiple iCalendar
13147 entries (as a timestamp, a deadline, a scheduled item, and as a TODO
13148 item), Org adds prefixes to the UID, depending on what triggered the
13149 inclusion of the entry.  In this way the UID remains unique, but a
13150 synchronization program can still figure out from which entry all the
13151 different instances originate.
13153 #+attr_texinfo: :table-type table :indic @asis
13154 - {{{kbd(C-c C-e i)}}}, ~org-export-icalendar-this-file~ ::
13155   #+kindex: C-c C-e i
13157   Create iCalendar entries for the current file and store them in the
13158   same directory, using a file extension {{{file(.ics)}}}.
13160 - {{{kbd(C-c C-e I)}}}, ~ org-export-icalendar-all-agenda-files~ ::
13161   #+kindex: C-c C-e I
13162   #+vindex: org-agenda-files
13164   Like {{{kbd(C-c C-e i)}}}, but do this for all files in
13165   ~org-agenda-files~.  For each of these files, a separate iCalendar file
13166   will be written.
13168 - {{{kbd(C-c C-e c)}}}, ~org-export-icalendar-combine-agenda-files~ ::
13169   #+kindex: C-c C-e c
13170   #+vindex: org-combined-agenda-icalendar-file
13172   Create a single large iCalendar file from all files in
13173   ~org-agenda-files~ and write it to the file given by
13174   ~org-combined-agenda-icalendar-file~.
13177 #+vindex: org-use-property-inheritance
13178 #+vindex: org-icalendar-include-body
13179 #+cindex: property, SUMMARY
13180 #+cindex: property, DESCRIPTION
13181 #+cindex: property, LOCATION
13183 The export will honor SUMMARY, DESCRIPTION and LOCATION properties if
13184 the selected entries have them.[fn:145] If not, the summary will be
13185 derived from the headline, and the description from the body (limited
13186 to ~org-icalendar-include-body~ characters).
13188 How this calendar is best read and updated, depends on the application
13189 you are using.  The FAQ covers this issue.
13191 * Publishing
13192   :PROPERTIES:
13193   :DESCRIPTION: Create a web site of linked Org files
13194   :END:
13195 #+cindex: publishing
13196 #+cindex: O'Toole, David
13198 Org includes a publishing management system that allows you to
13199 configure automatic HTML conversion of /projects/ composed of
13200 interlinked org files.  You can also configure Org to automatically
13201 upload your exported HTML pages and related attachments, such as
13202 images and source code files, to a web server.
13204 You can also use Org to convert files into PDF, or even combine HTML
13205 and PDF conversion so that files are available in both formats on the
13206 server.
13208 Publishing has been contributed to Org by David O'Toole.
13210 ** Configuration
13211    :PROPERTIES:
13212    :DESCRIPTION: Defining projects
13213    :END:
13214 Publishing needs significant configuration to specify files,
13215 destination and many other properties of a project.
13217 *** Project alist
13218     :PROPERTIES:
13219     :DESCRIPTION: The central configuration variable
13220     :TITLE:    The variable ~org-publish-project-alist~
13221     :END:
13222 #+cindex: org-publish-project-alist
13223 #+cindex: projects, for publishing
13224 #+vindex: org-publish-project-alist
13226 Publishing is configured almost entirely through setting the value of
13227 one variable, called ~org-publish-project-alist~.  Each element of the
13228 list configures one project, and may be in one of the two following
13229 forms:
13231 #+header: :eval no
13232 #+header: :exports code
13233 #+begin_src emacs-lisp
13234    ("project-name" :property value :property value ...)
13235 #+end_src
13237 i.e., a well-formed property list with alternating keys and values,
13240 #+header: :eval no
13241 #+header: :exports code
13242 #+begin_src emacs-lisp
13243    ("project-name" :components ("project-name" "project-name" ...))
13244 #+end_src
13246 In both cases, projects are configured by specifying property values.
13247 A project defines the set of files that will be published, as well as
13248 the publishing configuration to use when publishing those files.  When
13249 a project takes the second form listed above, the individual members
13250 of the ~:components~ property are taken to be sub-projects, which
13251 group together files requiring different publishing options.  When you
13252 publish such a "meta-project," all the components will also be
13253 published, in the sequence given.
13255 *** Sources and destinations
13256     :PROPERTIES:
13257     :DESCRIPTION: From here to there
13258     :TITLE:    Sources and destinations for files
13259     :END:
13260 #+cindex: directories, for publishing
13262 Most properties are optional, but some should always be set.  In
13263 particular, Org needs to know where to look for source files, and
13264 where to put published files.
13266 #+attr_texinfo: :table-type table :indic @asis
13267 - ~:base-directory~ ::
13269   Directory containing publishing source files
13271 - ~:publishing-directory~ ::
13273   Directory where output files will be published.  You can directly
13274   publish to a webserver using a file name syntax appropriate for the
13275   Emacs {{{file(tramp)}}} package.  Or you can publish to a local
13276   directory and use external tools to upload your website 
13277   (see [[Uploading files]]).
13279 - ~:preparation-function~ ::
13281   Function or list of functions to be called before starting the
13282   publishing process, for example, to run ~make~ for updating files to
13283   be published.  The project property list is scoped into this call as
13284   the variable ~project-plist~.
13286 - ~:completion-function~ ::
13288   Function or list of functions called after finishing the publishing
13289   process, for example, to change permissions of the resulting files.
13290   The project property list is scoped into this call as the variable
13291   ~project-plist~.
13293 *** Selecting files
13294     :PROPERTIES:
13295     :DESCRIPTION: What files are part of the project?
13296     :END:
13297 #+cindex: files, selecting for publishing
13299 By default, all files with extension {{{file(.org)}}} in the base directory
13300 are considered part of the project.  This can be modified by setting the
13301 following properties:
13303 #+attr_texinfo: :table-type table :indic @asis
13304 - ~:base-extension~ ::
13306   Extension (without the dot!) of source files.  This actually is a
13307   regular expression.  Set this to the symbol ~any~ if you want to get
13308   all files in ~:base-directory~, even without extension.
13310 - ~:exclude~ ::
13312   Regular expression to match file names that should not be published,
13313   even though they have been selected on the basis of their extension.
13315 - ~:include~ ::
13317   List of files to be included regardless of ~:base-extension~ and
13318   ~:exclude~.
13320 - ~:recursive~ ::
13322   Non-nil means, check base-directory recursively for files to publish.
13324 *** Publishing action
13325     :PROPERTIES:
13326     :DESCRIPTION: Setting the function doing the publishing
13327     :END:
13328 #+cindex: action, for publishing
13330 Publishing means that a file is copied to the destination directory and
13331 possibly transformed in the process.  The default transformation is to export
13332 Org files as HTML files, and this is done by the function
13333 ~org-publish-org-to-html~ which calls the HTML exporter (see [[HTML
13334 export]]).  But you also can publish your content as PDF files using
13335 ~org-publish-org-to-pdf~, or as ~ascii~, ~latin1~ or
13336 ~utf8~ encoded files using the corresponding functions.  If you want to
13337 publish the Org file itself, but with /archived/, /commented/, and
13338 /tag-excluded/ trees removed, use ~org-publish-org-to-org~ and set the
13339 parameters ~:plain-source~ and/or ~:htmlized-source~.  This will
13340 produce {{{file(file.org)}}} and {{{file(file.org.html)}}} in the publishing
13341 directory.[fn:146]  Other files like images only need to be copied to the
13342 publishing destination; for this you may use ~org-publish-attachment~.
13343 For non-Org files, you always need to specify the publishing function:
13345 #+attr_texinfo: :table-type table :indic @asis
13346 - ~:publishing-function~ ::
13348   Function executing the publication of a file.  This may also be a list
13349   of functions, which will all be called in turn.
13351 - ~:plain-source~ ::
13353   Non-nil means, publish plain source.
13355 - ~:htmlized-source~ ::
13357   Non-nil means, publish htmlized source.
13360 The function must accept three arguments: a property list containing
13361 at least a ~:publishing-directory~ property, the name of the file to
13362 be published, and the path to the publishing directory of the output
13363 file.  It should take the specified file, make the necessary
13364 transformation (if any) and place the result into the destination
13365 folder.
13367 *** Publishing options
13368     :PROPERTIES:
13369     :DESCRIPTION: Tweaking HTML/LaTeX export
13370     :END:
13371 #+cindex: options, for publishing
13373 The property list can be used to set many export options for the HTML
13374 and LaTeX exporters.  In most cases, these properties correspond to user
13375 variables in Org.  The table below lists these properties along
13376 with the variable they belong to.  See the documentation string for the
13377 respective variable for details.
13379 #+vindex: org-export-html-link-up
13380 #+vindex: org-export-html-link-home
13381 #+vindex: org-export-default-language
13382 #+vindex: org-display-custom-times
13383 #+vindex: org-export-headline-levels
13384 #+vindex: org-export-with-section-numbers
13385 #+vindex: org-export-section-number-format
13386 #+vindex: org-export-with-toc
13387 #+vindex: org-export-preserve-breaks
13388 #+vindex: org-export-with-archived-trees
13389 #+vindex: org-export-with-emphasize
13390 #+vindex: org-export-with-sub-superscripts
13391 #+vindex: org-export-with-special-strings
13392 #+vindex: org-export-with-footnotes
13393 #+vindex: org-export-with-drawers
13394 #+vindex: org-export-with-tags
13395 #+vindex: org-export-with-todo-keywords
13396 #+vindex: org-export-with-tasks
13397 #+vindex: org-export-with-done-tasks
13398 #+vindex: org-export-with-priority
13399 #+vindex: org-export-with-TeX-macros
13400 #+vindex: org-export-with-LaTeX-fragments
13401 #+vindex: org-export-skip-text-before-1st-heading
13402 #+vindex: org-export-with-fixed-width
13403 #+vindex: org-export-with-timestamps
13404 #+vindex: org-export-author-info
13405 #+vindex: org-export-email-info
13406 #+vindex: org-export-creator-info
13407 #+vindex: org-export-time-stamp-file
13408 #+vindex: org-export-with-tables
13409 #+vindex: org-export-highlight-first-table-line
13410 #+vindex: org-export-html-style-include-default
13411 #+vindex: org-export-html-style-include-scripts
13412 #+vindex: org-export-html-style
13413 #+vindex: org-export-html-style-extra
13414 #+vindex: org-export-html-link-org-files-as-html
13415 #+vindex: org-export-html-inline-images
13416 #+vindex: org-export-html-extension
13417 #+vindex: org-export-html-table-tag
13418 #+vindex: org-export-html-expand
13419 #+vindex: org-export-html-with-timestamp
13420 #+vindex: org-export-publishing-directory
13421 #+vindex: org-export-html-preamble
13422 #+vindex: org-export-html-postamble
13423 #+vindex: user-full-name
13424 #+vindex: user-mail-address
13425 #+vindex: org-export-select-tags
13426 #+vindex: org-export-exclude-tags
13428 #+attr_texinfo: :table-type table :indic @asis
13429 - ~:link-up~ :: ~org-export-html-link-up~
13430 - ~:link-home~ :: ~org-export-html-link-home~
13431 - ~:language~ :: ~org-export-default-language~
13432 - ~:customtime~ :: ~org-display-custom-times~
13433 - ~:headline-levels~ :: ~org-export-headline-levels~
13434 - ~:section-numbers~ :: ~org-export-with-section-numbers~
13435 - ~:section-number-format~ :: ~org-export-section-number-format~
13436 - ~:table-of-contents~ :: ~org-export-with-toc~
13437 - ~:preserve-breaks~ :: ~org-export-preserve-breaks~
13438 - ~:archived-trees~ :: ~org-export-with-archived-trees~
13439 - ~:emphasize~ :: ~org-export-with-emphasize~
13440 - ~:sub-superscript~ :: ~org-export-with-sub-superscripts~
13441 - ~:special-strings~ :: ~org-export-with-special-strings~
13442 - ~:footnotes~ :: ~org-export-with-footnotes~
13443 - ~:drawers~ :: ~org-export-with-drawers~
13444 - ~:tags~ :: ~org-export-with-tags~
13445 - ~:todo-keywords~ :: ~org-export-with-todo-keywords~
13446 - ~:tasks~ :: ~org-export-with-tasks~
13447 - ~:priority~ :: ~org-export-with-priority~
13448 - ~:TeX-macros~ :: ~org-export-with-TeX-macros~
13449 - ~:LaTeX-fragments~ :: ~org-export-with-LaTeX-fragments~
13450 - ~:latex-listings~ :: ~org-export-latex-listings~
13451 - ~:skip-before-1st-heading~ :: ~org-export-skip-text-before-1st-heading~
13452 - ~:fixed-width~ :: ~org-export-with-fixed-width~
13453 - ~:timestamps~ :: ~org-export-with-timestamps~
13454 - ~:author~ :: ~user-full-name~
13455 - ~:email~ :: ~user-mail-address~ : ~addr;addr;..~
13456 - ~:author-info~ :: ~org-export-author-info~
13457 - ~:email-info~ :: ~org-export-email-info~
13458 - ~:creator-info~ :: ~org-export-creator-info~
13459 - ~:tables~ :: ~org-export-with-tables~
13460 - ~:table-auto-headline~ :: ~org-export-highlight-first-table-line~
13461 - ~:style-include-default~ :: ~org-export-html-style-include-default~
13462 - ~:style-include-scripts~ :: ~org-export-html-style-include-scripts~
13463 - ~:style~ :: ~org-export-html-style~
13464 - ~:style-extra~ :: ~org-export-html-style-extra~
13465 - ~:convert-org-links~ :: ~org-export-html-link-org-files-as-html~
13466 - ~:inline-images~ :: ~org-export-html-inline-images~
13467 - ~:html-extension~ :: ~org-export-html-extension~
13468 - ~:html-preamble~ :: ~org-export-html-preamble~
13469 - ~:html-postamble~ :: ~org-export-html-postamble~
13470 - ~:xml-declaration~ :: ~org-export-html-xml-declaration~
13471 - ~:html-table-tag~ :: ~org-export-html-table-tag~
13472 - ~:expand-quoted-html~ :: ~org-export-html-expand~
13473 - ~:timestamp~ :: ~org-export-html-with-timestamp~
13474 - ~:publishing-directory~ :: ~org-export-publishing-directory~
13475 - ~:select-tags~ :: ~org-export-select-tags~
13476 - ~:exclude-tags~ :: ~org-export-exclude-tags~
13477 - ~:latex-image-options~ :: ~org-export-latex-image-default-option~
13480 Most of the ~org-export-with-*~ variables have the same effect in both
13481 HTML and LaTeX exporters, except for ~:TeX-macros~ and
13482 ~:LaTeX-fragments~ options, respectively ~nil~ and ~t~ in the LaTeX
13483 export.  See ~org-export-plist-vars~ to check this list of options.
13485 #+vindex: org-publish-project-alist
13487 When a property is given a value in ~org-publish-project-alist~, its
13488 setting overrides the value of the corresponding user variable (if
13489 any) during publishing.  Options set within a file (see [[Export
13490 options]]), however, override everything.
13492 *** Publishing links
13493     :PROPERTIES:
13494     :DESCRIPTION: Which links keep working after publishing?
13495     :END:
13496 #+cindex: links, publishing
13498 To create a link from one Org file to another, you would use something
13499 like ~[[file:foo.org][The foo]]~ or simply ~[[file:foo.org]]~ (see
13500 [[Hyperlinks]]).  When published, this link becomes a link to
13501 {{{file(foo.html)}}}.  In this way, you can interlink the pages of your
13502 "org web" project and the links will work as expected when you publish
13503 them to HTML.  If you also publish the Org source file and want to link
13504 to that, use an ~http:~ link instead of a ~file:~ link, because
13505 ~file:~ links are converted to link to the corresponding
13506 {{{file(html)}}} file.
13508 You may also link to related files, such as images.  Provided you are
13509 careful with relative file names, and provided you have also
13510 configured Org to upload the related files, these links will work too.
13511 See [[Complex example]], for an example of this usage.
13513 Sometimes an Org file to be published may contain links that are only
13514 valid in your production environment, but not in the publishing
13515 location.  In this case, use the following property to define a
13516 function for checking link validity:
13518 #+attr_texinfo: :table-type table :indic @asis
13519 - ~:link-validation-function~ ::
13520   Function to validate links
13523 {{{noindent}}} This function must accept two arguments, the file name
13524 and a directory relative to which the file name is interpreted in the
13525 production environment.  If this function returns ~nil~, then the HTML
13526 generator will only insert a description into the HTML file, but no
13527 link.  One option for this function is ~org-publish-validate-link~
13528 which checks if the given file is part of any project in
13529 ~org-publish-project-alist~.
13531 *** Site map
13532     :PROPERTIES:
13533     :DESCRIPTION: Generating a list of all pages
13534     :TITLE:    Generating a sitemap
13535     :END:
13536 #+cindex: sitemap, of published pages
13538 The following properties may be used to control publishing of
13539 a map of files for a given project.
13541 #+attr_texinfo: :table-type table :indic @asis
13542 - ~:auto-sitemap~ ::
13544   When non-nil, publish a sitemap during ~org-publish-current-project~
13545   or ~org-publish-all~.
13547 - ~:sitemap-filename~ ::
13549   Filename for output of sitemap.  Defaults to {{{file(sitemap.org)}}} (which
13550   becomes {{{file(sitemap.html)}}}).
13552 - ~:sitemap-title~ ::
13554   Title of sitemap page.  Defaults to name of file.
13556 - ~:sitemap-function~ ::
13558   Plug-in function to use for generation of the sitemap.  Defaults to
13559   ~org-publish-org-sitemap~, which generates a plain list of links to
13560   all files in the project.
13562 - ~:sitemap-sort-folders~ ::
13564   Where folders should appear in the sitemap.  Set this to ~first~
13565   (default) or ~last~ to display folders first or last, respectively.
13566   Any other value will mix files and folders.
13568 - ~:sitemap-sort-files~ ::
13570   How the files are sorted in the site map.  Set this to ~alphabetically~
13571   (default), ~chronologically~ or ~anti-chronologically~.
13572   ~chronologically~ sorts the files with older date first while
13573   ~anti-chronologically~ sorts the files with newer date first.
13574   ~alphabetically~ sorts the files alphabetically.  The date of a file is
13575   retrieved with ~org-publish-find-date~.
13577 - ~:sitemap-ignore-case~ ::
13579   Should sorting be case-sensitive?  Default ~nil~.
13581 - ~:sitemap-file-entry-format~ ::
13583   With this option one can tell how a sitemap's entry is formatted in
13584   the sitemap.  This is a format string with some escape sequences: ~%t~
13585   stands for the title of the file, ~%a~ stands for the author of the
13586   file and ~%d~ stands for the date of the file.  The date is retrieved
13587   with the ~org-publish-find-date~ function and formatted with
13588   ~org-publish-sitemap-date-format~.  Default ~%t~.
13590 - ~:sitemap-date-format~ ::
13592   Format string for the ~format-time-string~ function that tells how a
13593   sitemap entry's date is to be formatted.  This property bypasses
13594   ~org-publish-sitemap-date-format~ which defaults to ~%Y-%m-%d~.
13596 - ~:sitemap-sans-extension~ ::
13598   When non-nil, remove filenames' extensions from the generated sitemap.
13599   Useful to have cool URIs (see [[http://www.w3.org/Provider/Style/URI]]).
13600   Defaults to ~nil~.
13602 *** Generating an index
13603     :PROPERTIES:
13604     :DESCRIPTION: An index that reaches across pages
13605     :END:
13606 #+cindex: index, in a publishing project
13608 Org mode can generate an index across the files of a publishing project.
13610 #+attr_texinfo: :table-type table :indic @asis
13611 - ~:makeindex~ ::
13613   When non-nil, generate in index in the file {{{file(theindex.org)}}}
13614   and publish it as {{{file(theindex.html)}}}.
13617 The file will be created when first publishing a project with the
13618 ~:makeindex~ set.  The file only contains a statement
13619 {{{samp(#+INCLUDE: "theindex.inc")}}}.  You can then build around this
13620 include statement by adding a title, style information, etc.
13622 ** Uploading files
13623    :PROPERTIES:
13624    :DESCRIPTION: How to get files up on the server
13625    :END:
13626 #+cindex: rsync
13627 #+cindex: unison
13629 For those people already utilizing third party sync tools such as
13630 {{{command(rsync)}}} or {{{command(unison)}}}, it might be preferable
13631 not to use the built in remote publishing facilities of Org mode
13632 which rely heavily on Tramp.  Tramp, while very useful and powerful,
13633 tends not to be so efficient for multiple file transfer and has been
13634 known to cause problems under heavy usage.
13636 Specialized synchronization utilities offer several advantages.  In
13637 addition to timestamp comparison, they also do content and
13638 permissions/attribute checks.  For this reason you might prefer to
13639 publish your web to a local directory (possibly even in place with
13640 your Org files) and then use {{{file(unison)}}} or {{{file(rsync)}}}
13641 to do the synchronization with the remote host.
13643 Since Unison (for example) can be configured as to which files to
13644 transfer to a certain remote destination, it can greatly simplify the
13645 project publishing definition.  Simply keep all files in the correct
13646 location, process your Org files with ~org-publish~ and let the
13647 synchronization tool do the rest.  You do not need, in this scenario,
13648 to include attachments such as {{{file(jpg)}}}, {{{file(css)}}} or
13649 {{{file(gif)}}} files in the project definition since the 3rd party
13650 tool syncs them.
13652 Publishing to a local directory is also much faster than to a remote
13653 one, so that you can afford more easily to republish entire projects.
13654 If you set ~org-publish-use-timestamps-flag~ to ~nil~, you gain the
13655 main benefit of re-including any changed external files such as source
13656 example files you might include with ~#+INCLUDE:~.  The timestamp
13657 mechanism in Org is not smart enough to detect if included files have
13658 been modified.
13660 ** Sample configuration
13661    :PROPERTIES:
13662    :DESCRIPTION: Example projects
13663    :END:
13664 Below we provide two example configurations.  The first one is a simple
13665 project publishing only a set of Org files.  The second example is
13666 more complex, with a multi-component project.
13668 *** Simple example
13669     :PROPERTIES:
13670     :DESCRIPTION: One-component publishing
13671     :TITLE:    Example: simple publishing configuration
13672     :END:
13673 This example publishes a set of Org files to the {{{file(public_html)}}}
13674 directory on the local machine.
13676 #+header: :eval no
13677 #+header: :exports code
13678 #+begin_src emacs-lisp
13679 (setq org-publish-project-alist
13680       '(("org"
13681          :base-directory "~/org/"
13682          :publishing-directory "~/public_html"
13683          :section-numbers nil
13684          :table-of-contents nil
13685          :style "<link rel=\"stylesheet\"
13686                 href=\"../other/mystyle.css\"
13687                 type=\"text/css\"/>")))
13688 #+end_src
13690 *** Complex example
13691     :PROPERTIES:
13692     :DESCRIPTION: A multi-component publishing example
13693     :TITLE:    Example: complex publishing configuration
13694     :END:
13695 This more complicated example publishes an entire website, including
13696 Org files converted to HTML, image files, Emacs Lisp source code, and
13697 style sheets.  The publishing directory is remote and private files are
13698 excluded.
13700 To ensure that links are preserved, care should be taken to replicate
13701 your directory structure on the web server, and to use relative file
13702 paths.  For example, if your Org files are kept in {{{file(~/org)}}}
13703 and your publishable images in {{{file(~/images)}}}, you would link to
13704 an image with
13706 #+begin_example
13707    file:../images/myimage.png
13708 #+end_example
13710 On the web server, the relative path to the image should be the
13711 same.  You can accomplish this by setting up an "images" folder in the
13712 right place on the web server, and publishing images to it.
13714 #+header: :eval no
13715 #+header: :exports code
13716 #+begin_src emacs-lisp
13717 (setq org-publish-project-alist
13718       '(("orgfiles"
13719           :base-directory "~/org/"
13720           :base-extension "org"
13721           :publishing-directory "/ssh:user@@host:~/html/notebook/"
13722           :publishing-function org-publish-org-to-html
13723           :exclude "PrivatePage.org"   ;; regexp
13724           :headline-levels 3
13725           :section-numbers nil
13726           :table-of-contents nil
13727           :style "<link rel=\"stylesheet\"
13728                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
13729           :html-preamble t)
13731          ("images"
13732           :base-directory "~/images/"
13733           :base-extension "jpg\\|gif\\|png"
13734           :publishing-directory "/ssh:user@@host:~/html/images/"
13735           :publishing-function org-publish-attachment)
13737          ("other"
13738           :base-directory "~/other/"
13739           :base-extension "css\\|el"
13740           :publishing-directory "/ssh:user@@host:~/html/other/"
13741           :publishing-function org-publish-attachment)
13742          ("website" :components ("orgfiles" "images" "other"))))
13743 #+end_src
13745 ** Triggering publication
13746    :PROPERTIES:
13747    :DESCRIPTION: Publication commands
13748    :END:
13749 Once properly configured, Org can publish with the following commands:
13751 #+attr_texinfo: :table-type table :indic @asis
13752 - {{{kbd(C-c C-e X)}}}, ~org-publish~ ::
13753   #+kindex: C-c C-e X
13754   
13755   Prompt for a specific project and publish all files that belong to it.
13757 - {{{kbd(C-c C-e P)}}}, ~org-publish-current-project~ ::
13758   #+kindex: C-c C-e P
13760   Publish the project containing the current file.
13762 - {{{kbd(C-c C-e F)}}}, ~org-publish-current-file~ ::
13763   #+kindex: C-c C-e F
13765   Publish only the current file.
13767 - {{{kbd(C-c C-e E)}}}, ~org-publish-all~ ::
13768   #+kindex: C-c C-e E
13770   Publish every project.
13773 #+vindex: org-publish-use-timestamps-flag
13775 Org uses timestamps to track when a file has changed.  The above
13776 functions normally only publish changed files.  You can override this
13777 and force publishing of all files by giving a prefix argument to any
13778 of the commands above, or by customizing the variable
13779 ~org-publish-use-timestamps-flag~.  This may be necessary in particular
13780 if files include other files via ~#+SETUPFILE:~ or ~#+INCLUDE:~.
13782 * Working with source code
13783   :PROPERTIES:
13784   :DESCRIPTION: Export, evaluate, and tangle code blocks
13785   :ALT_TITLE: Working With Source Code
13786   :END:
13787 #+cindex: Schulte, Eric
13788 #+cindex: Davison, Dan
13789 #+cindex: source code, working with
13791 Source code can be included in Org mode documents using a
13792 {{{samp(src)}}} block, e.g.:
13794 #+begin_example
13795    #+BEGIN_SRC emacs-lisp
13796      (defun org-xor (a b)
13797         "Exclusive or."
13798         (if a (not b) b))
13799    #+END_SRC
13800 #+end_example
13802 Org mode provides a number of features for working with live source
13803 code, including editing of code blocks in their native major-mode,
13804 evaluation of code blocks, converting code blocks into source files
13805 (known as "tangling" in literate programming), and exporting code
13806 blocks and their results in several formats.  This functionality was
13807 contributed by Eric Schulte and Dan Davison, and was originally named
13808 Org-babel.
13810 The following sections describe Org mode's code block handling facilities.
13812 ** Structure of code blocks
13813    :PROPERTIES:
13814    :DESCRIPTION: Code block syntax described
13815    :END:
13816 #+cindex: code block, structure
13817 #+cindex: source code, block structure
13818 #+cindex: #+NAME
13819 #+cindex: #+BEGIN_SRC
13821 Live code blocks can be specified with a {{{samp(src)}}} block or
13822 inline.[fn:147] The structure of a {{{samp(src)}}} block is shown in
13823 the following example:
13825 #+begin_example
13826    ,#+NAME: <name>
13827    ,#+BEGIN_SRC <language> <switches> <header arguments>
13828      <body>
13829    ,#+END_SRC
13830 #+end_example
13832 The ~#+NAME:~ line is optional, and can be used to name the code
13833 block.  Live code blocks require that a language be specified on the
13834 ~#+BEGIN_SRC~ line.  Switches and header arguments are optional.
13835 #+cindex: source code, inline
13837 Live code blocks can also be specified inline using the following
13838 syntax:
13840 #+begin_example
13841    src_<language>{<body>}
13842 #+end_example
13846 #+begin_example
13847    src_<language>[<header arguments>]{<body>}
13848 #+end_example
13850 #+attr_texinfo: :table-type table :indic @asis
13851 - ~<#+NAME: name>~ ::
13852   #+cindex: #+NAME
13854   This line associates a name with the code block.  This is similar to
13855   the ~#+TBLNAME: NAME~ lines that can be used to name tables in Org
13856   mode files.  Referencing the name of a code block makes it possible to
13857   evaluate the block from other places in the file, from other files, or
13858   from Org mode table formulas (see [[The spreadsheet]]).  Names are assumed
13859   to be unique and the behavior of Org mode when two or more blocks
13860   share the same name is undefined.
13862 - ~<language>~ ::
13863   #+cindex: source code, language
13865   The language of the code in the block (see [[Languages]]).
13867 - ~<switches>~ ::
13868   #+cindex: source code, switches
13870   Optional switches control code block export (see the discussion of
13871   switches in [[Literal examples]]).
13873 - ~<header arguments>~ ::
13874   #+cindex: source code, header arguments
13876   Optional header arguments control many aspects of evaluation, export
13877   and tangling of code blocks (see [[Header arguments]]).  Header arguments
13878   can also be set on a per-buffer or per-subtree basis using properties.
13880 - ~<body>~ ::
13882   Source code in the specified language.
13884 ** Editing source code
13885    :PROPERTIES:
13886    :DESCRIPTION: Language major-mode editing
13887    :END:
13888 #+cindex: code block, editing
13889 #+cindex: source code, editing
13890 #+kindex: C-c '
13892 Use {{{kbd(C-c ')}}} to edit the current code block.  This brings up a
13893 language major-mode edit buffer containing the body of the code block.
13894 Saving this buffer will write the new contents back to the Org buffer.
13895 Use {{{kbd(C-c ')}}} again to exit.
13897 The ~org-src-mode~ minor mode will be active in the edit buffer.  The
13898 following variables can be used to configure the behavior of the edit
13899 buffer.  See also the customization group ~org-edit-structure~ for
13900 further configuration options.
13902 #+attr_texinfo: :table-type table :indic @asis
13903 - ~org-src-lang-modes~ ::
13905   If an Emacs major-mode named ~<lang>-mode~ exists, where
13906   ~<lang>~ is the language named in the header line of the code block,
13907   then the edit buffer will be placed in that major-mode.  This variable
13908   can be used to map arbitrary language names to existing major modes.
13910 - ~org-src-window-setup~ ::
13912   Controls the way Emacs windows are rearranged when the edit buffer is
13913   created.
13915 - ~org-src-preserve-indentation~ ::
13917   This variable is especially useful for tangling languages such as
13918   Python, in which whitespace indentation in the output is meaningful.
13920 - ~org-src-ask-before-returning-to-edit-buffer~ ::
13922   By default, Org will ask before returning to an open edit buffer.  Set this
13923   variable to nil to switch without asking.
13926 To turn on native code fontification in the Org mode buffer, configure
13927 the variable ~org-src-fontify-natively~.
13929 ** Exporting code blocks
13930    :PROPERTIES:
13931    :DESCRIPTION: Export contents and/or results
13932    :END:
13933 #+cindex: code block, exporting
13934 #+cindex: source code, exporting
13936 It is possible to export the /code/ of code blocks, the /results/ of
13937 code block evaluation, /both/ the code and the results of code block
13938 evaluation, or /none/.  For most languages, the default exports code.
13939 However, for some languages (e.g., ~ditaa~) the default exports the
13940 results of code block evaluation.  For information on exporting code
13941 block bodies, see [[Literal examples]].
13943 The ~:exports~ header argument can be used to specify export
13944 behavior with the following arguments:
13946 #+attr_texinfo: :table-type table :indic @asis
13947 - ~:exports code~ ::
13949   The default in most languages.  The body of the code block is exported, as
13950   described in [[Literal examples]].
13952 - ~:exports results~ ::
13954   The code block will be evaluated and the results will be placed in the
13955   Org mode buffer for export, either updating previous results of the
13956   code block located anywhere in the buffer or, if no previous results
13957   exist, placing the results immediately after the code block.  The body
13958   of the code block will not be exported.
13960 - ~:exports both~ ::
13962   Both the code block and its results will be exported.
13964 - ~:exports none~ ::
13966   Neither the code block nor its results will be exported.
13969 It is possible to inhibit the evaluation of code blocks during export.
13970 Setting the ~org-export-babel-evaluate~ variable to ~nil~ will ensure
13971 that no code blocks are evaluated as part of the export process.  This
13972 can be useful in situations where potentially untrusted Org mode files
13973 are exported in an automated fashion, for example when Org mode is
13974 used as the markup language for a wiki.
13976 ** Extracting source code
13977    :PROPERTIES:
13978    :DESCRIPTION: Create pure source code files
13979    :END:
13980 #+cindex: tangling
13981 #+cindex: source code, extracting
13982 #+cindex: code block, extracting source code
13984 Creating pure source code files by extracting code from source blocks
13985 is referred to as "tangling"---a term adopted from the literate
13986 programming community.  During tangling of code blocks their bodies are
13987 expanded using ~org-babel-expand-src-block~ which can expand both
13988 variable and ``noweb'' style references (see [[Noweb reference syntax]]).
13990 *** Header arguments for tangling
13991 #+attr_texinfo: :table-type table :indic @asis
13992 - ~:tangle no~ ::
13994   The default.  The code block is not included in the tangled output.
13996 - ~:tangle yes~ ::
13998   Include the code block in the tangled output.  The output file name is
13999   the name of the org file with the extension {{{samp(.org)}}} replaced
14000   by the extension for the block language.
14002 - ~:tangle filename~ ::
14004   Include the code block in the tangled output to file {{{samp(filename)}}}.
14006 *** Functions for tangling
14007 #+attr_texinfo: :table-type table :indic @asis
14008 - ~org-babel-tangle~ ::
14009   #+kindex: C-c C-v t
14011   Tangle the current file.  Bound to {{{kbd(C-c C-v t)}}}.
14013   With a prefix argument only tangle the current code block.
14015 - ~org-babel-tangle-file~ ::
14016   #+kindex: C-c C-v f
14018   Choose a file to tangle.  Bound to {{{kbd(C-c C-v f)}}}.
14020 *** Hooks for tangling
14021 #+attr_texinfo: :table-type table :indic @asis
14022 - ~org-babel-post-tangle-hook~ ::
14024   This hook is run from within code files tangled by ~org-babel-tangle~.
14025   Example applications could include post-processing, compilation, or
14026   evaluation of tangled code files.
14028 ** Evaluating code blocks
14029    :PROPERTIES:
14030    :DESCRIPTION: Place results in the Org buffer
14031    :END:
14032 #+cindex: code block, evaluating
14033 #+cindex: source code, evaluating
14034 #+cindex: #+RESULTS
14036 Code blocks can be evaluated and the results of evaluation optionally
14037 placed in the Org mode buffer.[fn:148] The results of evaluation are
14038 placed following a line that begins by default with ~#+RESULTS~ and
14039 optionally a cache identifier and/or the name of the evaluated code
14040 block.  The default value of ~#+RESULTS~ can be changed with the
14041 customizable variable ~org-babel-results-keyword~.
14043 By default, the evaluation facility is only enabled for Lisp code
14044 blocks specified as ~emacs-lisp~.  However, source code blocks in many
14045 languages can be evaluated within Org mode (see [[Languages]] for a list
14046 of supported languages and [[Structure of code blocks]] for information on
14047 the syntax used to define a code block).
14049 #+kindex: C-c C-c
14050 #+kindex: C-c C-v e
14052 There are a number of ways to evaluate code blocks.  The simplest is to
14053 press {{{kbd(C-c C-c)}}} or {{{kbd(C-c C-v e)}}} with the point on a
14054 code block.[fn:149] This will call the ~org-babel-execute-src-block~
14055 function to evaluate the block and insert its results into the Org
14056 mode buffer.
14058 #+cindex: #+CALL
14060 It is also possible to evaluate named code blocks from anywhere in an
14061 Org mode buffer or an Org mode table.  Live code blocks located in the
14062 current Org mode buffer or in the ``Library of Babel'' (see [[Library of
14063 Babel]]) can be executed.  Named code blocks can be executed with a
14064 separate ~#+CALL:~ line or inline within a block of text.
14066 The syntax of the ~#+CALL:~ line is:
14068 #+begin_example
14069    ,#+CALL: <name>(<arguments>)
14070    ,#+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
14071 #+end_example
14073 The syntax for inline evaluation of named code blocks is:
14075 #+begin_example
14076    ... call_<name>(<arguments>) ...
14077    ... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
14078 #+end_example
14080 #+attr_texinfo: :table-type table :indic @asis
14081 - ~<name>~ ::
14083   The name of the code block to be evaluated (see [[Structure of code
14084   blocks]]).
14086 - ~<arguments>~ ::
14088   Arguments specified in this section will be passed to the code block.
14089   These arguments use standard function call syntax, rather than header
14090   argument syntax.  For example, a ~#+CALL:~ line that passes the number
14091   four to a code block named ~double~, which declares the header
14092   argument ~:var n=2~, would be written as ~#+CALL: double(n=4)~.
14094 - ~<inside header arguments>~ ::
14096   Inside header arguments are passed through and applied to the named
14097   code block.  These arguments use header argument syntax rather than
14098   standard function call syntax.  Inside header arguments affect how the
14099   code block is evaluated.  For example, ~[:results output]~ will collect
14100   the results of everything printed to ~STDOUT~ during execution of the
14101   code block.
14103 - ~<end header arguments>~ ::
14105   End header arguments are applied to the calling instance and do not
14106   affect evaluation of the named code block.  They affect how the results
14107   are incorporated into the Org mode buffer and how the call line is
14108   exported.  For example, ~:results html~ will insert the results of the
14109   call line evaluation in the Org buffer, wrapped in a ~BEGIN_HTML:~
14110   block.
14113 For more examples of passing header arguments to ~#+CALL:~ lines see
14114 [[Header arguments in function calls]].
14116 ** Library of Babel
14117    :PROPERTIES:
14118    :DESCRIPTION: Use and contribute to a source code library
14119    :END:
14120 #+cindex: babel, library of
14121 #+cindex: source code, library
14122 #+cindex: code block, library
14124 The ``Library of Babel'' consists of code blocks that can be called
14125 from any Org mode file.  Code blocks defined in the ``Library of
14126 Babel'' can be called remotely as if they were in the current Org mode
14127 buffer (see [[Evaluating code blocks]] for information on the syntax of
14128 remote code block evaluation).
14131 The central repository of code blocks in the ``Library of Babel'' is
14132 housed in an Org mode file located in the {{{samp(contrib)}}}
14133 directory of Org mode.
14135 Users can add code blocks they believe to be generally useful to their
14136 ``Library of Babel.'' The code blocks can be stored in any Org mode
14137 file and then loaded into the library with ~org-babel-lob-ingest~.
14139 #+kindex: C-c C-v i
14141 Code blocks located in any Org mode file can be loaded into the
14142 ``Library of Babel'' with the ~org-babel-lob-ingest~ function, bound
14143 to {{{kbd(C-c C-v i)}}}.
14145 ** Languages
14146    :PROPERTIES:
14147    :DESCRIPTION: Supported code block languages
14148    :END:
14149 #+cindex: babel, languages
14150 #+cindex: source code, languages
14151 #+cindex: code block, languages
14153 Code blocks in the following languages are supported.
14155 #+attr_texinfo: :columns 0.24 0.24 0.04 0.24 0.24
14156 | Language   | Identifier   |   | Language       | Identifier   |
14157 |------------+--------------+---+----------------+--------------|
14158 | Asymptote  | asymptote    |   | Awk            | awk          |
14159 | Emacs Calc | calc         |   | C              | C            |
14160 | C++        | C++          |   | Clojure        | clojure      |
14161 | CSS        | css          |   | ditaa          | ditaa        |
14162 | Graphviz   | dot          |   | Emacs Lisp     | emacs-lisp   |
14163 | gnuplot    | gnuplot      |   | Haskell        | haskell      |
14164 | Java       | java         |   |                |              |
14165 | Javascript | js           |   | LaTeX          | latex        |
14166 | Ledger     | ledger       |   | Lisp           | lisp         |
14167 | Lilypond   | lilypond     |   | MATLAB         | matlab       |
14168 | Mscgen     | mscgen       |   | Objective Caml | ocaml        |
14169 | Octave     | octave       |   | Org mode       | org          |
14170 | Oz         | oz           |   | Perl           | perl         |
14171 | Plantuml   | plantuml     |   | Python         | python       |
14172 | R          | R            |   | Ruby           | ruby         |
14173 | Sass       | sass         |   | Scheme         | scheme       |
14174 | GNU Screen | screen       |   | shell          | sh           |
14175 | SQL        | sql          |   | SQLite         | sqlite       |
14178 Language-specific documentation is available for some languages.  If
14179 available, it can be found at
14180 [[http://orgmode.org/worg/org-contrib/babel/languages.html]].
14182 The variable ~org-babel-load-languages~ controls which languages are
14183 enabled for evaluation (by default only ~emacs-lisp~ is enabled).  This
14184 variable can be set using the customization interface or by adding
14185 code like the following example, disables ~emacs-lisp~ evaluation and
14186 enables evaluation of ~R~ code blocks, to your emacs configuration:
14188 #+header: :eval no
14189 #+header: :exports code
14190 #+begin_src emacs-lisp
14191 (org-babel-do-load-languages
14192  'org-babel-load-languages
14193  '((emacs-lisp . nil)
14194    (R . t)))
14195 #+end_src
14197 It is also possible to enable support for a language by loading the
14198 related elisp file with ~require~.
14200 {{{noindent}}} The following example adds support for evaluating
14201 ~clojure~ code blocks:
14203 #+header: :eval no
14204 #+header: :exports code
14205 #+begin_src emacs-lisp
14206 (require 'ob-clojure)
14207 #+end_src
14209 ** Header arguments
14210    :PROPERTIES:
14211    :DESCRIPTION: Configure code block functionality
14212    :END:
14213 #+cindex: code block, header arguments
14214 #+cindex: source code, block header arguments
14216 Code block functionality can be configured with header arguments.  This
14217 section provides an overview of the use of header arguments, and then
14218 describes each header argument in detail.
14220 *** Using header arguments
14221     :PROPERTIES:
14222     :DESCRIPTION: Different ways to set header arguments
14223     :END:
14225 The values of header arguments can be set in six different ways, each
14226 more specific (and having higher priority) than the last.
14228 **** System-wide header arguments
14229      :PROPERTIES:
14230      :DESCRIPTION: Set global default values
14231      :END:
14232 #+vindex: org-babel-default-header-args
14234 System-wide values of header arguments can be specified by customizing
14235 the ~org-babel-default-header-args~ variable:
14237 #+begin_example
14238    :session    => "none"
14239    :results    => "replace"
14240    :exports    => "code"
14241    :cache      => "no"
14242    :noweb      => "no"
14243 #+end_example
14245 # #+begin_example
14246 #   org-babel-default-header-args is a variable defined in `org-babel.el'.
14247 #   Its value is
14248 #   ((:session . "none")
14249 #    (:results . "replace")
14250 #    (:exports . "code")
14251 #    (:cache . "no")
14252 #    (:noweb . "no"))
14255 #   Documentation:
14256 #   Default arguments to use when evaluating a code block.
14257 # #+end_example
14259 For example, the following code could be used to set the default
14260 value of ~:noweb~ header arguments to ~yes~.  This would have the
14261 effect of expanding ~:noweb~ references by default when evaluating
14262 source code blocks.
14264 #+header: :eval no
14265 #+header: :exports code
14266 #+begin_src emacs-lisp
14267   (setq org-babel-default-header-args
14268         (cons '(:noweb . "yes")
14269               (assq-delete-all :noweb org-babel-default-header-args)))
14270 #+end_src
14272 **** Language-specific header arguments
14273      :PROPERTIES:
14274      :DESCRIPTION: Set default values by language
14275      :END:
14277 Each language can define its own set of default header arguments.  See
14278 the language-specific documentation available online at
14279 [[http://orgmode.org/worg/org-contrib/babel]].
14281 **** Buffer-wide header arguments
14282      :PROPERTIES:
14283      :DESCRIPTION: Set default values for a specific buffer
14284      :END:
14286 Buffer-wide header arguments may be specified as properties through
14287 the use of ~#+PROPERTY:~ lines placed anywhere in an Org mode file
14288 (see [[Property syntax]]).
14290 For example the following would set ~session~ to ~*R*~, and ~results~
14291 to ~silent~ for every code block in the buffer, ensuring that all
14292 execution took place in the same session, and no results would be
14293 inserted into the buffer.
14295 #+begin_example
14296    ,#+PROPERTY: session *R*
14297    ,#+PROPERTY: results silent
14298 #+end_example
14300 **** Header arguments in Org mode properties
14301      :PROPERTIES:
14302      :DESCRIPTION: Set default values for a buffer or heading
14303      :END:
14305 Header arguments are also read from Org mode properties (see [[Property
14306 syntax]]), which can be set on a buffer-wide or per-heading basis.  An
14307 example of setting a header argument for all code blocks in a buffer
14308 is as follows:
14310 #+begin_example
14311    ,#+PROPERTY: tangle yes
14312 #+end_example
14314 #+vindex: org-use-property-inheritance
14316 When properties are used to set default header arguments, they are
14317 looked up with inheritance, regardless of the value of
14318 ~org-use-property-inheritance~.  In the following example the value of
14319 the ~:cache~ header argument will default to ~yes~ in all code blocks
14320 in the subtree rooted at the following heading:
14322 #+begin_example
14323    ,* outline header
14324    ,:PROPERTIES:
14325    ,:cache:    yes
14326    ,:END:
14327 #+end_example
14329 #+kindex: C-c C-x p
14330 #+vindex: org-babel-default-header-args
14332 Properties defined in this way override the properties set in
14333 ~org-babel-default-header-args~.  It is convenient to use the
14334 ~org-set-property~ function bound to {{{kbd(C-c C-x p)}}} to set
14335 properties in Org mode documents.
14337 **** Code block specific header arguments
14338      :PROPERTIES:
14339      :DESCRIPTION: The most common way to set values
14340      :END:
14342 The most common way to assign values to header arguments is at the
14343 code block level.  This can be done by listing a sequence of header
14344 arguments and their values as part of the ~#+BEGIN_SRC~ line.
14345 Properties set in this way override both the values of
14346 ~org-babel-default-header-args~ and header arguments specified as
14347 properties.  In the following example, the ~:results~ header argument
14348 is set to ~silent~, meaning the results of execution will not be
14349 inserted in the buffer, and the ~:exports~ header argument is set to
14350 ~code~, meaning only the body of the code block will be preserved on
14351 export to HTML or LaTeX.
14353 #+begin_example
14354    #+NAME: factorial
14355    #+BEGIN_SRC haskell :results silent :exports code :var n=0
14356    fac 0 = 1
14357    fac n = n * fac (n-1)
14358    #+END_SRC
14359 #+end_example
14361 Similarly, it is possible to set header arguments for inline code blocks:
14363 #+begin_example
14364    src_haskell[:exports both]@{fac 5@}
14365 #+end_example
14367 Code block header arguments can span multiple lines using ~#+HEADER:~
14368 or ~#+HEADERS:~ lines preceding a code block or nested between the
14369 ~#+NAME:~ line and the ~#+BEGIN_SRC~ line of a named code block.
14371 #+cindex: #+HEADER:
14372 #+cindex: #+HEADERS:
14374 This is an example of multi-line header arguments on an un-named code
14375 block:
14377 #+begin_example
14378    ,#+HEADERS: :var data1=1
14379    ,#+BEGIN_SRC emacs-lisp :var data2=2
14380       (message "data1:%S, data2:%S" data1 data2)
14381    ,#+END_SRC
14383    ,#+RESULTS:
14384    : data1:1, data2:2
14385 #+end_example
14387 This is an example of multi-line header arguments on a named code block:
14389 #+begin_example
14390    ,#+NAME: named-block
14391    ,#+HEADER: :var data=2
14392    ,#+BEGIN_SRC emacs-lisp
14393      (message "data:%S" data)
14394    ,#+END_SRC
14396    ,#+RESULTS: named-block
14397     : data:2
14398 #+end_example
14400 **** Header arguments in function calls
14401      :PROPERTIES:
14402      :DESCRIPTION: The most specific level
14403      :END:
14405 At the most specific level, header arguments for ``Library of Babel''
14406 or ~#+CALL:~ lines can be set as shown in the two examples below.  For
14407 more information on the structure of ~#+CALL:~ lines see [[Evaluating
14408 code blocks]].
14410 The following example will apply the ~:exports results~ header
14411 argument to the evaluation of the ~#+CALL:~ line:
14413 #+begin_example
14414    ,#+CALL: factorial(n=5) :exports results
14415 #+end_example
14417 The following example will apply the ~:session special~ header
14418 argument to the evaluation of the ~factorial~ code block:
14420 #+begin_example
14421    ,#+CALL: factorial[:session special](n=5)
14422 #+end_example
14424 *** Specific header arguments
14425     :PROPERTIES:
14426     :DESCRIPTION: List of header arguments
14427     :END:
14428 Header arguments consist of an initial colon followed by the name of
14429 the argument in lowercase letters.  Additional header arguments are
14430 defined on a language-specific basis, see [[Languages]].
14432 The following header arguments are defined:
14434 **** var
14435      :PROPERTIES:
14436      :DESCRIPTION: Pass arguments to code blocks
14437      :END:
14438 The ~:var~ header argument is used to pass arguments to code blocks.
14439 The specifics of how arguments are included in a code block vary by
14440 language; these are addressed in the language-specific documentation.
14441 However, the syntax used to specify arguments is the same across all
14442 languages.  In every case, variables require a default value when they
14443 are declared.
14445 The values passed to arguments can either be literal values,
14446 references, or Emacs Lisp code (see [[Emacs Lisp evaluation of
14447 variables]]).  References include anything in the Org mode file that
14448 takes a ~#+NAME:~, ~#+TBLNAME:~, or ~#+RESULTS:~ line.  This includes
14449 tables, lists, ~#+BEGIN_EXAMPLE~ blocks, other code blocks, and the
14450 results of other code blocks.
14452 Argument values can be indexed in a manner similar to arrays (see
14453 [[Indexable variable values]]).
14455 The following syntax is used to pass arguments to code blocks using the
14456 ~:var~ header argument:
14458 #+begin_example
14459    :var name=assign
14460 #+end_example
14462 The argument, ~assign~, can either be a literal value, such as a
14463 string {{{samp("string")}}} or a number {{{samp(9)}}}, or a reference
14464 to a table, a list, a literal example, another code block (with or
14465 without arguments), or the results of evaluating another code block.
14467 Here are examples of passing values by reference:
14469 #+attr_texinfo: :table-type table :indic @asis
14470 - a table named with either ~#+NAME:~ or ~#+TBLNAME:~ ::
14472   #+begin_example
14473      #+TBLNAME: example-table
14474      | 1 |
14475      | 2 |
14476      | 3 |
14477      | 4 |
14479      #+NAME: table-length
14480      #+BEGIN_SRC emacs-lisp :var table=example-table
14481      (length table)
14482      #+END_SRC
14484      #+RESULTS: table-length
14485      : 4
14486   #+end_example
14488 - a simple list named with ~#+NAME:~ :: 
14490   #+begin_example
14491      #+NAME: example-list
14492        - simple
14493          - not
14494          - nested
14495        - list
14497      #+BEGIN_SRC emacs-lisp :var x=example-list
14498        (print x)
14499      #+END_SRC
14501      #+RESULTS:
14502      | simple | list |
14503   #+end_example
14505   Note that nesting is not carried through to the source code block.
14507 - a named code block without arguments, optionally followed by parentheses ::
14509   #+begin_example
14510      #+BEGIN_SRC emacs-lisp :var length=table-length()
14511      (* 2 length)
14512      #+END_SRC
14514      #+RESULTS:
14515      : 8
14516   #+end_example
14518 - a named code block with arguments ::
14520   #+begin_example
14521      #+NAME: double
14522      #+BEGIN_SRC emacs-lisp :var input=8
14523      (* 2 input)
14524      #+END_SRC
14526      #+RESULTS: double
14527      : 16
14529      #+NAME: squared
14530      #+BEGIN_SRC emacs-lisp :var input=double(input=1)
14531      (* input input)
14532      #+END_SRC
14534      #+RESULTS: squared
14535      : 4
14536   #+end_example
14538 - a literal example block ::
14540   #+begin_example
14541      ,#+NAME: literal-example
14542      ,#+BEGIN_EXAMPLE
14543      A literal example
14544      on two lines
14545      ,#+END_EXAMPLE
14547      ,#+NAME: read-literal-example
14548      ,#+BEGIN_SRC emacs-lisp :var x=literal-example
14549        (concatenate 'string x " for you.")
14550      ,#+END_SRC
14552      ,#+RESULTS: read-literal-example
14553       : A literal example
14554       : on two lines for you.
14555   #+end_example
14557 # ***** Alternate argument syntax
14558 <<Alternate argument syntax>>
14560 It is also possible to specify arguments in a potentially more natural
14561 way using the ~#+NAME:~ line of a code block.  As in the following
14562 example, arguments can be packed inside of parentheses, separated by
14563 commas, following the source name.
14565 #+begin_example
14566    ,#+NAME: double(input=0, x=2)
14567    ,#+BEGIN_SRC emacs-lisp
14568     (* 2 (+ input x))
14569    ,#+END_SRC
14570 #+end_example
14572 # ***** Indexable variable values
14573 <<Indexable variable values>>
14575 It is possible to reference portions of variable values by
14576 /indexing/ into the variables.  Indexes are 0 based with negative
14577 values counting back from the end.  If an index is separated by commas
14578 then each subsequent section will index into the next deepest nesting
14579 or dimension of the value.  Note that this indexing occurs /before/
14580 other table related header arguments like ~:hlines~, ~:colnames~, and
14581 ~:rownames~ are applied.  The following example assigns the last cell
14582 of the first row the table ~example-table~ to the variable ~data~:
14584 #+begin_example
14585    ,#+NAME: example-table
14586    | 1 | a |
14587    | 2 | b |
14588    | 3 | c |
14589    | 4 | d |
14591    ,#+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
14592      data
14593    ,#+END_SRC
14595    ,#+RESULTS:
14596    : a
14597 #+end_example
14599 Ranges of variable values can be referenced using two integers
14600 separated by a ~:~, in which case the entire inclusive range is
14601 referenced.  The following example assigns the middle three rows of
14602 ~example-table~ to ~data~.
14604 #+begin_example
14605    #+NAME: example-table
14606    | 1 | a |
14607    | 2 | b |
14608    | 3 | c |
14609    | 4 | d |
14610    | 5 | 3 |
14612    #+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
14613      data
14614    #+END_SRC
14616    #+RESULTS:
14617    | 2 | b |
14618    | 3 | c |
14619    | 4 | d |
14620 #+end_example
14622 Additionally, an empty index, or the single character ~*~, are both
14623 interpreted to mean the entire range and as such are equivalent to
14624 ~0:-1~, as shown in the following example in which the entire first
14625 column is referenced:
14627 #+begin_example
14628    #+NAME: example-table
14629    | 1 | a |
14630    | 2 | b |
14631    | 3 | c |
14632    | 4 | d |
14634    #+BEGIN_SRC emacs-lisp :var data=example-table[,0]
14635      data
14636    #+END_SRC
14638    #+RESULTS:
14639    | 1 | 2 | 3 | 4 |
14640 #+end_example
14642 It is possible to index into the results of code blocks as well as
14643 tables.  Any number of dimensions can be indexed.  Dimensions are
14644 separated from one another by commas, as shown in the following
14645 example:
14647 #+begin_example
14648    #+NAME: 3D
14649    #+BEGIN_SRC emacs-lisp
14650      '(((1  2  3)  (4  5  6)  (7  8  9))
14651        ((10 11 12) (13 14 15) (16 17 18))
14652        ((19 20 21) (22 23 24) (25 26 27)))
14653    #+END_SRC
14655    #+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
14656      data
14657    #+END_SRC
14659    #+RESULTS:
14660    | 11 | 14 | 17 |
14661 #+end_example
14663 # ***** Emacs Lisp evaluation of variables
14664 <<Emacs Lisp evaluation of variables>>
14666 Emacs lisp code can be used to initialize variable values.  When a
14667 variable value starts with ~(~, ~[~, ~'~ or ~`~ it will be evaluated
14668 as Emacs Lisp and the result of the evaluation will be assigned as the
14669 variable value.  The following example demonstrates use of this
14670 evaluation to reliably pass the file-name of the Org mode buffer to a
14671 code block:[fn:150]
14673 #+begin_example
14674    #+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
14675      wc -w $filename
14676    #+END_SRC
14677 #+end_example
14679 Note that values read from tables and lists will not be evaluated as
14680 Emacs Lisp, as shown in the following example, which contains a Lisp
14681 list as the sole table element:
14683 #+begin_example
14684    #+NAME: table
14685    | (a b c) |
14687    #+HEADERS: :var data=table[0,0]
14688    #+BEGIN_SRC perl
14689      $data
14690    #+END_SRC
14692    #+RESULTS:
14693    : (a b c)
14694 #+end_example
14696 **** results
14697      :PROPERTIES:
14698      :DESCRIPTION: Specify the type of results and how they will be collected and handled
14699      :END:
14700 There are three classes of ~:results~ header argument.  Only one option
14701 per class may be supplied per code block.
14703 #+attr_texinfo: :table-type table :indic @asis
14704 - Collection ::
14706   These header arguments specify how the results should be collected
14707   from the code block.
14709 - Type ::
14711   These header arguments specify what type of result the code block will
14712   return---which has implications for how they will be inserted into the
14713   Org mode buffer.
14715 - Handling ::
14717   These header arguments specify how the results of evaluating the code
14718   block should be handled.
14720 # ***** Collection
14721 <<Collection>>
14723 The following ~:results~ options are mutually exclusive, and specify
14724 how the results should be collected from the code block.
14726 #+attr_texinfo: :table-type table :indic @asis
14727 - ~value~ ::
14729   This is the default.  The result is the value of the last statement in
14730   the code block.  This header argument places the evaluation in
14731   functional mode.  Note that in some languages, e.g., Python, use of
14732   this result type requires that a ~return~ statement be included in the
14733   body of the source code block.
14735 - ~output~ ::
14737   The result is the collection of everything printed to STDOUT during
14738   the execution of the code block.  This header argument places the
14739   evaluation in scripting mode.
14741 # ***** Type
14742 <<Type>>
14744 The following ~:results~ options are mutually exclusive and specify
14745 what type of results the code block will return.  By default, results
14746 are inserted as either a table or scalar depending on their value.
14748 #+attr_texinfo: :table-type table :indic @asis
14749 - ~table~, ~vector~ ::
14751   The results should be interpreted as an Org mode table.  If a single
14752   value is returned, it will be converted into a table with one row and
14753   one column.  E.g., ~:results value table~.
14755 - ~scalar~, ~verbatim~ ::
14757   The results should be interpreted literally---they will not be
14758   converted into a table.  The results will be inserted into the Org mode
14759   buffer as quoted text.  E.g., ~:results value verbatim~.
14761 - ~list~ ::
14763   The results should be interpreted as an Org mode list.  If a single
14764   scalar value is returned it will be converted into a list with only
14765   one element.
14767 - ~file~ ::
14769   The results will be interpreted as the path to a file, and will be
14770   inserted into the Org mode buffer as a file link.  E.g., ~:results
14771   value file~.
14773 - ~raw~ ::
14775   The results are interpreted as raw Org mode code and are inserted
14776   directly into the buffer.  If the results look like a table they will
14777   be aligned as such by Org mode.  E.g., ~:results value raw~.
14779 - ~org~ ::
14781   The results are will be enclosed in a ~BEGIN_SRC org~ block.  They are
14782   not comma-escaped by default but they will be if you hit
14783   {{{kbd(TAB)}}} in the block and/or if you export the file.  E.g.,
14784   ~:results value org~.
14786 - ~html~ ::
14788   Results are assumed to be HTML and will be enclosed in a ~BEGIN_HTML~
14789   block.  E.g., ~:results value html~.
14791 - ~latex~ ::
14793   Results assumed to be LaTeX and are enclosed in a ~BEGIN_LaTeX~
14794   block.  E.g., ~:results value latex~.
14796 - ~code~ ::
14798   Result are assumed to be parsable code and are enclosed in a code
14799   block.  E.g., ~:results value code~.
14801 - ~pp~ ::
14803   The result is converted to pretty-printed code and is enclosed in a
14804   code block.  This option currently supports Emacs Lisp, Python, and
14805   Ruby.  E.g., ~:results value pp~.
14807 - ~drawer~ ::
14809   The result is wrapped in a RESULTS drawer.  This can be useful for
14810   inserting ~raw~ or ~org~ syntax results in such a way that their
14811   extent is known and they can be automatically removed or replaced.
14813 # ***** Handling
14814 <<Handling>>
14815 The following ~:results~ options indicate what happens with the
14816 results once they are collected.
14818 #+attr_texinfo: :table-type table :indic @asis
14819 - ~replace~ ::
14821   The default value.  Any existing results will be removed, and the new
14822   results will be inserted into the Org mode buffer in their place.
14823   E.g., ~:results output replace~.
14825 - ~append~ ::
14827   If there are pre-existing results of the code block then the new
14828   results will be appended to the existing results.  Otherwise the new
14829   results will be inserted as with ~replace~.
14831 - ~prepend~ ::
14833   If there are pre-existing results of the code block then the new
14834   results will be prepended to the existing results.  Otherwise the new
14835   results will be inserted as with ~replace~.
14837 - ~silent~ ::
14839   The results will be echoed in the minibuffer but will not be inserted
14840   into the Org mode buffer.  E.g., ~:results output silent~.
14842 **** file
14843      :PROPERTIES:
14844      :DESCRIPTION: Specify a path for file output
14845      :END:
14847 The header argument ~:file~ is used to specify an external file in
14848 which to save code block results.  After code block evaluation an Org
14849 mode style ~[[file:]]~ link (see [[Link format]]) to the file will be inserted
14850 into the Org mode buffer.  Some languages including R, gnuplot, dot,
14851 and ditaa provide special handling of the ~:file~ header argument,
14852 automatically wrapping the code block body in the boilerplate code
14853 required to save output to the specified file.  This is often useful
14854 for saving graphical output of a code block to the specified file.
14856 The argument to ~:file~ should be either a string specifying the path
14857 to a file, or a list of two strings in which case the first element of
14858 the list should be the path to a file and the second a description for
14859 the link.
14861 **** file-desc
14862      :PROPERTIES:
14863      :DESCRIPTION: Specify a description for file results
14864      :END:
14866 The value of the ~:file-desc~ header argument is used to provide a
14867 description for file code block results which are inserted as Org mode
14868 links (see [[Link format]]).  If the ~:file-desc~ header argument is given
14869 with no value the link path will be placed in both the ``link'' and
14870 the ``description'' portion of the Org mode link.
14872 **** dir
14873      :PROPERTIES:
14874      :DESCRIPTION: Specify the default (possibly remote) directory for code block execution
14875      :TITLE:    ~:dir~ and remote execution
14876      :END:
14878 While the ~:file~ header argument can be used to specify the path to
14879 the output file, ~:dir~ specifies the default directory during code
14880 block execution.  If it is absent, then the directory associated with
14881 the current buffer is used.  In other words, supplying ~:dir path~
14882 temporarily has the same effect as changing the current directory with
14883 {{{kbd(M-x cd path)}}}, and then not supplying ~:dir~.  Under the
14884 surface, ~:dir~ simply sets the value of the Emacs variable
14885 ~default-directory~.
14887 When using ~:dir~, you should supply a relative path for file output
14888 (e.g., ~:file myfile.jpg~ or ~:file results/myfile.jpg~) in which
14889 case that path will be interpreted relative to the default directory.
14891 In other words, if you want your plot to go into a folder called
14892 {{{file(Work)}}} in your home directory, you could use a code block
14893 like the following example:
14895 #+begin_example
14896    #+BEGIN_SRC R :file myplot.png :dir ~/Work
14897    matplot(matrix(rnorm(100), 10), type="l")
14898    #+END_SRC
14899 #+end_example
14901 # ***** Remote execution
14902 <<Remote execution>>
14904 A directory on a remote machine can be specified using tramp file
14905 syntax, in which case the code will be evaluated on the remote
14906 machine.  An example is:
14908 #+begin_example
14909    #+BEGIN_SRC R :file plot.png :dir /dand@yakuba.princeton.edu:
14910    plot(1:10, main=system("hostname", intern=TRUE))
14911    #+END_SRC
14912 #+end_example
14914 Text results will be returned to the local Org mode buffer as usual,
14915 and file output will be created on the remote machine with relative
14916 paths interpreted relative to the remote directory.  An Org mode link
14917 to the remote file will be created.
14919 So, in the above example a plot will be created on the remote machine,
14920 and a link of the following form will be inserted in the org buffer:
14922 #+begin_example
14923    [[file:/scp:dand@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
14924 #+end_example
14926 Most of this functionality follows immediately from the fact that
14927 ~:dir~ sets the value of the Emacs variable ~default-directory~,
14928 thanks to tramp.  Those using XEmacs, or GNU Emacs prior to version 23
14929 may need to install tramp separately in order for these features to
14930 work correctly.
14932 # ***** Further points
14933 <<Further points>>
14934 Please be aware of these further points:
14936 - If ~:dir~ is used in conjunction with ~:session~, although it will
14937   determine the starting directory for a new session as expected, no
14938   attempt is currently made to alter the directory associated with an
14939   existing session.
14941 - ~:dir~ should typically not be used to create files during export
14942   with ~:exports results~ or ~:exports both~.  The reason is that, in
14943   order to retain portability of exported material between machines,
14944   during export links inserted into the buffer will /not/ be expanded
14945   against ~default directory~.  Therefore, if ~default-directory~ is
14946   altered using ~:dir~, it is probable that the file will be created
14947   in a location to which the link does not point.
14949 **** exports
14950      :PROPERTIES:
14951      :DESCRIPTION: Export code and/or results
14952      :END:
14953 The ~:exports~ header argument specifies what should be included in HTML
14954 or LaTeX exports of the Org mode file.
14956 #+attr_texinfo: :table-type table :indic @asis
14957 - ~code~ ::
14959   The default.  The body of code is included into the exported file.
14960   E.g., ~:exports code~.
14962 - ~results~ ::
14964   The result of evaluating the code is included in the exported file.
14965   E.g., ~:exports results~.
14967 - ~both~ ::
14969   Both the code and results are included in the exported file.  E.g.,
14970   ~:exports both~.
14972 - ~none~ ::
14974   Nothing is included in the exported file.  E.g., ~:exports none~.
14976 **** tangle
14977      :PROPERTIES:
14978      :DESCRIPTION: Toggle tangling and specify file name
14979      :END:
14981 The ~:tangle~ header argument specifies whether or not the code
14982 block should be included in tangled extraction of source code files.
14984 #+attr_texinfo: :table-type table :indic @asis
14985 - ~tangle~ ::
14987   The code block is exported to a source code file named after the full
14988   path (including the directory) and file name (w/o extension) of the
14989   Org mode file.  E.g., ~:tangle yes~.
14991 - ~no~ ::
14993   The default.  The code block is not exported to a source code file.
14994   E.g., ~:tangle no~.
14996 - other ::
14998   Any other string passed to the ~:tangle~ header argument is
14999   interpreted as a path (directory and file name relative to the
15000   directory of the Org mode file) to which the block will be exported,
15001   e.g., ~:tangle path~.
15003 **** mkdirp
15004 :PROPERTIES:
15005 :DESCRIPTION: Toggle creation of parent directories of target files during tangling
15006 :END:
15008 The ~:mkdirp~ header argument can be used to create parent directories
15009 of tangled files when missing.  This can be set to ~yes~ to enable
15010 directory creation or to ~no~ to inhibit directory creation.
15012 **** comments
15013 :PROPERTIES:
15014 :DESCRIPTION: Toggle insertion of comments in tangled code files
15015 :END:
15017 By default code blocks are tangled to source-code files without any
15018 insertion of comments beyond those which may already exist in the body
15019 of the code block.  The ~:comments~ header argument can be set as
15020 follows to control the insertion of extra comments into the tangled
15021 code file.
15023 #+attr_texinfo: :table-type table :indic @asis
15024 - ~no~ ::
15026   The default.  No extra comments are inserted during tangling.
15028 - ~link~ ::
15030   The code block is wrapped in comments which contain pointers back to
15031   the original Org file from which the code was tangled.
15033 - ~yes~ ::
15035   A synonym for ``link'' to maintain backwards compatibility.
15037 - ~org~ ::
15039   Include text from the Org mode file as a comment.
15041   The text is picked from the leading context of the tangled code and is
15042   limited by the nearest headline or source block as the case may be.
15044 - ~both~ ::
15046   Turns on both the ``link'' and ``org'' comment options.
15048 - ~noweb~ ::
15050   Turns on the ``link'' comment option, and additionally wraps expanded
15051   noweb references in the code block body in link comments.
15053 **** padline
15054 :PROPERTIES:
15055 :DESCRIPTION: Control insertion of padding lines in tangle code files
15056 :END:
15058 Control in insertion of padding lines around code block bodies in tangled
15059 code files.  The default value is ~yes~ which results in insertion of
15060 newlines before and after each tangled code block.  The following arguments
15061 are accepted:
15063 #+attr_texinfo: :table-type table :indic @asis
15064 - ~yes~ ::
15066   Insert newlines before and after each code block body in tangled code
15067   files.
15069 - ~no~ ::
15071   Do not insert any newline padding in tangled output.
15073 **** no-expand
15074 :PROPERTIES:
15075 :DESCRIPTION: Turn off variable assignment and noweb expansion during tangling
15076 :END:
15078 By default, code blocks are expanded with ~org-babel-expand-src-block~
15079 during tangling.  This has the effect of assigning values to variables
15080 specified with ~:var~ (see [[var]]), and of replacing ``noweb'' references
15081 (see [[Noweb reference syntax]]) with their targets.  The ~:no-expand~
15082 header argument can be used to turn off this behavior.
15084 **** session
15085 :PROPERTIES:
15086 :DESCRIPTION: Preserve state of code evaluation
15087 :END:
15089 The ~:session~ header argument starts a session for an interpreted
15090 language where state is preserved.
15092 By default, a session is not started.
15094 A string passed to the ~:session~ header argument will give the
15095 session a name.  This makes it possible to run concurrent sessions for
15096 each interpreted language.
15098 **** noweb
15099 :PROPERTIES:
15100 :DESCRIPTION: Toggle expansion of noweb references
15101 :END:
15103 The ~:noweb~ header argument controls expansion of ``noweb'' syntax
15104 references (see [[Noweb reference syntax]]) when the code block is
15105 evaluated, tangled, or exported.  The ~:noweb~ header argument can have
15106 one of the five values: ~no~, ~yes~, ~tangle~, ~no-export~, or
15107 ~strip-export~.
15109 #+attr_texinfo: :table-type table :indic @asis
15110 - ~no~ ::
15112   The default.  ``Noweb'' syntax references in the body of the code block
15113   will not be expanded before the code block is evaluated, tangled or
15114   exported.
15116 - ~yes~ ::
15118   ``Noweb'' syntax references in the body of the code block will be
15119   expanded before the code block is evaluated, tangled or exported.
15121 - ~tangle~ ::
15123   ``Noweb'' syntax references in the body of the code block will be
15124   expanded before the code block is tangled.  However, ``noweb'' syntax
15125   references will not be expanded when the code block is evaluated or
15126   exported.
15128 - ~no-export~ ::
15130   ``Noweb'' syntax references in the body of the code block will be
15131   expanded before the block is evaluated or tangled.  However, ``noweb''
15132   syntax references will not be expanded when the code block is
15133   exported.
15135 - ~strip-export~ ::
15137   ``Noweb'' syntax references in the body of the code block will be
15138   expanded before the block is evaluated or tangled.  However, ``noweb''
15139   syntax references will not be removed when the code block is exported.
15141 - ~eval~ ::
15143   ``Noweb'' syntax references in the body of the code block will only be
15144   expanded before the block is evaluated.
15146 # ***** Noweb prefix lines
15147 <<Noweb prefix lines>>
15149 Noweb insertions are placed behind the line prefix of the
15150 ~<<reference>>~.  Because the ~<<example>>~ noweb reference appears
15151 behind the SQL comment syntax in the following example, each line of
15152 the expanded noweb reference will be commented.
15154 This code block:
15156 #+begin_example
15157    -- <<example>>
15158 #+end_example
15161 expands to:
15163 #+begin_example
15164    -- this is the
15165    -- multi-line body of example
15166 #+end_example
15168 Note that noweb replacement text that does not contain any newlines
15169 will not be inserted behind the line prefix, so it is always possible
15170 to use inline noweb references.
15172 **** noweb-ref
15173 :PROPERTIES:
15174 :DESCRIPTION: Specify block's noweb reference resolution target
15175 :END:
15177 When expanding ``noweb'' style references the bodies of all code block
15178 with /either/ a block name matching the reference name /or/ a
15179 ~:noweb-ref~ header argument matching the reference name will be
15180 concatenated together to form the replacement text.
15182 By setting this header argument at the sub-tree or file level, simple code
15183 block concatenation may be achieved.  For example, when tangling the
15184 following Org mode file, the bodies of code blocks will be concatenated into
15185 the resulting pure code file.[fn:151]
15187 #+begin_example
15188    #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
15189      <<fullest-disk>>
15190    #+END_SRC
15191   ,* the mount point of the fullest disk
15192      :PROPERTIES:
15193      :noweb-ref: fullest-disk
15194      :END:
15196    ,** query all mounted disks
15197    #+BEGIN_SRC sh
15198      df \
15199    #+END_SRC
15201    ,** strip the header row
15202    #+BEGIN_SRC sh
15203      |sed '1d' \
15204    #+END_SRC
15206    ,** sort by the percent full
15207    #+BEGIN_SRC sh
15208      |awk '@{print $5 " " $6@}'|sort -n |tail -1 \
15209    #+END_SRC
15211    ,** extract the mount point
15212    #+BEGIN_SRC sh
15213      |awk '@{print $2@}'
15214    #+END_SRC
15215 #+end_example
15217 The ~:noweb-sep~ (see [[noweb-sep]]) header argument holds the string used
15218 to separate accumulate noweb references like those above.  By default a
15219 newline is used.
15221 **** noweb-sep
15222 :PROPERTIES:
15223 :DESCRIPTION: String used to separate noweb references
15224 :END:
15226 The ~:noweb-sep~ header argument holds the string used to separate
15227 accumulated noweb references (see [[noweb-ref]]).  By default a newline is
15228 used.
15230 **** cache
15231 :PROPERTIES:
15232 :DESCRIPTION: Avoid re-evaluating unchanged code blocks
15233 :END:
15235 The ~:cache~ header argument controls the use of in-buffer caching of
15236 the results of evaluating code blocks.  It can be used to avoid
15237 re-evaluating unchanged code blocks.  Note that the ~:cache~ header
15238 argument will not attempt to cache results when the ~:session~ header
15239 argument is used, because the results of the code block execution may
15240 be stored in the session outside of the Org mode buffer.  The ~:cache~
15241 header argument can have one of two values: ~yes~ or ~no~.
15243 #+attr_texinfo: :table-type table :indic @asis
15244 - ~no~ ::
15246   The default.  No caching takes place, and the code block will be
15247   evaluated every time it is called.
15249 - ~yes~ ::
15251   Every time the code block is run a SHA1 hash of the code and arguments
15252   passed to the block will be generated.  This hash is packed into the
15253   ~#+RESULTS:~ line and will be checked on subsequent executions of the
15254   code block.  If the code block has not changed since the last time it
15255   was evaluated, it will not be re-evaluated.
15258 Code block caches notice if the value of a variable argument
15259 to the code block has changed.  If this is the case, the cache is
15260 invalidated and the code block is re-run.  In the following example,
15261 ~caller~ will not be re-run unless the results of ~random~ have
15262 changed since it was last run.
15264 #+begin_example
15265    #+NAME: random
15266    #+BEGIN_SRC R :cache yes
15267    runif(1)
15268    #+END_SRC
15270    #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
15271    0.4659510825295
15273    #+NAME: caller
15274    #+BEGIN_SRC emacs-lisp :var x=random :cache yes
15275    x
15276    #+END_SRC
15278    #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
15279    0.254227238707244
15280 #+end_example
15282 **** sep
15283 :PROPERTIES:
15284 :DESCRIPTION: Delimiter for writing tabular results outside Org
15285 :END:
15286 #+kindex: C-c C-o
15288 The ~:sep~ header argument can be used to control the delimiter used
15289 when writing tabular results out to files external to Org mode.  This
15290 is used either when opening tabular results of a code block by calling
15291 the ~org-open-at-point~ function bound to {{{kbd(C-c C-o)}}} on the
15292 code block, or when writing code block results to an external file
15293 (see [[file]]) header argument.
15295 By default, when ~:sep~ is not specified output tables are tab
15296 delimited.
15298 **** hlines
15299 :PROPERTIES:
15300 :DESCRIPTION: Handle horizontal lines in tables
15301 :END:
15303 Tables are frequently represented with one or more horizontal lines,
15304 or hlines.  The ~:hlines~ argument to a code block accepts the values
15305 ~yes~ or ~no~, with a default value of ~no~.
15307 #+attr_texinfo: :table-type table :indic @asis
15308 - ~no~ ::
15310   Strips horizontal lines from the input table.  In most languages this
15311   is the desired effect because an ~hline~ symbol is interpreted as an
15312   unbound variable and raises an error.  Setting ~:hlines no~ or relying
15313   on the default value yields the following results.
15315   #+begin_example
15316      #+TBLNAME: many-cols
15317      | a | b | c |
15318      |---+---+---|
15319      | d | e | f |
15320      |---+---+---|
15321      | g | h | i |
15323      #+NAME: echo-table
15324      #+BEGIN_SRC python :var tab=many-cols
15325        return tab
15326      #+END_SRC
15328      #+RESULTS: echo-table
15329      | a | b | c |
15330      | d | e | f |
15331      | g | h | i |
15332   #+end_example
15334 - ~yes~ ::
15336   Leaves hlines in the table.  Setting ~:hlines yes~ has this effect.
15338   #+begin_example
15339      #+TBLNAME: many-cols
15340      | a | b | c |
15341      |---+---+---|
15342      | d | e | f |
15343      |---+---+---|
15344      | g | h | i |
15346      #+NAME: echo-table
15347      #+BEGIN_SRC python :var tab=many-cols :hlines yes
15348        return tab
15349      #+END_SRC
15351      #+RESULTS: echo-table
15352      | a | b | c |
15353      |---+---+---|
15354      | d | e | f |
15355      |---+---+---|
15356      | g | h | i |
15357   #+end_example
15359 **** colnames
15360 :PROPERTIES:
15361 :DESCRIPTION: Handle column names in tables
15362 :END:
15364 The ~:colnames~ header argument accepts the values ~yes~, ~no~, or
15365 ~nil~ for unassigned.  The default value is ~nil~.  Note that the
15366 behavior of the ~:colnames~ header argument may differ across
15367 languages.  For example Emacs Lisp code blocks ignore the ~:colnames~
15368 header argument entirely given the ease with which tables with column
15369 names may be handled directly in Emacs Lisp.
15371 #+attr_texinfo: :table-type table :indic @asis
15372 - ~nil~ ::
15374   If an input table looks like it has column names (because its second
15375   row is an hline), then the column names will be removed from the table
15376   before processing, then reapplied to the results.
15378   #+begin_example
15379      #+TBLNAME: less-cols
15380      | a |
15381      |---|
15382      | b |
15383      | c |
15385      #+NAME: echo-table-again
15386      #+BEGIN_SRC python :var tab=less-cols
15387        return [[val + '*' for val in row] for row in tab]
15388      #+END_SRC
15390      #+RESULTS: echo-table-again
15391      | a  |
15392      |----|
15393      | b* |
15394      | c* |
15395   #+end_example
15397   Please note that column names are not removed before the table is
15398   indexed using variable indexing.  See [[Indexable variable values]].
15400 - ~no~ ::
15402   No column name pre-processing takes place
15404 - ~yes~ ::
15406   Column names are removed and reapplied as with ~nil~ even if the table
15407   does not ``look like'' it has column names (i.e., the second row is
15408   not an hline).
15410 **** rownames
15411 :PROPERTIES:
15412 :DESCRIPTION: Handle row names in tables
15413 :END:
15415 The ~:rownames~ header argument can take on the values ~yes~
15416 or ~no~, with a default value of ~no~.
15418 #+attr_texinfo: :table-type table :indic @asis
15419 - ~no~ ::
15421   No row name pre-processing will take place.
15423 - ~yes~ ::
15425   The first column of the table is removed from the table before
15426   processing, and is then reapplied to the results.
15428   #+begin_example
15429      #+TBLNAME: with-rownames
15430      | one | 1 | 2 | 3 | 4 |  5 |
15431      | two | 6 | 7 | 8 | 9 | 10 |
15433      #+NAME: echo-table-once-again
15434      #+BEGIN_SRC python :var tab=with-rownames :rownames yes
15435        return [[val + 10 for val in row] for row in tab]
15436      #+END_SRC
15438      #+RESULTS: echo-table-once-again
15439      | one | 11 | 12 | 13 | 14 | 15 |
15440      | two | 16 | 17 | 18 | 19 | 20 |
15441   #+end_example
15443   Please note that row names are not removed before the table is indexed
15444   using variable indexing.  See [[Indexable variable values]].
15446 **** shebang
15447 :PROPERTIES:
15448 :DESCRIPTION: Make tangles files executable
15449 :END:
15451 Setting the ~:shebang~ header argument to a string value (e.g.,
15452 {{{samp(:shebang "#!/bin/bash")}}}) causes the string to be inserted as the
15453 first line of any tangled file holding the code block, and the file
15454 permissions of the tangled file are set to make it executable.
15456 **** eval
15457 :PROPERTIES:
15458 :DESCRIPTION: Limit evaluation of specific code blocks
15459 :END:
15461 The ~:eval~ header argument can be used to limit the evaluation of
15462 specific code blocks.  The ~:eval~ header argument can be useful for
15463 protecting against the evaluation of dangerous code blocks or to
15464 ensure that evaluation will require a query regardless of the value of
15465 the ~org-confirm-babel-evaluate~ variable.  The possible values of
15466 ~:eval~ and their effects are shown below.
15468 #+attr_texinfo: :table-type table :indic @asis
15469 - ~never~ or ~no~ ::
15471   The code block will not be evaluated under any circumstances.
15473 - ~query~ ::
15475   Evaluation of the code block will require an affirmative answer to a
15476   query.
15478 - ~never-export~ or ~no-export~ ::
15480   The code block will not be evaluated during export but may still be
15481   called interactively.
15483 - ~query-export~ ::
15485   Evaluation of the code block during export will require an affirmative
15486   answer to a query.
15489 If this header argument is not set then evaluation is determined by the value
15490 of the ~org-confirm-babel-evaluate~ variable (see [[Code evaluation
15491 security]]).
15493 **** wrap
15494 :PROPERTIES:
15495 :DESCRIPTION: Mark source block evaluation results
15496 :END:
15498 The ~:wrap~ header argument is used to mark the results of source
15499 block evaluation.  The header argument can be passed a string that will
15500 be appended to ~#+BEGIN_~ and ~#+END_~, which will then be used to
15501 wrap the results.  If no string is specified then the results will be
15502 wrapped in a ~#+BEGIN/END_RESULTS~ block.
15504 ** Results of evaluation
15505    :PROPERTIES:
15506    :DESCRIPTION: How evaluation results are handled
15507    :END:
15508 #+cindex: code block, results of evaluation
15509 #+cindex: source code, results of evaluation
15511 The way in which results are handled depends on whether a session is
15512 invoked, as well as on whether ~:results value~ or ~:results output~
15513 is used.  The following table shows the table possibilities.  For a full
15514 listing of the possible results header arguments, see [[results]].
15516 |                   | *Non-session*            | *Session*                           |
15517 |-------------------+--------------------------+-------------------------------------|
15518 | ~:results value~  | value of last expression | value of last expression            |
15519 | ~:results output~ | contents of STDOUT       | concatenation of interpreter output |
15522 Please note that with ~:results value~, the result in both ~:session~
15523 and non-session is returned to Org mode as a table (a one- or
15524 two-dimensional vector of strings or numbers) when appropriate.
15526 *** Non-session
15528 #+attr_texinfo: :table-type table :indic @asis
15529 - ~:results value~ ::
15531   This is the default.  Internally, the value is obtained by wrapping the
15532   code in a function definition in the external language, and evaluating
15533   that function.  Therefore, code should be written as if it were the
15534   body of such a function.  In particular, note that Python does not
15535   automatically return a value from a function unless a ~return~
15536   statement is present, and so a {{{samp(return)}}} statement will
15537   usually be required in Python.
15539   This is the only one of the four evaluation contexts in which the code
15540   is automatically wrapped in a function definition.
15542 - ~:results output~ ::
15544   The code is passed to the interpreter as an external process, and the
15545   contents of the standard output stream are returned as text.[fn:152]
15547 *** Session
15549 #+attr_texinfo: :table-type table :indic @asis
15550 - ~:results value~ ::
15552   The code is passed to an interpreter running as an interactive Emacs
15553   inferior process.  Only languages which provide tools for interactive
15554   evaluation of code have session support, so some language (e.g., C and
15555   ditaa) do not support the ~:session~ header argument, and in other
15556   languages (e.g., Python and Haskell) which have limitations on the
15557   code which may be entered into interactive sessions, those limitations
15558   apply to the code in code blocks using the ~:session~ header argument
15559   as well.
15561   Unless the ~:results output~ option is supplied (see below) the result
15562   returned is the result of the last evaluation performed by the
15563   interpreter.[fn:153]
15565 - ~:results output~ ::
15567   The code is passed to the interpreter running as an interactive Emacs
15568   inferior process.  The result returned is the concatenation of the
15569   sequence of (text) output from the interactive interpreter.  Notice
15570   that this is not necessarily the same as what would be sent to
15571   ~STDOUT~ if the same code were passed to a non-interactive interpreter
15572   running as an external process.  Compare the following two
15573   examples:
15575   #+begin_example
15576      #+BEGIN_SRC python :results output
15577       print "hello"
15578       2
15579       print "bye"
15580      #+END_SRC
15582      #+RESULTS:
15583      : hello
15584      : bye
15585   #+end_example
15587   In non-session mode, the `2' is not printed and does not appear.
15589   #+begin_example
15590      #+BEGIN_SRC python :results output :session
15591       print "hello"
15592       2
15593       print "bye"
15594      #+END_SRC
15596      #+RESULTS:
15597      : hello
15598      : 2
15599      : bye
15600   #+end_example
15602   But in ~:session~ mode, the interactive interpreter receives input `2'
15603   and prints out its value, `2'.  (Indeed, the other print statements are
15604   unnecessary here).
15606 ** Noweb reference syntax
15607    :PROPERTIES:
15608    :DESCRIPTION: Literate programming in Org mode
15609    :END:
15610 #+cindex: code block, noweb reference
15611 #+cindex: syntax, noweb
15612 #+cindex: source code, noweb reference
15614 The ``noweb'' (see [[http://www.cs.tufts.edu/~nr/noweb/]]) Literate
15615 Programming system allows named blocks of code to be referenced using
15616 the familiar Noweb syntax:
15618 #+begin_example
15619    <<code-block-name>>
15620 #+end_example
15622 When a code block is tangled or evaluated, whether or not ``noweb''
15623 references are expanded depends upon the value of the ~:noweb~ header
15624 argument.  If ~:noweb yes~, then a Noweb reference is expanded before
15625 evaluation.  If ~:noweb no~, the default, then the reference is not
15626 expanded before evaluation.  See the [[noweb-ref]] header argument for a
15627 more flexible way to resolve noweb references.
15629 It is possible to include the /results/ of a code block rather than
15630 the body.  This is done by appending parenthesis to the code block
15631 name, which may optionally contain arguments to the code block as
15632 shown below.
15634 #+begin_example
15635    <<code-block-name(optional arguments)>>
15636 #+end_example
15638 Note that the default value, ~:noweb no~, was chosen to ensure that
15639 correct code is not broken in a language, such as Ruby, where
15640 ~<<arg>>~ is a syntactically valid construct.  If ~<<arg>>~ is not
15641 syntactically valid in languages that you use, then please consider
15642 setting the default value.
15644 If noweb tangling is slow in large Org mode files, consider
15645 setting the ~*org-babel-use-quick-and-dirty-noweb-expansion*~ variable
15646 to true.  This will result in faster noweb reference resolution at the
15647 expense of not correctly resolving inherited values of the
15648 ~:noweb-ref~ header argument.
15650 ** Key bindings and useful functions
15651    :PROPERTIES:
15652    :DESCRIPTION: Work quickly with code blocks
15653    :END:
15654 #+cindex: code block, key bindings
15656 Many common Org mode key sequences are re-bound depending on
15657 the context.
15659 Within a code block, the following key bindings
15660 are active:
15661 #+kindex: C-c C-c
15662 #+kindex: C-c C-o
15663 #+kindex: C-up
15664 #+kindex: M-down
15666 #+attr_texinfo: :columns 0.2 0.55
15667 | Key binding           | Function                          |
15668 |-----------------------+-----------------------------------|
15669 | {{{kbd(C-c C-c)}}}    | ~org-babel-execute-src-block~     |
15670 | {{{kbd(C-c C-o)}}}    | ~org-babel-open-src-block-result~ |
15671 | {{{kbdkey(C-,up)}}}   | ~org-babel-load-in-session~       |
15672 | {{{kbdkey(M-,down)}}} | ~org-babel-pop-to-session~        |
15675 In an Org mode buffer, the following key bindings are active:
15677 #+kindex: C-c C-v p
15678 #+kindex: C-c C-v C-p
15679 #+kindex: C-c C-v n
15680 #+kindex: C-c C-v C-n
15681 #+kindex: C-c C-v e
15682 #+kindex: C-c C-v C-e
15683 #+kindex: C-c C-v o
15684 #+kindex: C-c C-v C-o
15685 #+kindex: C-c C-v v
15686 #+kindex: C-c C-v C-v
15687 #+kindex: C-c C-v u
15688 #+kindex: C-c C-v C-u
15689 #+kindex: C-c C-v g
15690 #+kindex: C-c C-v C-g
15691 #+kindex: C-c C-v r
15692 #+kindex: C-c C-v C-r
15693 #+kindex: C-c C-v b
15694 #+kindex: C-c C-v C-b
15695 #+kindex: C-c C-v s
15696 #+kindex: C-c C-v C-s
15697 #+kindex: C-c C-v d
15698 #+kindex: C-c C-v C-d
15699 #+kindex: C-c C-v t
15700 #+kindex: C-c C-v C-t
15701 #+kindex: C-c C-v f
15702 #+kindex: C-c C-v C-f
15703 #+kindex: C-c C-v c
15704 #+kindex: C-c C-v C-c
15705 #+kindex: C-c C-v j
15706 #+kindex: C-c C-v C-j
15707 #+kindex: C-c C-v l
15708 #+kindex: C-c C-v C-l
15709 #+kindex: C-c C-v i
15710 #+kindex: C-c C-v C-i
15711 #+kindex: C-c C-v I
15712 #+kindex: C-c C-v C-I
15713 #+kindex: C-c C-v z
15714 #+kindex: C-c C-v C-z
15715 #+kindex: C-c C-v a
15716 #+kindex: C-c C-v C-a
15717 #+kindex: C-c C-v h
15718 #+kindex: C-c C-v C-h
15719 #+kindex: C-c C-v x
15720 #+kindex: C-c C-v C-x
15722 #+attr_texinfo: :columns 0.4 0.6
15723 | Key binding                                    | Function                                   |
15724 |------------------------------------------------+--------------------------------------------|
15725 | {{{kbd(C-c C-v p)}}} or {{{kbd(C-c C-v C-p)}}} | ~org-babel-previous-src-block~             |
15726 | {{{kbd(C-c C-v n)}}} or {{{kbd(C-c C-v C-n)}}} | ~org-babel-next-src-block~                 |
15727 | {{{kbd(C-c C-v e)}}} or {{{kbd(C-c C-v C-e)}}} | ~org-babel-execute-maybe~                  |
15728 | {{{kbd(C-c C-v o)}}} or {{{kbd(C-c C-v C-o)}}} | ~org-babel-open-src-block-result~          |
15729 | {{{kbd(C-c C-v v)}}} or {{{kbd(C-c C-v C-v)}}} | ~org-babel-expand-src-block~               |
15730 | {{{kbd(C-c C-v u)}}} or {{{kbd(C-c C-v C-u)}}} | ~org-babel-goto-src-block-head~            |
15731 | {{{kbd(C-c C-v g)}}} or {{{kbd(C-c C-v C-g)}}} | ~org-babel-goto-named-src-block~           |
15732 | {{{kbd(C-c C-v r)}}} or {{{kbd(C-c C-v C-r)}}} | ~org-babel-goto-named-result~              |
15733 | {{{kbd(C-c C-v b)}}} or {{{kbd(C-c C-v C-b)}}} | ~org-babel-execute-buffer~                 |
15734 | {{{kbd(C-c C-v s)}}} or {{{kbd(C-c C-v C-s)}}} | ~org-babel-execute-subtree~                |
15735 | {{{kbd(C-c C-v d)}}} or {{{kbd(C-c C-v C-d)}}} | ~org-babel-demarcate-block~                |
15736 | {{{kbd(C-c C-v t)}}} or {{{kbd(C-c C-v C-t)}}} | ~org-babel-tangle~                         |
15737 | {{{kbd(C-c C-v f)}}} or {{{kbd(C-c C-v C-f)}}} | ~org-babel-tangle-file~                    |
15738 | {{{kbd(C-c C-v c)}}} or {{{kbd(C-c C-v C-c)}}} | ~org-babel-check-src-block~                |
15739 | {{{kbd(C-c C-v j)}}} or {{{kbd(C-c C-v C-j)}}} | ~org-babel-insert-header-arg~              |
15740 | {{{kbd(C-c C-v l)}}} or {{{kbd(C-c C-v C-l)}}} | ~org-babel-load-in-session~                |
15741 | {{{kbd(C-c C-v i)}}} or {{{kbd(C-c C-v C-i)}}} | ~org-babel-lob-ingest~                     |
15742 | {{{kbd(C-c C-v I)}}} or {{{kbd(C-c C-v C-I)}}} | ~org-babel-view-src-block-info~            |
15743 | {{{kbd(C-c C-v z)}}} or {{{kbd(C-c C-v C-z)}}} | ~org-babel-switch-to-session-with-code~    |
15744 | {{{kbd(C-c C-v a)}}} or {{{kbd(C-c C-v C-a)}}} | ~org-babel-sha1-hash~                      |
15745 | {{{kbd(C-c C-v h)}}} or {{{kbd(C-c C-v C-h)}}} | ~org-babel-describe-bindings~              |
15746 | {{{kbd(C-c C-v x)}}} or {{{kbd(C-c C-v C-x)}}} | ~org-babel-do-key-sequence-in-edit-buffer~ |
15749 # When possible these keybindings were extended to work when the control key is
15750 # kept pressed, resulting in the following additional keybindings.
15752 # @multitable @columnfractions 0.25 0.75
15753 # - {{{kbd(C-c C-v C-a)}}} @tab ~org-babel-sha1-hash~
15754 # - {{{kbd(C-c C-v C-b)}}} @tab ~org-babel-execute-buffer~
15755 # - {{{kbd(C-c C-v C-f)}}} @tab ~org-babel-tangle-file~
15756 # - {{{kbd(C-c C-v C-l)}}} @tab ~org-babel-lob-ingest~
15757 # - {{{kbd(C-c C-v C-p)}}} @tab ~org-babel-expand-src-block~
15758 # - {{{kbd(C-c C-v C-s)}}} @tab ~org-babel-execute-subtree~
15759 # - {{{kbd(C-c C-v C-t)}}} @tab ~org-babel-tangle~
15760 # - {{{kbd(C-c C-v C-z)}}} @tab ~org-babel-switch-to-session~
15761 # @end multitable
15763 ** Batch execution
15764    :PROPERTIES:
15765    :DESCRIPTION: Call functions from the command line
15766    :END:
15767 #+cindex: code block, batch execution
15768 #+cindex: source code, batch execution
15770 It is possible to call functions from the command line.  This shell
15771 script calls ~org-babel-tangle~ on every one of its arguments.
15773 Be sure to adjust the paths to fit your system.
15775 #+begin_example
15776    #!/bin/sh
15777    # -*- mode: shell-script -*-
15778    #
15779    # tangle files with org-mode
15780    #
15781    DIR=`pwd`
15782    FILES=""
15784    # wrap each argument in the code required to call tangle on it
15785    for i in $@; do
15786        FILES="$FILES \"$i\""
15787    done
15789    emacs -Q --batch \
15790    --eval "(progn
15791    (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
15792    (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t))
15793    (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
15794    (mapc (lambda (file)
15795           (find-file (expand-file-name file \"$DIR\"))
15796           (org-babel-tangle)
15797           (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
15798 #+end_example
15800 * FIXME Miscellaneous
15801   :PROPERTIES:
15802   :DESCRIPTION: All the rest which did not fit elsewhere
15803   :END:
15805 ** FIXME Completion
15806    :PROPERTIES:
15807    :DESCRIPTION: M-TAB knows what you need
15808    :END:
15809 #+cindex: completion, of @TeX{} symbols
15810 #+cindex: completion, of TODO keywords
15811 #+cindex: completion, of dictionary words
15812 #+cindex: completion, of option keywords
15813 #+cindex: completion, of tags
15814 #+cindex: completion, of property keys
15815 #+cindex: completion, of link abbreviations
15816 #+cindex: @TeX{} symbol completion
15817 #+cindex: TODO keywords completion
15818 #+cindex: dictionary word completion
15819 #+cindex: option keyword completion
15820 #+cindex: tag completion
15821 #+cindex: link abbreviations, completion of
15823 Emacs would not be Emacs without completion, and Org mode uses it
15824 whenever it makes sense.  If you prefer an iswitchb- or ido-like
15825 interface for some of the completion prompts, you can specify your
15826 preference by setting at most one of the variables
15827 ~org-completion-use-iswitchb~ or ~org-completion-use-ido~.
15829 Org supports in-buffer completion.  This type of completion does not
15830 make use of the minibuffer.  You simply type a few letters into the
15831 buffer and use the {{{key(TAB)}}} key to complete text right there.
15833 #+attr_texinfo: :table-type table :indic @asis
15834 - {{{kbdkey(M-,TAB)}}} ::
15835   #+kindex: M-@key{TAB}
15837   Complete word at point.
15839   - At the beginning of a headline :: 
15841     Complete TODO keywords.
15843   - After {{{kbd(XXX)}}} :: 
15844     # Should be \
15845     Complete TeX symbols supported by the exporter.
15847   - After {{{samp(*)}}} :: 
15849     Complete headlines in the current buffer so that they can be used in
15850     search links like:
15851     
15852     #+begin_example
15853        [[*find this headline]]
15854     #+end_example
15856   - After {{{samp(:)}}} in a headline :: 
15858     Complete tags.  The list of tags is taken from the variable
15859     ~org-tag-alist~ (possibly set through the {{{samp(#+TAGS)}}} in-buffer
15860     option, see [[Setting tags]]), or it is created dynamically from all tags
15861     used in the current buffer.
15863   - After {{{samp(:)}}} and not in a headline ::
15865     Complete property keys.  The list of keys is constructed dynamically
15866     from all keys used in the current buffer.
15868   - After {{{samp([)}}} ::
15870     Complete link abbreviations (see [[Link abbreviations]]).
15872   - After {{{samp(#+)}}} ::
15874     Complete the special keywords like {{{samp(TYP_TODO)}}} or
15875     {{{samp(OPTIONS)}}} which set file-specific options for Org mode.  When
15876     the option keyword is already complete, pressing {{{kbdkey(M-,TAB)}}}
15877     again will insert example settings for this keyword.
15879   - In the line after {{{samp(#+STARTUP: )}}} ::
15881     Complete startup keywords, i.e., valid keys for this line.
15883   - Elsewhere ::
15885     Complete dictionary words using Ispell.
15887 ** Easy templates
15888    :PROPERTIES:
15889    :DESCRIPTION: Quick insertion of structural elements
15890    :END:
15891 #+cindex: template insertion
15892 #+cindex: insertion, of templates
15894 Org mode supports insertion of empty structural elements (like
15895 ~#+BEGIN_SRC~ and ~#+END_SRC~ pairs) with just a few key strokes.  This
15896 is achieved through a native template expansion mechanism.  Note that
15897 Emacs has several other template mechanisms which could be used in a
15898 similar way, for example {{{file(yasnippet)}}}.
15900 To insert a structural element, type a {{{kbd(<)}}}, followed by a
15901 template selector and {{{kbdkey(,TAB)}}}.  Completion takes effect only
15902 when the above keystrokes are typed on a line by itself.
15904 The following template selectors are currently supported:
15905 #+kindex: s
15906 #+kindex: e
15907 #+kindex: q
15908 #+kindex: v
15909 #+kindex: c
15910 #+kindex: l
15911 #+kindex: L
15912 #+kindex: h
15913 #+kindex: H
15914 #+kindex: a
15915 #+kindex: A
15916 #+kindex: i
15917 #+kindex: I
15919 #+attr_texinfo: :columns 0.2 0.7
15920 | Selector     | Template                              |
15921 |--------------+---------------------------------------|
15922 | {{{kbd(a)}}} | ~#+BEGIN_ASCII~ ...~ #+END_ASCII~     |
15923 | {{{kbd(A)}}} | ~#+ASCII:~                            |
15924 | {{{kbd(c)}}} | ~#+BEGIN_CENTER~ ... ~#+END_CENTER~   |
15925 | {{{kbd(e)}}} | ~#+BEGIN_EXAMPLE~ ... ~#+END_EXAMPLE~ |
15926 | {{{kbd(h)}}} | ~#+BEGIN_HTML~ ... ~#+END_HTML~       |
15927 | {{{kbd(H)}}} | ~#+HTML:~                             |
15928 | {{{kbd(i)}}} | ~#+INDEX:~                            |
15929 | {{{kbd(I)}}} | ~#+INCLUDE:~                          |
15930 | {{{kbd(l)}}} | ~#+BEGIN_LaTeX~ ... ~#+END_LaTeX~     |
15931 | {{{kbd(L)}}} | ~#+LaTeX:~                            |
15932 | {{{kbd(q)}}} | ~#+BEGIN_QUOTE~ ... ~#+END_QUOTE~     |
15933 | {{{kbd(s)}}} | ~#+BEGIN_SRC~ ... ~#+END_SRC~         |
15934 | {{{kbd(v)}}} | ~#+BEGIN_VERSE~ ... ~#+END_VERSE~     |
15936 For example, on an empty line, typing "<e" and then pressing TAB, will expand
15937 into a complete EXAMPLE template.
15939 You can install additional templates by customizing the variable
15940 ~org-structure-template-alist~.  See the docstring of the variable for
15941 additional details.
15943 ** Speed keys
15944    :PROPERTIES:
15945    :DESCRIPTION: Electric commands at the beginning of a headline
15946    :END:
15947 #+cindex: speed keys
15948 #+vindex: org-use-speed-commands
15949 #+vindex: org-speed-commands-user
15951 Single keys can be made to execute commands when the cursor is at the
15952 beginning of a headline, i.e., before the first star.  Configure the
15953 variable ~org-use-speed-commands~ to activate this feature.  There is a
15954 pre-defined list of commands, and you can add more such commands using
15955 the variable ~org-speed-commands-user~.  Speed keys do not only speed
15956 up navigation and other commands, but they also provide an alternative
15957 way to execute commands bound to keys that are not or not easily
15958 available on a TTY, or on a small mobile device with a limited
15959 keyboard.
15961 To see which commands are available, activate the feature and press
15962 {{{kbd(?)}}} with the cursor at the beginning of a headline.
15964 ** Code evaluation security
15965    :PROPERTIES:
15966    :DESCRIPTION: Org mode files evaluate in-line code
15967    :TITLE:    Code evaluation and security issues
15968    :END:
15970 Org provides tools to work with the code snippets, including
15971 evaluating them.
15973 Running code on your machine always comes with a security risk.  Badly
15974 written or malicious code can be executed on purpose or by accident.
15975 Org has default settings that will only evaluate source code if you
15976 give explicit permission to do so, and as a casual user of these
15977 features you should leave these precautions intact.
15979 For people who regularly work with source code, the confirmation
15980 prompts can become annoying, and you might want to turn them off.  This
15981 can be done, but you must be aware of the risks that are involved.
15983 Code evaluation can happen under the following circumstances:
15985 #+attr_texinfo: :table-type table :indic @asis
15986 - Source code blocks ::
15988   Source code blocks can be evaluated during export, or when pressing
15989   {{{kbd(C-c C-c)}}} in the block.  The most important thing to realize
15990   here is that Org mode files which contain code snippets are, in a
15991   certain sense, like executable files.  So you should accept them and
15992   load them into Emacs only from trusted sources---just like you would
15993   do with a program you install on your computer.
15995   Make sure you know what you are doing before customizing the variables
15996   that take off the default security brakes.
15998   - ~org-confirm-babel-evaluate~ ::
16000     When ~t~ (the default), the user is asked before every code block
16001     evaluation.  When ~nil~, the user is not asked.  When set to a function,
16002     it is called with two arguments (language and body of the code block)
16003     and should return ~t~ to ask and ~nil~ not to ask.
16005   For example, here is how to execute "ditaa" code (which is considered
16006   safe) without asking:
16008   #+header: :eval no
16009   #+header: :exports code
16010   #+begin_src emacs-lisp
16011   (defun my-org-confirm-babel-evaluate (lang body)
16012     (not (string= lang "ditaa")))  ; don't ask for ditaa
16013   (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
16014   #+end_src
16016 - Following ~shell~ and ~elisp~ links ::
16018   Org has two link types that can directly evaluate code (see [[External
16019   links]]).  These links can be problematic because the code to be
16020   evaluated is not visible.
16022   - ~org-confirm-shell-link-function~ ::
16023     
16024     Function to queries user about shell link execution.
16026   - ~org-confirm-elisp-link-function~ ::
16028     Function to query user for Emacs Lisp link execution.
16030 - Formulas in tables ::
16032   Formulas in tables (see [[The spreadsheet]]) are code that is evaluated
16033   either by the /calc/ interpreter, or by the /Emacs Lisp/ interpreter.
16035 ** Customization
16036    :PROPERTIES:
16037    :DESCRIPTION: Adapting Org to your taste
16038    :END:
16039 #+cindex: customization
16040 #+cindex: options, for customization
16041 #+cindex: variables, for customization
16043 There are more than 500 variables that can be used to customize Org.
16044 For the sake of compactness of the manual, I am not describing the
16045 variables here.  A structured overview of customization variables is
16046 available with {{{kbd(M-x org-customize)}}}.  Or select ~Browse Org
16047 Group~ from the ~Org->Customization~ menu.  Many settings can also be
16048 activated on a per-file basis, by putting special lines into the
16049 buffer (see [[In-buffer settings]]).
16051 ** In-buffer settings
16052    :PROPERTIES:
16053    :DESCRIPTION: Overview of the #+KEYWORDS
16054    :TITLE:    Summary of in-buffer settings
16055    :END:
16056 #+cindex: in-buffer settings
16057 #+cindex: special keywords
16059 Org mode uses special lines in the buffer to define settings on a
16060 per-file basis.  These lines start with a {{{samp(#+)}}} followed by a
16061 keyword, a colon, and then individual words defining a setting.
16062 Several setting words can be in the same line, but you can also have
16063 multiple lines for the keyword.  While these settings are described
16064 throughout the manual, here is a summary.  After changing any of those
16065 lines in the buffer, press {{{kbd(C-c C-c)}}} with the cursor still in
16066 the line to activate the changes immediately.  Otherwise they become
16067 effective only when the file is visited again in a new Emacs session.
16069 #+vindex: org-archive-location
16070 #+attr_texinfo: :table-type table :indic @asis
16071 - {{{kbd(#+ARCHIVE: %s_done)}}} ::
16073   This line sets the archive location for the agenda file.  It applies to
16074   all subsequent lines, until the next {{{samp(#+ARCHIVE)}}} line or the
16075   end of the file.  The first such line also applies to any entries
16076   before it.  The corresponding variable is ~org-archive-location~.
16078 - {{{kbd(#+CATEGORY:)}}} ::
16080   This line sets the category for the agenda file.  The category applies
16081   to all subsequent lines, until the next {{{samp(#+CATEGORY)}}} line or
16082   the end of the file.  The first such line also applies to any entries
16083   before it.
16085 - {{{kbd(#+COLUMNS: %25ITEM ...)}}} ::
16086   #+cindex: property, COLUMNS
16088   Set the default format for columns view.  This format applies when
16089   columns view is invoked in locations where no ~COLUMNS~ property
16090   applies.
16092 - {{{kbd(#+CONSTANTS: name1=value1 ...)}}} ::
16093   #+vindex: org-table-formula-constants
16094   #+vindex: org-table-formula
16096   Set file-local values for constants to be used in table formulas.  This
16097   line sets the local variable ~org-table-formula-constants-local~.  The
16098   global version of this variable is ~org-table-formula-constants~.
16100 - {{{kbd(#+FILETAGS: :tag1:tag2:tag3:)}}} ::
16102   Set tags that can be inherited by any entry in the file, including the
16103   top-level entries.
16105 - {{{kbd(#+DRAWERS: NAME1 ...)}}} ::
16106   #+vindex: org-drawers
16108   Set the file-local set of additional drawers.  The corresponding global
16109   variable is ~org-drawers~.
16111 - {{{kbd(#+LINK:  linkword replace)}}} ::
16112   #+vindex: org-link-abbrev-alist
16114   These lines (several are allowed) specify link abbreviations.  See
16115   [[Link abbreviations]].  The corresponding variable is ~org-link-abbrev-alist~.
16117 - {{{kbd(#+PRIORITIES: highest lowest default)}}} ::
16118   #+vindex: org-highest-priority
16119   #+vindex: org-lowest-priority
16120   #+vindex: org-default-priority
16122   This line sets the limits and the default for the priorities.  All
16123   three must be either letters A-Z or numbers 0-9.  The highest priority
16124   must have a lower ASCII number than the lowest priority.
16126 - {{{kbd(#+PROPERTY: Property_Name Value)}}} ::
16128   This line sets a default inheritance value for entries in the current
16129   buffer, most useful for specifying the allowed values of a property.
16131 - {{{kbd(#+SETUPFILE: file)}}} ::
16132   #+cindex: #+SETUPFILE
16134   This line defines a file that holds more in-buffer setup.  Normally
16135   this is entirely ignored.  Only when the buffer is parsed for
16136   option-setting lines (i.e., when starting Org mode for a file, when
16137   pressing {{{kbd(C-c C-c)}}} in a settings line, or when exporting),
16138   then the contents of this file are parsed as if they had been included
16139   in the buffer.  In particular, the file can be any other Org mode file
16140   with internal setup.  You can visit the file the cursor is in the line
16141   with {{{kbd(C-c ')}}}.
16143 - {{{kbd(#+STARTUP:)}}} ::
16144   #+cindex: #+STARTUP:
16146   This line sets options to be used at startup of Org mode, when an
16147   Org file is being visited.
16149   The first set of options deals with the initial visibility of the
16150   outline tree.  The corresponding variable for global default settings
16151   is ~org-startup-folded~, with a default value ~t~, which means
16152   ~overview~.
16154   #+vindex: org-startup-folded
16155   #+cindex: @code{overview}, STARTUP keyword
16156   #+cindex: @code{content}, STARTUP keyword
16157   #+cindex: @code{showall}, STARTUP keyword
16158   #+cindex: @code{showeverything}, STARTUP keyword
16160   #+attr_texinfo: :table-type table :indic @asis
16161   - ~overview~ ::         top-level headlines only
16162   - ~content~ ::         all headlines
16163   - ~showall~ ::         no folding of any entries
16164   - ~showeverything~ ::  show even drawer contents
16166   #+vindex: org-startup-indented
16167   #+cindex: @code{indent}, STARTUP keyword
16168   #+cindex: @code{noindent}, STARTUP keyword
16170   Dynamic virtual indentation is controlled by the variable
16171   ~org-startup-indented~.[fn:182]
16173   #+attr_texinfo: :table-type table :indic @asis
16174   - ~indent~ ::     start with ~org-indent-mode~ turned on
16175   - ~noindent~ ::   start with ~org-indent-mode~ turned off
16177   #+vindex: org-startup-align-all-tables
16179   Then there are options for aligning tables upon visiting a file.  This
16180   is useful in files containing narrowed table columns.  The corresponding
16181   variable is ~org-startup-align-all-tables~, with a default value
16182   ~nil~.
16184   #+cindex: @code{align}, STARTUP keyword
16185   #+cindex: @code{noalign}, STARTUP keyword
16187   #+attr_texinfo: :table-type table :indic @asis
16188   - ~align~ ::      align all tables
16189   - ~noalign~ ::    don't align tables on startup
16191   #+vindex: org-startup-with-inline-images
16193   When visiting a file, inline images can be automatically displayed.
16194   The corresponding variable is ~org-startup-with-inline-images~, with a
16195   default value ~nil~ to avoid delays when visiting a file.
16197   #+cindex: @code{inlineimages}, STARTUP keyword
16198   #+cindex: @code{noinlineimages}, STARTUP keyword
16200   #+attr_texinfo: :table-type table :indic @asis
16201   - ~inlineimages~   show inline images
16202   - ~noinlineimages~ don't show inline images on startup
16204   #+vindex: org-log-done
16205   #+vindex: org-log-note-clock-out
16206   #+vindex: org-log-repeat
16208   Logging the closing and reopening of TODO items and clock intervals
16209   can be configured using these options (see variables ~org-log-done~,
16210   ~org-log-note-clock-out~, and ~org-log-repeat~).
16212   #+cindex: @code{logdone}, STARTUP keyword
16213   #+cindex: @code{lognotedone}, STARTUP keyword
16214   #+cindex: @code{nologdone}, STARTUP keyword
16215   #+cindex: @code{lognoteclock-out}, STARTUP keyword
16216   #+cindex: @code{nolognoteclock-out}, STARTUP keyword
16217   #+cindex: @code{logrepeat}, STARTUP keyword
16218   #+cindex: @code{lognoterepeat}, STARTUP keyword
16219   #+cindex: @code{nologrepeat}, STARTUP keyword
16220   #+cindex: @code{logreschedule}, STARTUP keyword
16221   #+cindex: @code{lognotereschedule}, STARTUP keyword
16222   #+cindex: @code{nologreschedule}, STARTUP keyword
16223   #+cindex: @code{logredeadline}, STARTUP keyword
16224   #+cindex: @code{lognoteredeadline}, STARTUP keyword
16225   #+cindex: @code{nologredeadline}, STARTUP keyword
16226   #+cindex: @code{logrefile}, STARTUP keyword
16227   #+cindex: @code{lognoterefile}, STARTUP keyword
16228   #+cindex: @code{nologrefile}, STARTUP keyword
16230   #+attr_texinfo: :table-type table :indic @asis
16231   - ~logdone~ ::            record a timestamp when an item is marked DONE
16232   - ~lognotedone~ ::        record timestamp and a note when DONE
16233   - ~nologdone~ ::          don't record when items are marked DONE
16234   - ~logrepeat~ ::          record a time when reinstating a repeating item
16235   - ~lognoterepeat~ ::      record a note when reinstating a repeating item
16236   - ~nologrepeat~ ::        do not record when reinstating repeating item
16237   - ~lognoteclock-out~ ::   record a note when clocking out
16238   - ~nolognoteclock-out~ :: don't record a note when clocking out
16239   - ~logreschedule~ ::      record a timestamp when scheduling time changes
16240   - ~lognotereschedule~ ::  record a note when scheduling time changes
16241   - ~nologreschedule~ ::    do not record when a scheduling date changes
16242   - ~logredeadline~ ::      record a timestamp when deadline changes
16243   - ~lognoteredeadline~ ::  record a note when deadline changes
16244   - ~nologredeadline~ ::    do not record when a deadline date changes
16245   - ~logrefile~ ::          record a timestamp when refiling
16246   - ~lognoterefile~ ::      record a note when refiling
16247   - ~nologrefile~ ::        do not record when refiling
16249   #+vindex: org-hide-leading-stars
16250   #+vindex: org-odd-levels-only
16252   Here are the options for hiding leading stars in outline headings, and
16253   for indenting outlines.  The corresponding variables are
16254   ~org-hide-leading-stars~ and ~org-odd-levels-only~, both with a
16255   default setting ~nil~ (meaning ~showstars~ and ~oddeven~).
16257   #+cindex: @code{hidestars}, STARTUP keyword
16258   #+cindex: @code{showstars}, STARTUP keyword
16259   #+cindex: @code{odd}, STARTUP keyword
16260   #+cindex: @code{even}, STARTUP keyword
16262   #+attr_texinfo: :table-type table :indic @asis
16263   - ~hidestars~ ::  make all but one of the stars starting a headline invisible.
16264   - ~showstars~ ::  show all stars starting a headline
16265   - ~indent~ ::     virtual indentation according to outline level
16266   - ~noindent~ ::   no virtual indentation according to outline level
16267   - ~odd~ ::        allow only odd outline levels (1, 3, ...)
16268   - ~oddeven~ ::    allow all outline levels
16270   #+vindex: org-put-time-stamp-overlays
16271   #+vindex: org-time-stamp-overlay-formats
16273   To turn on custom format overlays over timestamps (variables
16274   ~org-put-time-stamp-overlays~ and ~org-time-stamp-overlay-formats~),
16275   use:
16277   #+cindex: @code{customtime}, STARTUP keyword
16278      
16279   #+attr_texinfo: :table-type table :indic @asis
16280   - ~customtime~ :: overlay custom time format
16282   #+vindex: constants-unit-system
16284   The following options influence the table spreadsheet (variable
16285   ~constants-unit-system~).
16287   #+cindex: @code{constcgs}, STARTUP keyword
16288   #+cindex: @code{constSI}, STARTUP keyword
16290   #+attr_texinfo: :table-type table :indic @asis
16291   - ~constcgs~ ::   {{{file(constants.el)}}} should use the c-g-s unit system
16292   - ~constSI~ ::    {{{file(constants.el)}}} should use the SI unit system
16293   
16294   #+vindex: org-footnote-define-inline
16295   #+vindex: org-footnote-auto-label
16296   #+vindex: org-footnote-auto-adjust
16298   To influence footnote settings, use the following keywords.  The
16299   corresponding variables are ~org-footnote-define-inline~,
16300   ~org-footnote-auto-label~, and ~org-footnote-auto-adjust~.
16302   #+cindex: @code{fninline}, STARTUP keyword
16303   #+cindex: @code{nofninline}, STARTUP keyword
16304   #+cindex: @code{fnlocal}, STARTUP keyword
16305   #+cindex: @code{fnprompt}, STARTUP keyword
16306   #+cindex: @code{fnauto}, STARTUP keyword
16307   #+cindex: @code{fnconfirm}, STARTUP keyword
16308   #+cindex: @code{fnplain}, STARTUP keyword
16309   #+cindex: @code{fnadjust}, STARTUP keyword
16310   #+cindex: @code{nofnadjust}, STARTUP keyword
16312   #+attr_texinfo: :table-type table :indic @asis
16313   - ~fninline~ ::    define footnotes inline
16314   - ~fnnoinline~ ::  define footnotes in separate section
16315   - ~fnlocal~ ::     define footnotes near first reference, but not inline
16316   - ~fnprompt~ ::    prompt for footnote labels
16317   - ~fnauto~ ::      create ~[fn:1]~-like labels automatically (default)
16318   - ~fnconfirm~ ::   offer automatic label for editing or confirmation
16319   - ~fnplain~ ::     create ~[1]~-like labels automatically
16320   - ~fnadjust~ ::    automatically renumber and sort footnotes
16321   - ~nofnadjust~ ::  do not renumber and sort automatically
16323   #+cindex: org-hide-block-startup
16325   To hide blocks on startup, use these keywords.  The corresponding
16326   variable is ~org-hide-block-startup~.
16328   #+cindex: @code{hideblocks}, STARTUP keyword
16329   #+cindex: @code{nohideblocks}, STARTUP keyword
16331   #+attr_texinfo: :table-type table :indic @asis
16332   - ~hideblocks~ ::   Hide all begin/end blocks on startup
16333   - ~nohideblocks~ :: Do not hide blocks on startup
16334   
16335   #+cindex: org-pretty-entities
16337   The display of entities as UTF-8 characters is governed by the
16338   variable ~org-pretty-entities~ and the keywords
16340   #+cindex: @code{entitiespretty}, STARTUP keyword
16341   #+cindex: @code{entitiesplain}, STARTUP keyword
16343   #+attr_texinfo: :table-type table :indic @asis
16344   - ~entitiespretty~ ::  Show entities as UTF-8 characters where possible
16345   - ~entitiesplain~ ::   Leave entities plain
16347 - {{{kbd(#+TAGS:  TAG1(c1) TAG2(c2))}}} ::
16348   #+vindex: org-tag-alist
16350   These lines (several such lines are allowed) specify the valid tags in
16351   this file, and (potentially) the corresponding /fast tag selection/
16352   keys.  The corresponding variable is ~org-tag-alist~.
16354 - {{{kbd(#+TBLFM:)}}} ::
16356   This line contains the formulas for the table directly above the line.
16358 - {{{kbd(#+TITLE:)}}}, {{{kbd(#+AUTHOR:)}}}, {{{kbd(#+EMAIL:)}}}, {{{kbd(#+LANGUAGE:)}}}, {{{kbd(#+TEXT:)}}}, {{{kbd(#+DATE:)}}}, {{{kbd(#+OPTIONS:)}}}, {{{kbd(#+BIND:)}}}, {{{kbd(#+XSLT:)}}}, {{{kbd(#+DESCRIPTION:)}}}, {{{kbd(#+KEYWORDS:)}}}, {{{kbd(#+LaTeX_HEADER:)}}}, {{{kbd(#+STYLE:)}}}, {{{kbd(#+LINK_UP:)}}}, {{{kbd(#+LINK_HOME:)}}}, {{{kbd(#+EXPORT_SELECT_TAGS:)}}}, {{{kbd(#+EXPORT_EXCLUDE_TAGS:)}}} ::
16360   These lines provide settings for exporting files.  For more details see
16361   [[Export options]].
16363 - {{{kbd(#+TODO:)}}}, {{{kbd(#+SEQ_TODO:)}}}, {{{kbd(#+TYP_TODO:)}}} ::
16364   #+vindex: org-todo-keywords
16366   These lines set the TODO keywords and their interpretation in the
16367   current file.  The corresponding variable is ~org-todo-keywords~.
16369 ** The very busy C-c C-c key
16370    :PROPERTIES:
16371    :DESCRIPTION: When in doubt, press C-c C-c
16372    :TITLE:    The very busy C-c C-c key
16373    :END:
16374 #+kindex: C-c C-c
16375 #+cindex: C-c C-c, overview
16377 The key {{{kbd(C-c C-c)}}} has many purposes in Org, which are all
16378 mentioned scattered throughout this manual.  One specific function of
16379 this key is to add /tags/ to a headline (see [[Tags]]).  In many
16380 other circumstances it means something like "Hey Org, look
16381 here and update according to what you see here."  Here is a summary of
16382 what this means in different contexts.
16384 - If there are highlights in the buffer from the creation of a sparse
16385   tree, or from clock display, remove these highlights.
16386 - If the cursor is in one of the special ~#+KEYWORD~ lines, this
16387   triggers scanning the buffer for these lines and updating the
16388   information.
16389 - If the cursor is inside a table, realign the table.  This command
16390   works even if the automatic table editor has been turned off.
16391 - If the cursor is on a ~#+TBLFM~ line, re-apply the formulas to the
16392   entire table.
16393 - If the current buffer is a capture buffer, close the note and file
16394   it.  With a prefix argument, file it, without further interaction, to
16395   the default location.
16396 - If the cursor is on a ~<<<target>>>~, update radio targets and
16397   corresponding links in this buffer.
16398 - If the cursor is in a property line or at the start or end of a
16399   property drawer, offer property commands.
16400 - If the cursor is at a footnote reference, go to the corresponding
16401   definition, and vice versa.
16402 -  If the cursor is on a statistics cookie, update it.
16403 - If the cursor is in a plain list item with a checkbox, toggle the
16404   status of the checkbox.
16405 - If the cursor is on a numbered item in a plain list, renumber the
16406   ordered list.
16407 - If the cursor is on the ~#+BEGIN~ line of a dynamic block, the block
16408   is updated.
16409 - If the cursor is at a timestamp, fix the day name in the timestamp.
16411 ** Clean view
16412    :PROPERTIES:
16413    :DESCRIPTION: Getting rid of leading stars in the outline
16414    :TITLE:    A cleaner outline view
16415    :END:
16416 #+cindex: hiding leading stars
16417 #+cindex: dynamic indentation
16418 #+cindex: odd-levels-only outlines
16419 #+cindex: clean outline view
16421 Some people find it noisy and distracting that the Org headlines start
16422 with a potentially large number of stars, and that text below the
16423 headlines is not indented.  While this is no problem when writing a
16424 /book-like/ document where the outline headings are really section
16425 headings, in a more /list-oriented/ outline, indented structure is a
16426 lot cleaner:
16428 #+begin_example
16429    ,* Top level headline             |    * Top level headline
16430    ,** Second level                  |      * Second level
16431    ,*** 3rd level                    |        * 3rd level
16432    some text                        |          some text
16433    ,*** 3rd level                    |        * 3rd level
16434    more text                        |          more text
16435    ,* Another top level headline     |    * Another top level headline
16436 #+end_example
16438 {{{noindent}}} If you are using at least Emacs 23.2 and version 6.29
16439 of Org, this kind of view can be achieved dynamically at display time
16440 using ~org-indent-mode~.[fn:183] In this minor mode, all lines are
16441 prefixed for display with the necessary amount of space.[fn:154] Also
16442 headlines are prefixed with additional stars, so that the amount of
16443 indentation shifts by two spaces per level.[fn:155] All headline stars
16444 but the last one are made invisible using the ~org-hide~ face---see
16445 below under {{{samp(2.)}}} for more information on how this
16446 works.[fn:156] You can turn on ~org-indent-mode~ for all files by
16447 customizing the variable ~org-startup-indented~, or you can turn it on
16448 for individual files using
16450 #+begin_example
16451    ,#+STARTUP: indent
16452 #+end_example
16454 If you want a similar effect in an earlier version of Emacs and/or
16455 Org, or if you want the indentation to be hard space characters so
16456 that the plain text file looks as similar as possible to the Emacs
16457 display, Org supports you in the following way:
16459 #+attr_texinfo: :table-type table :indic @asis
16460 - Indentation of text below headlines ::
16462   You may indent text below each headline to make the left boundary line up
16463   with the headline, like
16465   #+begin_example
16466      ,*** 3rd level
16467          more text, now indented
16468   #+end_example
16470   #+vindex: org-adapt-indentation
16472   Org supports this with paragraph filling, line wrapping, and structure
16473   editing,
16474   preserving or adapting the indentation as appropriate.[fn:157]
16476 - Hiding leading stars ::
16477   #+vindex: org-hide-leading-stars
16479   You can modify the display in such a way that all leading stars become
16480   invisible.  To do this in a global way, configure the variable
16481   ~org-hide-leading-stars~ or change this on a per-file basis with
16483   #+begin_example
16484      ,#+STARTUP: hidestars
16485      ,#+STARTUP: showstars
16486   #+end_example
16488   With hidden stars, the tree becomes:
16490   #+begin_example
16491      ,* Top level headline
16492      , * Second level
16493      ,  * 3rd level
16494        ...
16495   #+end_example
16497   #+vindex: org-hide @r{(face)}
16499   {{{noindent}}} The leading stars are not truly replaced by whitespace,
16500   they are only fontified with the face ~org-hide~ that uses the
16501   background color as font color.  If you are not using either white or
16502   black background, you may have to customize this face to get the
16503   wanted effect.  Another possibility is to set this font such that the
16504   extra stars are /almost/ invisible, for example using the color
16505   ~grey90~ on a white background.
16506 - Odd levels ::
16507   #+vindex: org-odd-levels-only
16509   Things become cleaner still if you skip all the even levels and use
16510   only odd levels 1, 3, 5, ..., effectively adding two stars to go from
16511   one outline level to the next.[fn:158] In this way we get the outline
16512   view shown at the beginning of this section.  In order to make the
16513   structure editing and export commands handle this convention
16514   correctly, configure the variable ~org-odd-levels-only~, or set this
16515   on a per-file basis with one of the following lines:
16517   #+begin_example
16518      ,#+STARTUP: odd
16519      ,#+STARTUP: oddeven
16520   #+end_example
16522   You can convert an Org file from single-star-per-level to the
16523   double-star-per-level convention with {{{kbdkey(M-x
16524   org-convert-to-odd-levels , RET)}}} in that file.  The reverse
16525   operation is {{{kbd(M-x org-convert-to-oddeven-levels)}}}.
16527 ** TTY keys
16528    :PROPERTIES:
16529    :DESCRIPTION: Using Org on a tty
16530    :TITLE:    Using Org on a tty
16531    :END:
16533 Because Org contains a large number of commands, by default many of
16534 Org's core commands are bound to keys that are generally not
16535 accessible on a tty, such as the cursor keys ({{{key(left)}}},
16536 {{{key(right)}}}, {{{key(up)}}}, {{{key(down)}}}), {{{key(TAB)}}} and
16537 {{{key(RET)}}}, in particular when used together with modifiers like
16538 {{{key(Meta)}}} and/or {{{key(Shift)}}}.  To access these commands on a
16539 tty when special keys are unavailable, the following alternative
16540 bindings can be used.  The tty bindings below will likely be more
16541 cumbersome; you may find for some of the bindings below that a
16542 customized workaround suits you better.  For example, changing a
16543 timestamp is really only fun with {{{kbdkey(S-,cursor)}}} keys,
16544 whereas on a tty you would rather use {{{kbd(C-c .)}}} to re-insert
16545 the timestamp.
16547 #+attr_texinfo: :columns 0.2 0.3 0.1 0.4
16548 | Default                  | Alternative 1                | Speed key    | Alternative 2             |
16549 |--------------------------+------------------------------+--------------+---------------------------|
16550 | {{{kbdkey(S-,TAB)}}}     | {{{kbdspckey(C-u,TAB)}}}     | {{{kbd(C)}}} |                           |
16551 | {{{kbdkey(M-,left)}}}    | {{{kbd(C-c C-x l)}}}         | {{{kbd(l)}}} | {{{kbdkeys(,Esc,left)}}}  |
16552 | {{{kbdkey(M-S-,left)}}}  | {{{kbd(C-c C-x L)}}}         | {{{kbd(L)}}} |                           |
16553 | {{{kbdkey(M-,right)}}}   | {{{kbd(C-c C-x r)}}}         | {{{kbd(r)}}} | {{{kbdkeys(,Esc,right)}}} |
16554 | {{{kbdkey(M-S-,right)}}} | {{{kbd(C-c C-x R)}}}         | {{{kbd(R)}}} |                           |
16555 | {{{kbdkey(M-,up)}}}      | {{{kbd(C-c C-x u)}}}         | {{{kbd( )}}} | {{{kbdkeys(,Esc,up)}}}    |
16556 | {{{kbdkey(M-S-,up)}}}    | {{{kbd(C-c C-x U)}}}         | {{{kbd(U)}}} |                           |
16557 | {{{kbdkey(M-,down)}}}    | {{{kbd(C-c C-x d)}}}         | {{{kbd( )}}} | {{{kbdkeys(,Esc,down)}}}  |
16558 | {{{kbdkey(M-S-,down)}}}  | {{{kbd(C-c C-x D)}}}         | {{{kbd(D)}}} |                           |
16559 | {{{kbdkey(S-,RET)}}}     | {{{kbd(C-c C-x c)}}}         | {{{kbd( )}}} |                           |
16560 | {{{kbdkey(M-,RET)}}}     | {{{kbd(C-c C-x m)}}}         | {{{kbd( )}}} | {{{kbdkeys(,Esc,RET)}}}   |
16561 | {{{kbdkey(M-S-,RET)}}}   | {{{kbd(C-c C-x M)}}}         | {{{kbd( )}}} |                           |
16562 | {{{kbdkey(S-,left)}}}    | {{{kbdspckey(C-c,left)}}}    | {{{kbd( )}}} |                           |
16563 | {{{kbdkey(S-,right)}}}   | {{{kbdspckey(C-c,right)}}}   | {{{kbd( )}}} |                           |
16564 | {{{kbdkey(S-,up)}}}      | {{{kbdspckey(C-c,up)}}}      | {{{kbd( )}}} |                           |
16565 | {{{kbdkey(S-,down)}}}    | {{{kbdspckey(C-c,down)}}}    | {{{kbd( )}}} |                           |
16566 | {{{kbdkey(C-S-,left)}}}  | {{{kbdspckey(C-c C-x,left)}}}  | {{{kbd( )}}} |                           |
16567 | {{{kbdkey(C-S-,right)}}} | {{{kbdspckey(C-c C-x,right)}}} | {{{kbd( )}}} |                           |
16569 ** Interaction
16570    :PROPERTIES:
16571    :DESCRIPTION: Other Emacs packages
16572    :TITLE:    Interaction with other packages
16573    :END:
16574 #+cindex: packages, interaction with other
16575 Org lives in the world of GNU Emacs and interacts in various ways
16576 with other code out there.
16578 *** FIXME Cooperation
16579     :PROPERTIES:
16580     :DESCRIPTION: Packages Org cooperates with
16581     :TITLE:    Packages that Org cooperates with
16582     :END:
16584 #+attr_texinfo: :table-type table :indic @asis
16585 - {{{file(calc.el)}}} by Dave Gillespie ::
16586   #+cindex: @file{calc.el}
16587   #+cindex: Gillespie, Dave
16589   Org uses the Calc package for implementing spreadsheet functionality
16590   in its tables (see [[The spreadsheet]]).  Org checks for the availability
16591   of Calc by looking for the function ~calc-eval~ which will have been
16592   autoloaded during setup if Calc has been installed properly.  As of
16593   Emacs 22, Calc is part of the Emacs distribution.  Another possibility
16594   for interaction between the two packages is using Calc for embedded
16595   calculations.  See [[info:calc:Embedded Mode][GNU Emacs Calc Manual]].
16597 - {{{file(constants.el)}}} by Carsten Dominik ::
16598   #+cindex: @file{constants.el}
16599   #+cindex: Dominik, Carsten
16600   #+vindex: org-table-formula-constants
16602   In a table formula (see [[The spreadsheet]]), it is possible to use names
16603   for natural constants or units.  Instead of defining your own constants
16604   in the variable ~org-table-formula-constants~, install the
16605   {{{file(constants)}}} package which defines a large number of
16606   constants and units, and lets you use unit prefixes like {{{samp(M)}}}
16607   for {{{samp(Mega)}}}, etc.  You will need version 2.0 of this package,
16608   available at [[http://www.astro.uva.nl/~dominik/Tools]].  Org checks for
16609   the function ~constants-get~, which has to be autoloaded in your
16610   setup.  See the installation instructions in the file
16611   {{{file(constants.el)}}}.
16613 - {{{file(cdlatex.el)}}} by Carsten Dominik ::
16614   #+cindex: @file{cdlatex.el}
16615   #+cindex: Dominik, Carsten
16617   Org mode can make use of the CDLaTeX package to efficiently enter
16618   LaTeX fragments into Org files.  See [[CDLaTeX mode]].
16620 - {{{file(imenu.el)}}} by Ake Stenhoff and Lars Lindberg ::
16621   #+cindex: @file{imenu.el}
16622   #+cindex: Stenhoff, Ake
16623   #+cindex: Lindberg, Lars
16625   Imenu allows menu access to an index of items in a file.  Org mode
16626   supports Imenu---all you need to do to get the index is the following:
16628   #+begin_src emacs-lisp
16629   (add-hook 'org-mode-hook
16630             (lambda () (imenu-add-to-menubar "Imenu")))
16631   #+end_src
16633   #+vindex: org-imenu-depth
16635   By default the index is two levels deep---you can modify the depth
16636   using the option ~org-imenu-depth~.
16638 - {{{file(remember.el)}}} by John Wiegley ::
16639   #+cindex: @file{remember.el}
16640   #+cindex: Wiegley, John
16642   Org used to use this package for capture, but no longer does.
16644 - {{{file(speedbar.el)}}} by Eric M. Ludlam ::
16645   #+cindex: @file{speedbar.el}
16646   #+cindex: Ludlam, Eric M.
16648   Speedbar is a package that creates a special frame displaying files and
16649   index items in files.  Org mode supports Speedbar and allows you to
16650   drill into Org files directly from the Speedbar.  It also allows you to
16651   restrict the scope of agenda commands to a file or a subtree by using
16652   the command {{{kbd(<)}}} in the Speedbar frame.
16654 - {{{file(table.el)}}} by Takaaki Ota ::
16655   #+kindex: C-c C-c
16656   #+cindex: table editor, @file{table.el}
16657   #+cindex: @file{table.el}
16658   #+cindex: Ota, Takaaki
16660   Complex ASCII tables with automatic line wrapping, column- and row-spanning,
16661   and alignment can be created using the Emacs table package by Takaaki Ota
16662   ([[http://sourceforge.net/projects/table]], and also part of Emacs 22).
16663   Org mode will recognize these tables and export them properly.  Because of
16664   interference with other Org mode functionality, you unfortunately cannot edit
16665   these tables directly in the buffer.  Instead, you need to use the command
16666   {{{kbd(C-c ')}}} to edit them, similar to source code snippets.
16668   - {{{kbd(C-c ')}}}, ~org-edit-special~ ::
16669     #+kindex: C-c '
16671     Edit a {{{file(table.el)}}} table.  Works when the cursor is in a
16672     table.el table.
16674   - {{{kbd(C-c XXX)}}}, ~org-table-create-with-table.el~ ::
16675     #+kindex: C-c ~
16676     # Should be ~
16677     Insert a {{{file(table.el)}}} table.  If there is already a table at
16678     point, this command converts it between the {{{file(table.el)}}}
16679     format and the Org mode format.  See the documentation string of the
16680     command ~org-convert-table~ for the restrictions under which this is
16681     possible.
16683   {{{file(table.el)}}} is part of Emacs since Emacs 22.
16685 - {{{file(footnote.el)}}} by Steven L. Baur ::
16686   #+cindex: @file{footnote.el}
16687   #+cindex: Baur, Steven L.
16689   Org mode recognizes numerical footnotes as provided by this package.
16690   However, Org mode also has its own footnote support (see [[Creating footnotes]]),
16691   which makes using {{{file(footnote.el)}}} unnecessary.
16693 *** Conflicts
16694     :PROPERTIES:
16695     :DESCRIPTION: Packages that lead to conflicts
16696     :END:
16698 #+cindex: @code{shift-selection-mode}
16699 #+vindex: org-support-shift-select
16701 In Emacs 23, ~shift-selection-mode~ is on by default, meaning that
16702 cursor motions combined with the shift key should start or enlarge
16703 regions.  This conflicts with the use of {{{kbdkey(S-,cursor)}}}
16704 commands in Org to change timestamps, TODO keywords, priorities, and
16705 item bullet types if the cursor is at such a location.  By default,
16706 {{{kbdkey(S-,cursor)}}} commands outside special contexts don't do
16707 anything, but you can customize the variable
16708 ~org-support-shift-select~.  Org mode then tries to accommodate shift
16709 selection by using it outside of the special contexts where
16710 special commands apply, and by extending an existing active
16711 region even if the cursor moves across a special context.
16713 #+attr_texinfo: :table-type table :indic @asis
16714 - {{{file(CUA.el)}}} by Kim. F. Storm ::
16715   #+cindex: @file{CUA.el}
16716   #+cindex: Storm, Kim. F.
16717   #+vindex: org-replace-disputed-keys
16719   Key bindings in Org conflict with the {{{kbdkey(S-,<cursor>)}}} keys
16720   used by CUA mode (as well as ~pc-select-mode~ and ~s-region-mode~) to
16721   select and extend the region.  In fact, Emacs 23 has this built-in in
16722   the form of ~shift-selection-mode~, see previous paragraph.  If you are
16723   using Emacs 23, you probably don't want to use another package for
16724   this purpose.  However, if you prefer to leave these keys to a
16725   different package while working in Org mode, configure the variable
16726   ~org-replace-disputed-keys~.  When set, Org will move the following key
16727   bindings in Org files, and in the agenda buffer (but not during date
16728   selection).
16730   | S-UP      {{{result}}}  M-p   | S-DOWN     {{{result}}}  M-n   |
16731   | S-LEFT    {{{result}}}  M--   | S-RIGHT    {{{result}}}  M-+   |
16732   | C-S-LEFT  {{{result}}}  M-S-- | C-S-RIGHT  {{{result}}}  M-S-+ |
16734   #+vindex: org-disputed-keys
16736   Yes, these are unfortunately more difficult to remember.  If you want
16737   to have other replacement keys, look at the variable
16738   ~org-disputed-keys~.
16740 - {{{file(filladapt.el)}}} by Kyle Jones ::
16741   #+cindex: @file{filladapt.el}
16742   #+cindex: Jones, Kyle
16744   Org mode tries to do the right thing when filling paragraphs, list
16745   items and other elements.  Many users reported they had problems using
16746   both {{{file(filladapt.el)}}} and Org mode, so a safe thing to do is
16747   to disable it like this:
16749   #+begin_src emacs-lisp
16750   (add-hook 'org-mode-hook 'turn-off-filladapt-mode)
16751   #+end_src
16753 - {{{file(yasnippet.el)}}} ::
16754   #+cindex: @file{yasnippet.el}
16756   The way Org mode binds the {{{key(TAB)}}} key (binding to ~[tab]~
16757   instead of ~"\t"~) overrules YASnippet's access to this key.  The
16758   following code fixed this problem:
16760   #+begin_src emacs-lisp
16761   (add-hook 'org-mode-hook
16762             (lambda ()
16763               (setq-local yas/trigger-key [tab])
16764               (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
16765   #+end_src
16767   The latest version of yasnippet doesn't play well with Org mode.  If the
16768   above code does not fix the conflict, start by defining the following
16769   function:
16771   #+begin_src emacs-lisp
16772   (defun yas/org-very-safe-expand ()
16773          (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
16774   #+end_src
16776   Then, tell Org mode what to do with the new function:
16778   #+begin_src emacs-lisp
16779   (add-hook 'org-mode-hook
16780             (lambda ()
16781                 (make-variable-buffer-local 'yas/trigger-key)
16782                 (setq yas/trigger-key [tab])
16783                 (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
16784                 (define-key yas/keymap [tab] 'yas/next-field)))
16785   #+end_src
16787 - {{{file(windmove.el)}}} by Hovav Shacham ::
16788   #+cindex: @file{windmove.el}
16789   #+cindex: Shacham, Hovav
16791   This package also uses the {{{kbd(S-<cursor>)}}} keys, so everything
16792   written in the paragraph above about CUA mode also applies here.  If
16793   you want make the windmove function active in locations where Org mode
16794   does not have special functionality on {{{kbdkey(S-,cursor)}}}, add
16795   this to your configuration:
16797   #+begin_src emacs-lisp
16798   ;; Make windmove work in org-mode:
16799   (add-hook 'org-shiftup-final-hook 'windmove-up)
16800   (add-hook 'org-shiftleft-final-hook 'windmove-left)
16801   (add-hook 'org-shiftdown-final-hook 'windmove-down)
16802   (add-hook 'org-shiftright-final-hook 'windmove-right)
16803   #+end_src
16805 - {{{file(viper.el)}}} by Michael Kifer ::
16806   #+cindex: @file{viper.el}
16807   #+cindex: Kifer, Michael
16808   #+kindex: C-c /
16810   Viper uses {{{kbd(C-c /)}}} and therefore makes this key not access the
16811   corresponding Org mode command ~org-sparse-tree~.  You need to find
16812   another key for this command, or override the key in
16813   ~viper-vi-global-user-map~ with
16815   #+begin_src emacs-lisp
16816   (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
16817   #+end_src
16819 ** org-crypt
16820    :PROPERTIES:
16821    :DESCRIPTION: Encrypting Org files
16822    :END:
16823 #+cindex: @file{+org-crypt.el}
16824 #+cindex: @code{org-decrypt-entry}
16826 Org-crypt will encrypt the text of an entry, but not the headline, or
16827 properties.  Org-crypt uses the Emacs EasyPG library to encrypt and
16828 decrypt files.
16830 Any text below a headline that has a {{{samp(:crypt:)}}} tag will
16831 automatically be encrypted when the file is saved.  If you want to use
16832 a different tag just customize the ~org-crypt-tag-matcher~ setting.
16834 To use org-crypt it is suggested that you have the following in your
16835 {{{file(.emacs)}}}:
16837 #+header: :eval no
16838 #+header: :exports code
16839 #+begin_src emacs-lisp
16840 (require 'org-crypt)
16841 (org-crypt-use-before-save-magic)
16842 (setq org-tags-exclude-from-inheritance (quote ("crypt")))
16844 (setq org-crypt-key nil)
16845   ;; GPG key to use for encryption
16846   ;; Either the Key ID or set to nil to use symmetric encryption.
16848 (setq auto-save-default nil)
16849   ;; Auto-saving does not cooperate with org-crypt.el: so you need
16850   ;; to turn it off if you plan to use org-crypt.el quite often.
16851   ;; Otherwise, you'll get an (annoying) message each time you
16852   ;; start Org.
16854   ;; To turn it off only locally, you can insert this:
16855   ;;
16856   ;; # -*- buffer-auto-save-file-name: nil; -*-
16857 #+end_src
16859 Excluding the crypt tag from inheritance prevents already encrypted text
16860 being encrypted again.
16862 * Hacking
16863   :PROPERTIES:
16864   :DESCRIPTION: How to hack your way around
16865   :APPENDIX: Appendix
16866   :END:
16867 #+cindex: hacking
16869 This appendix describes some ways a user can extend the functionality
16870 of Org.
16872 ** Hooks
16873    :PROPERTIES:
16874    :DESCRIPTION: How to reach into Org's internals
16875    :END:
16876 #+cindex: hooks
16878 Org has a large number of hook variables that can be used to add
16879 functionality.  This appendix about hacking is going to illustrate the
16880 use of some of them.  A complete list of all hooks with documentation is
16881 maintained by the Worg project and can be found at
16882 [[http://orgmode.org/worg/org-configs/org-hooks.php]].
16884 ** Add-on packages
16885    :PROPERTIES:
16886    :DESCRIPTION: Available extensions
16887    :END:
16888 #+cindex: add-on packages
16890 A large number of add-on packages have been written by various
16891 authors.  These packages are not part of Emacs, but they are
16892 distributed as contributed packages with the separate release
16893 available at the Org mode home page at [[http://orgmode.org]].  The
16894 list of contributed packages, along with documentation about each
16895 package, is maintained by the Worg project at
16896 [[http://orgmode.org/worg/org-contrib/]].
16898 ** Adding hyperlink types
16899    :PROPERTIES:
16900    :DESCRIPTION: New custom link types
16901    :END:
16902 #+cindex: hyperlinks, adding new types
16904 Org has a large number of hyperlink types built-in (see [[Hyperlinks]]).
16905 If you would like to add new link types, Org provides an interface for
16906 doing so.  Let's look at an example file, {{{file(org-man.el)}}}, that
16907 will add support for creating links like:
16909 #+begin_example
16910    [[man:printf][The printf manual]]
16911 #+end_example
16913 to show Unix manual pages inside Emacs:
16915 #+header: :eval no
16916 #+header: :exports code
16917 #+begin_src emacs-lisp
16918 ;;; org-man.el - Support for links to manpages in Org
16920 (require 'org)
16922 (org-add-link-type "man" 'org-man-open)
16923 (add-hook 'org-store-link-functions 'org-man-store-link)
16925 (defcustom org-man-command 'man
16926   "The Emacs command to be used to display a man page."
16927   :group 'org-link
16928   :type '(choice (const man) (const woman)))
16930 (defun org-man-open (path)
16931   "Visit the manpage on PATH.
16932 PATH should be a topic that can be thrown at the man command."
16933   (funcall org-man-command path))
16935 (defun org-man-store-link ()
16936   "Store a link to a manpage."
16937   (when (memq major-mode '(Man-mode woman-mode))
16938     ;; This is a man page, we do make this link
16939     (let* ((page (org-man-get-page-name))
16940            (link (concat "man:" page))
16941            (description (format "Manpage for %s" page)))
16942       (org-store-link-props
16943        :type "man"
16944        :link link
16945        :description description))))
16947 (defun org-man-get-page-name ()
16948   "Extract the page name from the buffer name."
16949   ;; This works for both `Man-mode' and `woman-mode'.
16950   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
16951       (match-string 1 (buffer-name))
16952     (error "Cannot create link to this man page")))
16954 (provide 'org-man)
16956 ;;; org-man.el ends here
16957 #+end_src
16959 {{{noindent}}} You would activate this new link type in
16960 {{{file(.emacs)}}} with:
16962 #+header: :eval no
16963 #+header: :exports code
16964 #+begin_src emacs-lisp
16965 (require 'org-man)
16966 #+end_src
16968 {{{noindent}}} Let's go through the file and see what it does.
16969 #+vindex: org-store-link-functions
16971 1. It does ~(require 'org)~ to make sure that {{{file(org.el)}}} has
16972    been loaded.
16974 2. The next line calls ~org-add-link-type~ to define a new link type
16975    with prefix {{{samp(man)}}}.  The call also contains the name of a
16976    function that will be called to follow such a link.
16978 3. The next line adds a function to ~org-store-link-functions~, in
16979    order to allow the command {{{kbd(C-c l)}}} to record a useful link
16980    in a buffer displaying a man page.
16981    
16983 The rest of the file defines the necessary variables and functions.
16984 First there is a customization variable that determines which Emacs
16985 command should be used to display man pages.  There are two options,
16986 ~man~ and ~woman~.  Then the function to follow a link is defined.  It
16987 gets the link path as an argument---in this case the link path is just
16988 a topic for the manual command.  The function calls the value of
16989 ~org-man-command~ to display the man page.
16991 Finally the function ~org-man-store-link~ is defined.  When you try to
16992 store a link with {{{kbd(C-c l)}}}, this function will be called to
16993 try to make a link.  The function must first decide if it is supposed
16994 to create the link for this buffer type; we do this by checking the
16995 value of the variable ~major-mode~.  If not, the function must exit and
16996 return the value ~nil~.  If yes, the link is created by getting the
16997 manual topic from the buffer name and prefixing it with the string
16998 {{{samp(man:)}}}.  Then it must call the command ~org-store-link-props~
16999 and set the ~:type~ and ~:link~ properties.  Optionally you can also
17000 set the ~:description~ property to provide a default for the link
17001 description when the link is later inserted into an Org buffer with
17002 {{{kbd(C-c C-l)}}}.
17004 When it makes sense for your new link type, you may also define a
17005 function that implements special (e.g., completion) support for
17006 inserting such a link with {{{kbd(C-c C-l)}}}.  Such a function should
17007 not accept any arguments, and return the full link with prefix.
17009 ** Context-sensitive commands
17010    :PROPERTIES:
17011    :DESCRIPTION: How to add functionality to such commands
17012    :END:
17013 #+cindex: context-sensitive commands, hooks
17014 #+cindex: add-ons, context-sensitive commands
17015 #+vindex: org-ctrl-c-ctrl-c-hook
17017 Org has several commands that act differently depending on context.
17018 The most important example is the {{{kbd(C-c C-c)}}} (see [[The very
17019 busy C-c C-c key]]).  Also the {{{kbd(M-cursor)}}} and
17020 {{{kbd(M-S-cursor)}}} keys have this property.
17022 Add-ons can tap into this functionality by providing a function that
17023 detects special context for that add-on and executes functionality
17024 appropriate for the context.  Here is an example from Dan Davison's
17025 {{{file(org-R.el)}}} which allows you to evaluate commands based on
17026 the {{{file(R)}}} programming language.[fn:159] For this package,
17027 special contexts are lines that start with ~#+R:~ or ~#+RR:~.
17029 #+header: :eval no
17030 #+header: :exports code
17031 #+begin_src emacs-lisp
17032 (defun org-R-apply-maybe ()
17033   "Detect if this is context for org-R and execute R commands."
17034   (if (save-excursion
17035         (beginning-of-line 1)
17036         (looking-at "#\\+RR?:"))
17037       (progn (call-interactively 'org-R-apply)
17038              t) ;; to signal that we took action
17039     nil)) ;; to signal that we did not
17041 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
17042 #+end_src
17044 The function first checks if the cursor is in such a line.  If that is
17045 the case, ~org-R-apply~ is called and the function returns ~t~ to
17046 signal that action was taken, and {{{kbd(C-c C-c)}}} will stop looking
17047 for other contexts.  If the function finds it should do nothing
17048 locally, it returns ~nil~ so that other, similar functions can have a
17049 try.
17051 ** Tables in arbitrary syntax
17052    :PROPERTIES:
17053    :DESCRIPTION: Orgtbl for LaTeX and other programs
17054    :END:
17055 #+cindex: tables, in other modes
17056 #+cindex: lists, in other modes
17057 #+cindex: Orgtbl mode
17059 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
17060 frequent feature request has been to make it work with native tables
17061 in specific languages, for example LaTeX.  However, this is
17062 extremely hard to do in a general way, would lead to a customization
17063 nightmare, and would take away much of the simplicity of the Orgtbl
17064 mode table editor.
17066 This appendix describes a different approach.  We keep the Orgtbl mode
17067 table in its native format (the source table), and use a custom
17068 function to /translate/ the table to the correct syntax, and to
17069 /install/ it in the right location (the target table).  This puts
17070 the burden of writing conversion functions on the user, but it allows
17071 for a very flexible system.
17073 Bastien added the ability to do the same with lists, in Orgstruct
17074 mode.  You can use Org's facilities to edit and structure lists by
17075 turning ~orgstruct-mode~ on, then locally exporting such lists in
17076 another format (HTML, LaTeX or Texinfo.)
17078 *** Radio tables
17079     :PROPERTIES:
17080     :DESCRIPTION: Sending and receiving radio tables
17081     :END:
17082 #+cindex: radio tables
17084 To define the location of the target table, you first need to create
17085 two lines that are comments in the current mode, but contain magic
17086 words for Orgtbl mode to find.  Orgtbl mode will insert the translated
17087 table between these lines, replacing whatever was there before.  For
17088 example:
17090 #+begin_example
17091    /* BEGIN RECEIVE ORGTBL table_name */
17092    /* END RECEIVE ORGTBL table_name */
17093 #+end_example
17095 {{{noindent}}} Just above the source table, we put a special line that
17096 tells Orgtbl mode how to translate this table and where to install it.
17097 For example: 
17099 #+cindex: #+ORGTBL
17100 #+begin_example
17101    ,#+ORGTBL: SEND table_name translation_function arguments ...
17102 #+end_example
17104 {{{noindent}}} Here, ~table_name~ is the reference name for the table
17105 that is also used in the receiver lines.  ~translation_function~ is the
17106 Lisp function that does the translation.  Furthermore, the line can
17107 contain a list of arguments (alternating key and value) at the end.
17108 The arguments will be passed as a property list to the translation
17109 function for interpretation.  A few standard parameters are already
17110 recognized and acted upon before the translation function is called:
17112 #+attr_texinfo: :table-type table :indic @asis
17113 - ~:skip N~ ::
17115   Skip the first N lines of the table.  Hlines do count as separate lines
17116   for this parameter!
17118 - ~:skipcols (n1 n2 ...)~ ::
17120   List of columns that should be skipped.  If the table has a column with
17121   calculation marks, that column is automatically discarded as well.
17122   Please note that the translator function sees the table /after/ the
17123   removal of these columns, the function never knows that there have
17124   been additional columns.
17126 - ~:no-escape t~ ::
17128   When non-nil, do not escape special characters ~&%#_^~ when exporting
17129   the table.  The default value is nil.
17132 {{{noindent}}} The one problem remaining is how to keep the source
17133 table in the buffer without disturbing the normal workings of the
17134 file, for example during compilation of a C file or processing of a
17135 LaTeX file.  There are a number of different solutions:
17137 - The table could be placed in a block comment if that is supported by
17138   the language.  For example, in C mode you could wrap the table
17139   between {{{samp(/*)}}} and {{{samp(*/)}}} lines.
17141 - Sometimes it is possible to put the table after some kind of END
17142   statement, for example ~\bye~ in TeX and ~\end{document}~ in
17143   LaTeX.
17145 - You can just comment the table line-by-line whenever you want to
17146   process the file, and uncomment it whenever you need to edit the
17147   table.  This only sounds tedious---the command {{{kbd(M-x
17148   orgtbl-toggle-comment)}}} makes this comment-toggling very easy, in
17149   particular if you bind it to a key.
17151 *** A LaTeX example
17152     :PROPERTIES:
17153     :DESCRIPTION: Step by step, almost a tutorial
17154     :TITLE:    A LaTeX example of radio tables
17155     :END:
17156 #+cindex: @LaTeX{}, and Orgtbl mode
17158 The best way to wrap the source table in LaTeX is to use the
17159 ~comment~ environment provided by {{{file(comment.sty)}}}.  It has to
17160 be activated by placing ~\usepackage{comment}~ into the document
17161 header.  Orgtbl mode can insert a radio table skeleton with the command
17162 {{{kbd(M-x orgtbl-insert-radio-table)}}}.[fn:160] You will be prompted
17163 for a table name, let's say we use {{{samp(salesfigures)}}}.  You will
17164 then get the following template:
17166 #+cindex: #+ORGTBL, SEND
17167 #+begin_example
17168    % BEGIN RECEIVE ORGTBL salesfigures
17169    % END RECEIVE ORGTBL salesfigures
17170    \begin{comment}
17171    #+ORGTBL: SEND salesfigures orgtbl-to-latex
17172    | | |
17173    \end{comment}
17174 #+end_example
17176 #+vindex: @LaTeX{}-verbatim-environments
17178 {{{noindent}}} The ~#+ORGTBL: SEND~ line tells Orgtbl mode to use the
17179 function ~orgtbl-to-latex~ to convert the table into LaTeX and to
17180 put it into the receiver location with name ~salesfigures~.  You may
17181 now fill in the table---feel free to use the spreadsheet features:[fn:161]
17183 #+begin_example
17184    % BEGIN RECEIVE ORGTBL salesfigures
17185    % END RECEIVE ORGTBL salesfigures
17186    \begin{comment}
17187    #+ORGTBL: SEND salesfigures orgtbl-to-latex
17188    | Month | Days | Nr sold | per day |
17189    |-------+------+---------+---------|
17190    | Jan   |   23 |      55 |     2.4 |
17191    | Feb   |   21 |      16 |     0.8 |
17192    | March |   22 |     278 |    12.6 |
17193    #+TBLFM: $4=$3/$2;%.1f
17194    % $ (optional extra dollar to keep font-lock happy, see footnote)
17195    \end{comment}
17196 #+end_example
17198 {{{noindent}}} When you are done, press {{{kbd(C-c C-c)}}} in the
17199 table to get the converted table inserted between the two marker
17200 lines.
17202 Now let's assume you want to make the table header by hand, because
17203 you want to control how columns are aligned, etc.  In this case we make
17204 sure that the table translator skips the first 2 lines of the source
17205 table, and tell the command to work as a splice, i.e., to not
17206 produce header and footer commands of the target table:
17208 #+begin_example
17209    \begin{tabular}{lrrr}
17210    Month & \multicolumn{1}{c}{Days} & Nr.\ sold & per day\\
17211    % BEGIN RECEIVE ORGTBL salesfigures
17212    % END RECEIVE ORGTBL salesfigures
17213    \end{tabular}
17214    %
17215    \begin{comment}
17216    #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
17217    | Month | Days | Nr sold | per day |
17218    |-------+------+---------+---------|
17219    | Jan   |   23 |      55 |     2.4 |
17220    | Feb   |   21 |      16 |     0.8 |
17221    | March |   22 |     278 |    12.6 |
17222    #+TBLFM: $4=$3/$2;%.1f
17223    \end{comment}
17224 #+end_example
17226 The LaTeX translator function ~orgtbl-to-latex~ is already part of
17227 Orgtbl mode.  It uses a ~tabular~ environment to typeset the table and
17228 marks horizontal lines with ~\hline~.  Furthermore, it interprets the
17229 following parameters (see also see [[Translator functions]]):
17231 #+attr_texinfo: :table-type table :indic @asis
17232 - ~:splice nil/t~ ::
17234   When set to ~t~, return only table body lines, don't wrap them into a
17235   tabular environment.  Default is ~nil~.
17237 - ~:fmt fmt~ ::
17239   A format to be used to wrap each field, it should contain ~%s~ for the
17240   original field value.  For example, to wrap each field value in
17241   dollars, you could use ~:fmt "$%s$"~.  This may also be a property list
17242   with column numbers and formats, for example ~:fmt (2 "$%s$" 4
17243   "%s\\%%")~.  A function of one argument can be used in place of the
17244   strings; the function must return a formatted string.
17246 - ~:efmt efmt~ ::
17248   Use this format to print numbers with exponentials.  The format should
17249   have ~%s~ twice for inserting mantissa and exponent, for example:
17251   #+begin_example
17252      "%s\\times10^{%s}"
17253   #+end_example
17255   The default is:
17257   #+begin_example
17258      "%s\\,(%s)"
17259   #+end_example
17261   This may also be a property list with column numbers and formats, for
17262   example:
17264   #+begin_example
17265      :efmt (2 "$%s\\times10^{%s}$" 4 "$%s\\cdot10^{%s}$")
17266   #+end_example
17268   After ~efmt~ has been applied to a value, ~fmt~ will also be applied.
17269   Similar to ~fmt~, functions of two arguments can be supplied instead
17270   of strings.
17272 *** Translator functions
17273     :PROPERTIES:
17274     :DESCRIPTION: Copy and modify
17275     :END:
17276 #+cindex: HTML, and Orgtbl mode
17277 #+cindex: translator function
17279 Orgtbl mode has several translator functions built-in: ~orgtbl-to-csv~
17280 (comma-separated values), ~orgtbl-to-tsv~ (TAB-separated values)
17281 ~orgtbl-to-latex~, ~orgtbl-to-html~, and ~orgtbl-to-texinfo~.  Except
17282 for ~orgtbl-to-html~, these all use a generic translator,
17283 ~orgtbl-to-generic~.[fn:162] For example, ~orgtbl-to-latex~ itself is
17284 a very short function that computes the column definitions for the
17285 ~tabular~ environment, defines a few field and line separators and
17286 then hands processing over to the generic translator.  Here is the
17287 entire code:
17289 #+header: :eval no
17290 #+header: :exports code
17291 #+begin_src emacs-lisp
17292 (defun orgtbl-to-latex (table params)
17293   "Convert the Orgtbl mode TABLE to LaTeX."
17294   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
17295                                org-table-last-alignment ""))
17296          (params2
17297           (list
17298            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
17299            :tend "\\end@{tabular@}"
17300            :lstart "" :lend " \\\\" :sep " & "
17301            :efmt "%s\\,(%s)" :hline "\\hline")))
17302     (orgtbl-to-generic table (org-combine-plists params2 params))))
17303 #+end_src
17305 As you can see, the properties passed into the function (variable
17306 ~PARAMS~) are combined with the ones newly defined in the function
17307 (variable ~PARAMS2~).  The ones passed into the function (i.e., the
17308 ones set by the {{{samp(ORGTBL SEND)}}} line) take precedence.  So if
17309 you would like to use the LaTeX translator, but wanted the line
17310 endings to be ~\\[2mm]~ instead of the default ~\\~, you could just
17311 overrule the default with:
17313 #+begin_example
17314    ,#+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
17315 #+end_example
17317 For a new language, you can either write your own converter function
17318 in analogy with the LaTeX translator, or you can use the generic
17319 function directly.  For example, if you have a language where a table
17320 is started with {{{samp(!BTBL!)}}}, ended with {{{samp(!ETBL!)}}}, and
17321 where table lines are started with {{{samp(!BL!)}}}, ended with
17322 {{{samp(!EL!)}}}, and where the field separator is a TAB, you could
17323 call the generic translator like this (on a single line!):
17325 #+begin_example
17326    ,#+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
17327                                  :lstart "!BL! " :lend " !EL!" :sep "\t"
17328 #+end_example
17330 {{{noindent}}} Please check the documentation string of the function
17331 ~orgtbl-to-generic~ for a full list of parameters understood by that
17332 function, and remember that you can pass each of them into
17333 ~orgtbl-to-latex~, ~orgtbl-to-texinfo~, and any other function using
17334 the generic function.
17336 Of course you can also write a completely new function doing
17337 complicated things the generic translator cannot do.  A translator
17338 function takes two arguments.  The first argument is the table, a list
17339 of lines, each line either the symbol ~hline~ or a list of fields.  The
17340 second argument is the property list containing all parameters
17341 specified in the {{{samp(#+ORGTBL: SEND)}}} line.  The function must
17342 return a single string containing the formatted table.  If you write a
17343 generally useful translator, please post it to the [[mailto:emacs-orgmode@gnu.org][mailing list]] so
17344 that others can benefit from your work.
17346 *** Radio lists
17347     :PROPERTIES:
17348     :DESCRIPTION: Doing the same for lists
17349     :END:
17350 #+cindex: radio lists
17351 #+cindex: org-list-insert-radio-list
17353 Sending and receiving radio lists works exactly the same way as
17354 sending and receiving radio tables (see [[Radio tables]]).  As for radio
17355 tables, you can insert radio list templates in HTML, LaTeX and
17356 Texinfo modes by calling ~org-list-insert-radio-list~.
17358 Here are the differences with radio tables:
17360 - Orgstruct mode must be active.
17362 - Use the ~ORGLST~ keyword instead of ~ORGTBL~.
17364 - The available translation functions for radio lists don't take
17365   parameters.
17367 - {{{kbd(C-c C-c)}}} will work when pressed on the first item of the
17368   list.
17371 Here is a LaTeX example.  Let's say that you have this in your
17372 LaTeX file:
17374 #+cindex: #+ORGLST
17375 #+begin_example
17376    % BEGIN RECEIVE ORGLST to-buy
17377    % END RECEIVE ORGLST to-buy
17378    \begin{comment}
17379    #+ORGLST: SEND to-buy org-list-to-latex
17380    - a new house
17381    - a new computer
17382      + a new keyboard
17383      + a new mouse
17384    - a new life
17385    \end{comment}
17386 #+end_example
17388 Pressing `C-c C-c' on ~a new house~ will insert the converted
17389 LaTeX list between the two marker lines.
17391 ** Dynamic blocks
17392    :PROPERTIES:
17393    :DESCRIPTION: Automatically filled blocks
17394    :END:
17395 #+cindex: dynamic blocks
17397 Org documents can contain /dynamic blocks/.  These are specially marked
17398 regions that are updated by some user-written function.  A good example
17399 for such a block is the clock table inserted by the command 
17400 {{{kbd(C-c C-x C-r)}}} (see [[Clocking work time]]).
17402 Dynamic blocks are enclosed by a BEGIN-END structure that assigns a
17403 name to the block and can also specify parameters for the function
17404 producing the content of the block.
17406 #+cindex: #+BEGIN:dynamic block
17407 #+begin_example
17408    ,#+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
17410    ,#+END:
17411 #+end_example
17413 Dynamic blocks are updated with the following commands:
17415 #+attr_texinfo: :table-type table :indic @asis
17416 - {{{kbd(C-c C-x C-u)}}}, ~org-dblock-update~ ::
17417   #+kindex: C-c C-x C-u
17419   Update dynamic block at point.
17421 - {{{kbd(C-u C-c C-x C-u)}}} ::
17422   #+kindex: C-u C-c C-x C-u
17424   Update all dynamic blocks in the current file.
17427 Updating a dynamic block means to remove all the text between ~BEGIN~
17428 and ~END~, parse the ~BEGIN~ line for parameters and then call the
17429 specific writer function for this block to insert the new content.  If
17430 you want to use the original content in the writer function, you can
17431 use the extra parameter ~:content~.
17433 For a block with name ~myblock~, the writer function is
17434 ~org-dblock-write:myblock~ with as only parameter a property list
17435 with the parameters given in the begin line.  Here is a trivial example
17436 of a block that keeps track of when the block update function was last
17437 run:
17439 #+begin_example
17440    ,#+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
17442    ,#+END:
17443 #+end_example
17445 {{{noindent}}} The corresponding block writer function could look like
17446 this:
17448 #+header: :eval no
17449 #+header: :exports code
17450 #+begin_src emacs-lisp
17451 (defun org-dblock-write:block-update-time (params)
17452    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
17453      (insert "Last block update at: "
17454              (format-time-string fmt (current-time)))))
17455 #+end_src
17457 If you want to make sure that all dynamic blocks are always
17458 up-to-date, you could add the function ~org-update-all-dblocks~ to a
17459 hook, for example ~before-save-hook~.  ~org-update-all-dblocks~ is
17460 written in a way such that it does nothing in buffers that are not in
17461 ~org-mode~.
17463 You can narrow the current buffer to the current dynamic block (like
17464 any other block) with ~org-narrow-to-block~.
17466 ** Special agenda views
17467    :PROPERTIES:
17468    :DESCRIPTION: Customized views
17469    :END:
17470 #+cindex: agenda views, user-defined
17471 #+vindex: org-agenda-skip-function
17472 #+vindex: org-agenda-skip-function-global
17474 Org provides a special hook that can be used to narrow down the
17475 selection made by these agenda views: ~agenda~, ~todo~, ~alltodo~,
17476 ~tags~, ~tags-todo~, ~tags-tree~.  You may specify a function that is
17477 used at each match to verify if the match should indeed be part of the
17478 agenda view, and if not, how much should be skipped.  You can specify a
17479 global condition that will be applied to all agenda views, this
17480 condition would be stored in the variable
17481 ~org-agenda-skip-function-global~.  More commonly, such a definition is
17482 applied only to specific custom searches, using
17483 ~org-agenda-skip-function~.
17485 Let's say you want to produce a list of projects that contain a
17486 ~WAITING~ tag anywhere in the project tree.  Let's further assume that
17487 you have marked all tree headings that define a project with the TODO
17488 keyword PROJECT.  In this case you would run a TODO search for the
17489 keyword PROJECT, but skip the match unless there is a ~WAITING~ tag
17490 anywhere in the subtree belonging to the project line.
17492 To achieve this, you must write a function that searches the subtree for
17493 the tag.  If the tag is found, the function must return ~nil~ to
17494 indicate that this match should not be skipped.  If there is no such
17495 tag, return the location of the end of the subtree, to indicate that
17496 search should continue from there.
17498 #+header: :eval no
17499 #+header: :exports code
17500 #+begin_src emacs-lisp
17501 (defun my-skip-unless-waiting ()
17502   "Skip trees that are not waiting"
17503   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
17504     (if (re-search-forward ":waiting:" subtree-end t)
17505         nil          ; tag found, do not skip
17506       subtree-end))) ; tag not found, continue after end of subtree
17507 #+end_src
17509 Now you may use this function in an agenda custom command, for example
17510 like this:
17512 #+header: :eval no
17513 #+header: :exports code
17514 #+begin_src emacs-lisp
17515 (org-add-agenda-custom-command
17516  '("b" todo "PROJECT"
17517    ((org-agenda-skip-function 'my-skip-unless-waiting)
17518     (org-agenda-overriding-header "Projects waiting for something: "))))
17519 #+end_src
17521 #+vindex: org-agenda-overriding-header
17523 Note that this also binds ~org-agenda-overriding-header~ to get a
17524 meaningful header in the agenda view.
17526 #+vindex: org-odd-levels-only
17527 #+vindex: org-agenda-skip-function
17529 A general way to create custom searches is to base them on a search
17530 for entries with a certain level limit.  If you want to study all
17531 entries with your custom search function, simply do a search for
17532 {{{samp(LEVEL>0)}}}, and then use ~org-agenda-skip-function~ to select
17533 the entries you really want to have.[fn:163]
17535 You may also put a Lisp form into ~org-agenda-skip-function~.  In
17536 particular, you may use the functions ~org-agenda-skip-entry-if~
17537 and ~org-agenda-skip-subtree-if~ in this form, for example:
17539 #+attr_texinfo: :table-type table :indic @asis
17540 - {{{samp((org-agenda-skip-entry-if 'scheduled))}}} ::
17542   Skip current entry if it has been scheduled.
17544 - {{{samp((org-agenda-skip-entry-if 'notscheduled))}}} ::
17546   Skip current entry if it has not been scheduled.
17548 - {{{samp((org-agenda-skip-entry-if 'deadline))}}} ::
17550   Skip current entry if it has a deadline.
17552 - {{{samp((org-agenda-skip-entry-if 'scheduled 'deadline))}}} ::
17554   Skip current entry if it has a deadline, or if it is scheduled.
17556 - {{{samp((org-agenda-skip-entry-if 'todo '("TODO" "WAITING")))}}} ::
17558   Skip current entry if the TODO keyword is TODO or WAITING.
17560 - {{{samp((org-agenda-skip-entry-if 'todo 'done))}}} ::
17562   Skip current entry if the TODO keyword marks a DONE state.
17564 - {{{samp((org-agenda-skip-entry-if 'timestamp))}}} ::
17566   Skip current entry if it has any timestamp, may also be deadline or scheduled.
17567   <<x-agenda-skip-entry-regexp>>
17569 - {{{samp((org-agenda-skip-entry-if 'regexp "regular expression"))}}} ::
17570   
17571   Skip current entry if the regular expression matches in the entry.
17573 - {{{samp((org-agenda-skip-entry-if 'notregexp "regular expression"))}}} ::
17575   Skip current entry unless the regular expression matches.
17577 - {{{samp((org-agenda-skip-subtree-if 'regexp "regular expression"))}}} ::
17579   Same as above, but check and skip the entire subtree.
17582 Therefore we could also have written the search for WAITING projects
17583 like this, even without defining a special function:
17585 #+header: :eval no
17586 #+header: :exports code
17587 #+begin_src emacs-lisp
17588 (org-add-agenda-custom-command
17589  '("b" todo "PROJECT"
17590    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
17591                                 'regexp ":waiting:"))
17592     (org-agenda-overriding-header "Projects waiting for something: "))))
17593 #+end_src
17595 ** Extracting agenda information
17596    :PROPERTIES:
17597    :DESCRIPTION: Post-processing agenda information
17598    :END:
17599 #+cindex: agenda, pipe
17600 #+cindex: Scripts, for agenda processing
17601 #+vindex: org-agenda-custom-commands
17603 Org provides commands to access agenda information for the command
17604 line in Emacs batch mode.  This extracted information can be sent
17605 directly to a printer, or it can be read by a program that does
17606 further processing of the data.  The first of these commands is the
17607 function ~org-batch-agenda~, that produces an agenda view and sends it
17608 as ASCII text to STDOUT.  The command takes a single string as
17609 parameter.  If the string has length 1, it is used as a key to one of
17610 the commands you have configured in ~org-agenda-custom-commands~,
17611 basically any key you can use after {{{kbd(C-c a)}}}.  For example, to
17612 directly print the current TODO list, you could use:
17614 #+header: :eval no
17615 #+header: :exports code
17616 #+begin_src sh
17617 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
17618 #+end_src
17620 If the parameter is a string with 2 or more characters, it is used as
17621 a tags/TODO match string.  For example, to print your local shopping
17622 list (all items with the tag {{{samp(shop)}}}, but excluding the tag
17623 {{{samp(NewYork)}}}), you could use:
17625 #+header: :eval no
17626 #+header: :exports code
17627 #+begin_src sh
17628 emacs -batch -l ~/.emacs                                      \
17629       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
17630 #+end_src
17632 {{{noindent}}} You may also modify parameters on the fly like this:
17634 #+header: :eval no
17635 #+header: :exports code
17636 #+begin_src sh
17637 emacs -batch -l ~/.emacs                                      \
17638    -eval '(org-batch-agenda "a"                               \
17639             org-agenda-span (quote month)                     \
17640             org-agenda-include-diary nil                      \
17641             org-agenda-files (quote ("~/org/project.org")))'  \
17642    | lpr
17643 #+end_src
17645 {{{noindent}}} which will produce a 30-day agenda, fully restricted to
17646 the Org file {{{file(~/org/projects.org)}}}, not even including the
17647 diary.
17649 If you want to process the agenda data in more sophisticated ways, you
17650 can use the command ~org-batch-agenda-csv~ to get a comma-separated
17651 list of values for each agenda item.  Each line in the output will
17652 contain a number of fields separated by commas.  The fields in a line
17653 are:
17655 #+attr_texinfo: :table-type table :indic @code
17656 - category ::     The category of the item
17657 - head ::        The headline, without TODO keyword, TAGS and PRIORITY
17658 - type ::        The type of the agenda entry, can be:
17659   - todo ::               selected in TODO match
17660   - tagsmatch ::          selected in tags match
17661   - diary ::              imported from diary
17662   - deadline ::           a deadline
17663   - scheduled ::         scheduled
17664   - timestamp ::         appointment, selected by timestamp
17665   - closed ::            entry was closed on date
17666   - upcoming-deadline ::  warning about nearing deadline
17667   - past-scheduled ::     forwarded scheduled item
17668   - block ::              entry has date block including date
17669 - todo ::         The TODO keyword, if any
17670 - tags ::        All tags including inherited ones, separated by colons
17671 - date ::        The relevant date, like 2007-2-14
17672 - time ::        The time, like 15:00-16:50
17673 - extra ::       String with extra planning info
17674 - priority-l ::   The priority letter if any was given
17675 - priority-n ::  The computed numerical priority
17677 {{{noindent}}} Time and date will only be given if a timestamp (or
17678 deadline/scheduled) led to the selection of the item.
17680 A CSV list like this is very easy to use in a post-processing script.
17681 For example, here is a Perl program that gets the TODO list from
17682 Emacs/Org and prints all the items, preceded by a checkbox:
17684 #+header: :eval no
17685 #+header: :exports code
17686 #+begin_src perl
17687 #!/usr/bin/perl
17689 # define the Emacs command to run
17690 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
17692 # run it and capture the output
17693 $agenda = qx@{$cmd 2>/dev/null@};
17695 # loop over all lines
17696 foreach $line (split(/\n/,$agenda)) @{
17697   # get the individual values
17698   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
17699    $priority_l,$priority_n) = split(/,/,$line);
17700   # process and print
17701   print "[ ] $head\n";
17703 #+end_src
17705 ** Using the property API
17706    :PROPERTIES:
17707    :DESCRIPTION: Writing programs that use entry properties
17708    :END:
17709 #+cindex: API, for properties
17710 #+cindex: properties, API
17712 Here is a description of the functions that can be used to work with
17713 properties.
17715 #+attr_texinfo: :options org-entry-properties &optional pom which
17716 #+begin_defun
17717 Get all properties of the entry at point-or-marker POM.
17718 This includes the TODO keyword, the tags, time strings for deadline,
17719 scheduled, and clocking, and any additional properties defined in the
17720 entry.  The return value is an alist.  Keys may occur multiple times
17721 if the property key was used several times.@*
17722 POM may also be nil, in which case the current entry is used.
17723 If WHICH is nil or `all', get all properties.  If WHICH is
17724 `special' or `standard', only get that subclass.
17725 #+end_defun
17727 #+vindex: org-use-property-inheritance
17728 #+findex: org-insert-property-drawer
17729 #+attr_texinfo: :options org-entry-get pom property &optional inherit
17730 #+begin_defun
17731 Get value of PROPERTY for entry at point-or-marker POM.  By default,
17732 this only looks at properties defined locally in the entry.  If INHERIT
17733 is non-nil and the entry does not have the property, then also check
17734 higher levels of the hierarchy.  If INHERIT is the symbol
17735 ~selective~, use inheritance if and only if the setting of
17736 ~org-use-property-inheritance~ selects PROPERTY for inheritance.
17737 #+end_defun
17739 #+attr_texinfo: :options org-entry-delete pom property
17740 #+begin_defun
17741 Delete the property PROPERTY from entry at point-or-marker POM.
17742 #+end_defun
17744 #+attr_texinfo: :options org-entry-put pom property value
17745 #+begin_defun
17746 Set PROPERTY to VALUE for entry at point-or-marker POM.
17747 #+end_defun
17749 #+attr_texinfo: :options org-buffer-property-keys &optional include-specials
17750 #+begin_defun
17751 Get all property keys in the current buffer.
17752 #+end_defun
17753 #+attr_texinfo: :options org-insert-property-drawer
17754 #+begin_defun
17755 Insert a property drawer for the current entry.  Also
17756 #+end_defun
17758 #+attr_texinfo: :options org-entry-put-multivalued-property pom property &rest values
17759 #+begin_defun
17760 Set PROPERTY at point-or-marker POM to VALUES.  VALUES should be a list of
17761 strings.  They will be concatenated, with spaces as separators.
17762 #+end_defun
17764 #+attr_texinfo: :options org-entry-get-multivalued-property pom property
17765 #+begin_defun
17766 Treat the value of the property PROPERTY as a whitespace-separated list of
17767 values and return the values as a list of strings.
17768 #+end_defun
17770 #+attr_texinfo: :options org-entry-add-to-multivalued-property pom property value
17771 #+begin_defun
17772 Treat the value of the property PROPERTY as a whitespace-separated list of
17773 values and make sure that VALUE is in this list.
17774 #+end_defun
17776 #+attr_texinfo: :options org-entry-remove-from-multivalued-property pom property value
17777 #+begin_defun
17778 Treat the value of the property PROPERTY as a whitespace-separated list of
17779 values and make sure that VALUE is /not/ in this list.
17780 #+end_defun
17782 #+attr_texinfo: :options org-entry-member-in-multivalued-property pom property value
17783 #+begin_defun
17784 Treat the value of the property PROPERTY as a whitespace-separated list of
17785 values and check if VALUE is in this list.
17786 #+end_defun
17788 #+attr_texinfo: :options org-property-allowed-value-functions
17789 #+begin_defopt
17790 Hook for functions supplying allowed values for a specific property.
17791 The functions must take a single argument, the name of the property, and
17792 return a flat list of allowed values.  If {{{samp(:ETC)}}} is one of
17793 the values, use the values as completion help, but allow also other values
17794 to be entered.  The functions must return ~nil~ if they are not
17795 responsible for this property.
17796 #+end_defopt
17798 ** Using the mapping API
17799    :PROPERTIES:
17800    :DESCRIPTION: Mapping over all or selected entries
17801    :END:
17802 #+cindex: API, for mapping
17803 #+cindex: mapping entries, API
17805 Org has sophisticated mapping capabilities to find all entries satisfying
17806 certain criteria.  Internally, this functionality is used to produce agenda
17807 views, but there is also an API that can be used to execute arbitrary
17808 functions for each or selected entries.  The main entry point for this API
17811 #+attr_texinfo: :options org-map-entries func &optional match scope &rest skip
17812 #+begin_defun
17813 Call FUNC at each headline selected by MATCH in SCOPE.
17815 FUNC is a function or a Lisp form.  The function will be called without
17816 arguments, with the cursor positioned at the beginning of the headline.
17817 The return values of all calls to the function will be collected and
17818 returned as a list.
17820 The call to FUNC will be wrapped into a save-excursion form, so FUNC
17821 does not need to preserve point.  After evaluation, the cursor will be
17822 moved to the end of the line (presumably of the headline of the
17823 processed entry) and search continues from there.  Under some
17824 circumstances, this may not produce the wanted results.  For example,
17825 if you have removed (e.g., archived) the current (sub)tree it could
17826 mean that the next entry will be skipped entirely.  In such cases, you
17827 can specify the position from where search should continue by making
17828 FUNC set the variable `org-map-continue-from' to the desired buffer
17829 position.
17831 MATCH is a tags/property/todo match as it is used in the agenda match view.
17832 Only headlines that are matched by this query will be considered during
17833 the iteration.  When MATCH is nil or t, all headlines will be
17834 visited by the iteration.
17836 SCOPE determines the scope of this command.  It can be any of:
17838 #+attr_texinfo: :table-type table :indic @code
17839 - nil ::     
17841   The current buffer, respecting the restriction, if any.
17843 - tree ::    
17845   The subtree started with the entry at point.
17847 - region ::  
17849   The entries within the active region, if any.
17851 - file ::    
17853   The current buffer, without restriction.
17855 - file-with-archives ::
17856         
17857   The current buffer, and any archives associated with it.
17859 - agenda ::  
17861   All agenda files.
17863 - agenda-with-archives ::
17864         
17865   All agenda files with any archive files associated with them.
17867 - (file1 file2 ...) ::
17868         
17869   If this is a list, all files in the list will be scanned.
17872 {{{noindent}}} The remaining args are treated as settings for the
17873 skipping facilities of the scanner.  The following items can be given
17874 here:
17876 #+vindex: org-agenda-skip-function
17877 #+attr_texinfo: :table-type table :indic @asis
17878 - ~archive~ ::   
17880   Skip trees with the archive tag.
17882 - ~comment~ ::   
17884   Skip trees with the COMMENT keyword.
17886 - function or Lisp form ::
17888   Will be used as value for ~org-agenda-skip-function~, so whenever the
17889   function returns t, FUNC will not be called for that entry and search
17890   will continue from the point where the function leaves it.
17891 #+end_defun
17893 The function given to that mapping routine can really do anything you like.
17894 It can use the property API (see [[Using the property API]]) to gather more
17895 information about the entry, or in order to change metadata in the entry.
17896 Here are a few functions that might be handy:
17898 #+attr_texinfo: :options org-todo &optional arg
17899 #+begin_defun
17900 Change the TODO state of the entry.  See the docstring of the functions for
17901 the many possible values for the argument ARG.
17902 #+end_defun
17904 #+attr_texinfo: :options org-priority &optional action
17905 #+begin_defun
17906 Change the priority of the entry.  See the docstring of this function for the
17907 possible values for ACTION.
17908 #+end_defun
17910 #+attr_texinfo: :options org-toggle-tag tag &optional onoff
17911 #+begin_defun
17912 Toggle the tag TAG in the current entry.  Setting ONOFF to either ~on~
17913 or ~off~ will not toggle tag, but ensure that it is either on or off.
17914 #+end_defun
17916 #+attr_texinfo: :options org-promote
17917 #+begin_defun
17918 Promote the current entry.
17919 #+end_defun
17921 #+attr_texinfo: :options org-demote
17922 #+begin_defun
17923 Demote the current entry.
17924 #+end_defun
17926 The following simple example will turn all entries in the current file
17927 with a tag ~TOMORROW~ into TODO entries with the keyword ~UPCOMING~.
17928 Entries in comment trees and in archive trees will be ignored.
17930 #+header: :eval no
17931 #+header: :exports code
17932 #+begin_src emacs-lisp
17933 (org-map-entries
17934    '(org-todo "UPCOMING")
17935    "+TOMORROW" 'file 'archive 'comment)
17936 #+end_src
17938 The following example counts the number of entries with TODO keyword
17939 ~WAITING~, in all agenda files.
17941 #+header: :eval no
17942 #+header: :exports code
17943 #+begin_src emacs-lisp
17944 (length (org-map-entries t "/+WAITING" 'agenda))
17945 #+end_src
17947 * MobileOrg
17948   :PROPERTIES:
17949   :DESCRIPTION: Viewing and capture on a mobile device
17950   :APPENDIX:    Appendix
17951   :END:
17952 #+cindex: iPhone
17953 #+cindex: MobileOrg
17954 #+cindex: Moreland, Richard
17955 #+cindex: Jones, Matt
17957 MobileOrg is the name of the mobile companion app for Org mode,
17958 currently available for iOS and for Android.  MobileOrg offers
17959 offline viewing and capture support for an Org mode system rooted on a
17960 ``real'' computer.  It does also allow you to record changes to
17961 existing entries.  The [[http://mobileorg.ncogni.to/][iOS implementation]] for the iPhone/iPod
17962 Touch/iPad series of devices, was developed by Richard Moreland.
17963 Android users should check out [[http://wiki.github.com/matburt/mobileorg-android/][MobileOrg Android]] by Matt Jones.  The
17964 two implementations are not identical but offer similar features.
17966 This appendix describes the support Org has for creating agenda views
17967 in a format that can be displayed by MobileOrg, and for integrating
17968 notes captured and changes made by MobileOrg into the main system.
17970 For changing tags and TODO states in MobileOrg, you should have set up
17971 the customization variables ~org-todo-keywords~ and ~org-tags-alist~
17972 to cover all important tags and TODO keywords, even if individual
17973 files use only part of these.  MobileOrg will also offer you states and
17974 tags set up with in-buffer settings, but it will understand the
17975 logistics of TODO state /sets/ (see [[Per-file keywords]]) and /mutually
17976 exclusive/ tags (see [[Setting tags]]) only for those set in these
17977 variables.
17979 ** Setting up the staging area
17980    :PROPERTIES:
17981    :DESCRIPTION: Where to interact with the mobile device
17982    :END:
17984 MobileOrg needs to interact with Emacs through a directory on a
17985 server.  If you are using a public server, you should consider to
17986 encrypt the files that are uploaded to the server.  This can be done
17987 with Org mode 7.02 and with MobileOrg 1.5 (iPhone version), and you
17988 need an {{{file(openssl)}}} installation on your system.  To turn on
17989 encryption, set a password in MobileOrg and, on the Emacs side,
17990 configure the variable ~org-mobile-use-encryption~.[fn:164]
17992 The easiest way to create that directory is to use a free [[http://dropbox.com][Dropbox]]
17993 account.[fn:165] When MobileOrg first connects to your Dropbox, it
17994 will create a directory MobileOrg inside the Dropbox.  After the
17995 directory has been created, tell Emacs about it:
17997 #+header: :eval no
17998 #+header: :exports code
17999 #+begin_src emacs-lisp
18000 (setq org-mobile-directory "~/Dropbox/MobileOrg")
18001 #+end_src
18003 Org mode has commands to put files for MobileOrg into that
18004 directory, and to read captured notes from there.
18006 ** Pushing to MobileOrg
18007    :PROPERTIES:
18008    :DESCRIPTION: Uploading Org files and agendas
18009    :END:
18011 This operation copies all files currently listed in ~org-mobile-files~
18012 to the directory ~org-mobile-directory~.  By default this list contains
18013 all agenda files (as listed in ~org-agenda-files~), but additional
18014 files can be included by customizing ~org-mobile-files~.  File names
18015 will be staged with paths relative to ~org-directory~, so all files
18016 should be inside this directory.[fn:184]
18018 The push operation also creates a special Org file
18019 {{{file(agendas.org)}}} with all custom agenda view defined by the
18020 user.[fn:166]
18022 Finally, Org writes the file {{{file(index.org)}}}, containing links
18023 to all other files.  MobileOrg first reads this file from the server,
18024 and then downloads all agendas and Org files listed in it.  To speed up
18025 the download, MobileOrg will only read files whose checksums have
18026 changed.[fn:167]
18028 ** Pulling from MobileOrg
18029    :PROPERTIES:
18030    :DESCRIPTION: Integrating captured and flagged items
18031    :END:
18033 When MobileOrg synchronizes with the server, it not only pulls the
18034 Org files for viewing.  It also appends captured entries and pointers
18035 to flagged and changed entries to the file {{{file(mobileorg.org)}}}
18036 on the server.  Org has a /pull/ operation that integrates this
18037 information into an inbox file and operates on the pointers to flagged
18038 entries.  Here is how it works:
18040 1. Org moves all entries found in {{{file(mobileorg.org)}}} and
18041    appends them to the file pointed to by the variable
18042    ~org-mobile-inbox-for-pull~.[fn:168] Each captured entry and each
18043    editing event will be a top-level entry in the inbox file.
18045 2. After moving the entries, Org will attempt to implement the changes
18046    made in MobileOrg.  Some changes are applied directly and without
18047    user interaction.  Examples are all changes to tags, TODO state,
18048    headline and body text that can be cleanly applied.  Entries that
18049    have been flagged for further action will receive a tag
18050    ~:FLAGGED:~, so that they can be easily found again.  When there is
18051    a problem finding an entry or applying the change, the pointer
18052    entry will remain in the inbox and will be marked with an error
18053    message.  You need to later resolve these issues by hand.
18055 3. Org will then generate an agenda view with all flagged entries.  The
18056    user should then go through these entries and do whatever actions
18057    are necessary.  If a note has been stored while flagging an entry in
18058    MobileOrg, that note will be displayed in the echo area when the
18059    cursor is on the corresponding agenda line.
18061    #+attr_texinfo: :table-type table :indic @asis
18062    - {{{kbd(?)}}} ::
18063      #+kindex: ?
18065      Pressing {{{kbd(?)}}} in that special agenda will display the full
18066      flagging note in another window and also push it onto the kill ring.
18067      So you could use {{{kbd(? z C-y C-c C-c)}}} to store that flagging
18068      note as a normal note in the entry.  Pressing {{{kbd(?)}}} twice in
18069      succession will offer to remove the ~:FLAGGED:~ tag along with the
18070      recorded flagging note (which is stored in a property).  In this way
18071      you indicate that the intended processing for this flagged entry is
18072      finished.
18075 #+kindex: C-c a ?
18077 If you are not able to process all flagged entries directly, you can always
18078 return to this agenda view using {{{kbd(C-c a ?)}}}.[fn:169]
18080 * History and acknowledgments
18081   :PROPERTIES:
18082   :DESCRIPTION: How Org came into being
18083   :ALT_TITLE: History and Acknowledgments
18084   :APPENDIX:    Appendix
18085   :END:
18086 ** From Carsten
18088 Org was born in 2003, out of frustration over the user interface of
18089 the Emacs Outline mode.  I was trying to organize my notes and
18090 projects, and using Emacs seemed to be the natural way to go.  However,
18091 having to remember eleven different commands with two or three keys
18092 per command, only to hide and show parts of the outline tree, that
18093 seemed entirely unacceptable to me.  Also, when using outlines to take
18094 notes, I constantly wanted to restructure the tree, organizing it
18095 parallel to my thoughts and plans.  /Visibility cycling/ and /structure
18096 editing/ were originally implemented in the package
18097 {{{file(outline-magic.el)}}}, but quickly moved to the more general
18098 {{{file(org.el)}}}.  As this environment became comfortable for project
18099 planning, the next step was adding /TODO entries/, basic /timestamps/,
18100 and /table support/.  These areas highlighted the two main goals that
18101 Org still has today: to be a new, outline-based, plain text mode with
18102 innovative and intuitive editing features, and to incorporate project
18103 planning functionality directly into a notes file.
18105 Since the first release, literally thousands of emails to me or to the
18106 [[mailto:emacs-orgmode@gnu.org][mailing list]] have provided a constant stream of bug reports, feedback,
18107 new ideas, and sometimes patches and add-on code.  Many thanks to
18108 everyone who has helped to improve this package.  I am trying to keep
18109 here a list of the people who had significant influence in shaping one
18110 or more aspects of Org.  The list may not be complete, if I have
18111 forgotten someone, please accept my apologies and let me know.
18113 Before I get to this list, a few special mentions are in order:
18115 #+attr_texinfo: :table-type table :indic @asis
18116 - Bastien Guerry ::
18118   Bastien has written a large number of extensions to Org (most of them
18119   integrated into the core by now), including the LaTeX exporter and
18120   the plain list parser.  His support during the early days, when he
18121   basically acted as co-maintainer, was central to the success of this
18122   project.  Bastien also invented Worg, helped establishing the Web
18123   presence of Org, and sponsored hosting costs for the ~orgmode.org~
18124   website.
18126 - Eric Schulte and Dan Davison ::
18128   Eric and Dan are jointly responsible for the Org-babel system, which
18129   turns Org into a multi-language environment for evaluating code and
18130   doing literate programming and reproducible research.
18132 - John Wiegley ::
18134   John has contributed a number of great ideas and patches directly to
18135   Org, including the attachment system ({{{file(org-attach.el)}}}),
18136   integration with Apple Mail ({{{file(org-mac-message.el)}}}),
18137   hierarchical dependencies of TODO items, habit tracking
18138   ({{{file(org-habits.el)}}}), and encryption
18139   ({{{file(org-crypt.el)}}}).  Also, the capture system is really an
18140   extended copy of his great {{{file(remember.el)}}}.
18142 - Sebastian Rose ::
18144   Without Sebastian, the HTML/XHTML publishing of Org would be the
18145   pitiful work of an ignorant amateur.  Sebastian has pushed this part of
18146   Org onto a much higher level.  He also wrote {{{file(org-info.js)}}}, a
18147   Java script for displaying webpages derived from Org using an
18148   Info-like or a folding interface with single-key navigation.
18151 {{{noindent}}} See [[List of contributions][below]] for the full list of contributions! Again,
18152 please let me know what I am missing here!
18154 ** From Bastien
18156 I (Bastien) have been maintaining Org since January 2011.  This
18157 appendix would not be complete without adding a few more
18158 acknowledgements and thanks to Carsten's ones above.
18160 I am first grateful to Carsten for his trust while handing me over the
18161 maintainership of Org.  His support as been great since day one of this
18162 new adventure, and it helped a lot.
18164 When I took over maintainership, I knew I would have to make Org more
18165 collaborative than ever, as I would have to rely on people that are
18166 more knowledgeable than I am on many parts of the code.  Here is a list
18167 of the persons I could rely on, they should really be considered
18168 co-maintainers, either of the code or the community:
18170 #+attr_texinfo: :table-type table :indic @asis
18171 - Eric Schulte ::
18173   Eric is maintaining the Babel parts of Org.  His reactivity here kept
18174   me away from worrying about possible bugs here and let me focus on
18175   other parts.
18177 - Nicolas Goaziou ::
18179   Nicolas is maintaining the consistency of the deepest parts of Org.
18180   His work on {{{file(org-element.el)}}} and {{{file(org-export.el)}}}
18181   has been outstanding, and opened the doors for many new ideas and
18182   features.
18184 - Jambunathan K ::
18186   Jambunathan contributed the ODT exporter, definitly a killer feature
18187   of Org mode.  He also contributed the new HTML exporter, which is
18188   another core feature of Org.  Here too, I knew I could rely on him to
18189   fix bugs in these areas and to patiently explain the users what was
18190   the problems and solutions.
18192 - Achim Gratz ::
18194   Achim rewrote the building process of Org, turning some /ad hoc/ tools
18195   into a flexible and conceptually clean process.  He patiently coped
18196   with the many hicups that such a change can create for users.
18198 - Nick Dokos ::
18200   The Org mode mailing list would not be such a nice place without Nick,
18201   who patiently helped users so many times.  It is impossible to
18202   overestimate such a great help, and the list would not be so active
18203   without him.
18206 I received support from so many users that it is clearly impossible to be
18207 fair when shortlisting a few of them---but Org's history would not be
18208 complete if the ones above were not mentioned in this manual.
18210 ** List of contributions
18212 - Russel Adams came up with the idea for drawers.
18214 - Thomas Baumann wrote {{{file(org-bbdb.el)}}} and {{{file(org-mhe.el)}}}.
18216 - Christophe Bataillon created the great unicorn logo that we use on
18217   the Org mode website.
18219 - Alex Bochannek provided a patch for rounding timestamps.
18221 - Jan Böcker wrote {{{file(org-docview.el)}}}.
18223 - Brad Bozarth showed how to pull RSS feed data into Org mode files.
18225 - Tom Breton wrote {{{file(org-choose.el)}}}.
18227 - Charles Cave's suggestion sparked the implementation of templates
18228   for Remember, which are now templates for capture.
18230 - Pavel Chalmoviansky influenced the agenda treatment of items with
18231   specified time.
18233 - Gregory Chernov patched support for Lisp forms into table
18234   calculations and improved XEmacs compatibility, in particular by
18235   porting {{{file(nouline.el)}}} to XEmacs.
18237 - Sacha Chua suggested copying some linking code from Planner.
18239 - Baoqiu Cui contributed the DocBook exporter.
18241 - Eddward DeVilla proposed and tested checkbox statistics.  He also
18242   came up with the idea of properties, and that there should be an API
18243   for them.
18245 - Nick Dokos tracked down several nasty bugs.
18247 - Kees Dullemond used to edit projects lists directly in HTML and so
18248   inspired some of the early development, including HTML export.  He
18249   also asked for a way to narrow wide table columns.
18251 - Thomas S.  Dye contributed documentation on Worg and helped
18252   integrating the Org-Babel documentation into the manual.
18254 -  Christian Egli converted the documentation into Texinfo format,
18255    inspired the agenda, patched CSS formatting into the HTML exporter,
18256    and wrote {{{file(org-taskjuggler.el)}}}.
18258 - David Emery provided a patch for custom CSS support in exported
18259   HTML agendas.
18261 - Nic Ferrier contributed mailcap and XOXO support.
18263 - Miguel A.  Figueroa-Villanueva implemented hierarchical checkboxes.
18265 - John Foerch figured out how to make incremental search show
18266   context around a match in a hidden outline tree.
18268 - Raimar Finken wrote {{{file(org-git-line.el)}}}.
18270 - Mikael Fornius works as a mailing list moderator.
18272 - Austin Frank works as a mailing list moderator.
18274 - Eric Fraga drove the development of BEAMER export with ideas and
18275   testing.
18277 - Barry Gidden did proofreading the manual in preparation for the
18278   book publication through Network Theory Ltd.
18280 - Niels Giesen had the idea to automatically archive DONE trees.
18282 - Nicolas Goaziou rewrote much of the plain list code.
18284 - Kai Grossjohann pointed out key-binding conflicts with other packages.
18286 - Brian Gough of Network Theory Ltd publishes the Org mode manual as
18287   a book.
18289 - Bernt Hansen has driven much of the support for auto-repeating
18290   tasks, task state change logging, and the clocktable.  His clear
18291   explanations have been critical when we started to adopt the Git
18292   version control system.
18294 -  Manuel Hermenegildo has contributed various ideas, small fixes
18295    and patches.
18297 - Phil Jackson wrote {{{file(org-irc.el)}}}.
18299 - Scott Jaderholm proposed footnotes, control over whitespace
18300   between folded entries, and column view for properties.
18302 - Matt Jones wrote /MobileOrg Android/.
18304 - Tokuya Kameshima wrote {{{file(org-wl.el)}}} and {{{file(org-mew.el)}}}.
18306 - Shidai Liu ("Leo") asked for embedded LaTeX and tested it.  He
18307   also provided frequent feedback and some patches.
18309 - Matt Lundin has proposed last-row references for table formulas
18310   and named invisible anchors.  He has also worked a lot on the FAQ.
18312 - David Maus wrote {{{file(org-atom.el)}}}, maintains the issues
18313   file for Org, and is a prolific contributor on the mailing list with
18314   competent replies, small fixes and patches.
18316 - Jason F.  McBrayer suggested agenda export to CSV format.
18318 - Max Mikhanosha came up with the idea of refiling.
18320 - Dmitri Minaev sent a patch to set priority limits on a per-file
18321   basis.
18323 - Stefan Monnier provided a patch to keep the Emacs-Lisp compiler
18324   happy.
18326 - Richard Moreland wrote /MobileOrg/ for the iPhone.
18328 - Rick Moynihan proposed allowing multiple TODO sequences in a file
18329   and being able to quickly restrict the agenda to a subtree.
18331 - Todd Neal provided patches for links to Info files and Elisp forms.
18333 - Greg Newman refreshed the unicorn logo into its current form.
18335 - Tim O'Callaghan suggested in-file links, search options for
18336   general file links, and TAGS.
18338 - Osamu Okano wrote {{{file(orgcard2ref.pl)}}}, a Perl program to
18339   create a text version of the reference card.
18341 - Takeshi Okano translated the manual and David O'Toole's tutorial
18342   into Japanese.
18344 - Oliver Oppitz suggested multi-state TODO items.
18346 - Scott Otterson sparked the introduction of descriptive text for
18347   links, among other things.
18349 - Pete Phillips helped during the development of the TAGS feature,
18350   and provided frequent feedback.
18352 - Martin Pohlack provided the code snippet to bundle character
18353   insertion into bundles of 20 for undo.
18355 - T.V.  Raman reported bugs and suggested improvements.
18357 - Matthias Rempe (Oelde) provided ideas, Windows support, and
18358   quality control.
18360 - Paul Rivier provided the basic implementation of named footnotes.
18361   He also acted as mailing list moderator for some time.
18363 - Kevin Rogers contributed code to access VM files on remote hosts.
18365 - Frank Ruell solved the mystery of the ~keymapp nil~ bug, a
18366   conflict with {{{file(allout.el)}}}.
18368 - Jason Riedy generalized the send-receive mechanism for Orgtbl
18369   tables with extensive patches.
18371 - Philip Rooke created the Org reference card, provided lots of
18372   feedback, developed and applied standards to the Org documentation.
18374 - Christian Schlauer proposed angular brackets around links, among
18375   other things.
18377 - Paul Sexton wrote {{{file(org-ctags.el)}}}.
18379 - Tom Shannon's {{{file(organizer-mode.el)}}} inspired linking to VM/BBDB/Gnus.
18381 - Ilya Shlyakhter proposed the Archive Sibling, line numbering in
18382   literal examples, and remote highlighting for referenced code lines.
18384 - Stathis Sideris wrote the {{{file(ditaa.jar)}}} ASCII to PNG
18385   converter that is now packaged into Org's {{{file(contrib)}}}
18386   directory.
18388 - Daniel Sinder came up with the idea of internal archiving by
18389   locking subtrees.
18391 - Dale Smith proposed link abbreviations.
18393 - James TD Smith has contributed a large number of patches for
18394   useful tweaks and features.
18396 - Adam Spiers asked for global linking commands, inspired the link
18397   extension system, added support for mairix, and proposed the mapping
18398   API.
18400 - Ulf Stegemann created the table to translate special symbols to
18401   HTML, LaTeX, UTF-8, Latin-1 and ASCII.
18403 - Andy Stewart contributed code to {{{file(org-w3m.el)}}}, to copy
18404   HTML content with links transformation to Org syntax.
18406 - David O'Toole wrote {{{file(org-publish.el)}}} and drafted the
18407   manual chapter about publishing.
18409 - Jambunathan K contributed the ODT exporter.
18411 - Sebastien Vauban reported many issues with LaTeX and BEAMER
18412   export and enabled source code highlighting in Gnus.
18414 - Stefan Vollmar organized a video-recorded talk at the
18415   Max-Planck-Institute for Neurology.  He also inspired the creation
18416   of a concept index for HTML export.
18418 - J\"urgen Vollmer contributed code generating the table of contents
18419   in HTML output.
18421 - Samuel Wales has provided important feedback and bug reports.
18423 - Chris Wallace provided a patch implementing the {{{samp(QUOTE)}}}
18424   keyword.
18426 - David Wainberg suggested archiving, and improvements to the
18427   linking system.
18429 - Carsten Wimmer suggested some changes and helped fix a bug in
18430   linking to Gnus.
18432 - Roland Winkler requested additional key bindings to make Org work
18433   on a tty.
18435 - Piotr Zielinski wrote {{{file(org-mouse.el)}}}, proposed agenda
18436   blocks and contributed various ideas and code snippets.
18438 * GNU Free Documentation License
18439 :PROPERTIES:
18440 :APPENDIX: t
18441 :DESCRIPTION: The license for this documentation.
18442 :END:
18444 #+TEXINFO: @include ../doc/doclicense.texi
18446 * Concept index
18447 :PROPERTIES:
18448 :ALT_TITLE: Main Index
18449 :INDEX:    cp
18450 :DESCRIPTION: Org's concepts and features
18451 :END:
18453 * Key index
18454   :PROPERTIES:
18455   :DESCRIPTION: Key bindings and where they are described
18456   :ALT_TITLE: Key Index
18457   :INDEX:    ky
18458   :END:
18460 * Command and function index
18461   :PROPERTIES:
18462   :DESCRIPTION: Command names and some internal functions
18463   :ALT_TITLE: Command and Function Index
18464   :INDEX:    fn
18465   :END:
18467 * Variable index
18468   :PROPERTIES:
18469   :DESCRIPTION: Variables mentioned in the manual
18470   :ALT_TITLE: Variable Index
18471   :INDEX:    vr
18472   :END:
18474 This is not a complete index of variables and faces, only the ones
18475 that are mentioned in the manual.  For a more complete list, use
18476 {{{kbdspckey(M-x org-customize,RET)}}} and then click yourself through
18477 the tree.
18479 * Copying
18480    :PROPERTIES:
18481    :copying:  t
18482    :END:
18484 This manual is for Org version {{{version}}}.
18486 Copyright (C) 2004-2013  Free Software Foundation, Inc.
18488 #+BEGIN_QUOTE
18489 Permission is granted to copy, distribute and/or modify this document
18490 under the terms of the GNU Free Documentation License, Version 1.3 or
18491 any later version published by the Free Software Foundation; with no
18492 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
18493 and with the Back-Cover Texts as in (a) below.  A copy of the license
18494 is included in the section entitled ``GNU Free Documentation License.''
18496 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
18497 modify this GNU manual.  Buying copies from the FSF supports it in
18498 developing GNU and promoting software freedom.''
18500 This document is part of a collection distributed under the GNU Free
18501 Documentation License.  If you want to distribute this document
18502 separately from the collection, you can do so by adding a copy of the
18503 license to the document, as described in section 6 of the license.
18504 #+END_QUOTE
18506 * Macro definitions                                                     :noexport:
18508 # Version macro, with commit hash
18509 #+MACRO: version (eval (pcase (split-string (org-version nil t) "[ (_]" t) (`(,_ ,_ ,n ,_ ,r . ,_) (format "%s (release_%s)" n r))))
18511 # Markup macros.  In texinfo export they will be marked up, otherwise
18512 # they will be inserted verbatim.  markup is the generic form that can
18513 # be used to insert any @-command with the second variable being the
18514 # text to mark up.
18515 #+MACRO: markup @@info:@$1{@@$2@@info:}@@
18516 #+MACRO: kbd {{{markup(kbd,$1)}}}
18517 #+MACRO: key {{{markup(key,$1)}}}
18518 #+MACRO: samp {{{markup(samp,$1)}}}
18519 #+MACRO: command {{{markup(command,$1)}}}
18520 #+MACRO: file {{{markup(file,$1)}}}
18521 #+MACRO: var {{{markup(var,$1)}}}
18522 #+MACRO: cite {{{markup(cite,$1)}}}
18523 #+MACRO: value {{{markup(value,$1)}}}
18525 #+MACRO: kbdkey {{{kbd($1{{{key($2)}}})}}}
18526 #+MACRO: kbdspckey {{{kbd($1 {{{key($2)}}})}}}
18527 #+MACRO: ksksksk {{{kbd($1 {{{key($2)}}} $3 {{{key($4)}}})}}}
18528 #+MACRO: ksksksksk {{{kbd($1 {{{key($2)}}} $3 {{{key($4)}}} {{{key($5)}}})}}}
18529 #+MACRO: kbdkeys {{{kbd($1{{{key($2)}}}{{{key($3)}}})}}}
18531 # Plain macros.
18532 #+MACRO: noindent @@info:@noindent@@
18533 #+MACRO: result @@info:@result{}@@
18534 #+MACRO: page @@info:@page@@
18536 * Instructions for use                                             :noexport:
18537 - [ ] Tangle the makefile, `C-c C-v t'
18538 - [ ] Execute [[Editing setup][this source code block]]
18539 - [ ] Asynchronously generate the info file, `C-e i i'
18541 * Improvements and fixes [10/12]                                        :noexport:
18542 - [X] Jon will fix detailed node listing
18543 - [X] Jon will fix :INDEX: property
18544 - [ ] New link type to generate pxref? (asked on ML)
18545 - [X] New macro for kbdkey that preserves space, e.g., `C-c <RET>'
18546 - [X] Indent examples one more space to match indentation of footnotes
18547 - [X] How to generate @kbd{\}?
18548 - [X] How to generate @kbd{~}?
18549 - [X] How to include GNU Free Documentation License as Appendix D?
18550 - [X] Straighten out footnotes
18551 - [X] Truncated footnote (asked on ML)
18552 - [ ] Resolve macros with XXX arguments
18553 - [X] Get @appendix instead of @chapter?
18555 * Org-mode setup                                                   :noexport:
18556 ** Editing setup
18557 #+name: setup-editing
18558 #+header: :results silent
18559 #+header: :noweb yes
18560 #+header: :eval no-export
18561 #+begin_src emacs-lisp
18562 (require 'ox-texinfo)
18563 (define-key org-mode-map (kbd "C-c e") 'org-export-dispatch)
18564 (setq org-src-preserve-indentation t)
18565 (setq org-export-in-background t)
18566 (setq org-export-async-debug t)
18567 (setq org-export-async-init-file (expand-file-name "init.el"))
18568 (setq org-pretty-entities nil)
18569 (setq org-footnote-auto-adjust nil)
18570 (setq org-confirm-babel-evaluate nil)
18571 (org-babel-do-load-languages
18572  'org-babel-load-languages
18573  '((emacs-lisp . t)
18574    (sh . t)))
18575 (org-add-link-type
18576    "pxref" nil
18577    (lambda (path desc format)
18578      (cond
18579       ((eq format 'html)
18580        (format "<span class=\"pxref\">%s</span>" path))
18581       ((eq format 'latex)
18582        (format "\\ref{%s}" path))
18583       ((eq format 'texinfo)
18584        (format "@pxref{%s,%s}" path desc)))))
18585 (add-to-list 'org-export-snippet-translation-alist
18586              '("info" . "texinfo"))
18587 #+end_src
18589 ** init.el file
18590 This source code block requires paths to your Org mode installation.
18591 Modify accordingly.
18593 #+name: emacs-init
18594 #+header: :tangle init.el
18595 #+header: :results silent
18596 #+header: :eval no-export
18597 #+begin_src emacs-lisp
18598 (setq load-path (cons "~/.emacs.d/src/org-mode/lisp" load-path))
18599 ; (setq load-path (cons "~/.emacs.d/src/org-mode/contrib/lisp" load-path))
18600 (require 'ox-texinfo)
18601 (setq org-src-preserve-indentation t)
18602 (setq org-confirm-babel-evaluate nil)
18603 (setq org-footnote-auto-adjust nil)
18604 (org-babel-do-load-languages
18605  'org-babel-load-languages
18606  '((emacs-lisp . t)
18607    (makefile . t)
18608    (sh . t)))
18609 (add-to-list 'org-export-snippet-translation-alist
18610              '("info" . "texinfo"))
18611 #+end_src
18613 ** Texi -> Org helpers                                             :noexport:
18614 This section contains source code blocks that help translate from
18615 =texinfo= to =Org=.
18617 #+name: tsd-helpers
18618 #+header: :noweb yes
18619 #+header: :eval no-export
18620 #+begin_src emacs-lisp
18621 <<tsd-index-to-macro>>
18622 <<tsd-samp-to-macro>>
18623 <<tsd-kbdkey-to-macro>>
18624 <<tsd-kbd-to-macro>>
18625 <<tsd-key-to-macro>>
18626 <<tsd-command-to-macro>>
18627 <<tsd-file-to-macro>>
18628 <<tsd-noindent>>
18629 <<tsd-example-block-begin>>
18630 <<tsd-example-block-end>>
18631 <<tsd-table-begin>>
18632 <<tsd-table-end>>
18633 <<tsd-pxref>>
18634 <<tsd-xref>>
18635 <<tsd-ref>>
18636 <<tsd-orgcmd>>
18637 <<tsd-orgkey>>
18638 <<tsd-code-to-markup>>
18639 <<tsd-emph-to-markup>>
18640 <<tsd-i-to-markup>>
18641 <<tsd-lisp-begin>>
18642 <<tsd-lisp-end>>
18643 #+end_src
18645 #+results: tsd-helpers
18646 : tsd-lisp-end
18648 #+name: tsd-index-to-macro
18649 #+header: :results silent
18650 #+header: :eval no-export
18651 #+begin_src emacs-lisp
18652 (defun tsd-index-to-macro ()
18653   "Make macros out of @[cpfvk]index commands.  Doesn't handle commas."
18654   (interactive)
18655   (query-replace-regexp "@\\([cpfvk]\\)index\\ \\(.*\\)$" "{{{\\1index(\\2)}}}" nil))
18656 #+end_src
18658 #+name: tsd-samp-to-macro
18659 #+header: :results silent
18660 #+header: :eval no-export
18661 #+begin_src emacs-lisp
18662 (defun tsd-samp-to-macro ()
18663   "Make macros out of @samp commands."
18664   (interactive)
18665   (query-replace-regexp "@samp{\\([^}]*\\)}" "{{{samp(\\1)}}}" nil))
18666 #+end_src
18668 #+name: tsd-kbdkey-to-macro
18669 #+header: :results silent
18670 #+header: :eval no-export
18671 #+begin_src emacs-lisp
18672 (defun tsd-kbdkey-to-macro ()
18673   "Make macros out of @kbd,@key commands."
18674   (interactive)
18675   (query-replace-regexp "@kbd{\\([^@]*\\)@key{\\([^}]*\\)}}" "{{{kbdkey(\\1,\\2)}}}" nil))
18676 #+end_src
18678 #+name: tsd-kbd-to-macro
18679 #+header: :results silent
18680 #+header: :eval no-export
18681 #+begin_src emacs-lisp
18682 (defun tsd-kbd-to-macro ()
18683   "Make macros out of @kbd commands."
18684   (interactive)
18685   (query-replace-regexp "@kbd{\\([^}]*\\)}" "{{{kbd(\\1)}}}" nil))
18686 #+end_src
18688 #+name: tsd-key-to-macro
18689 #+header: :results silent
18690 #+header: :eval no-export
18691 #+begin_src emacs-lisp
18692 (defun tsd-key-to-macro ()
18693   "Make macros out of @key commands."
18694   (interactive)
18695   (query-replace-regexp "@key{\\([^}]*\\)}" "{{{key(\\1)}}}" nil))
18696 #+end_src
18698 #+name: tsd-command-to-macro
18699 #+header: :results silent
18700 #+header: :eval no-export
18701 #+begin_src emacs-lisp
18702 (defun tsd-command-to-macro ()
18703   "Make macros out of @command commands."
18704   (interactive)
18705   (query-replace-regexp "@command{\\([^}]*\\)}" "{{{command(\\1)}}}" nil))
18706 #+end_src
18708 #+name: tsd-file-to-macro
18709 #+header: :results silent
18710 #+header: :eval no-export
18711 #+begin_src emacs-lisp
18712 (defun tsd-file-to-macro ()
18713   "Make macros out of @file commands."
18714   (interactive)
18715   (query-replace-regexp "@file{\\([^}]*\\)}" "{{{file(\\1)}}}" nil))
18716 #+end_src
18718 #+name: tsd-noindent
18719 #+header: :results silent
18720 #+header: :eval no-export
18721 #+begin_src emacs-lisp
18722 (defun tsd-noindent ()
18723   "Make macros out of @noindent commands."
18724   (interactive)
18725   (query-replace "@noindent" "{{{noindent}}}" t))
18726 #+end_src
18728 #+name: tsd-example-block-begin
18729 #+header: :results silent
18730 #+header: :eval no-export
18731 #+begin_src emacs-lisp
18732 (defun tsd-example-block-begin ()
18733   "Convert example blocks."
18734   (interactive)
18735   (query-replace "@example" "#+begin_example" t))
18736 #+end_src
18738 #+name: tsd-example-block-end
18739 #+header: :results silent
18740 #+header: :eval no-export
18741 #+begin_src emacs-lisp
18742 (defun tsd-example-block-end ()
18743   "Convert example blocks."
18744   (interactive)
18745   (query-replace "@end example" "#+end_example" nil))
18746 #+end_src
18748 #+name: tsd-table-begin
18749 #+header: :results silent
18750 #+header: :eval no-export
18751 #+begin_src emacs-lisp
18752 (defun tsd-table-begin ()
18753   "Convert table blocks."
18754   (interactive)
18755   (query-replace-regexp "@table\\ \\([@a-z]*\\)" "#+attr_texinfo: :table-type table :indic \\1 t))
18756 #+end_src
18758 #+name: tsd-table-end
18759 #+header: :results silent
18760 #+header: :eval no-export
18761 #+begin_src emacs-lisp
18762 (defun tsd-table-end ()
18763   "Convert table blocks."
18764   (interactive)
18765   (query-replace "@end table" "" nil))
18766 #+end_src
18768 #+name: tsd-pxref
18769 #+header: :results silent
18770 #+header: :eval no-export
18771 #+begin_src emacs-lisp
18772 (defun tsd-pxref ()
18773   "Convert @pxref to links."
18774   (interactive)
18775   (query-replace-regexp "@pxref{\\([^}]*\\)}" "see \[\[\\1\]\]" nil))
18776 #+end_src
18778 #+name: tsd-xref
18779 #+header: :results silent
18780 #+header: :eval no-export
18781 #+begin_src emacs-lisp
18782 (defun tsd-xref ()
18783   "Convert @xref to links."
18784   (interactive)
18785   (query-replace-regexp "@xref{\\([^}]*\\)}" "See \[\[\\1\]\]" nil))
18786 #+end_src
18788 #+name: tsd-ref
18789 #+header: :results silent
18790 #+header: :eval no-export
18791 #+begin_src emacs-lisp
18792 (defun tsd-ref ()
18793   "Convert @ref to links."
18794   (interactive)
18795   (query-replace-regexp "@ref{\\([^}]*\\)}" "\[\[\\1\]\]" nil))
18796 #+end_src
18798 #+name: tsd-orgcmd
18799 #+header: :results silent
18800 #+header: :eval no-export
18801 #+begin_src emacs-lisp
18802 (defun tsd-orgcmd ()
18803   "Convert @orgcmd to list entry."
18804   (interactive)
18805   (query-replace-regexp "@orgcmd{\\([^,]*\\),\\([^}]*\\)}" "- {{{kbd(\\1)}}}, ~\\2~ ::" nil))
18806 #+end_src
18808 #+name: tsd-orgkey
18809 #+header: :results silent
18810 #+header: :eval no-export
18811 #+begin_src emacs-lisp
18812 (defun tsd-orgkey ()
18813   "Convert @orgkey to list entry."
18814   (interactive)
18815   (query-replace-regexp "@orgkey{\\([^}]*\\)}" "- {{{kbd(\\1)}}} ::" nil))
18816 #+end_src
18818 #+name: tsd-code-to-markup
18819 #+header: :results silent
18820 #+header: :eval no-export
18821 #+begin_src emacs-lisp
18822 (defun tsd-code-to-markup ()
18823   "Convert @code to markup."
18824   (interactive)
18825   (query-replace-regexp "@code{\\([^}]*\\)}" "~\\1~" nil))
18826 #+end_src
18828 #+name: tsd-emph-to-markup
18829 #+header: :results silent
18830 #+header: :eval no-export
18831 #+begin_src emacs-lisp
18832 (defun tsd-emph-to-markup ()
18833   "Convert @emph to markup."
18834   (interactive)
18835   (query-replace-regexp "@emph{\\([^}]*\\)}" "/\\1/" nil))
18836 #+end_src
18838 #+name: tsd-i-to-markup
18839 #+header: :results silent
18840 #+header: :eval no-export
18841 #+begin_src emacs-lisp
18842 (defun tsd-i-to-markup ()
18843   "Convert @i to markup."
18844   (interactive)
18845   (query-replace-regexp "@i{\\([^}]*\\)}" "/\\1/" nil))
18846 #+end_src
18848 #+name: tsd-b-to-markup
18849 #+header: :results silent
18850 #+header: :eval no-export
18851 #+begin_src emacs-lisp
18852 (defun tsd-b-to-markup ()
18853   "Convert @b to markup."
18854   (interactive)
18855   (query-replace-regexp "@b{\\([^}]*\\)}" "*\\1*" nil))
18856 #+end_src
18858 #+name: tsd-lisp-begin
18859 #+header: :results silent
18860 #+header: :eval no-export
18861 #+begin_src emacs-lisp
18862 (defun tsd-lisp-begin ()
18863   "Convert @lisp blocks."
18864   (interactive)
18865   (query-replace "@lisp" "#+begin_src emacs-lisp" t))
18866 #+end_src
18868 #+name: tsd-lisp-end
18869 #+header: :results silent
18870 #+header: :eval no-export
18871 #+begin_src emacs-lisp
18872 (defun tsd-lisp-end ()
18873   "Convert @lisp blocks."
18874   (interactive)
18875   (query-replace "@end lisp" "#+end_src" nil))
18876 #+end_src
18878 * Footnotes
18880 [fn:1] The iCalendar file will contain TODO and agenda items only.
18882 [fn:2] If your Emacs distribution does not come with Org,
18883 the function ~org-version~ will not be defined.
18885 [fn:3] The ~master~ branch is where development takes place.
18887 [fn:4] The output from install-info (if any) is system dependent.  In
18888 particular, Debian and its derivatives use two different versions of
18889 install-info.  You may safely ignore the message:
18890 #+begin_example
18891    This is not dpkg install-info anymore, but GNU install-info
18892    See the man page for ginstall-info for command line arguments
18893 #+end_example
18894 returned by install-info.
18896 [fn:5] If you don't use font-lock globally, turn it on in an Org
18897 buffer with ~(add-hook 'org-mode-hook 'turn-on-font-lock)~.
18899 [fn:6] Please consider subscribing to the mailing list in order to
18900 minimize the work the mailing list moderators have to do.
18902 [fn:7] Easy templates insert lowercase keywords and Babel dynamically
18903 inserts ~#+results~.
18905 [fn:8] See the variables ~org-special-ctrl-a/e~, ~org-special-ctrl-k~,
18906 and ~org-ctrl-k-protect-subtree~ to configure special behavior of
18907 {{{kbd(C-a)}}}, {{{kbd(C-e)}}}, and {{{kbd(C-k)}}} in headlines.  Note
18908 also that clocking only works with headings indented less than 30
18909 stars.
18911 [fn:9] See the option ~org-cycle-global-at-bob~.
18913 [fn:10] The indirect buffer will contain the entire buffer, but will
18914 be narrowed to the current tree.  Editing the indirect buffer will also
18915 change the original buffer, but without affecting visibility in that
18916 buffer.  For more information about indirect buffers,
18917 [[info:emacs:Indirect Buffers][GNU Emacs Manual]].
18919 [fn:11] If you do not want the line to be split, customize the
18920 variable ~org-M-RET-may-split-line~.
18922 [fn:12] See also the variables ~org-show-hierarchy-above~,
18923 ~org-show-following-heading~, ~org-show-siblings~, and
18924 ~org-show-entry-below~ for detailed control on how much context is
18925 shown around each match.
18927 [fn:13] This depends on the option ~org-remove-highlights-with-change~.
18929 [fn:14] This does not work under XEmacs, because XEmacs uses selective
18930 display for outlining, not text properties.
18932 [fn:15] When using ~*~ as a bullet, lines must be indented or they will
18933 be seen as top-level headlines.  Also, when you are hiding leading
18934 stars to get a clean outline view, plain list items starting with a
18935 star may be hard to distinguish from true headlines.  In short: even
18936 though ~*~ is supported, it may be better to not use it for plain list
18937 items.
18939 [fn:16] You can filter out any of them by configuring
18940 ~org-plain-list-ordered-item-terminator~.
18942 [fn:17] If there's a checkbox in the item, the cookie must be put
18943 _before_ the checkbox.  If you have activated alphabetical lists, you
18944 can also use counters like ~[@b]~.
18946 [fn:18] Org only changes the filling settings for Emacs.  For XEmacs,
18947 you should use Kyle E.  Jones' {{{file(filladapt.el)}}}.
18949 [fn:19] If you do not want the item to be split, customize the
18950 variable ~org-M-RET-may-split-line~.
18952 [fn:20] If you want to cycle around items that way, you may customize
18953 ~org-list-use-circular-motion~.
18955 [fn:21] See ~org-list-use-circular-motion~ for a cyclic behavior.
18957 [fn:24] Centering does not work inside Emacs, but it does have an
18958 effect when exporting to HTML.
18960 [fn:26] For backward compatibility you can also use special names like
18961 ~$LR5~ and ~$LR12~ to refer in a stable way to the fifth and twelfth
18962 field in the last row of the table.  However, this syntax is
18963 deprecated, it should not be used for new documents.  Use ~@>$~
18964 instead.
18966 [fn:25] Org will understand references typed by the user as
18967 {{{samp(B4)}}}, but it will not use this syntax when offering a
18968 formula for editing.  You can customize this behavior using the
18969 variable ~org-table-use-standard-references~.
18971 [fn:22] To insert a vertical bar into a table field, use ~\vert~ or,
18972 inside a word ~abc\vert{}def~.
18974 [fn:23] This feature does not work on XEmacs.
18976 [fn:27] The computation time scales as O(N^2) because table FOO is
18977 parsed for each field to be copied.
18979 [fn:28] The {{{file(calc)}}} package has the non-standard
18980 convention that ~/~ has lower precedence than ~*~, so that ~a/b*c~ is
18981 interpreted as ~a/(b*c)~.
18983 [fn:29] The ~printf~ reformatting is limited in precision because the
18984 value passed to it is converted into an ~integer~ or ~double~.  The
18985 ~integer~ is limited in size by truncating the signed value to 32
18986 bits.  The ~double~ is limited in precision to 64 bits overall which
18987 leaves approximately 16 significant decimal digits.
18989 [fn:30] Such names must start with an alphabetic character and use
18990 only alphanumeric/underscore characters.
18992 [fn:31] Note that text before the first headline is usually not
18993 exported, so the first such target should be after the first headline,
18994 or in the line directly before the first headline.
18996 [fn:32] To insert a link targeting a headline, in-buffer completion
18997 can be used.  Just type a star followed by a few optional letters into
18998 the buffer and press {{{kbdkey(M-,TAB)}}}.  All headlines in the
18999 current buffer will be offered as completions.
19001 [fn:33] The actual behavior of the search will depend on the value of
19002 the variable ~org-link-search-must-match-exact-headline~.  If its value
19003 is ~nil~, then a fuzzy text search will be done.  If it is ~t~, then
19004 only the exact headline will be matched.  If the value is
19005 {{{samp('query-to-create)}}}, then an exact headline will be searched;
19006 if it is not found, then the user will be queried to create it.
19008 [fn:34] If the headline contains a timestamp, it will be removed from
19009 the link and result in a wrong link -- you should avoid putting a
19010 timestamp in the headline.
19012 [fn:35] Note that you don't have to use this command to insert a link.
19013 Links in Org are plain text, and you can type or paste them straight
19014 into the buffer.  By using this command, the links are automatically
19015 enclosed in double brackets, and you will be asked for the optional
19016 descriptive text.
19018 [fn:36] After insertion of a stored link, the link will be removed
19019 from the list of stored links.  To keep it in the list later use, use a
19020 triple {{{kbd(C-u)}}} prefix argument to {{{kbd(C-c C-l)}}}, or
19021 configure the option ~org-keep-stored-link-after-insertion~.
19023 [fn:37] This works if a function has been defined in the ~:complete~
19024 property of a link in ~org-link-parameters~.
19026 [fn:38] See the variable ~org-display-internal-link-with-indirect-buffer~.
19028 [fn:44] Check also the variable ~org-fast-tag-selection-include-todo~,
19029 it allows you to change the TODO state through the tags interface
19030 ([[Setting tags]]), in case you like to mingle the two concepts.  Note that
19031 this means you need to come up with unique keys across both sets of
19032 keywords.
19034 [fn:39] For backward compatibility, line numbers can also follow a
19035 single colon.
19037 [fn:40] Of course, you can make a document that contains only long
19038 lists of TODO items, but this is not required.
19040 [fn:41] Changing the variable ~org-todo-keywords~ only becomes
19041 effective after restarting Org mode in a buffer.
19043 [fn:42] This is also true for the {{{kbd(t)}}} command in the timeline
19044 and agenda buffers.
19046 [fn:43] All characters are allowed except ~@^!~, which have a special
19047 meaning here.
19049 [fn:45] Org mode parses these lines only when Org mode is activated
19050 after visiting a file.  {{{kbd(C-c C-c)}}} with the cursor in a line
19051 starting with {{{samp(#+)}}} is simply restarting Org mode for the
19052 current buffer.
19054 [fn:46] The corresponding in-buffer setting is: ~#+STARTUP: logdone~.
19056 [fn:47] The corresponding in-buffer setting is: ~#+STARTUP: lognotedone~.
19058 [fn:48] See the variable ~org-log-states-order-reversed~.
19060 [fn:54] {{{kbd(C-u C-c C-c)}}} on the /first/ item of a list with no
19061 checkbox will add checkboxes to the rest of the list.
19063 [fn:49] It is possible that Org mode will record two timestamps when
19064 you are using both ~org-log-done~ and state change logging.  However,
19065 it will never prompt for two notes---if you have configured both, the
19066 state change recording note will take precedence and cancel the
19067 {{{samp(Closing Note)}}}.
19069 [fn:50] See also the option ~org-priority-start-cycle-with-default~.
19071 [fn:51] To keep subtasks out of the global TODO list, see the
19072 ~org-agenda-todo-list-sublevels~.
19074 [fn:52] With the exception of description lists.  But you can allow it
19075 by modifying ~org-list-automatic-rules~ accordingly.
19077 [fn:53] Set the variable ~org-hierarchical-checkbox-statistics~ if you
19078 want such cookies to count all checkboxes below the cookie, not just
19079 those belonging to direct children.
19081 [fn:55] As with all these in-buffer settings, pressing 
19082 {{{kbd(C-c C-c)}}} activates any changes in the line.
19084 [fn:56] This is only true if the search does not involve more complex
19085 tests including properties (see [[Property searches]]).
19087 [fn:57] Keys will automatically be assigned to tags that have no
19088 configured keys.
19090 [fn:58] Please note that the COLUMNS definition must be on a single
19091 line---it is wrapped here only because of formatting constraints.
19093 [fn:59] Contributed packages are not part of Emacs, but are
19094 distributed with the main distribution of Org (visit
19095 [[http://orgmode.org]]).
19097 [fn:60] The Org date format is inspired by the standard ISO 8601
19098 date/time format.  To use an alternative format, see [[Custom time
19099 format]].  The day name is optional when you type the date yourself.
19100 However, any dates inserted or modified by Org will add that day name,
19101 for reading convenience.
19103 [fn:61] When working with the standard diary sexp functions, you need
19104 to be very careful with the order of the arguments.  That order depends
19105 evilly on the variable ~calendar-date-style~ (or, for older Emacs
19106 versions, ~european-calendar-style~).  For example, to specify a date
19107 December 12, 2005, the call might look like ~(diary-date 12 1 2005)~
19108 or ~(diary-date 1 12 2005)~ or ~(diary-date 2005 12 1)~, depending on
19109 the settings.  This has been the source of much confusion.  Org mode
19110 users can resort to special versions of these functions like
19111 ~org-date~ or ~org-anniversary~.  These work just like the
19112 corresponding ~diary-~ functions, but with stable ISO order of
19113 arguments (year, month, day) wherever applicable, independent of the
19114 value of ~calendar-date-style~.
19116 [fn:62] See the variable ~org-read-date-prefer-future~.  You may
19117 set that variable to the symbol ~time~ to even make a time before now
19118 shift the date to tomorrow.
19120 [fn:63] If you don't need/want the calendar, configure the variable
19121 ~org-popup-calendar-for-date-prompt~.
19123 [fn:64] If you find this distracting, turn off the display with
19124 ~org-read-date-display-live~.
19126 [fn:65] It will still be listed on that date after it has been marked
19127 DONE.  If you don't like this, set the variable
19128 ~org-agenda-skip-scheduled-if-done~.
19130 [fn:66] The {{{samp(SCHEDULED)}}} and {{{samp(DEADLINE)}}} dates are
19131 inserted on the line right below the headline.  Don't put any text
19132 between this line and the headline.
19134 [fn:67] Note the corresponding ~#+STARTUP~ keywords ~logredeadline~,
19135 ~lognoteredeadline~, and ~nologredeadline~.
19137 [fn:68] Note the corresponding ~#+STARTUP~ keywords ~logreschedule~,
19138 ~lognotereschedule~, and ~nologreschedule~.
19140 [fn:69] In fact, the target state is taken from, in this sequence, the
19141 ~REPEAT_TO_STATE~ property or the variable ~org-todo-repeat-to-state~.
19142 If neither of these is specified, the target state defaults to the
19143 first state of the TODO state sequence.
19145 [fn:70] You can change this using the option ~org-log-repeat~, or the
19146 ~#+STARTUP~ options ~logrepeat~, ~lognoterepeat~, and ~nologrepeat~.
19147 With ~lognoterepeat~, you will also be prompted for a note.
19149 [fn:71] Clocking only works if all headings are indented with less
19150 than 30 stars.  This is a hardcoded limitation of ~lmax~ in
19151 ~org-clock-sum~.
19153 [fn:72] To resume the clock under the assumption that you have worked
19154 on this task while outside Emacs, use ~(setq org-clock-persist t)~.
19156 [fn:73] To add an effort estimate ``on the fly'', hook a function
19157 doing this to ~org-clock-in-prepare-hook~.
19159 [fn:74] The last reset of the task is recorded by the ~LAST_REPEAT~
19160 property.
19162 [fn:75] See also the variable ~org-clock-modeline-total~.
19164 [fn:76] The corresponding in-buffer setting is: 
19165 ~#+STARTUP: lognoteclock-out~.
19167 [fn:77] Language terms can be set through the variable
19168 ~org-clock-clocktable-language-setup~.
19170 [fn:78] Note that all parameters must be specified in a single
19171 line---the line is broken here only to fit it into the manual.
19173 [fn:79] On computers using Mac OS X, idleness is based on actual user
19174 idleness, not just Emacs' idle time.  For X11, you can install a
19175 utility program {{{file(x11idle.c)}}}, available in the
19176 ~contrib/scripts~ directory of the Org git distribution, to get the
19177 same general treatment of idleness.  On other systems, idle time refers
19178 to Emacs idle time only.
19180 [fn:80] You may change the property being used with the variable
19181 ~org-effort-property~.
19183 [fn:86] Note the corresponding ~#+STARTUP~ keywords ~logrefile~,
19184 ~lognoterefile~, and ~nologrefile~.
19186 [fn:81] Please select your own key, {{{kbd(C-c c)}}} is only a
19187 suggestion.
19189 [fn:82] If you need one of these sequences literally, escape the
19190 {{{kbd(%)}}} with a backslash.
19192 [fn:83] If you define your own link types (see [[Adding hyperlink
19193 types]]), any property you store with ~org-store-link-props~ can be
19194 accessed in capture templates in a similar way.
19196 [fn:84] This will always be the other, not the user.  See the variable
19197 ~org-from-is-user-regexp~.
19199 [fn:85] If you move entries or Org files from one directory to
19200 another, you may want to configure ~org-attach-directory~ to contain
19201 an absolute path.
19203 [fn:87] For backward compatibility, the following also works: If there
19204 are several such lines in a file, each specifies the archive location
19205 for the text below it.  The first such line also applies to any text
19206 before its definition.  However, using this method is /strongly/
19207 deprecated as it is incompatible with the outline structure of the
19208 document.  The correct method for setting multiple archive locations in
19209 a buffer is using properties.
19211 [fn:94] Only tags filtering will be respected here, effort filtering
19212 is ignored.
19214 [fn:88] When using the dispatcher, pressing {{{kbd(<)}}} before
19215 selecting a command will actually limit the command to the current
19216 file, and ignore ~org-agenda-files~ until the next dispatcher command.
19218 [fn:89] For backward compatibility, you can also press {{{kbd(1)}}} to
19219 restrict to the current buffer.
19221 [fn:90] For backward compatibility, you can also press {{{kbd(0)}}} to
19222 restrict to the current region/subtree.
19224 [fn:91] For backward compatibility, the universal prefix
19225 {{{kbd(C-u)}}} causes all TODO entries to be listed before the agenda.
19226 This feature is deprecated, use the dedicated TODO list, or a block
19227 agenda instead (see [[Block agenda]]).
19229 [fn:92] But see [[x-agenda-skip-entry-regexp][skipping entries based on regexp]].
19231 [fn:93] For backward compatibility, the following also works: if
19232 there are several such lines in a file, each specifies the category
19233 for the text below it.  The first category also applies to any text
19234 before the first CATEGORY line.  However, using this method is
19235 /strongly/ deprecated as it is incompatible with the outline structure
19236 of the document.  The correct method for setting multiple categories in
19237 a buffer is using a property.
19239 [fn:95] Custom commands can preset a filter by binding the variable
19240 ~org-agenda-tag-filter-preset~ as an option.  This filter will then be
19241 applied to the view and persist as a basic filter through refreshes
19242 and more secondary filtering.  The filter is a global property of the
19243 entire agenda view---in a block agenda, you should only set this in
19244 the global options section, not in the section of an individual block.
19246 [fn:96] You can also create persistent custom functions through
19247 ~org-agenda-bulk-custom-functions~.
19249 [fn:97] The Emacs diary file is parsed for the agenda when
19250 ~org-agenda-include-diary~ is set.
19252 [fn:98] You can provide a description for a prefix key by inserting a
19253 cons cell with the prefix and the description.
19255 [fn:99] For HTML you need to install Hrvoje Niksic's
19256 {{{file(htmlize.el)}}}.  To create PDF output, the ghostscript
19257 {{{file(ps2pdf)}}} utility must be installed on the system.  Selecting
19258 a PDF file will also create the postscript file.
19260 [fn:100] If you want to store standard views like the weekly agenda or
19261 the global TODO list as well, you need to define custom commands for
19262 them in order to be able to specify file names.
19264 [fn:101] Quoting depends on the system you use, please check the FAQ
19265 for examples.
19267 [fn:102] This works automatically for the HTML backend (it requires
19268 version 1.34 of the {{{file(htmlize.el)}}} package, which is
19269 distributed with Org).  Fontified code chunks in LaTeX can be
19270 achieved using either the listings package or the [[http://code.google.com/p/minted][minted]] package.
19271 Refer to ~org-export-latex-listings~ documentation for details.
19273 [fn:103] Code in {{{samp(src)}}} blocks may also be evaluated either
19274 interactively or on export.  See [[Working with source code]] for more
19275 information on evaluating code blocks.
19277 [fn:104] Adding ~-k~ to ~-n -r~ will /keep/ the labels in the source
19278 code while using line numbers for the links, which might be useful to
19279 explain those in an Org mode example code.
19281 [fn:105] Upon exit, lines starting with {{{samp(*)}}}, {{{samp(\,*)}}},
19282 {{{samp(#+)}}} and {{{samp(\,#+)}}} will get a comma prepended, to keep
19283 them from being interpreted by Org as outline nodes or special syntax.
19284 These commas will be stripped for editing with {{{kbd(C-c ')}}}, and
19285 also for export.
19287 [fn:106] You may select a different-mode with the variable
19288 ~org-edit-fixed-width-region-mode~.
19290 [fn:107] LaTeX is a macro system based on Donald\nbsp{}E.\nbsp{}Knuth's TeX
19291 system.  Many of the features described here as LaTeX are really
19292 from TeX, but for simplicity I am blurring this distinction.
19294 [fn:108] You can turn this on by default by setting the variable
19295 ~org-pretty-entities~, or on a per-file base with the ~#+STARTUP~
19296 option ~entitiespretty~.
19298 [fn:109] If you plan to use this regularly or on pages with
19299 significant page views, you should install {{{file(MathJax)}}} on your
19300 own server in order to limit the load of our server.
19302 [fn:110] For this to work you need to be on a system with a working
19303 LaTeX installation.  You also need the {{{file(dvipng)}}} program or
19304 the {{{file(convert)}}}, respectively available at
19305 [[http://sourceforge.net/projects/dvipng/]] and from the
19306 {{{file(ImageMagick)}}} suite.  The LaTeX header that will be used
19307 when processing a fragment can be configured with the variable
19308 ~org-format-latex-header~.
19310 [fn:111] When {{{file(MathJax)}}} is used, only the environment
19311 recognized by {{{file(MathJax)}}} will be processed.  When
19312 {{{file(dvipng)}}} is used to create images, any LaTeX environments
19313 will be handled.
19315 [fn:112] Org mode has a method to test if the cursor is inside such a
19316 fragment, see the documentation of the function
19317 ~org-inside-LaTeX-fragment-p~.
19319 [fn:113] The variable ~org-export-date-timestamp-format~ defines how
19320 this timestamp will be exported.
19322 [fn:114] If you want to configure many options this way, you can use
19323 several ~#+OPTIONS~ lines.
19325 [fn:115] To make this behavior the default, customize the variable
19326 ~org-export-run-in-background~.
19328 [fn:116] This requires ~transient-mark-mode~ be turned on.
19330 [fn:117] To select the current subtree, use {{{kbd(C-c @)}}}.
19332 [fn:118] This requires ~transient-mark-mode~ be turned on.
19334 [fn:119] To select the current subtree, use {{{kbd(C-c @)}}}.
19336 [fn:120] But see the variable ~org-export-html-inline-images~.
19338 [fn:121] If you plan to use this regularly or on pages with
19339 significant page views, you should install MathJax on your own server
19340 in order to limit the load of our server.  Installation instructions
19341 can be found on the MathJax website, see
19342 [[http://www.mathjax.org/resources/docs/?installation.html]].
19344 [fn:122] If the classes on TODO keywords and tags lead to conflicts,
19345 use the variables ~org-export-html-todo-kwd-class-prefix~ and
19346 ~org-export-html-tag-class-prefix~ to make them unique.
19348 [fn:123] This style is defined in the constant
19349 ~org-export-html-style-default~, which you should not modify.  To turn
19350 inclusion of these defaults off, customize
19351 ~org-export-html-style-include-default~.
19353 [fn:124] The default LaTeX output is designed for processing with
19354 ~pdftex~ or LaTeX.  It includes packages that are not compatible
19355 with ~xetex~ and possibly ~luatex~.  See the variables
19356 ~org-export-latex-default-packages-alist~ and
19357 ~org-export-latex-packages-alist~.
19359 [fn:125] This requires ~transient-mark-mode~ be turned on.
19361 [fn:126] To select the current subtree, use {{{kbd(C-c @)}}}.
19363 [fn:127] Into which the values of
19364 ~org-export-latex-default-packages-alist~ and
19365 ~org-export-latex-packages-alist~ are spliced.
19367 [fn:128] One can also take advantage of this option to pass other,
19368 unrelated options into the figure or table environment.  For an example
19369 see the section ``Exporting org files'' in
19370 [[http://orgmode.org/worg/org-hacks.html]].
19372 [fn:129] This requires ~transient-mark-mode~ to be turned on.
19374 [fn:130] To select the current subtree, use {{{kbd(C-c @)}}}.
19376 [fn:131] ODT export was added in Org mode version 7.8.
19378 [fn:132] See [[http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html][Open Document Format for Office Applications (OpenDocument)
19379 Version 1.2]].
19381 [fn:133] This requires ~transient-mark-mode~ to be turned on.
19383 [fn:134] To select the current subtree, use {{{kbd(C-c @)}}}.
19385 [fn:135] The column widths are interpreted as weighted ratios with the
19386 default weight being 1.
19388 [fn:136] Use of {{{file(ImageMagick)}}} is only desirable.  However, if
19389 you routinely produce documents that have large images or you export
19390 your Org files that has images using a Emacs batch script, then the
19391 use of {{{file(ImageMagick)}}} is mandatory.
19393 [fn:137] See [[http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl][MathToWeb]].
19395 [fn:138] Your {{{file(htmlfontify.el)}}} library must at least be at
19396 Emacs 24.1 levels for fontification to be turned on.
19398 [fn:139] See [[http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html][OpenDocument-v1.2 Specification]].
19400 [fn:140] See the ~<table:table-template>~ element of the
19401 OpenDocument-v1.2 specification.
19403 [fn:141] See the attributes ~table:template-name~,
19404 ~table:use-first-row-styles~, ~table:use-last-row-styles~,
19405 ~table:use-first-column-styles~, ~table:use-last-column-styles~,
19406 ~table:use-banding-rows-styles~, and ~table:use-banding-column-styles~
19407 of the ~<table:table>~ element in the OpenDocument-v1.2 specification.
19409 [fn:142] Note that {{{file(.odt)}}} files are {{{samp(zip)}}}
19410 archives.
19412 [fn:143] See the variables ~org-icalendar-use-deadline~ and
19413 ~org-icalendar-use-scheduled~.
19415 [fn:144] To add inherited tags or the TODO state, configure the
19416 variable ~org-icalendar-categories~.
19418 [fn:145] The LOCATION property can be inherited from higher in the
19419 hierarchy if you configure ~org-use-property-inheritance~ accordingly.
19421 [fn:146] The files {{{file(file-source.org)}}} and
19422 {{{file(file-source.org.html)}}} if source and publishing directories
19423 are equal.  Note that with this kind of setup, you need to add
19424 ~:exclude "-source\\.org"~ to the project definition in
19425 ~org-publish-project-alist~ to prevent the published source files from
19426 being considered as new org files the next time the project is
19427 published.
19429 [fn:147] Note that {{{samp(src)}}} blocks may be inserted using Org
19430 mode's [[Easy templates]] system.
19432 [fn:148] Whenever code is evaluated there is a potential for that code
19433 to do harm.  Org mode provides safeguards to ensure that code is only
19434 evaluated after explicit confirmation from the user.  For information
19435 on these safeguards (and on how to disable them) see [[Code evaluation
19436 security]].
19438 [fn:149] The ~org-babel-no-eval-on-ctrl-c-ctrl-c~ variable can be used
19439 to remove code evaluation from the {{{kbd(C-c C-c)}}} key binding.
19441 [fn:150] Note that evaluation of header arguments is guaranteed to
19442 take place in the original Org mode file, while there is no such
19443 guarantee for evaluation of the code block body.
19445 [fn:151] The example requires that property inheritance be turned on
19446 for the ~noweb-ref~ property, see [[Property inheritance]].
19448 [fn:152] In certain languages this also contains the error output
19449 stream; this is an area for future work.
19451 [fn:153] The last evaluation performed by the interpreter is obtained
19452 in a language-specific manner: the value of the variable ~_~ in Python
19453 and Ruby, and the value of ~.Last.value~ in R.
19455 [fn:161] If the {{{samp(#+TBLFM)}}} line contains an odd number of
19456 dollar characters, this may cause problems with font-lock in LaTeX
19457 mode.  As shown in the example you can fix this by adding an extra line
19458 inside the ~comment~ environment that is used to balance the dollar
19459 expressions.  If you are using AUCTeX with the font-latex library, a
19460 much better solution is to add the ~comment~ environment to the
19461 variable ~LaTeX-verbatim-environments~.
19463 [fn:162] The HTML translator uses the same code that produces tables
19464 during HTML export.
19466 [fn:154] Note that ~org-indent-mode~ also sets the ~wrap-prefix~
19467 property, such that ~visual-line-mode~ (or purely setting ~word-wrap~)
19468 wraps long lines (including headlines) correctly indented.
19470 [fn:155] See the variable ~org-indent-indentation-per-level~.
19472 [fn:156] Turning on ~org-indent-mode~ sets ~org-hide-leading-stars~ to
19473 ~t~ and ~org-adapt-indentation~ to ~nil~.
19475 [fn:157] See also the variable ~org-adapt-indentation~.
19477 [fn:158] When you need to specify a level for a property search or
19478 refile targets, ~LEVEL=2~ will correspond to 3 stars, etc.
19480 [fn:159] The {{{file(org-R.el)}}} package has been replaced by the
19481 Org mode functionality described in [[Working with source code]] and is
19482 now obsolete.
19484 [fn:160] By default this works only for LaTeX, HTML, and Texinfo.
19485 Configure the variable ~orgtbl-radio-tables~ to install templates for
19486 other modes.
19488 [fn:163] Note that, when using ~org-odd-levels-only~, a level number
19489 corresponds to order in the hierarchy, not to the number of stars.
19491 [fn:164] If you can safely store the password in your Emacs setup, you
19492 might also want to configure `org-mobile-encryption-password'.  Please
19493 read the docstring of that variable.  Note that encryption will apply
19494 only to the contents of the `.org' files.  The file names themselves
19495 will remain visible.
19497 [fn:165] If you cannot use Dropbox, or if your version of MobileOrg
19498 does not support it, you can use a webdav server.  For more
19499 information, check out the documentation of MobileOrg and also this
19500 [[http://orgmode.org/worg/org-faq.html#mobileorg_webdav][FAQ entry]].
19502 [fn:166] While creating the agendas, Org mode will force ID properties
19503 on all referenced entries, so that these entries can be uniquely
19504 identified if /MobileOrg/ flags them for further action.  If you do not
19505 want to get these properties in so many entries, you can set the
19506 variable ~org-mobile-force-id-on-agenda-items~ to ~nil~.  Org mode will
19507 then rely on outline paths, in the hope that these will be unique
19508 enough.
19510 [fn:167] Checksums are stored automatically in the file
19511 {{{file(checksums.dat)}}}.
19513 [fn:168] The file {{{file(mobileorg.org)}}} will be empty after this
19514 operation.
19516 [fn:169] Note, however, that there is a subtle difference.  The view
19517 created automatically by {{{kbdspckey(M-x org-mobile-pull,RET)}}} is
19518 guaranteed to search all files that have been addressed by the last
19519 pull.  This might include a file that is not currently in your list of
19520 agenda files.  If you later use {{{kbd(C-c a ?)}}} to regenerate the
19521 view, only the current agenda files will be searched.
19523 [fn:170] You can also get `a.', `A.', `a)' and `A)' by configuring
19524 `org-alphabetical-lists'.  To minimize confusion with normal text,
19525 those are limited to one character only.  Beyond that limit, bullets
19526 will automatically fallback to numbers.
19528 [fn:171] See also ~org-empty-line-terminates-plain-lists~.
19530 [fn:172] You can define additional drawers on a per-file basis with a
19531 line like ~#+DRAWERS: HIDDEN STATE~.
19533 [fn:173] The corresponding in-buffer setting is: ~#+STARTUP: fninline~ or
19534 ~#+STARTUP: nofninline~.
19536 [fn:174] The corresponding in-buffer options are ~#+STARTUP: fnadjust~ and
19537 ~#+STARTUP: nofnadjust~.
19539 [fn:175] The file {{{file(constants.el)}}} can supply the values of constants in two
19540 different unit systems, ~SI~ and ~cgs~.  Which one is used depends on
19541 the value of the variable ~constants-unit-system~.  You can use the
19542 ~#+STARTUP:~ options ~constSI~ and ~constcgs~ to set this value for the
19543 current buffer.
19545 [fn:176] The library {{{file(org-id)}}} must first be loaded, either through
19546 ~org-customize~ by enabling ~id~ in ~org-modules~, or by adding
19547 ~(require 'org-id)~ in your {{{file(.emacs)}}}.
19549 [fn:177] The variable ~org-startup-with-inline-images~ can be set
19550 within a buffer with the ~#+STARTUP:~ keywords ~inlineimages~ and
19551 ~noinlineimages~.
19553 [fn:178] Note that the ~LOGBOOK~ drawer is unfolded when pressing
19554 {{{key(SPC)}}} in the agenda to show an entry---use
19555 {{{kbdspckey(C-u,SPC)}}} to keep it folded here.
19557 [fn:179] Please note the pitfalls of summing hierarchical data in a flat
19558 list ([[Agenda column view]]).
19560 [fn:180] If the value of that variable is not a list, but a single file
19561 name, then the list of agenda files will be maintained in that external
19562 file.
19564 [fn:181] The variable ~org-anniversary~ used in the example
19565 is just like ~diary-anniversary~, but the argument order is
19566 always according to ISO and therefore independent of the value of
19567 ~calendar-date-style~.
19569 [fn:182] Emacs 23 and Org mode 6.29 are required.
19571 [fn:183] Emacs 23.1 can actually crash with ~org-indent-mode~.
19573 [fn:184] Symbolic links in ~org-directory~ need to have the same name
19574 as their targets.
19577 # Local Variables:
19578 # sentence-end-double-space: t
19579 # End: